TempleOSCDV4.09.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:47:32 +02:00
1 parent 2d56cda5f3
commit 353eac0dbe
88 files changed
+2449 -2043

No files matched your search

Binary file not shown.
+47 -5
View File
@@ -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
View File
@@ -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;
}
+1 -1
View File
@@ -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
View File
@@ -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;
+18 -3
View File
@@ -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
View File
@@ -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);
+3 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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)
+33
View File
@@ -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;
}
}
+2 -2
View File
@@ -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;
+60
View File
@@ -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;
}
}
+2 -2
View File
@@ -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),
+30 -37
View File
@@ -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;
+4 -8
View File
@@ -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
View File
@@ -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
View File
@@ -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.
+3 -3
View File
@@ -98,7 +98,7 @@ U0 AOTGlblsResolve(CCmpCtrl *cc,CAOT *tempaot)
!(tempex->type & HTF_IMPORT) &&
(tempf=HashFind(tempex->str,cc->htc.hash_table_lst,HTT_FUN)) &&
!Bt(&tempf->flags,Cf_EXTERN)) {
tempex->val=tempf->executable_addr;
tempex->val=tempf->exe_addr;
tempex->type&=~HTF_UNRESOLVED;
label=tempauh->hash->str;
} else {
@@ -157,7 +157,7 @@ U0 AOTGlblsResolve(CCmpCtrl *cc,CAOT *tempaot)
tempeu=tempf->ext_lst;
while (tempeu) {
tempeu8=tempeu->next;
j=tempf->executable_addr-(tempeu->ip+4);
j=tempf->exe_addr-(tempeu->ip+4);
AOTStoreCodeU8At(cc,tempeu->ip,j.u8[0],j.u8[1],j.u8[2],j.u8[3]);
Free(tempeu);
tempeu=tempeu8;
@@ -167,7 +167,7 @@ U0 AOTGlblsResolve(CCmpCtrl *cc,CAOT *tempaot)
tempie=CAlloc(sizeof(CAOTImportExport));
tempie->type=IET_REL32_EXPORT;
if (tempex->type & HTT_FUN)
tempie->ip=tempf->executable_addr;
tempie->ip=tempf->exe_addr;
else if (tempex->type & HTT_GLBL_VAR)
tempie->ip=tempex(CHashGlblVar *)->data_addr_ip;
else
+22 -10
View File
@@ -161,7 +161,7 @@ CAOT *CmpBuf(U8 *buf,U8 *map_name=NULL,
CAOT *res=NULL;
cc=CmpCtrlNew(buf,CCF_DONT_FREE_BUF);
cc->flags|=CCF_AOT_COMPILE;
QueIns(cc,Fs->last_lex);
QueIns(cc,Fs->last_cc);
res=CmpJoin(cc,CMPF_LEX_FIRST,map_name,mapfile_drv_let);
if (error_cnt) *error_cnt=cc->error_cnt;
if (warning_cnt) *warning_cnt=cc->warning_cnt;
@@ -239,7 +239,7 @@ U0 CmpFixUpJITAsm(CCmpCtrl *cc,CAOT *tempaot)
"Unresolved Reference:%s\n",str;
else {
if (tempex->type & HTT_FUN)
i=tempex(CHashFun *)->executable_addr;
i=tempex(CHashFun *)->exe_addr;
else if (tempex->type & HTT_GLBL_VAR)
i=tempex(CHashGlblVar *)->data_addr;
else
@@ -577,15 +577,15 @@ I64 ExePutS(U8 *buf,U8 *filename=NULL,
if (!filename)
filename=blkdev.temp_filename;
cc=CmpCtrlNew(buf,ccf_flags|CCF_DONT_FREE_BUF,filename);
if (Fs->last_lex!=&Fs->next_lex) {
cc->opts=Fs->last_lex->opts;
if (Fs->last_cc!=&Fs->next_cc) {
cc->opts=Fs->last_cc->opts;
if (htc) {
cc->flags=cc->flags &~CCF_ASM_EXPRESSIONS |
htc->old_flags&CCF_ASM_EXPRESSIONS;
MemCpy(&cc->htc,htc,sizeof(CLexHashTableContext));
}
}
QueIns(cc,Fs->last_lex);
QueIns(cc,Fs->last_cc);
try {
Lex(cc);
res=ExeCmdLine(cc);
@@ -622,6 +622,12 @@ I64 ExeFile(U8 *name,I64 ccf_flags=0)
return res;
}
I64 RunFile(U8 *name,I64 ccf_flags=0,...)
{//$LK,"ExeFile",A="MN:ExeFile"$() with args using $LK,"LastFun",A="MN:LastFun"$().
ExeFile(name,ccf_flags);
return LastFun(argc,argv);
}
I64 ExePutS2(U8 *buf,U8 *filename=NULL,I64 ccf_flags=0)
{//throws exceptions
I64 res;
@@ -629,9 +635,9 @@ I64 ExePutS2(U8 *buf,U8 *filename=NULL,I64 ccf_flags=0)
if (!filename)
filename=blkdev.temp_filename;
cc=CmpCtrlNew(buf,ccf_flags|CCF_DONT_FREE_BUF,filename);
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);
Lex(cc);
res=ExeCmdLine(cc);
QueRem(cc);
@@ -658,13 +664,19 @@ I64 ExeFile2(U8 *name,I64 ccf_flags=0)
return res;
}
I64 RunFile2(U8 *name,I64 ccf_flags=0,...)
{//$LK,"ExeFile2",A="MN:ExeFile2"$() with args using $LK,"LastFun",A="MN:LastFun"$(). throws exceptions.
ExeFile2(name,ccf_flags);
return LastFun(argc,argv);
}
I64 StreamExePrint(U8 *fmt,...)
{//Causes value from stream to be used in an #exe{} block.
U8 *buf=StrPrintJoin(NULL,fmt,argc,argv);
I64 res=0;
CLexHashTableContext *htc;
CCmpCtrl *cc=Fs->last_lex;
if (cc==&Fs->next_lex)
CCmpCtrl *cc=Fs->last_cc;
if (cc==&Fs->next_cc)
PrintErr("Not Compiling\n");
else {
if (!(cc->flags&CCF_EXE_BLK))
+46 -7
View File
@@ -1,18 +1,57 @@
Bool Option(I64 num,Bool val)
{//Set compiler $LK,"Option",A="FI:::/Doc/Options.TXT"$ to val.
return BEqu(&Fs->last_lex->opts,num,val);
return BEqu(&Fs->last_cc->opts,num,val);
}
Bool GetOption(I64 num)
{//Get state of compiler $LK,"option",A="MN:OPTf_ECHO"$.
return Bt(&Fs->last_lex->opts,num);
return Bt(&Fs->last_cc->opts,num);
}
asm {
_LAST_FUN:: //See $LK,"_CALL_IND",A="MN:_CALL_IND"$
PUSH RBP
MOV RBP,RSP
PUSH RSI
PUSH RDI
XOR RAX,RAX
MOV RAX,FS:CTask.last_fun[RAX]
TEST RAX,RAX
JZ @@10
MOV RDX,U64 CHashFun.exe_addr[RAX]
MOV RCX,U64 SF_ARG1[RBP] //argc
MOV RSI,U64 SF_ARG2[RBP] //argv
SHL RCX,3
SUB RSP,RCX
MOV RDI,RSP
REP_MOVSB
TEST RDX,RDX
JZ @@05
CALL RDX
POP RDI
POP RSI
POP RBP
RET1 16
@@05: MOV RCX,U64 SF_ARG1[RBP] //argc
SHL RCX,3
ADD RSP,RCX
XOR RAX,RAX
@@10: POP RDI
POP RSI
POP RBP
RET1 16
}
_extern _LAST_FUN I64 LastFun(I64 argc,I64 *argv); //Execute last fun with args.
I64 PassTrace(I64 i=0b10001111101)
{//Ctrls which optimizer passes are displayed.
I64 old=Fs->last_lex->pass_trace;
if (i) Fs->last_lex->saved_pass_trace=i;
Fs->last_lex->pass_trace=i;
I64 old=Fs->last_cc->pass_trace;
if (i) Fs->last_cc->saved_pass_trace=i;
Fs->last_cc->pass_trace=i;
return old;
}
@@ -29,7 +68,7 @@ Bool Echo(Bool val)
U0 StreamPrint(U8 *fmt,...)
{//Injects text into the compile stream. Used in #exe{} blocks.
U8 *buf=StrPrintJoin(NULL,fmt,argc,argv),*st;
CCmpCtrl *cc=Fs->last_lex;
CCmpCtrl *cc=Fs->last_cc;
CStreamBlk *tempe=cc->last_stream_blk;
if (tempe!=&cc->next_stream_blk) {
st=MStrPrint("%s%s",tempe->body,buf);
@@ -43,7 +82,7 @@ U0 StreamPrint(U8 *fmt,...)
U0 StreamDir()
{
U8 *dirname;
if (dirname=DirFile(Fs->last_lex->lex_include_stk->full_name)) {
if (dirname=DirFile(Fs->last_cc->lex_include_stk->full_name)) {
StreamPrint("\"%s\"",dirname);
Free(dirname);
}
Binary file not shown.
+214 -208
View File
@@ -8,7 +8,7 @@ $LK,"OptFixupBinaryOp1",A="FL:::/Compiler/OptLib.CPP.Z,96",BI=7$
$LK,"OptFixupBinaryOp2",A="FL:::/Compiler/OptLib.CPP.Z,182",BI=8$
$LK,"COCInit",A="FL:::/Compiler/PrsLib.CPP.Z,99",BI=9$
$LK,"IsLexExpression2Bin",A="FL:::/Compiler/PrsExp.CPP.Z,1128",BI=10$
$LK,"CSubSwitch",A="FL:::/Compiler/PrsStmt.CPP.Z,562"$
$LK,"CSubSwitch",A="FL:::/Compiler/PrsStmt.CPP.Z,566"$
$LK,"LexFilePop",A="FL:::/Compiler/Lex.CPP.Z,11",BI=11$
$LK,"ExePutS",A="FL:::/Compiler/CMain.CPP.Z,571",BI=12$
$LK,"PrsStaticInit",A="FL:::/Compiler/PrsVar.CPP.Z,215",BI=13$
@@ -26,10 +26,11 @@ $LK,"ICAndBranch",A="FL:::/Compiler/BackC.CPP.Z,1",BI=23$
$LK,"U",A="FL:::/Compiler/UAsm.CPP.Z,645",BI=24$
$LK,"ICQueRem",A="FL:::/Compiler/BackC.CPP.Z,399",BI=25$
$LK,"CN_R",A="FL:::/Compiler/BackFA.CPP.Z,4"$
$LK,"LastFun",A="FL:::/Compiler/CMisc.CPP.Z,48"$
$LK,"OptLead1",A="FL:::/Compiler/OptLib.CPP.Z,73",BI=26$
$LK,"CmpNoteFloatOp",A="FL:::/Compiler/BackFA.CPP.Z,6",BI=27$
$LK,"AOTGlblsResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,76",BI=28$
$LK,"ExePutS2",A="FL:::/Compiler/CMain.CPP.Z,625",BI=29$
$LK,"ExePutS2",A="FL:::/Compiler/CMain.CPP.Z,631",BI=29$
$LK,"HashEntrySize",A="FL:::/Compiler/CHash.CPP.Z,1",BI=30$
$LK,"COCPush",A="FL:::/Compiler/PrsLib.CPP.Z,107",BI=31$
$LK,"SLASH_OP_DEC",A="FL:::/Compiler/BackLib.CPP.Z,245"$
@@ -86,7 +87,7 @@ $LK,"OptPass4",A="FL:::/Compiler/OptPass4.CPP.Z,132",BI=64$
$LK,"OptPass5",A="FL:::/Compiler/OptPass5.CPP.Z,1",BI=65$
$LK,"OptPass6",A="FL:::/Compiler/OptPass6.CPP.Z,96",BI=66$
$LK,"MODR_REG",A="FL:::/Compiler/BackLib.CPP.Z,126"$
$LK,"Echo",A="FL:::/Compiler/CMisc.CPP.Z,24",BI=67$
$LK,"Echo",A="FL:::/Compiler/CMisc.CPP.Z,63",BI=67$
$LK,"PrsGlblVarLst",A="FL:::/Compiler/PrsStmt.CPP.Z,201",BI=68$
$LK,"ICQueInit",A="FL:::/Compiler/BackC.CPP.Z,337",BI=69$
$LK,"ICCmp",A="FL:::/Compiler/BackB.CPP.Z,102",BI=70$
@@ -141,10 +142,10 @@ $LK,"UAsmHashLoad",A="FL:::/Compiler/UAsm.CPP.Z,188",BI=111$
$LK,"UnusedExternWarning",A="FL:::/Compiler/CExcept.CPP.Z,104",BI=112$
$LK,"SLASH_OP_FILD",A="FL:::/Compiler/BackLib.CPP.Z,263"$
$LK,"ICXorXor",A="FL:::/Compiler/BackB.CPP.Z,75",BI=113$
$LK,"PrsTryBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,838",BI=114$
$LK,"CInit",A="FL:::/Compiler/CMain.CPP.Z,679",BI=115$
$LK,"PrsTryBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,842",BI=114$
$LK,"CInit",A="FL:::/Compiler/CMain.CPP.Z,691",BI=115$
$LK,"MemberMetaFind",A="FL:::/Compiler/LexLib.CPP.Z,56",BI=116$
$LK,"ExePrint2",A="FL:::/Compiler/CMain.CPP.Z,642",BI=117$
$LK,"ExePrint2",A="FL:::/Compiler/CMain.CPP.Z,648",BI=117$
$LK,"FBO1_INT",A="FL:::/Compiler/OptLib.CPP.Z,93"$
$LK,"PE_DO_UNARY_OP",A="FL:::/Compiler/PrsExp.CPP.Z,8"$
$LK,"PrsVarInit",A="FL:::/Compiler/PrsVar.CPP.Z,1",BI=118$
@@ -164,29 +165,30 @@ $LK,"COCDel",A="FL:::/Compiler/PrsLib.CPP.Z,186",BI=127$
$LK,"PE_UNARY_TERM1",A="FL:::/Compiler/PrsExp.CPP.Z,1"$
$LK,"ICFAdd",A="FL:::/Compiler/BackFB.CPP.Z,504",BI=128$
$LK,"PE_UNARY_TERM2",A="FL:::/Compiler/PrsExp.CPP.Z,2"$
$LK,"CmdLinePmt",A="FL:::/Compiler/CMisc.CPP.Z,88",BI=129$
$LK,"CmdLinePmt",A="FL:::/Compiler/CMisc.CPP.Z,127",BI=129$
$LK,"AsmMakeArgMask",A="FL:::/Compiler/Asm.CPP.Z,177",BI=130$
$LK,"COCHeaderPut",A="FL:::/Compiler/PrsLib.CPP.Z,229",BI=131$
$LK,"PrsGlblInit",A="FL:::/Compiler/PrsVar.CPP.Z,206",BI=132$
$LK,"ICAndEqu",A="FL:::/Compiler/BackC.CPP.Z,536",BI=133$
$LK,"LexD2I32",A="FL:::/Compiler/CMisc.CPP.Z,52",BI=134$
$LK,"LexD2I32",A="FL:::/Compiler/CMisc.CPP.Z,91",BI=134$
$LK,"MemberLstNew",A="FL:::/Compiler/LexLib.CPP.Z,150",BI=135$
$LK,"LexD3I32",A="FL:::/Compiler/CMisc.CPP.Z,68",BI=136$
$LK,"LexD3I32",A="FL:::/Compiler/CMisc.CPP.Z,107",BI=136$
$LK,"OptClassFwd",A="FL:::/Compiler/OptLib.CPP.Z,9",BI=137$
$LK,"ICFCmp",A="FL:::/Compiler/BackFA.CPP.Z,515",BI=138$
$LK,"PrsSwitch",A="FL:::/Compiler/PrsStmt.CPP.Z,574",BI=139$
$LK,"PrsSwitch",A="FL:::/Compiler/PrsStmt.CPP.Z,578",BI=139$
$LK,"ICFDiv",A="FL:::/Compiler/BackFB.CPP.Z,493",BI=140$
$LK,"AOTStoreCodeU8At",A="FL:::/Compiler/AsmLib.CPP.Z,106",BI=141$
$LK,"PE_PUSH_LOWER",A="FL:::/Compiler/PrsExp.CPP.Z,11"$
$LK,"OptPass6Lag",A="FL:::/Compiler/OptPass6.CPP.Z,28",BI=142$
$LK,"OptLag1",A="FL:::/Compiler/OptLib.CPP.Z,51",BI=143$
$LK,"OptLag2",A="FL:::/Compiler/OptLib.CPP.Z,62",BI=144$
$LK,"StreamPrint",A="FL:::/Compiler/CMisc.CPP.Z,29",BI=145$
$LK,"StreamPrint",A="FL:::/Compiler/CMisc.CPP.Z,68",BI=145$
$LK,"_LAST_FUN",A="FL:::/Compiler/CMisc.CPP.Z,12"$
$LK,"ICFCvt",A="FL:::/Compiler/BackFA.CPP.Z,123",BI=146$
$LK,"StreamDir",A="FL:::/Compiler/CMisc.CPP.Z,43",BI=147$
$LK,"StreamDir",A="FL:::/Compiler/CMisc.CPP.Z,82",BI=147$
$LK,"PrsOffsetOf",A="FL:::/Compiler/PrsExp.CPP.Z,348",BI=148$
$LK,"GetOption",A="FL:::/Compiler/CMisc.CPP.Z,6",BI=149$
$LK,"PrsDoWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,502",BI=150$
$LK,"PrsDoWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,506",BI=150$
$LK,"ICShift",A="FL:::/Compiler/BackA.CPP.Z,609",BI=151$
$LK,"ICFMod",A="FL:::/Compiler/BackFA.CPP.Z,242",BI=152$
$LK,"COCPop",A="FL:::/Compiler/PrsLib.CPP.Z,121",BI=153$
@@ -211,230 +213,234 @@ $LK,"AsmUnresolvedAdd",A="FL:::/Compiler/AsmResolve.CPP.Z,188",BI=167$
$LK,"AOTStoreCodeU8",A="FL:::/Compiler/AsmLib.CPP.Z,1",BI=168$
$LK,"ICBitOps",A="FL:::/Compiler/BackB.CPP.Z,202",BI=169$
$LK,"lex_zeros",A="FL:::/Compiler/Lex.CPP.Z,91"$
$LK,"CSwitchCase",A="FL:::/Compiler/PrsStmt.CPP.Z,567"$
$LK,"CSwitchCase",A="FL:::/Compiler/PrsStmt.CPP.Z,571"$
$LK,"AsmResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,1",BI=170$
$LK,"PrsAsmInst",A="FL:::/Compiler/Asm.CPP.Z,395",BI=171$
$LK,"COCCompile",A="FL:::/Compiler/PrsLib.CPP.Z,249",BI=172$
$LK,"Cmp",A="FL:::/Compiler/CMain.CPP.Z,419",BI=173$
$LK,"PrsPush2",A="FL:::/Compiler/PrsLib.CPP.Z,11",BI=174$
$LK,"ICArgPut",A="FL:::/Compiler/CExcept.CPP.Z,141",BI=175$
$LK,"UndefinedExtern",A="FL:::/Compiler/CExcept.CPP.Z,98",BI=176$
$LK,"OptIC4",A="FL:::/Compiler/OptPass4.CPP.Z,1",BI=177$
$LK,"OptIC6",A="FL:::/Compiler/OptPass6.CPP.Z,1",BI=178$
$LK,"ICCmpAndBranch",A="FL:::/Compiler/BackB.CPP.Z,468",BI=179$
$LK,"ICDivEqu",A="FL:::/Compiler/BackA.CPP.Z,408",BI=180$
$LK,"PrsWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,482",BI=181$
$LK,"ICFCmpAndBranch",A="FL:::/Compiler/BackFB.CPP.Z,219",BI=182$
$LK,"Lex",A="FL:::/Compiler/Lex.CPP.Z,443",BI=183$
$LK,"ICTestAndBranch",A="FL:::/Compiler/BackB.CPP.Z,634",BI=184$
$LK,"RunFile2",A="FL:::/Compiler/CMain.CPP.Z,667",BI=173$
$LK,"Cmp",A="FL:::/Compiler/CMain.CPP.Z,419",BI=174$
$LK,"PrsPush2",A="FL:::/Compiler/PrsLib.CPP.Z,11",BI=175$
$LK,"ICArgPut",A="FL:::/Compiler/CExcept.CPP.Z,141",BI=176$
$LK,"UndefinedExtern",A="FL:::/Compiler/CExcept.CPP.Z,98",BI=177$
$LK,"OptIC4",A="FL:::/Compiler/OptPass4.CPP.Z,1",BI=178$
$LK,"OptIC6",A="FL:::/Compiler/OptPass6.CPP.Z,1",BI=179$
$LK,"ICCmpAndBranch",A="FL:::/Compiler/BackB.CPP.Z,468",BI=180$
$LK,"ICDivEqu",A="FL:::/Compiler/BackA.CPP.Z,408",BI=181$
$LK,"PrsWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,486",BI=182$
$LK,"ICFCmpAndBranch",A="FL:::/Compiler/BackFB.CPP.Z,219",BI=183$
$LK,"Lex",A="FL:::/Compiler/Lex.CPP.Z,443",BI=184$
$LK,"ICTestAndBranch",A="FL:::/Compiler/BackB.CPP.Z,634",BI=185$
$LK,"uasm",A="FL:::/Compiler/Compiler.PRJ.Z,21"$
$LK,"MODR_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,127"$
$LK,"PE_MAYBE_MODIFIERS",A="FL:::/Compiler/PrsExp.CPP.Z,3"$
$LK,"PE_UNARY_MODIFIERS",A="FL:::/Compiler/PrsExp.CPP.Z,4"$
$LK,"AOTLocalsResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,42",BI=185$
$LK,"AOTLocalsResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,42",BI=186$
$LK,"PE_DO_BINARY_OP",A="FL:::/Compiler/PrsExp.CPP.Z,9"$
$LK,"CmpFixUpAOTAsm",A="FL:::/Compiler/CMain.CPP.Z,302",BI=186$
$LK,"OptLabelFwd",A="FL:::/Compiler/OptLib.CPP.Z,1",BI=187$
$LK,"ICOrOr",A="FL:::/Compiler/BackB.CPP.Z,51",BI=188$
$LK,"LexExcept",A="FL:::/Compiler/CExcept.CPP.Z,81",BI=189$
$LK,"CmpFixUpAOTAsm",A="FL:::/Compiler/CMain.CPP.Z,302",BI=187$
$LK,"OptLabelFwd",A="FL:::/Compiler/OptLib.CPP.Z,1",BI=188$
$LK,"ICOrOr",A="FL:::/Compiler/BackB.CPP.Z,51",BI=189$
$LK,"LexExcept",A="FL:::/Compiler/CExcept.CPP.Z,81",BI=190$
$LK,"cmp_templates",A="FL:::/Compiler/CExts.CPP.Z,42"$
$LK,"CmpF2PushPop",A="FL:::/Compiler/OptLib.CPP.Z,542",BI=190$
$LK,"CmpJoin",A="FL:::/Compiler/CMain.CPP.Z,35",BI=191$
$LK,"PrsPop2",A="FL:::/Compiler/PrsLib.CPP.Z,16",BI=192$
$LK,"CmpF2PushPop",A="FL:::/Compiler/OptLib.CPP.Z,542",BI=191$
$LK,"CmpJoin",A="FL:::/Compiler/CMain.CPP.Z,35",BI=192$
$LK,"PrsPop2",A="FL:::/Compiler/PrsLib.CPP.Z,16",BI=193$
$LK,"CMP_TEMPLATES",A="FL:::/Compiler/Templates.CPP.Z,4"$
$LK,"MODR_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,128"$
$LK,"PrsAsmBlk",A="FL:::/Compiler/Asm.CPP.Z,904",BI=193$
$LK,"PrsAsmArg",A="FL:::/Compiler/Asm.CPP.Z,35",BI=194$
$LK,"LexFirstRem",A="FL:::/Compiler/Lex.CPP.Z,277",BI=195$
$LK,"MemberClassBaseFind",A="FL:::/Compiler/LexLib.CPP.Z,87",BI=196$
$LK,"MemberFind",A="FL:::/Compiler/LexLib.CPP.Z,67",BI=197$
$LK,"PrsAsmBlk",A="FL:::/Compiler/Asm.CPP.Z,904",BI=194$
$LK,"PrsAsmArg",A="FL:::/Compiler/Asm.CPP.Z,35",BI=195$
$LK,"LexFirstRem",A="FL:::/Compiler/Lex.CPP.Z,277",BI=196$
$LK,"MemberClassBaseFind",A="FL:::/Compiler/LexLib.CPP.Z,87",BI=197$
$LK,"MemberFind",A="FL:::/Compiler/LexLib.CPP.Z,67",BI=198$
$LK,"cmp",A="FL:::/Compiler/Compiler.PRJ.Z,16"$
$LK,"OptLag",A="FL:::/Compiler/OptLib.CPP.Z,40",BI=198$
$LK,"ICPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,345",BI=199$
$LK,"ICFPostIncDec",A="FL:::/Compiler/BackFB.CPP.Z,582",BI=200$
$LK,"ICTest",A="FL:::/Compiler/BackLib.CPP.Z,394",BI=201$
$LK,"ICModU64",A="FL:::/Compiler/BackC.CPP.Z,460",BI=202$
$LK,"PrsAsmImm",A="FL:::/Compiler/Asm.CPP.Z,1",BI=203$
$LK,"LexExtStr",A="FL:::/Compiler/LexLib.CPP.Z,218",BI=204$
$LK,"ICAddSubEctEqu",A="FL:::/Compiler/BackA.CPP.Z,478",BI=205$
$LK,"ICAddSubEctImm",A="FL:::/Compiler/BackA.CPP.Z,56",BI=206$
$LK,"ICPush",A="FL:::/Compiler/BackLib.CPP.Z,293",BI=207$
$LK,"ICSwap",A="FL:::/Compiler/BackC.CPP.Z,487",BI=208$
$LK,"OptLag",A="FL:::/Compiler/OptLib.CPP.Z,40",BI=199$
$LK,"ICPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,345",BI=200$
$LK,"ICFPostIncDec",A="FL:::/Compiler/BackFB.CPP.Z,582",BI=201$
$LK,"ICTest",A="FL:::/Compiler/BackLib.CPP.Z,394",BI=202$
$LK,"ICModU64",A="FL:::/Compiler/BackC.CPP.Z,460",BI=203$
$LK,"PrsAsmImm",A="FL:::/Compiler/Asm.CPP.Z,1",BI=204$
$LK,"LexExtStr",A="FL:::/Compiler/LexLib.CPP.Z,218",BI=205$
$LK,"ICAddSubEctEqu",A="FL:::/Compiler/BackA.CPP.Z,478",BI=206$
$LK,"ICAddSubEctImm",A="FL:::/Compiler/BackA.CPP.Z,56",BI=207$
$LK,"ICPush",A="FL:::/Compiler/BackLib.CPP.Z,293",BI=208$
$LK,"ICSwap",A="FL:::/Compiler/BackC.CPP.Z,487",BI=209$
$LK,"CMP_TEMPLATES_DONT_PUSH",A="FL:::/Compiler/Templates.CPP.Z,267"$
$LK,"intermediate_code_table",A="FL:::/Compiler/CInit.CPP.Z,16"$
$LK,"ICZero",A="FL:::/Compiler/BackLib.CPP.Z,385",BI=209$
$LK,"CmpCtrlDel",A="FL:::/Compiler/Lex.CPP.Z,58",BI=210$
$LK,"ICClassPut",A="FL:::/Compiler/CExcept.CPP.Z,117",BI=211$
$LK,"ICAssign",A="FL:::/Compiler/BackC.CPP.Z,159",BI=212$
$LK,"ICFTemplateFun",A="FL:::/Compiler/BackFB.CPP.Z,606",BI=213$
$LK,"MemberAdd",A="FL:::/Compiler/LexLib.CPP.Z,103",BI=214$
$LK,"PrsPush",A="FL:::/Compiler/PrsLib.CPP.Z,1",BI=215$
$LK,"ICZero",A="FL:::/Compiler/BackLib.CPP.Z,385",BI=210$
$LK,"CmpCtrlDel",A="FL:::/Compiler/Lex.CPP.Z,58",BI=211$
$LK,"ICClassPut",A="FL:::/Compiler/CExcept.CPP.Z,117",BI=212$
$LK,"ICAssign",A="FL:::/Compiler/BackC.CPP.Z,159",BI=213$
$LK,"ICFTemplateFun",A="FL:::/Compiler/BackFB.CPP.Z,606",BI=214$
$LK,"RunFile",A="FL:::/Compiler/CMain.CPP.Z,625",BI=215$
$LK,"MemberAdd",A="FL:::/Compiler/LexLib.CPP.Z,103",BI=216$
$LK,"PrsPush",A="FL:::/Compiler/PrsLib.CPP.Z,1",BI=217$
$LK,"SLASH_OP_FDIVR",A="FL:::/Compiler/BackLib.CPP.Z,259"$
$LK,"SLASH_OP_FISTTP",A="FL:::/Compiler/BackLib.CPP.Z,262"$
$LK,"CmpCtrlSize",A="FL:::/Compiler/Lex.CPP.Z,70",BI=216$
$LK,"ICLocalVarInit",A="FL:::/Compiler/BackC.CPP.Z,758",BI=217$
$LK,"PrsFor",A="FL:::/Compiler/PrsStmt.CPP.Z,525",BI=218$
$LK,"PassTrace",A="FL:::/Compiler/CMisc.CPP.Z,11",BI=219$
$LK,"PrsPopDeref",A="FL:::/Compiler/PrsLib.CPP.Z,21",BI=220$
$LK,"ICCopyTemplate",A="FL:::/Compiler/BackFA.CPP.Z,77",BI=221$
$LK,"PrsStmt",A="FL:::/Compiler/PrsStmt.CPP.Z,900",BI=222$
$LK,"PrsFun",A="FL:::/Compiler/PrsStmt.CPP.Z,132",BI=223$
$LK,"LexIncludeStr",A="FL:::/Compiler/Lex.CPP.Z,299",BI=224$
$LK,"PrsType",A="FL:::/Compiler/PrsVar.CPP.Z,287",BI=225$
$LK,"CmpCtrlNew",A="FL:::/Compiler/Lex.CPP.Z,28",BI=226$
$LK,"CmpCtrlSize",A="FL:::/Compiler/Lex.CPP.Z,70",BI=218$
$LK,"ICLocalVarInit",A="FL:::/Compiler/BackC.CPP.Z,758",BI=219$
$LK,"PrsFor",A="FL:::/Compiler/PrsStmt.CPP.Z,529",BI=220$
$LK,"PassTrace",A="FL:::/Compiler/CMisc.CPP.Z,50",BI=221$
$LK,"PrsPopDeref",A="FL:::/Compiler/PrsLib.CPP.Z,21",BI=222$
$LK,"ICCopyTemplate",A="FL:::/Compiler/BackFA.CPP.Z,77",BI=223$
$LK,"PrsStmt",A="FL:::/Compiler/PrsStmt.CPP.Z,904",BI=224$
$LK,"PrsFun",A="FL:::/Compiler/PrsStmt.CPP.Z,132",BI=225$
$LK,"LexIncludeStr",A="FL:::/Compiler/Lex.CPP.Z,299",BI=226$
$LK,"PrsType",A="FL:::/Compiler/PrsVar.CPP.Z,287",BI=227$
$LK,"CmpCtrlNew",A="FL:::/Compiler/Lex.CPP.Z,28",BI=228$
$LK,"MODR_SIB_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,131"$
$LK,"cmp_type_flags_src_code",A="FL:::/Compiler/Lex.CPP.Z,328"$
$LK,"PrsVarInit2",A="FL:::/Compiler/PrsVar.CPP.Z,123",BI=227$
$LK,"PrsPop",A="FL:::/Compiler/PrsLib.CPP.Z,6",BI=228$
$LK,"PrsVarInit2",A="FL:::/Compiler/PrsVar.CPP.Z,123",BI=229$
$LK,"PrsPop",A="FL:::/Compiler/PrsLib.CPP.Z,6",BI=230$
$LK,"asm_seg_prefixes",A="FL:::/Compiler/Asm.CPP.Z,393"$
$LK,"ICMinMax",A="FL:::/Compiler/BackC.CPP.Z,415",BI=229$
$LK,"CmpLoadDefines",A="FL:::/Compiler/CInit.CPP.Z,205",BI=230$
$LK,"PrsIf",A="FL:::/Compiler/PrsStmt.CPP.Z,455",BI=231$
$LK,"ICBuiltInFloatConst",A="FL:::/Compiler/BackLib.CPP.Z,404",BI=232$
$LK,"ICFUnaryMinus",A="FL:::/Compiler/BackFA.CPP.Z,194",BI=233$
$LK,"LexDocRead",A="FL:::/Compiler/Lex.CPP.Z,311",BI=234$
$LK,"CmpFixUpJITAsm",A="FL:::/Compiler/CMain.CPP.Z,174",BI=235$
$LK,"COCPopNoFree",A="FL:::/Compiler/PrsLib.CPP.Z,114",BI=236$
$LK,"ParenWarning",A="FL:::/Compiler/CExcept.CPP.Z,110",BI=237$
$LK,"PrsFunCall",A="FL:::/Compiler/PrsExp.CPP.Z,378",BI=238$
$LK,"ICDerefPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,384",BI=239$
$LK,"Option",A="FL:::/Compiler/CMisc.CPP.Z,1",BI=240$
$LK,"ExeFile2",A="FL:::/Compiler/CMain.CPP.Z,651",BI=241$
$LK,"ICMinMax",A="FL:::/Compiler/BackC.CPP.Z,415",BI=231$
$LK,"CmpLoadDefines",A="FL:::/Compiler/CInit.CPP.Z,205",BI=232$
$LK,"PrsIf",A="FL:::/Compiler/PrsStmt.CPP.Z,459",BI=233$
$LK,"ICBuiltInFloatConst",A="FL:::/Compiler/BackLib.CPP.Z,404",BI=234$
$LK,"ICFUnaryMinus",A="FL:::/Compiler/BackFA.CPP.Z,194",BI=235$
$LK,"LexDocRead",A="FL:::/Compiler/Lex.CPP.Z,311",BI=236$
$LK,"CmpFixUpJITAsm",A="FL:::/Compiler/CMain.CPP.Z,174",BI=237$
$LK,"COCPopNoFree",A="FL:::/Compiler/PrsLib.CPP.Z,114",BI=238$
$LK,"ParenWarning",A="FL:::/Compiler/CExcept.CPP.Z,110",BI=239$
$LK,"PrsFunCall",A="FL:::/Compiler/PrsExp.CPP.Z,378",BI=240$
$LK,"ICDerefPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,384",BI=241$
$LK,"Option",A="FL:::/Compiler/CMisc.CPP.Z,1",BI=242$
$LK,"ExeFile2",A="FL:::/Compiler/CMain.CPP.Z,657",BI=243$
$LK,"COptMemberVar",A="FL:::/Compiler/OptLib.CPP.Z,556"$
$LK,"PE_CHECK_BINARY_OPS1",A="FL:::/Compiler/PrsExp.CPP.Z,6"$
$LK,"PE_CHECK_BINARY_OPS2",A="FL:::/Compiler/PrsExp.CPP.Z,7"$
$LK,"LexBackupLastChar",A="FL:::/Compiler/LexLib.CPP.Z,1",BI=242$
$LK,"Trace",A="FL:::/Compiler/CMisc.CPP.Z,19",BI=243$
$LK,"ICBrBitOps",A="FL:::/Compiler/BackC.CPP.Z,206",BI=244$
$LK,"LexBackupLastChar",A="FL:::/Compiler/LexLib.CPP.Z,1",BI=244$
$LK,"Trace",A="FL:::/Compiler/CMisc.CPP.Z,58",BI=245$
$LK,"ICBrBitOps",A="FL:::/Compiler/BackC.CPP.Z,206",BI=246$
$LK,"MODR_D32_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,129"$
$LK,"LexGetChar",A="FL:::/Compiler/Lex.CPP.Z,107",BI=245$
$LK,"LexSkipEol",A="FL:::/Compiler/Lex.CPP.Z,270",BI=246$
$LK,"ICFlagBranch",A="FL:::/Compiler/BackB.CPP.Z,682",BI=247$
$LK,"LexGetChar",A="FL:::/Compiler/Lex.CPP.Z,107",BI=247$
$LK,"LexSkipEol",A="FL:::/Compiler/Lex.CPP.Z,270",BI=248$
$LK,"ICFlagBranch",A="FL:::/Compiler/BackB.CPP.Z,682",BI=249$
$LK,"SLASH_OP_FSUBR",A="FL:::/Compiler/BackLib.CPP.Z,256"$
$LK,"ICFPreIncDec",A="FL:::/Compiler/BackFB.CPP.Z,562",BI=248$
$LK,"ICFPreIncDec",A="FL:::/Compiler/BackFB.CPP.Z,562",BI=250$
$LK,"MODR_SIB_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,130"$
$LK,"ExeFile",A="FL:::/Compiler/CMain.CPP.Z,614",BI=249$
$LK,"COCMiscNew",A="FL:::/Compiler/PrsLib.CPP.Z,143",BI=250$
$LK,"ExeFile",A="FL:::/Compiler/CMain.CPP.Z,614",BI=251$
$LK,"COCMiscNew",A="FL:::/Compiler/PrsLib.CPP.Z,143",BI=252$
$LK,"cmp_templates_dont_pop",A="FL:::/Compiler/CExts.CPP.Z,43"$
$LK,"CmpOffset2Reg",A="FL:::/Compiler/OptLib.CPP.Z,83",BI=251$
$LK,"PrsFunNew",A="FL:::/Compiler/PrsLib.CPP.Z,62",BI=252$
$LK,"StreamExePrint",A="FL:::/Compiler/CMain.CPP.Z,661",BI=253$
$LK,"COCGoToLabelFind",A="FL:::/Compiler/PrsLib.CPP.Z,152",BI=254$
$LK,"OptMVCompare",A="FL:::/Compiler/OptLib.CPP.Z,562",BI=255$
$LK,"ICToBool",A="FL:::/Compiler/BackB.CPP.Z,289",BI=256$
$LK,"PrsFunJoin",A="FL:::/Compiler/PrsStmt.CPP.Z,68",BI=257$
$LK,"OptFixSizeOf",A="FL:::/Compiler/OptLib.CPP.Z,484",BI=258$
$LK,"CmpOffset2Reg",A="FL:::/Compiler/OptLib.CPP.Z,83",BI=253$
$LK,"PrsFunNew",A="FL:::/Compiler/PrsLib.CPP.Z,62",BI=254$
$LK,"StreamExePrint",A="FL:::/Compiler/CMain.CPP.Z,673",BI=255$
$LK,"COCGoToLabelFind",A="FL:::/Compiler/PrsLib.CPP.Z,152",BI=256$
$LK,"OptMVCompare",A="FL:::/Compiler/OptLib.CPP.Z,562",BI=257$
$LK,"ICToBool",A="FL:::/Compiler/BackB.CPP.Z,289",BI=258$
$LK,"PrsFunJoin",A="FL:::/Compiler/PrsStmt.CPP.Z,68",BI=259$
$LK,"OptFixSizeOf",A="FL:::/Compiler/OptLib.CPP.Z,484",BI=260$
$LK,"cmp_templates_dont_push",A="FL:::/Compiler/CExts.CPP.Z,45"$
$LK,"cmp_templates_dont_push_pop",A="FL:::/Compiler/CExts.CPP.Z,46"$
$LK,"LexAttachDoc",A="FL:::/Compiler/Lex.CPP.Z,331",BI=259$
$LK,"PrsStreamBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,801",BI=260$
$LK,"LexAttachDoc",A="FL:::/Compiler/Lex.CPP.Z,331",BI=261$
$LK,"PrsStreamBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,805",BI=262$
$LK,"cmp_templates_dont_push2",A="FL:::/Compiler/CExts.CPP.Z,44"$
$LK,"InstEntryFind",A="FL:::/Compiler/UAsm.CPP.Z,66",BI=261$
$LK,"PrsDotDotDot",A="FL:::/Compiler/PrsVar.CPP.Z,381",BI=262$
$LK,"ICMulEqu",A="FL:::/Compiler/BackA.CPP.Z,322",BI=263$
$LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CPP.Z,1",BI=264$
$LK,"PrsNoWarn",A="FL:::/Compiler/PrsStmt.CPP.Z,787",BI=265$
H2@_#_#h#n#‰#�#¹#»#ğ#Ú#$$$+$¨­Ón`n`„`Œ`—`£`Ã`¥`Ò`Ø`Ø`a a4aBaBaoa‘a©a–a¸aäaÑaûab-b-b4bXbnbnbnbxbH>L®û®ûÈûÒûÖûÚûßûáûùûüüüp©Á¾ÿ¾ÿèÿêÿñÿ÷ÿıÿÿÿ !4CHJOYn„—¼Î(äää;ä?ä?äGä8ÖãÖãßãäãïãøãÿãääd`µ××Ôר×å×ç×ô×ö×ØØØØØ Ø,Ø,ØGØUØUØ`ØgØvØ�؇،Ø�ؚءذػØÁØÆØÈØÔØÙ*Ù:ÙJÙZÙ\ÙlÙ|ٌٌّ٤٫ٲٲٲٲٹÙÏÙÛÙáÙçÙíÙñÙñÙñÙÚ%Ú;ÚGÚMÚSÚYÚ[Ú[ÚiÚDÃnÚnÚ„Ú‡ÚŠÚ—Ú�ÚªÚ­Ú°ÚÚ¸ÚÂÚ ,cj؉؉æ‰ğ‰û‰Š ŠŠ
hl&&4IO P Ÿ6Ÿ6­6¼6Ø6Ş6ğ6ğ6û67
777 ”;\®J®J¶JºJÓJíJ
K+K4KEKiK€K€KŸK®K·KÄKËKıKLLLL-L=LALEL␍Œ×ö��¾ÆÊØŞää&:H_eqv„ ©¹»ÂÂÈÈØ|1¿"¿"Õ"Ş"é"#####$#&#,#5#7#=#G#N#Q#Q#[#0 ' ˆ ˆ.ˆNˆTˆZˆZˆ`ˆ„“°¨ ¨ ¼ Ã Ê Î ò ¡ ¡¡B¡M¡X¡Z¡e¡Š¡•¡ ¡¢¡©¡²¡´¡¿¡Æ¡ğ¡(">Ş>ŞMŞdŞŞŞ…Ş ŞİŞİíİŞ Ş ˆ0³0³U³\³s³³Š³œ³­³�³œ³Í³è³ô³û³´␍´´´%´)´+´1´=´G´N´U´Y´Y´c´h´s´…´–´‡´…´¶´×´ã´ê´ğ´ü´µ␍µµµµ µ,µ6µ=µDµHµHµUµcµsµ…µ–µ‡µ…µ¶µ×µãµêµğµüµ␍¶,¶6¶=¶D¶H¶H¶R¶b¶t¶…¶v¶t¶¥¶¬¶²¶¾¶È¶Ï¶Ö¶Ú¶Ü¶â¶î¶ø¶ÿ¶·
·
··"·+·D·P·T·T·W·`·Ö·Ø æ€æ€�Ѧ ��=�H�Z�a�r�z�~�����“�¿�¿�Ô�Ö�Ö�â�ê�î�û�û�‚‚‚ ‚ ‚ ‚<‚G‚X‚X‚]‚u‚„‚‰‚�‚š‚Ÿ‚Ÿ‚¤‚¼‚Ë‚Ğ‚Ö‚á‚æ‚æ‚ô‚ı‚ ƒƒƒ!ƒ$ƒ*ƒ/ƒ8ƒJƒSƒdƒtƒtƒyƒ�ƒ‰ƒŒƒ’ƒ’ƒ—ƒ—ƒ—ƒ�ƒ ƒ§ƒ²ƒǃ샄„„ „,„8„>„E„N„R„U„a„g„n„s„s„�„‘„‘„�„�„¦„®„·„Ƅ˄˄݄҄ã„ë„ñ„ü„…………-…3…;…A…F…Q…c…i…q…w…|…|…�…–…¡…§…©…¹…¿…¿…ä… †††$†*†@†Q†W†\†u†{†‹†“†›†¡†¦†¦†º†À†Ö†ç†í†ò† ‡‡!‡)‡1‡7‡<‡<‡R‡X‡n‡‡…‡Ї™‡Ÿ‡°‡¸‡À‡Ƈ͇Ò‡Ò‡è‡î‡ˆˆˆˆ,ˆ2ˆ<ˆDˆLˆRˆYˆYˆYˆkˆtˆ…ˆ•ˆ•ˆšˆšˆ¨ˆ°ˆÁˆÔˆÛˆáˆéˆïˆÿˆ‰␍‰‰‰‰‰‰‰‰‰7‰C‰H‰H‰W‰`‰k‰t‰‰Љ�‰�‰¥‰«‰Á‰Ò‰؉݉ï‰õ‰ú‰Š1Š1Š6Š6ŠBŠJŠMŠSŠYŠ^Š^Š‚ŠŠŠ’Š¢Š¨Š®Š®Š¿ŠİŠİŠâŠâŠîŠöŠùŠ‹‹ ‹ ‹+‹3‹C‹I‹P‹n‹}‹…‹�‹¥‹¨‹¯‹µ‹Í‹Õ‹í‹õ‹ø‹ÿ‹ŒŒŒ$Œ4Œ@ŒHŒKŒRŒXŒhŒwŒƒŒ�Œ¦Œ©Œ°Œ¶ŒÎŒÚŒõŒıŒ��␍�␍�␍�␍����+�A�G�_�r�x�}���•�š��¼�È�Ğ�Ó�Ú�à� ��!�'�.�.�.�3�3�<�T�j�p�ˆ�›�¡�¦�Ñ�×�ê�!�3�P�X�^�c�c�}�‰�•� � �¥�¥�¿�Ë�×�â�â�ç�ç��␍��$�$�)�)�?�E�Q�W�\�n�t�y�ˆ�”� �¦�¬�³�Æ�Ñ�Ú�æ�î�ñ�÷�ı�‘‘%‘-‘E‘M‘P‘V‘\‘t‘|‘œ‘¶‘¾‘Á‘Ǒ͑͑ޑç‘ó‘û‘ş‘’ ’’"’1’9’Q’Y’\’c’i’�’‰’¨’Â’Ê’Í’Ô’Ú’Ú’ê’ó’ÿ’“
““““/“>“F“`“h“k“q“w“�“—“¹“Õ“İ“à“æ“ì“ì“ı“””””$”*”/”A”P”X”s”{”~”…”‹”£”«”Í”ê”ò”õ”ü”••••••••#•/•5•:•L•R•W•e•q•z•†•�•‘•˜•�•£•µ•ĕ̕ä•ì•ï•ö•ü•––;–U–]–`–g–m–m–m–~–‡–“–›–�–¥–«––Ñ–İ–ø–——
——(—4—V—s—{—~—…—‹—‹—‹—‹—‹—�—�—£—¾—Ä—Ï—Ô—Ô—ç—ı—˜˜˜˜#˜F˜L˜W˜W˜i˜r˜ƒ˜ˆ˜š˜ª˜ª˜¯˜¯˜˜ؘޘì˜û˜™™™)™/™=™L™Q™Q™g™m™Š™¢™¢™Ì™Ò™×™ã™ì™û™û™šššš9šQšQš{š�š†š’š›šªšªš¯š¯šÅšËšèš››*›0›5›A›J›Y›Y›^›^›t›z›—›¯›¯›Ù›ß›á›í›ö›œœœœœœœ.œ0œBœOœOœOœ_œoœtœ˜œ¤œ¥œªœ¿œÜœìœ� �&�&�&�+�0�E�X�–�¦�¬�®�³�Ä�Ó��␍����!�!�*�<�O�X�g�g�l�q�€�‰�”�–�Ÿ�ª�ª�Ë�Ò�Ø�à�ë�ñ�ŸŸŸŸ Ÿ Ÿ%Ÿ*Ÿ1Ÿ8Ÿ?ŸFŸOŸ^Ÿ^Ÿ^ŸcŸcŸcŸuŸzŸzŸŒŸ—ŸŸŸ§Ÿ­Ÿ­Ÿ­Ÿ²Ÿ²Ÿ½ŸΟÑŸİŸæŸòŸùŸÿŸ     # / 8 D K Q V V V V [ ` ` k o o { „ ‡ ‡ ’ ” ª ± · Æ Ñ Ü â î ò ò ş ¡
¡
¡¡¡-¡4¡:¡B¡M¡X¡^¡h¡k¡o¡o¡w¡~¡�¡ƒ¡�¡’¡›¡�¡�¡©¡«¡É¡Ğ¡Û¡æ¡é¡ï¡ô¡ô¡ÿ¡¢¢¢¢¢¢&¢(¢>¢E¢K¢Z¢e¢p¢v¢‚¢†¢†¢’¢›¢�¢�¢©¢«¢Á¢È¢΢Ö¢á¢ì¢ò¢ü¢ÿ¢££ ££££"£&£/£2£2£=£?£]£d£o£z£}£ƒ£ˆ£ˆ£š£�£�£ª£³£¶£¶£Á£ãÙ£à£æ£ø£¤¤¤¤¤$¤)¤)¤4¤9¤9¤D¤G¤K¤R¤W¤\¤a¤a¤u¤z¤z¤‡¤‹¤œ¤¤¤¨¤¼¤äǤǤÔ¤à¤è¤î¤ş¤¥¥%¥0¥4¥4¥A¥I¥Q¥W¥W¥W¥W¥W¥Y¥Y¥g¥n¥{¥‡¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥—¥—¥®¥¶¥Â¥Â¥ã¥ò¥
¦ ¦¦%¦%¦H¦U¦`¦i¦r¦}¦„¦„¦�¦�¦‘¦£¦Á¦ͦͦü¨x¿Ùw4w4‰4‹4�4˜4¤4°4Å4Å4ô4ø4ı4 55&5)54575?5I5l_v>|>|T|c|h|}|j|Œ|�|�|œ|±|�|À|Æ|ß|ø|}*}C}M}„�~l~lœl¤lªl±l¸lºl½lÄlËlËlÜlàlælælûlmm␍m&mImjmom�m•m¡m¬m±mÁmÄmØmŞmãmémëmñmômúmÿmn
nn#nFnTnlnqnunšn­n²nÀnØnİnánoo9oLoQoWo\o_oaogomosoxo~o†o†o�o™o§o¿oÄoÈoíoıo p3p8pHpkpyp‘p–pšp¿pÒpÒpípípípûpqqqq#q;q=q=qKqcqcququq~q‹q¡qÁqÛqãqîqrrrr rr,r4r?rZr\rbr|r„r�r�r¨r¨rÂrH…“p…p…‡…�…­…´…Ë…æ…ø…ü…?†L��^~^~r~~•~�~¤~¦~¿~Ø~ã~î~ö~4IR>×>×G×G×J×X×f×i×n×ì=�ù�ù¶ù¹ù×ùîùÿùÿùú ú%ú%ú@úFúKúKúTúbúú—úœú£ú©ú«úÈúØúİúäúêúìúìúÿúûûûû
û&û6ûHûMûMûMûTû[ûbûwû~ûšûšû¬ûÌL»h¥h¥‚¥�¥˜¥¡¥©¥¬¥³¥·¥À¥Ó¥×¥İ¥ë¥¦¦$¦)¦5¦:¦A¦M¦R¦U¦_¦W¦o¦x¦‰¦‡¦¦—¦ ¦¦¦¦¦´¦·¦Ë¦Ô¦İ¦ä¦è¦í¦§§%§3§O§[§[§s§„§„§‹§¤§°§¸§Ë§Ò§æ§ï§ö§ú§¨
¨¨.¨[¨b¨f¨h¨s¨¨ƒ¨˜¨š¨«¨µ¨À¨Ê¨Ù¨è¨©©© ©©“©Pq�MM2MCMVMmMŠM¥M«M´MÂMÈMËM×MŒ papa€a¤a¤a²a²a²a²a»a»aÂaİaòaúaúabbb#b#b1b7b7bObObUb{b (kqŠŠ&Š2ŠBŠIŠOŠ @KW6è6èDèLèSèrèèè‚è„èŠè!$/4æŞæŞóŞß␍ßß"$).¶Ş¶ŞÃŞØŞİŞãŞ#$#(†Ş†Ş•ޫް޶Ş$€ğLWWaq‡�™´¹Éßçñ  ' 1 ; E O Y c m w � ‹ • Ÿ © ¿ É Ó İ ç ñ û  % / 9 O Y c m w � ‹ • Ÿ © ³ ½ Ç Ñ Û å ï ù !␍!!!!+!5!?!I!S!]!g!q!{!‰!%¤C¨œ¨œ¾œÅœÚœëœıœÿœ� ��'�1�<�S�V�X�j�p�€�Š�”�›�¦�»�Ã�Ã�Ù�Ù�Ù�í�&$5:ßß$ß9ß>ßDß'¤Diğ�ğ��␍�"�3�E�G�N�T�d�o�y�„�›��� �²�¹�É�Ó�İ�ä�ï�Ÿ Ÿ Ÿ!Ÿ!Ÿ!Ÿ6Ÿ((&, 0 0-040>0D0J0)0]eFLFL\LoL~L„L‡L�L*  ßş#ş# $($.$;$B$^$d$d$d$q$s$~$ˆ$�$�$©$¯$¹$¿$Ğ$Ğ$Û$å$å$÷$ı$␍%%% % %@%F%X%k%q%t%z%z%|%‚%ˆ%Š%Š%Š%›%¥%ª%ª%¿%É%É%İ%æ%ì%ò%&␍&&+&/&/&7&=&C&M&T&[&d&v&v&›&Ÿ&¥&«&½&Ğ&Ö&Ú&à&æ&ì&ì&î&ò&ø&ş&' ' ' ' '4'E'E'\'i'm'u'‡'§'§'­'°'´'º'º'Ì'İ'ò'(( (#(4(8(>(W(Y(_(l(n(z(˜(�(©(Ì(×(İ(ã(é(ò(ø(
))#)')8)<)B)[)])c)p)r)~)œ)¢)¨)®)·)½)Ú)Í)ô)ı)*****$*.*C*H*H*H*e*g*„*†*£*©*±*µ*¼*ß*å*ë*÷*+++&+++++2+6+@+N+P+X+]+e+p+v+…+Š+�+•+�+¢+±+È+Ø+å+ğ+ ,,*,*,1,F,K,T,a,f,l,q,q,x,|,†,”,–,�,¢,¦,°,¼,Ã,Ç,Ï,×,ß,ñ,ÿ,-----;-;-I-O-T-X-]-]-]-]-c-e-e-ˆ-�-”-›-±-³-³-³-¾-¾-¾-Ã-ì.+4.wÉÉ0É4ÉLÉTÉ\ÉfÉjÉqÉwɋɓɘɛɦɱɹÉÄÉÏÉÑÉçÉîÉõÉÊ Ê␍ÊÊ#Ê%Ê1Ê:Ê:ÊPÊ[ÊsÊyʂʓʙʢʴʺʺÊÂÊÆÊÑÊÖÊèÊóÊ÷ÊËË ËËËË+Ë+Ë0ËBËHËË,Ô@NåNådåkånå’å’å¯åÂåÕåèåíåíå ææ,æ?æGæGæIæIæIæ\æ^æ^æ^æeæxæ‹æ‹æ‹æ�æ©æ¼æÒæ×æÛæâæ÷æ
çççç9ç-LAP/$/$=$N$Z$u$z$š$œ$·$Ò$Ò$Ú$á$%.P~� Š Š®Š»ŠÉŠÛŠæŠôŠ‹‹!‹,‹:‹@‹F‹/4
?6?6M6Y6j6|6…6“6™60|ºU>
>
`
g
u
€
¦
¦
¯
±
±
¸
ß
æ
æ
õ
  + + 7 ? P Y w ‚ „ � £ ® ¾ Ğ Ù ä é ï ö  # 1 : : A P g g v  “ š ¡ ¦ ± · ¿ å î õ ú ␍␍ ␍4␍9␍A␍M␍_␍_␍v␍}␍…␍•␍§␍­␍¶␍¶␍Å␍Ë␍ß␍ä␍ô␍*=EYw�’�µÑãéô %..@DPgƒ•›¦²ÂÒäêêïññöö �1ŒÄãÆÚÆÚâÚîÚòÚöÚıÚÛÛÛ$Û)Û+Û7Û>ÛFÛLÛRÛVÛVÛeÛlÛtÛzÛ€Û‚Û‚Û�Û28 W/W/e/k/w/‚/“/�/¤/ª/3@t€–é–é¤é¯é¶éÕéâéâéåéçéíé4ÌS>>dw~…Œ’”›¢¥¥··ÉÔèğù "2GLe}��†�™­µ¾ÆËÒäô  $<@@T\emrx��³¸Ñéí    ' I T Z r Š � š ® ¿ Ç É Ï á ñ 

!
9
=
=
Q
$LK,"InstEntryFind",A="FL:::/Compiler/UAsm.CPP.Z,66",BI=263$
$LK,"PrsDotDotDot",A="FL:::/Compiler/PrsVar.CPP.Z,381",BI=264$
$LK,"ICMulEqu",A="FL:::/Compiler/BackA.CPP.Z,322",BI=265$
$LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CPP.Z,1",BI=266$
$LK,"PrsNoWarn",A="FL:::/Compiler/PrsStmt.CPP.Z,791",BI=267$
H2@_#_#h#n#‰#�#¹#»#ğ#Ú#$$$+$¨­ÓŞaŞaôaüabb3bbBbHbHbrbyb¤b²b²bßbccc(cTcAckcrc�c�c¤cÈcŞcŞcŞcècH>Lıı8ıBıFıJıOıQıiı�ı�ı‹ıp©Á..XZagmou{‘¤³¸º¿ÉŞô,>(&ä&ä:ä[ä_ä_ägä8öãöãÿãäää ä!ä&äd`µÖ×Ö×ô׸רØØØ"Ø"Ø/Ø1Ø>Ø@ØLØLØgØuØu؀؇ؖءاجخغØÁØĞØÛØáØæØèØôØ$ÙJÙZÙjÙzÙ|ٌٜ٬٬ٱÙÄÙËÙÒÙÒÙÒÙÒÙÙÙïÙûÙÚÚ␍ÚÚÚÚ>ÚEÚ[ÚgÚmÚsÚyÚ{Ú{Ú‰ÚDÃ�Ú�Ú¤Ú§ÚªÚ·Ú½ÚÊÚÍÚĞÚÖÚØÚâÚ ,cj؉؉æ‰ğ‰û‰Š ŠŠ
hlFFTio P Ÿ6Ÿ6­6¼6Ø6Ş6ğ6ğ6û67
777 ”;\KK&K*KCK]KzK›K¤KµKÙKğKğKLL'L4L;LmL~L‚LŠLŠL�L­L±LµL␍Œ×ö¾¾Şæêøş0FZh…‘–¤ÀÉÙÛââèèø|1¿"¿"Õ"Ş"é"#####$#&#,#5#7#=#G#N#Q#Q#[#0 ' ˆ ˆ.ˆNˆTˆZˆZˆ`ˆ„“°È È Ü ã ê î ¡%¡,¡=¡b¡m¡x¡z¡…¡ª¡µ¡À¡Â¡É¡Ò¡Ô¡ß¡æ¡¢("®ß®ß½ßÔßïßïßõß NßNß]ßsßyß ˆP³P³u³|³“³Ÿ³ª³¼³Í³¾³¼³í³´´´!´-´7´>´E´I´K´Q´]´g´n´u´y´y´ƒ´ˆ´“´¥´¶´§´¥´Ö´÷´µ
µµµ&µ-µ4µ8µ:µ@µLµVµ]µdµhµhµuµƒµ“µ¥µ¶µ§µ¥µÖµ÷µ
&¶-¶4¶8¶:¶@¶L¶V¶]¶d¶h¶h¶r¶‚¶”¶¥¶–¶”¶Å¶Ì¶Ò¶Ş¶è¶ï¶ö¶ú¶ü¶··· ·&·*·*·4·B·K·d·p·t·t·w·€·ö·Ø V‚V‚s‚A¨{‚Š‚­‚¸‚ʂтâ‚ê‚î‚ñ‚ÿ‚ƒ/ƒ/ƒDƒFƒFƒRƒZƒ^ƒkƒkƒwƒƒƒƒ�ƒ�ƒ�ƒ¬ƒ·ƒȃȃ̓åƒôƒùƒÿƒ
„„„„,„;„@„F„Q„V„V„d„m„y„�„‰„‘„”„š„Ÿ„¨„º„ÄÔ„ä„ä„é„ñ„ù„ü„……………␍………"…7…\…s…€…ˆ…�…œ…¨…®…µ…¾…Â…Å…Ñ…×…Ş…ã…ã…ñ…††††††'†6†;†;†B†M†S†[†a†l†q†q†€†‹†�†£†«†±††Á†Ó†Ù†á†ç†ì†ì†‡‡‡‡‡)‡/‡/‡T‡{‡€‡€‡”‡š‡°‡Á‡LJ̇å‡ë‡û‡ˆ ˆˆˆˆ*ˆ0ˆFˆWˆ]ˆbˆ{ˆ�ˆ‘ˆ™ˆ¡ˆ§ˆ¬ˆ¬ˆˆȈވïˆõˆúˆ ‰‰ ‰(‰0‰6‰=‰B‰B‰X‰^‰t‰…‰‹‰�‰œ‰¢‰¬‰´‰¼‰‰ɉɉɉÛ‰ä‰õ‰ŠŠ
Š
ŠŠ Š1ŠDŠKŠQŠYŠ_ŠoŠuŠ}ŠƒŠƒŠƒŠˆŠˆŠˆŠˆŠˆŠ§Š³Š¸Š¸ŠÇŠĞŠÛŠäŠïŠúŠÿŠÿŠ‹‹1‹B‹H‹M‹_‹e‹j‹ƒ‹¡‹¡‹¦‹¦‹²‹º‹½‹ËÉ‹΋΋ò‹ú‹ŒŒŒŒŒ/ŒMŒMŒRŒRŒ^ŒfŒiŒpŒvŒ{Œ{Œ›Œ£Œ³Œ¹ŒÀŒŞŒíŒõŒ␍��� �%�=�E�]�e�h�o�u�u�u�”�¤�°�¸�»�Â�È�Ø�ç�ó���� �&�>�J�e�m�p�w�}�}�}�}�‚�‚�‹�›�±�·�Ï�â�è�í�ÿ��
�&�,�8�@�C�J�P�y���‘�—�������£�£�¬�Ä�Ú�à�ø� ���A�G�Z�‘�£�À�È�Î�Ó�Ó�í�ù�‘‘‘‘‘/‘;‘G‘R‘R‘W‘W‘q‘}‘‰‘”‘”‘™‘™‘¯‘µ‘Á‘Ǒ̑ޑä‘鑸‘’’’’#’6’A’J’V’^’a’g’m’r’†’•’�’µ’½’À’Æ’Ì’ä’ì’ “&“.“1“7“=“=“N“W“c“k“n“u“{“€“’“¡“©“Á“ɓ̓ӓٓñ“ù“”2”:”=”D”J”J”Z”c”o”w”z”€”†”‹”Ÿ”®”¶”Дؔ۔á”ç”ÿ”•)•E•M•P•V•\•\•m•v•‚•Š•�•”•š•Ÿ•±•À•È•ã•ë•î•õ•û•––=–Z–b–e–l–r–r–r–r–r–w–w–�–“–Ÿ–¥–ª–¼––Ç–Õ–á–ê–ö–ş–————%—4—<—T—\—_—f—l—„—Œ—«—Å—Í—Ğ—×—İ—İ—İ—î—÷—˜ ˜˜˜˜2˜A˜M˜h˜p˜s˜z˜€˜˜˜¤˜Ƙã˜ë˜î˜õ˜û˜û˜û˜û˜û˜™™™.™4™?™D™D™W™m™s™~™€™€™“™¶™¼™Ç™Ç™Ù™â™ó™ø™
ššš š š2šHšNš\škšpšpšƒš™šŸš­š¼šÁšÁšךİšúš››<›B›G›S›\›k›k›p›p›†›Œ›©›Á›Á›ë›ñ›ö›œ œœœ œ œ5œ;œXœpœpœšœ œ¥œ±œºœÉœÉœΜΜäœêœ� � �I�O�Q�]�f�q�q�q�q�v�„����� �²�¿�¿�¿�Ï�ß�ä�����/�L�\�€���–�–�–�›� �µ�È�ŸŸŸŸ#Ÿ4ŸCŸuŸ}ŸƒŸ…ŸŠŸ‘Ÿ‘ŸšŸ¬Ÿ¿ŸÈŸןןÜŸáŸğŸùŸ     ; B H P [ a q w  Š � � • š ¡ ¨ ¯ ¶ ¿ ΠΠΠÓ Ó Ó å ê ê ü ¡¡¡¡¡¡"¡"¡-¡>¡A¡M¡V¡b¡i¡o¡t¡t¡¡�¡“¡Ÿ¡¨¡´¡»¡Á¡Æ¡Æ¡Æ¡Æ¡Ë¡Ğ¡Ğ¡Û¡ß¡ß¡ë¡ô¡÷¡÷¡¢¢¢!¢'¢6¢A¢L¢R¢^¢b¢b¢n¢w¢z¢z¢…¢‡¢�¢¤¢ª¢²¢½¢È¢΢Ø¢Û¢ߢߢç¢î¢ñ¢ó¢ş¢£ £££££9£@£K£V£Y£_£d£d£o£s£s££ˆ£‹£‹£–£˜£®£µ£»£Ê£Õ£à£æ£ò£ö£ö£¤ ¤¤¤¤¤1¤8¤>¤F¤Q¤\¤b¤l¤o¤s¤s¤{¤‚¤…¤‡¤’¤–¤Ÿ¤¢¤¢¤­¤¯¤ͤÔ¤ߤê¤í¤ó¤ø¤ø¤
¥¥¥¥#¥&¥&¥1¥3¥I¥P¥V¥h¥s¥~¥„¥‰¥‰¥”¥™¥™¥¤¥©¥©¥´¥·¥»¥Â¥Ç¥Ì¥Ñ¥Ñ¥å¥ê¥ê¥÷¥û¥ ¦¦¦,¦3¦7¦7¦D¦P¦X¦^¦n¦r¦ƒ¦•¦ ¦¤¦¤¦±¦¹¦Á¦ǦǦǦǦǦɦɦצަë¦÷¦§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§&§2§2§S§b§z§|§ˆ§•§•§¸§ŧЧÙ§â§í§ô§ô§ş§ş§¨¨1¨=¨=¨lªx¿Ùw4w4‰4‹4�4˜4¤4°4Å4Å4ô4ø4ı4 55&5)54575?5I5l_v®}®}Ä}Ó}Ø}í}Ú}ü}ÿ}ÿ} ~!~~0~6~O~h~�~š~³~½~„�îmîm nnn!n(n*n-n4n;n;nLnPnVnVnknunun}n–n¹nÚnßnoooo!o1o4oHoNoSoYo[oaodojooorozoƒo“o¶oÄoÜoáoåo
pp"p0pHpMpQpvp†p©p¼pÁpÇpÌpÏpÑp×pİpãpèpîpöpöpq qq/q4q8q]qmq�q£q¨q¸qÛqéqrr
r/rBrBr]r]r]rkrƒr…r…r…r“r«r­r­r»rÓrÓrårårîrûrs1sKsSs^sqsususus|s‚sœs¤s¯sÊsÌsÒsìsôsÿs␍ttt2tH…“p…p…‡…�…­…´…Ë…æ…ø…ü…?†L��ÎÎâï€ñ€€/€H€S€^€f€4IR^×^×g×g×j×x׆׉×�×ì=şúşú&û)ûGû^ûoûoûŠû�û•û•û°û¶û»û»ûÄûÒûïûü üüüü8üHüMüTüZü\ü\üoüuüuüuü…üzü–ü¦ü¸ü½ü½ü½üÄüËüÒüçüîü
ı
ııÌL»ˆ¥ˆ¥¢¥­¥¸¥Á¥É¥Ì¥Ó¥×¥à¥ó¥÷¥ı¥ ¦(¦5¦D¦I¦U¦Z¦a¦m¦r¦u¦¦w¦�¦˜¦©¦§¦Ÿ¦·¦À¦Æ¦Æ¦Ô¦×¦ë¦ô¦ı¦§§␍§$§<§E§S§o§{§{§“§¤§¤§«§Ä§Ğ§Ø§ë§ò§¨¨¨¨%¨*¨1¨N¨{¨‚¨†¨ˆ¨“¨Ÿ¨£¨¸¨º¨Ë¨Õ¨à¨ê¨ù¨©!©!©$©,©1©³©Pw‡¶M¶MÒMãMöM␍N*NENKNTNbNhNkNwNŒ papa€a¤a¤a²a²a²a²a»a»aÂaİaòaúaúabbb#b#b1b7b7bObObUb{b (kqŠŠ&Š2ŠBŠIŠOŠ @KW¦é¦é´é¼éÃéâéïéïéòéôéúé!$/4VàVàcàxà}àƒà"$).&à&à3àHàMàSà#$#(ößößàà à&à$€ğLWWaq‡�™´¹Éßçñ  ' 1 ; E O Y c m w � ‹ • Ÿ © ¿ É Ó İ ç ñ û  % / 9 O Y c m w � ‹ • Ÿ © ³ ½ Ç Ñ Û å ï ù !␍!!!!+!5!?!I!S!]!g!q!{!‰!%¤CȜȜޜåœúœ �� �&�,�<�G�Q�\�s�v�x�Š��� �ª�´�»�Æ�Û�ã�ã�ù�ù�ù�␍�&$5:†à†à”à©à®à´à'¤Di��&�-�B�S�e�g�n�t�„���™�¤�»�¾�À�Ò�Ù�é�ó�ı�ŸŸ#Ÿ+Ÿ+ŸAŸAŸAŸVŸ((&, 0 0-040>0D0J0)0]e¶L¶LÌLßLîLôL÷LÿL*  ß$$@$H$N$[$b$~$„$„$„$‘$“$�$¨$¯$¾$É$Ï$Ù$ß$ğ$ğ$û$%%%%-%3%8%?%?%`%f%x%‹%‘%”%š%š%œ%¢%¨%ª%ª%ª%»%Å%Ê%Ê%ß%é%é%ı%& &&(&-&5&K&O&O&W&]&c&m&t&{&„&–&–&»&¿&Å&Ë&İ&ğ&ö&ú&'' ' '''''$')')')')'T'e'e'|'‰'�'•'§'Ç'Ç'Í'Ğ'Ô'Ú'Ú'ì'ı'(&(.(?(C(T(X(^(w(y((Œ(�(š(¸(¾(É(ì(÷(ı() )))*);)C)G)X)\)b){)})ƒ)�)’)�)¼)Â)È)Î)×)İ)ú)í)**#*#*8*=*=*D*N*c*h*h*h*…*‡*¤*¦*Ã*É*Ñ*Õ*Ü*ÿ*+ ++.+5+;+F+K+K+R+V+`+n+p+x+}+…+�+–+¥+ª+°+µ+½+Â+Ñ+è+ø+,,,,.,J,J,Q,f,k,t,�,†,Œ,‘,‘,˜,œ,¦,´,,¾,Â,Æ,Ğ,Ü,ã,ç,ï,÷,ÿ,- -$-0-0-8-8-[-[-i-o-t-x-}-}-}-}-ƒ-…-…-¨-®-´-»-Ñ-Ó-Ó-Ó-Ş-Ş-Ş-ã- /+4.w6É6ÉPÉTÉlÉtÉ|É†ÉŠÉ‘É—É«É³É¸É»ÉÆÉÑÉÙÉäÉïÉñÉÊÊÊ Ê+Ê-Ê8ÊCÊEÊQÊZÊZÊpÊ{ʓʙʢʳʹÊÂÊÔÊÚÊÚÊâÊæÊñÊöÊËËË%Ë'Ë+Ë:Ë:Ë:ËKËKËPËbËhËÖË,Ô@nånå„å‹å�å²å²åÏåâåõåæ␍æ␍æ+æ9æLæ_ægægæiæiæiæ|æ~æ~æ~æ…æ˜æ«æ«æ«æ¾æÉæÜæòæ÷æûæçç*ç1ç1ç4çYç-LAP/$/$=$N$Z$u$z$š$œ$·$Ò$Ò$Ú$á$%.P~� Š Š®Š»ŠÉŠÛŠæŠôŠ‹‹!‹,‹:‹@‹F‹/4
?6?6M6Y6j6|6…6“6™60|ºU^
^
€
‡
•
 
Æ
Æ
Ï
Ñ
Ñ
Ø
ÿ
   $ @ K K W _ p y — ¢ ¤ ½ Ã Î Ş ğ ù     > C Q Z Z a p ‡ ‡ – Ÿ ³ º Á Æ Ñ × ß ␍␍␍␍%␍1␍@␍T␍Y␍a␍m␍␍␍–␍�␍¥␍µ␍Ç␍Í␍Ö␍Ö␍å␍ë␍ÿ␍#5:J]ey—®²¾Õñ  0@ENN`dp‡£µ»ÆÒâò

%+115®1ŒÄãæÚæÚÛÛÛÛÛ$Û3Û>ÛDÛIÛKÛWÛ^ÛfÛlÛrÛvÛvۅی۔ۚ۠ۢۢۮÛ28 W/W/e/k/w/‚/“/�/¤/ª/3@t€ëëë ë&ëEëRëRëUëWë]ë4ÌS®®Ôçîõü ''9DX`iqv|’¢·¼Õíññöÿ  % . 6 ; B T d y { ” ¬ ° ° Ä Ì Õ İ â è ş 
#
(
A
Y
b
j
o
v
Œ
œ
±

Ï
ç
ë
ş
ş
ş
 % G R X p ˆ ˆ ˆ ” š ¤ ¯ Á Ñ è ÿ  - - @ [ [ [ | Œ š š £ ­ º Ô â é ü ş ␍,␍%␍D␍T␍n␍n␍‡␍5D{ˆ®®¾ÒÛáóó÷ú6\Ob0‰0‰P‰_‰h‰q‰u‰y‰…‰Š‰�‰�‰ ‰¤‰¬‰Ä‰Ç‰Ó‰70ü®ã®ã·ã¼ãÅãÌãÎãÓã8tÚşş '.9OOazz…‰”Á›Ğçø *BGOSeX„˜œœ¡²úÔ '28Ldi}…�–›¢´ÄÚÜõ␍&>CKO^Q}‘•¤¤¤¤·½ÇÎáüü(66JXf{�“²ÁºÙéğ'MO{{{†ÄÉÔÚå!0GXs‡‹�¡Ãøå%06Jbg{ƒŒ”™ ²ÂØÚó 1J^bqqq„Š”›®ÉÉÉåõ%>3Qdiˆ—�¯¿Ğîî:::Z9DmzVVfzƒ‰››Ÿ¢ª:lw�N}N}d}s}x}�}z}œ}Ÿ}Ÿ}¬}Á}®}Ğ}Ö}ï}~!~:~S~]~;<‰”'06:E<”)şíşíî
îî'î)î9îDîVîaîlî{îŒî“î¬î°îÁîÁîËîÒîåîîîüîï,ï1ïNï=d(=`ˆ`ˆlˆ€ˆƒˆ—ˆŸˆ£ˆ­ˆ·ˆ¿ˆÂˆÈˆ>$uºXFXF|FFƒF�F™F¤F´F¼FÆFîFîFşFGGGGG(G-G-G=GBGBGRGWGWGgGlGlG|G�G�G‘G–G–G–G™G™G²GÀG×GêGêGìGìGûGHHH HHH'H7HDH\HdHjHjH~H~H‡HŠHHI?È oş¨ş¨©#©&©4©B©W©`©{©”©¦©±©©Æ©Ø©Û©æ©ï©û©ª?ª4ªªOªfªzª†ª”ªµªʪ«%« «@«C«H«K«K«R«h«o«|«�«�«�«°«°«È«Ì«ù«ù«¬¬¬&¬*¬;¬E¬V¬`¬s¬x¬x¬ˆ¬Œ¬�¬§¬¸¬¬Õ¬á¬æ¬æ¬æ¬­­­+­@­@­E­O­^­c­i­n­n­s­}­Œ­‘­—­œ­œ­¢­¨­­­­­µ­È­Ô­á­í­ü­® ®®,®@®Q®^®c®{®�®¥®²®º®É®Ó®Ù®â®ë®ë®ğ®ğ®ğ®ğ®ğ®¯¯¯¯.¯6¯Q¯b¯o¯q¯~¯ƒ¯ƒ¯ƒ¯�¯œ¯¡¯¡¯¨¯¶¯»¯Ó¯߯ñ¯ı¯° °°°@°L°R°X°g°o°w°¤°µ°°İÒ°Ò°×°×°ްì°ñ°±±±"±(±1±6±6±6±6±6±N±S±S±S±S±S±d±d±d±d±d±d±d±d±d±d±|±’±š±µ±ƱÓ±Õ±â±ò±÷±÷±÷±²²&²+²M²Y²Y²^²^²^²^²^²^²^²^²s²x²x²x²‰²�²•²•² ²²²ʲß²³!³,³=³B³B³B³K³q³z³‹³‘³²³˳ӳ۳鳴´"´C´\´\´\´\´\´~´·´À´Æ´Ì´Ñ´Ú´ã´è´è´è´è´÷´ µ)µ9µ?µDµDµWµkµ‘µ¤µªµªµ¯µ¯µ¾µÒµğµ  2¶X¶k¶q¶q¶v¶v¶v¶�¤¶¬¶Ƕضå¶ç¶ö¶ø¶ø¶ø¶ø¶ø¶ · · · · · · · · · · · · · · · ··*·5·7·7·@·B·B·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·X·X·o·w·ƒ·ƒ·‡·Œ·œ·¸·Ğ·ß·ë·¸¸¸(¸4¸Z¸z¸š¸¾¸À¸Ó¸¹Ù¸¹¹ ¹/¹7¹R¹c¹f¹€¹�¹š¹²¹²¹ݹà¹ï¹º$º8ºTº@ºpº…º£ºغÖº˺Àº±ºæºæºæºéºîºñº »»G»i»i»”»—»¦»º»Û»ï» ¼÷»'¼'¼E¼z¼x¼m¼b¼S¼ˆ¼ˆ¼ˆ¼‹¼�¼�¼—¼§¼ȼÔ¼)À@Ä„±®Ä®ÄÄÄÈÄÓÄÚÄåÄùÄùÄÅÅÅ)Å5ÅBÅFÅWÅWÅ`ÅeÅmÅ}ŋŚťŸŸÅĞÅĞÅëÅÆÆ+Æ-Æ-Æ7Æ?Æ?ÆIÆQÆQÆQÆbÆbÆbÆhÆpÆvÆ{Æ{Æ�ƉÆ�ƓƘƘƮƾÆÈÆׯÜÆäÆäÆéÆéÆğÆÇÇ Ç(Ç.Ç=ÇBÇJÇPÇPÇUÇ\ÇgǛǪǴǼÇÂÇ×ÇİÇâÇâÇâÇâÇâÇâÇâÇâÇâÇíÇûÇ ÈÈÈ(È-È:ÈBÈGÈGÈGÈOÈXÈaÈnÈvÈ‚È�ÈÁÈÉÈØÈâÈüÈÉÉÉÉ!É)É>ÉFÉNÉcÉeÉpÉxÉ�É�ɕɦɮɵɻÉÁÉÅÉÎÉÓÉ÷ÉÊ Ê Ê,Ê1Ê=ÊHÊMÊMÊMÊcʀʅÊ�Ê�ʦʮÊÃÊÈÊÓÊÛÊğÊõÊõÊË%Ë-ËBËNËSË_ËjËoËoËoËoËoËoËzËzËzËzËzËzËzËzËzËzËzËz˅˔˗˥˵˻ËÃËÒË×ËßËçËéËñËÌÌÌÌÌ Ì=ÌFÌNÌVÌ]ÌqÌz̵̧̟̺̃̋̿̕ÌÑÌÍ ÍÍ&Í@ÍHÍMÍMÍMÍVÍ_ÍbÍlÍzÍŒÍ�͠ͲͲͲͽÍÂÍßÍäÍäÍíÍòÍòÍòÍòÍòÍòÍòÍòÍòÍòÍòÍòÍòÍòÍòÍòÍıÍ Î!Î4Î<ÎKÎPÎXÎ_ÎlÎuÎ~ΆÎ�ΒΒΚ΢ÎÀÎÈÎËÎÍÎİÎçÎçÎçÎéÎşÎÏÏÏÏ"Ï"Ï+Ï0Ï8Ï?ÏLÏaÏhÏyυϢϻÏĞÏåÏìÏìÏñÏñÏñÏñÏñÏñÏñÏùÏĞĞ Ğ$Ğ$Ğ,Ğ4ĞAĞFĞFĞFĞJĞOĞOĞ_ĞdĞdĞdĞpĞwĞ}ЇЌУвкĞËĞÓĞöĞüĞÑÑ ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑLine truncated
UUU U%U'U8U=USU?UbUhUhUpUyUyUƒUƒU›UËUÔUàUäUòUVıU V V2VG ;zFßFßeßnßq߃ߙߛߤߩßÊßèß÷ßà)àAàHànàŒà›à¸àÉàààäàäàèàíàòàüàÿà áá'á*á*á*á*á/á5áQá_ákátáˆá�á™áµáÀáÌáÕáéáéáøáıáıá âHP‡—@@'@@I@6@X@g@o@z@|@‡@’@’@´@º@IPÅÕŞøŞøòø÷øùù␍ù:ùPù<ùmù_ù…ù�ùJŒ¥ÄV÷V÷‰÷µ÷µ÷È÷Ì÷î÷øøøøøø3ø?øPøUøføzøø�ø�ø�ø�ø»ø»øØøKP�­Ö;Ö;ÿ;<<<0<?<N<]<k<v<y<‰<Lè7--A-D-G-M-R-i-€-—-»-×-Ú-ù-.%.2.H.[.`.k.s.s.}.}.ˆ.�.¢.¨.Ç.æ.è.ı./"/A/I/T/T/^/^/p/®/Æ/Ø/M$ ŞYŞY ZòYZZNLx‡¶Ë¶ËÈËİËîËÿËÌÌÌ)Ì:Ì@ÌrÌOTHY(d(d:d<dEdNd\dadjdmdrd€dŠd�d—dP¨!G€b€b�b™b¬b¹bÅbÑbİbébcccc#c*c3cJcacfcxc‡c“c¥c¥c®cÑcÑcÓcæcècddd(dQhî„oo1o<oLo•oœo°o·o¿oÇoĞoØoàoâoêoòoùop p7p@p@pupŸp¨pÊpäpq+q7qYq[qbqiqiqŒq¨qÏqëqr.rUrqr˜r´rÛr÷rss-s:s?s?sNs[s`s`sgsrs„sœs´sÌsÎsÎsÎsÕsÕsâsçsçsçsøstt.tjtqtqtqtyt–t¤tÂtËtÔtátït u%u%u%u7uEuauuuuŠu�u¼u¾uÕuÛuìuõu÷uvvvv"v"vFvHvOv`vivkvyv{v‰v‹v™v™v¹v¹v¹v¹vÙv␍w3w;w?wGwKwYwgwiwqwuwyw�w�w�w�w·wÂwØwìw x%x0x:xAxZxfxmx†x†x˜x�xŸx¥x¶xÇxÖxİxîx÷xùxy yyy'y'y'yKyKyjyqyxy{y‡yŠy˜yœyªy®y¼yÀyÀyÙyàyåyóyz␍z(zHz[zjzlz{z}zŒz–z–z¤z­zÃzÊzïzôz{M{R{`{b{p{y{“{•{—{�{¯{¸{º{È{Ê{Ø{Ú{è{è{|||||'|'|'|2|N|s|Œ|‘|‘|‘|³|¸|¸|¸|Ø|İ|İ|İ|ü|}}}
]
p
p
p
u
—
¹
Ä
Ê
â
ú
ÿ

 & / 7 9 ? Q a v x ‘ © ­ ­ Á É Ò Ú ß æ ü  ! & ? W [ n n n s • · Â È à ø ø ø ␍
␍␍ ␍1␍A␍X␍o␍†␍�␍�␍°␍Ë␍Ë␍Ë␍ì␍ü␍

*DRYln�œ•´ÄŞŞ÷5D{ˆÎÎŞòû"6\Ob0‰0‰P‰_‰h‰q‰u‰y‰…‰Š‰�‰�‰ ‰¤‰¬‰Ä‰Ç‰Ó‰70üÎãÎã×ãÜãåãìãîãóã8tÚnn�—�©¿¿Ñêêõù1 @Wh|€…š²·¿ÃÕÈô  "jDy—¢¨¼ÔÙíõş $4JLe}��–®³»¿ÎÁí'-7>Qllˆ˜¦¦ºÈÖëş"1*IY`q—ˆ½¿ëëëö49DJUw‘~ ·Èã÷û3hUw• ¦ºÒ×ëóü "2HJc{¡ºÎÒáááôú 999Uess‡•®£ÁÔÙø /@^^€€‡ªªªÊ9Dmzvv†š£©»»¿ÂÊ:lw�¾~¾~Ô~ã~è~ı~ê~ 1@F_x‘ªÃÍ;<‰”&&6GPVZe<”)îî&î*î6îGîIîYîdîvî�îŒî›î¬î³îÌîĞîáîáîëîòîïïï0ïLïQïnï=d(=`ˆ`ˆlˆ€ˆƒˆ—ˆŸˆ£ˆ­ˆ·ˆ¿ˆÂˆÈˆ>$uºXFXF|FFƒF�F™F¤F´F¼FÆFîFîFşFGGGGG(G-G-G=GBGBGRGWGWGgGlGlG|G�G�G‘G–G–G–G™G™G²GÀG×GêGêGìGìGûGHHH HHH'H7HDH\HdHjHjH~H~H‡HŠHHI?È onªnª‹ª“ª–ª¤ª²ªǪЪ몫«!«2«6«H«K«V«_«k«~«¯«¤«Š«¿«Ö«ê«ö«¬%¬:¬^¬r¬t¬•¬{¬°¬³¬¸¬»¬»¬¬ج߬ì¬ñ¬­␍­ ­ ­8­<­i­i­�­†­†­–­š­«­µ­Æ­Ğ­ã­è­è­ø­ü­␍®®(®2®E®Q®V®V®V®x®‰®�®›®°®°®µ®¿®ήӮٮޮޮã®í®ü®¯¯ ¯ ¯¯¯¯¯%¯8¯D¯Q¯]¯l¯v¯|¯…¯œ¯°¯Á¯ίÓ¯ë¯ş¯°"°*°9°C°I°R°[°[°`°`°`°`°`°p°p°p°ˆ°�°¦°Á°Ò°ß°á°î°ó°ó°ó°ş° ±±±±&±+±C±O±a±m±s±{±�±б°±¼±±ȱױ߱籲%²2²4²B²B²G²G²N²\²a²t²€²Œ²’²˜²¡²¦²¦²¦²¦²¦²¾²òòòòòԲԲԲԲԲԲԲԲԲԲ첳
³%³6³C³E³R³b³g³g³g³p³г–³›³½³ɳɳγγγγγγγγã³è³è³è³ù³´´´´"´:´O´p´‘´œ´­´²´²´²´»´á´ê´û´µ"µ;µCµKµYµƒµŒµ’µ³µ̵̵̵̵̵îµ'¶0¶6¶<¶A¶J¶S¶X¶X¶X¶X¶g¶{¶™¶©¶¯¶´¶´¶ǶÛ¶···· · ·.·B·`·p·v·{·{·�·¢·È·Û·á·á·æ·æ·æ·ş·¸¸7¸H¸U¸W¸f¸h¸h¸h¸h¸h¸|¸|¸|¸|¸|¸|¸|¸|¸|¸|¸|¸|¸|¸|¸|¸|¸‹¸š¸¥¸§¸§¸°¸²¸²¸ƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸȸȸ߸ç¸ó¸ó¸÷¸ü¸ ¹(¹@¹O¹[¹q¹‹¹�¹˜¹¤¹ʹê¹
º.º0ºCºqºIºŒºŒº�ºŸº§ººÓºÖºğºşº
»"»"»M»P»_»s»”»¨»Ä»°»à»õ»¼H¼F¼;¼0¼!¼V¼V¼V¼Y¼^¼a¼{¼‰¼·¼Ù¼Ù¼½½½*½K½_½{½g½—½—½µ½ê½è½ݽÒ½ýø½ø½ø½û½¾¾¾¾8¾D¾™Á@Ä„±ÆÆ4Æ8ÆCÆJÆUÆiÆiÆtƅƌƙƥƲƶÆÇÆÇÆĞÆÕÆİÆíÆûÆ
ÇÇ(Ç(Ç@Ç@Ç[LJLJǛÇ�Ç�ǧǯǯǹÇÁÇÁÇÁÇÒÇÒÇÒÇØÇàÇæÇëÇëÇñÇùÇıÇÈÈÈÈ.È8ÈGÈLÈTÈTÈYÈYÈ`ÈvȆÈ�ȘÈ�ȭȲȺÈÀÈÀÈÅÈÌÈ×È ÉÉ$É,É2ÉGÉMÉRÉRÉRÉRÉRÉRÉRÉRÉRÉ]ÉkÉ{É�ɉɘÉ�ɪɲɷɷɷɿÉÈÉÑÉŞÉæÉòÉıÉ1Ê9ÊHÊRÊlÊrÊwÊwÊ~ʑʙʮʶʾÊÓÊÕÊàÊèÊıÊıÊËËË%Ë+Ë1Ë5Ë>ËCËgËsË{Ë�˜ˡ˭˸˽˽˽ËÓËğËõËıËÌÌÌ3Ì8ÌCÌKÌ`ÌeÌẻ̕Ì�̲̾ÌÃÌÏÌÚÌßÌßÌßÌßÌßÌßÌêÌêÌêÌêÌêÌêÌêÌêÌêÌêÌêÌêÌõÌÍÍÍ%Í+Í3ÍBÍGÍOÍWÍYÍaÍpÍvÍ~͈͆Í�Í­Í¶Í¾ÍÆÍÍÍáÍêÍóÍûÍÎÎÎ%Î*Î/ÎAÎuÎ}ÎŒÎ–Î°Î¸Î½Î½Î½ÎÆÎÏÎÒÎÜÎêÎüÎşÎÏ"Ï"Ï"Ï-Ï2ÏOÏTÏTÏ]ÏbÏbÏbÏbÏbÏbÏbÏbÏbÏbÏbÏbÏbÏbÏbÏbÏmÏyϑϤϬϻÏÀÏÈÏÏÏÜÏåÏîÏöÏıÏĞĞ
ĞĞ0Ğ8Ğ;Ğ=ĞMĞWĞWĞWĞYĞnĞЂЅĞ�ВВЛРШЯмĞÑĞØĞéĞõĞÑ+Ñ@ÑUÑ\Ñ\ÑaÑaÑaÑaÑaÑaÑaÑiÑtÑ€Ñ�єєќѤѱѶѶѶѺѿѿÑÏÑÔÑÔÑÔÑàÑçÑíÑ÷ÑüÑÒ"Ò*Ò;ÒCÒfÒlÒsÒuÒ{Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò„Ò„ÒŸÒ©Ò·Ò·Ò¼ÒÇÒÎÒêÒ÷Ò÷Ò÷ÒûÒÓ$Ó2Ó*ÕAx[.Õ.ÕDÕKÕRÕ]ÕdÕuÕÕ†Õ�Õ£Õ«Õ«ÕÆÕàÕæÕïÕöÕùÕÖ␍ÖÖÖÖ'Ö1ÖCÖIÖ_ÖfÖnÖ„Ö‹Ö‹Ö‹Ö™ÖÀÖÉÖÑÖãÖëÖëÖëÖöÖ×××.×5×=×D×Y×j×j×q×q×q×צ׳׼×Ä×Öתתת×ì×ô×ô×÷רØ(ØmØBt`¹~Û~Û–Û¦Û­Û´Û¿ÛÒÛÕÛİÛäÛçÛ÷ÛÜÜÜÜ)Ü?ÜJÜUÜ`ÜkÜr܅ܑܮܷܿÜßÜâÜèÜíÜüÜİ
İİ İ'İ'İ3İAİPİXİgİoݒݘİ�ݠݦݬݬݬİÑİÖİóİöİöİıİ
ŞŞŞ3Ş?ŞOŞbŞ~ޓޛޥŞÄŞØŞØŞLßC ?C.0.080@0E0DÉÊæXæXYY#YY=YKYKY[YdYkYoYxYxY€Y„Y¤Y²Y¾YÄYÏYóYóYZZZZ!Z!Z4Z?ZPZ[ZfZmZwZ„Z„Z–Z›Z›Z©Z®Z®Z¿Z¿ZÒZ×ZèZîZ÷Z [ [ [%[%[3[8[8[=[D[L[S[U[][d[d[s[y[†[�[•[¹[¹[Á[Ğ[Û[â[ä[ø[\ \\\\$\)\8\?\H\]\q\q\v\v\~\”\™\­\´\¹\¹\Å\Ô\æ\õ\]]5]G]Y]h]‡]’]—]¦]º]Á]È]Û]İ]ë]ş]^^^,^3^J^Q^]^n^…^‡^“^�^ ^ ^«^¿^Ì^Ô^Ö^ê^ü^__"_D_K_W_u_u_u_}_ˆ_Œ_”_˜_ _§_·_Â_à_å_î_ù_`
````+`9`D`O`]`c`i`o`x`~`�`¥`­`¹`Ç`Ş`à`é`ô`ö`a a&a,a2a;aLasa{a…a“a«a²a¾aÍaâaâaïaôab b b b bcEDQ^.}.}B}O}e}Q}t}v}�}¦}®}FœfɦS¦SÈSÒSúS TT-T2T6T>TGTVT]TfTkT€T‘T°T¸TºTÙTáTğT÷TUUUUU U0U5UKU7UZU`U`UhUqU€UŸU¦U¨UÇUÎUÎUÎUåUîUúUşU V"VV:V?VPVUVkVWVzV€V‡V�V•V—V¨V­VÃV¯VÒVØVØVàVéVéVóVóV W;WDWPWTWbWxWmW�W�W¢WG ;z¶à¶àÕàŞàáàóà á ááá:áXágá…á™á±á¸áŞáüá â(â9âPâTâTâXâ]âbâlâoâyâ~â—âšâšâšâšâŸâ¥âÁâÏâÛâäâøâã ã%ã0ã<ãEãYãYãhãmãmã{ãHP‡—vAvA—A„A¹A¦AÈA×AßAêAìA÷ABB$B*BIPÅÕNúNúbúgúvúvú}úªúÀú¬úİúÏúõúıúJŒ¥ÄÆøÆøùø%ù%ù8ù<ù^ùrùwùwù~ù†ù�ù£ù¯ùÀùÅùÖùêùïùñùñùñù␍ú+ú+úHúKP�­F<F<o<q<<…< <¯<¾<Í<Û<æ<é<ù<Lè7†.†.±.´.·.½.Â.Ù.ğ./+/G/J/i/ƒ/•/¢/¸/Ë/Ğ/Û/ã/ã/í/í/ø/ı/0070V0X0m0s0’0±0¹0Ä0Ä0Î0Î0à0161H1M$ N[N[y[b[ƒ[‹[NLx‡ÖËÖËèËıËÌ Ì&Ì.Ì>ÌIÌZÌ`Ì’ÌOTHY(d(d:d<dEdNd\dadjdmdrd€dŠd�d—dP¨!G€b€b�b™b¬b¹bÅbÑbİbébcccc#c*c3cJcacfcxc‡c“c¥c¥c®cÑcÑcÓcæcècddd(dQhî„oo1o<oLo•oœo°o·o¿oÇoĞoØoàoâoêoòoùop p7p@p@pupŸp¨pÊpäpq+q7qYq[qbqiqiqŒq¨qÏqëqr.rUrqr˜r´rÛr÷rss-s:s?s?sNs[s`s`sgsrs„sœs´sÌsÎsÎsÎsÕsÕsâsçsçsçsøstt.tjtqtqtqtyt–t¤tÂtËtÔtátït u%u%u%u7uEuauuuuŠu�u¼u¾uÕuÛuìuõu÷uvvvv"v"vFvHvOv`vivkvyv{v‰v‹v™v™v¹v¹v¹v¹vÙv␍w3w;w?wGwKwYwgwiwqwuwyw�w�w�w�w·wÂwØwìw x%x0x:xAxZxfxmx†x†x˜x�xŸx¥x¶xÇxÖxİxîx÷xùxy yyy'y'y'yKyKyjyqyxy{y‡yŠy˜yœyªy®y¼yÀyÀyÙyàyåyóyz␍z(zHz[zjzlz{z}zŒz–z–z¤z­zÃzÊzïzôz{M{R{`{b{p{y{“{•{—{�{¯{¸{º{È{Ê{Ø{Ú{è{è{|||||'|'|'|2|N|s|Œ|‘|‘|‘|³|¸|¸|¸|Ø|İ|İ|İ|ü|}}}
}
}}}}}}}#}B}X}}}™}­}²}²}Í}Ú}Ü}ë}ô}~~~~~6~8~8~@~;~{~{~{~š~š~š~»~À~À~À~â~ç~ç~ç~   +00KY[js���”�µ··¿ºúúú€€/€/€Y€q€‰€”€ª€¾€×€ï€�%�'�8�U�l�s�k…R| $nånåŒåšå°åÊåâåíå æ æ ææ1æ3æ3æ3æ@æ[æ]æ]ækæxæ“æ“æ£æµæSæd�Û�Û¨Û±ÛÑÛÑÛ×ÛßÛçÛïÛ÷ÛıÛ
Ü
Ü$Ü)Ü)Ü/Ü4Ü4Ü:Ü?Ü?ÜEÜJÜJÜbÜuÜ{܀܀܉ܩܩܩܹܻܻܰܲܲÜÁÜÁÜÈÜÊÜÊÜĞÜĞÜ×ÜÙÜÙÜßÜßܿܿÜîÜôÜúÜİİİİİİİ&İ.İ6İ>İDİ\İkİuİxİx݂݈İ�İ�ݒݚݡݥݭݵݻİÃİÊİÒİÚİŞİäİïİõİŞŞŞŞ Ş'Ş/Ş7Ş;ŞAŞIŞPŞXŞ`ŞdŞjŞuŞzŞ�ޡަީŞOßTL”£@†@†Y†[†b†x†ˆ†�†¦†¾†Á†Ó†‡UÔ*[NïNïbïwï†ïŠï˜ï¡ï°ï°ï¿ïÊïÕïàïçï÷ïğ%ğ+ğ0ğ4ğGğGğ]ğ_ğiğ�ğ˜ğšğ³ğ·ğÅğÊğÊğÑğàğèğûğeñV$�Y�YÉY²YÓYÛYWPÍİ.C.COC<CqC^C€C�C—C¢C¤C¯CºCºCÜCâCX,ÖÖ'Ö-Ö5Ö>ÖGÖLÖY …N�N�o�„�’�Ÿ�Ò�ß�ñ��!�!�.�.�5�H�F�V�V�a�k�q�w�z�ˆ���§�®�±�Æ�Ë�Ö�á�û��&�,�2�9�W�?�`�f�l�t�”�|���£�©�±�±�¸�Ö�¾�ß�å�ë�ó�‘û�‘"‘(‘0‘0‘0‘F‘F‘F‘F‘Q‘[‘d‘„‘�‘¡‘¦‘·‘ˑББۑã‘î‘÷‘’’'’<’Q’n’s’s’~’†’“’�’®’½’Ú’ï’““““ “5“J“V“g“l“}“‘“‘“œ“‘“´“¹“¹“ȓ͓͓ܓá“á“ò“÷“÷“”␍”␍” ”/”4”4”G”V”[”i”[”}”‚”�”‚”¤”©”·”©”˔ДޔДò”÷”÷”••;•@•N•@•b•g•g•„•‰•«•°•¾•°•Ò•ווô•ù•– –.– –B–G–G–d–i–‹–�–�–�–²–·–·–Ò–×–×–ò–÷–÷–———2—7—7—R—W—W—r—w—w—’—————²—·—·—È—Í—Í—Ş—ã—ã—ï—ú—˜˜˜ ˜9˜>˜d˜k˜u˜z˜‹˜•˜ª˜µ˜º˜˘Ö˜ޘã˜ã˜ç˜ë˜ò˜ü˜™™™™™™"™;™D™D™j™o™o™w™‹™”™®™»™Æ™Ñ™Ü™î™ú™ššššš6šAšKšVš[šfšnšsšsš~š†š�šššªššÚšîšóšóšşš››&›G›S›d›i›z›~›ƒ›ƒ›“›�›¦›«›¶›Æ›Õ›ò›œœ'œ,œ7œ?œDœOœ_œnœ‹œ œµœµœµœµœºœ¿œ¿œËœÜœÜœ�� � �*�>�H�J�V�^�{�Œ�–�¡�Ä�Õ�æ�÷���*�/�/�:�?�?�G�R�W�W�_�j�o�o�w�˜����°�µ�µ�½�Ş�Ç�Å�ö�û�Ÿû�'Ÿ,Ÿ,Ÿ9Ÿ>Ÿ>ŸFŸKŸKŸ]ŸoŸtŸtŸˆŸtŸ Ÿ¥Ÿ¥Ÿ­Ÿ²Ÿ²ŸÅŸÊŸÊŸİŸâŸâŸüŸ    + ; @ @ Z j o o ‰ ™ � µ � Í Ò Ò İ â ¡ ¡ú â 6¡;¡w¡e¡S¡;¡�¡”¡”¡£¡³¡¸¡¸¡Ç¡סܡܡë¡ù¡ş¡&¢¢ş¡>¢C¢k¢Y¢C¢ƒ¢ˆ¢°¢�¢ˆ¢È¢Í¢Í¢ê¢Ô¢£$£)£)£D£0£n£~£ƒ£ƒ£�£”£”£ £¥£¥£¸£È£Í£Í£à£ğ£õ£õ£¤¤¤¤0¤@¤E¤E¤M¤R¤R¤Z¤_¤_¤g¤l¤l¤t¤y¤y¤Œ¤‘¤‘¤¤¤©¤÷¤å¤Ó¤Á¤©¤¥ ¥W¥E¥3¥!¥ ¥d¥i¥i¥x¥“¥˜¥˜¥©¥Ä¥É¥É¥Ú¥è¥í¥í¥õ¥ú¥ú¥¦¦¦¦¦¦L¦:¦(¦¦k¦†¦‹¦‹¦æ±¦Ÿ¦’¦â¦ı¦§7§%§§§O§T§‰§w§l§T§¡§¦§À§ª§¦§اݧú§ä§ݧ¨¨¨#¨<¨L¨]¨]¨‚¨„¨š¨ ¨ ¨½¨ʨû¨,©©O©W©W©W©c©h©h©{©†©�©•© ©ª©¯©¯©É©ΩΩÖ©Û©ï©Û©ş© ªª"ªª1ª<ªAªAªLª]ªbªbªmªxª}ª}ª�ª“ª“ª¤ª©ª©ªêΪÓªުÓªíªòª«òª««%««4«9«M«9«\«a«a«u«a«„«„«„«‰«•«‰«¨«­«­«¹«­«Ì«Ñ«Ñ«İ«Ñ«ğ«õ«õ«¬õ«¬¬-¬¬<¬H¬S¬^¬c¬w¬c¬†¬’¬�¬¨¬­¬Á¬­¬جЬá¬æ¬æ¬î¬ó¬ó¬ü¬­­
­­­­­­(­-­-­8­=­=­H­M­M­X­]­]­h­m­m­x­}­}­ˆ­�­¡­�­°­»­Æ­Ñ­Ö­Ö­à­å­å­ï­ô­ô­ş­®®␍®®®® ® ®,®1®1®>®C®C®C®C®C®K®P®P®X®]®]®e®j®j®r®w®w®®„®˜®„®§®¸®½®½®Ä®Ï®ï®ô®
¯¯.¯¯=¯H¯S¯X¯X¯_¯j¯Н�¯¥¯°¯ɯµ¯دã¯î¯ó¯ó¯ú¯°%°*°@°K°d°P°s°~°‰°�°�°©°•°¸°ذݰó°ş°±±:±&±I±T±Y±Y±t±`±ƒ±£±¨±¾±ɱâ±α²ñ±² ²$²$²?²+²N²n²s²‰²”²­²™²в¼²ß²ê²ï²ï²ş²³³³³³³³"³"³"³,³.³.³8³?³b³d³d³n³n³n³n³n³p³p³‡³�³™³™³¤³ª³±³¼³dzÒ³̳í³
´ÿ³"´"´0´*´V´K´n´n´n´w´~´‘´–´¤´·´·´Ö´á´ø´µµµ9µIµ^µpµ€µ€µ¥µ¬µ»µ͵͵ѵÖµݵíµ  '¶.¶3¶3¶7¶B¶N¶\¶‰¶’¶£¶±¶ä¶ğ¶õ¶ ·#·/·@·E·V·u·£·Ì·Ï·ß·á·á·å·¸¸¸¸#¸T¸w¸w¸w¸z¸£ºZ, NÖNÖ\ÖbÖfÖoÖxÖ~Ö[`BV^†^†t†‚†‰†�†œ†µ†¹†¿†Õ†ò†ô†ô†%‡‡ô†D‡N‡\8
.Y.YOY<Y^YiYtYYŠY–YœY]\’ğŸğŸşŸ     ) 4 6 L L ^ j s v ¥ ^øª¤^ë^ëƒëˆë•ëÁëÁëÌëÙë÷ëÿë,ì1ìZìzì–ìœì ìÃìéìîìí4íZíqíwí{í”íœí¡í²íºíÙíßíãíüíî#î(î9îAî`îeîmîsîwî{î�î•îšî¸î½îÊîÏîÏîÜîôîïï0ï0ïGïLïLïcïeïeïyï{ï{ï’ï”ï”ï«ï­ï­ïÄïÄïÙïŞïŞïíïíï&ğ?ğ?ğRğWğWğWğWğ†ğ�ğºğºğºğÇğŞğàğàğàğíğññññ*ñ*ñAñCñ^ñzñzñzñ~ñ€ñ€ñ€ñ…ñ‡ñ‡ñŒñŒñ–ñ›ñ›ñ·ñ·ñ·ñ¿ñÄñÄñÄñÌñÑñÑñÙñÙñÛñòò'òGòGòGòGòGòaòdòyò€ò‚ò‹ò�ò ò¬ò¬ò´òÆòÆòÒòåòüòó.ó@ó\ó|ó�ó±óÏóôóô&ôLôeôtôŠô¦ô«ô«ôßôäôäô÷ô÷ôõõõõ.õLõqõ„õ£õÉõêõùõ'ö9öCöeögögögösösösö‘öÁöÃöÃöÒöÒö×ö×ö×ö×ö×öîöóö÷U÷_\
~N~N�N¦NÂNÏNæNùNOOO(O0O;OQOGOiOoO`øA¶9¶9Ô9×9Ş9å9ì9ğ9ò9ù9::::C:^:K:v:{:Ÿ:Ÿ:«:³:Â:ü:;.;6;;;D;P;X;_;�;‡;©;«;Í;Ù;û;<<<<<<&<I<[<a$ŞŞŞ8Ş8Ş>Şb|Xs�è�è¨èÔèÔèóèééééé éé/éHéJéJéJéRéméoéoéyéyé‘éc”"4484B4N4S4c4i4~4’4¢4°4¾4Õ4İ4ç4ö4ş4 555555'515:5B5E5W5dôÍ�6�6Ç6Ô6×6à6æ6ı67+767l7Œ7‘7–7¡7»7Í7Ú7ğ788"84898<8\8|8„8Œ8‘8±8Ñ8Ù8á8ã89 999 9 9+9+97979I9‰9¢9¢9²9ed¤¹ø‹ø‹ŒŒŒ!Œ)Œ7ŒJŒVŒpŒ}Œ}Œ€Œ�Œ�Œ¸Œ¼ŒÄŒf(¸şŸ*Ÿ*µ*º*Î*ı*␍++$+0+7+G+e+�+ +®+®+µ+Å+Ñ+á+ê+,,,,-,-,C,C,Y,Y,o,o,…,…,›,›,±,±,È,È,ß,ß,ö,ö,␍-␍-$-$-;-;-R-R-i-q-|-�-˜-©-¬-®-Å-Ì-/g¬÷ŞŞøş␍#55LSVXduux€–™§ª­´¸ÀÎàóöE h(ÅË�€�€µ€¢€Ä€Ö€Ş€iCŞOŞOPPP#P+P3P@PFPOPUPZPbP~P„P†PˆP•P•P¢P—P³P¹P»P½PÊPÊPÊPÏPØPàPéPñPóPûPQ QQQ)Q0Q@QKQZQ{Q‚Q�Q–Q§Q«Q³Q³QÇQ×QßQâQHRj8-7O0O0c0g0l0w0‚0…0‰0‘0kˆWõN‡N‡h‡ƒ‡‰‡�‡�‡—‡¼‡Á‡̇ê‡Ô‡ù‡ ˆˆ'ˆ/ˆ9ˆWˆiˆrˆzˆ„ˆŸˆ‰ˆ®ˆÀˆʈÒˆêˆÔˆ‰ùˆ‰0‰:‰B‰B‰K‰S‰i‰‚‰”‰£‰§‰§‰®‰³‰щÓ‰؉ã‰ù‰ù‰ù‰ı‰ Š*Š4Š>ŠGŠhŠrŠ|Š~Š~Š›Š©Š·ŠºŠÓŠ׊òŠöŠ‹‹4‹8‹8‹8‹>‹L‹V‹o‹u‹€‹Œ‹�‹–‹œ‹µ‹À‹΋Ø‹ñ‹ô‹ü‹Œ
ŒŒŒ.Œ0Œ<Œ>ŒFŒLŒeŒ}Œ‰Œ�Œ£Œ¸ŒÈŒáŒòŒòŒıŒ� �,�A�F�[�k�„�•�•�›�¦�®�¼�Ã�Õ�leãVßVßpßyߙߙߟߧ߯߷߿ßÅßÒßÒßàßåßåßëßğßğßößûßûßàààà1à7à<à<àEàeàeàeàlànànàuàwàwà}à}à„à†à†àŒàŒà“à•à•à›à›à¢à¢àªà°à¶à¾à¾à¾à¾àÊàÒàÚàâàêàòàúàáá'á1á4á4á>áDáJáJáNáVá]áeámáqáwáá†á�á–ášá á«á±á¾áÊáĞáØáÜáãáëáóá÷áıáâ âââ â&â1â6âLâ]âbâeâ ãm`�!�!˜!Ÿ!³!Ç!Ì!ê!ï!␍""-"/"F"Z"c"e"y"‰"º"n�2Ò””&”7”H”Y”j”{”�”–”¤””͔Ӕà”õ”õ”•• •4•O•O•[•c•k•q•†•�•’•𕍕®•³•³•ȕݕä•ì•ô•ú•–0–<–@–J–c–i–k–x–z–Œ–Œ–“–›–­–­–Ş–ì–ÿ–—␍———!—-—1—=—A—A—W—j—p—t—~—‚—‘—•—¤—¨—»—¿—¿—¿—¿—Ö—ä—ñ—ù—˜ ˜.˜9˜O˜\˜k˜s˜€˜›˜«˜»˜À˜À˜À˜À˜Í˜Ü˜ä˜ê˜ÿ˜™#™4™D™J™J™J™\™b™n™t™�™œ™¬™¸™¾™Ë™İ™ë™␍š™›oÔ¼í(m(m:mKmVmamzmŒm¤m©m¸m¿mÌmÓmámèmêmímòmômúmn.nDn\nanpnwn„n›n¹nÀnÂnÅnÊnín oop$hm?&?&M&a&h&‚&qxKeFQFQnQZQ}Q˜Q„Q§Q¬Q³Q»QÂQÍQØQàQèQóQşQR R,R4RrFƒöqöqrr1rIrSr^r^rcrnrzr…r“r£r³rºrÀrÕrêrêrşrss#s2s?sPsasos}s„sŠsŸs´s´sÈsÕsæsösÿsttt$t5tBtRt´ts8§±�O�O’O—OœO­O»OÄOÉOÎOĞOt88B—0—0«0¯0´0¿0É0Ì0Ğ0Ø0u0‚ŠŞMŞMôMNNNN%NvÜtFFhs~‡—©¯µ»ÑÀåòõı=PTZqw‡�™§¬ºÓáêúü/=Ic‚‰“¢¨®´ºĞñ(3BP_l|Š¡­²ÀÜî $*ALY``n}�œ®®Ùäw`-A^…^…t…†…�…‘… …¿…Ã…É…ß…ü…ş…ş…/††ş…N†X†xD‡Ôââ â(â3â9â?âCâGâsâsâzâ}â‚â”â˜â¿âÃâÈâÈâÏâÒâ×âãâôâøâ ãã ã!ã3ã7ãSãWã\ã\ãpãsã�ã‹ã’ã¸ãÃãÇãÌãää&ä*ä;äFäJäLäWä[ä[äoäsäuäuä€ä„ä˜äœäœäœä äÂäyˆÕóÆäÆäÚäğäğäğäòäòäùäûäûäåååååå å'å)å)å6å=å?å?åWå\å\ålåz°0X�Z�Z¦Z®Z¹Z[[øZŞZÇZ#[5[%[U[U[l[`[�[£[¯[Ä[±[Ó[Ù[à[\ó[ç[\\9\9\@\j\j\j\v\{ÄL¹îúîú ûû"ûHûHûJûWûbûhûyûˆû—û¤û¤ûªû¯û´ûÊûİûèûìûşû üüüü5üCüCüCüNüiüTüqü„ü†ü¢ü�üªü¸ü¸üºüÖüÖüİüãüìüóüöüı,ı ı4ı:ıCıCıCıVı[ı[ıcıcınıƒıŒıŒıŒıŒı¨ı¿ıÅıÊıÊıßıåıêıêıöış3ş8ş=ş=şIşfşuş„şŒş‘ş—şœşœş£şªşÍşêşìş ÿÿÿ$ÿ$ÿ1ÿ:ÿ:ÿXÿnÿyÿ~ÿ‹ÿ–ÿŸÿ§ÿ·ÿÎÿÎÿŞÿŞÿğÿöÿ ((*166CNT]]p}�š¨±àéôù05<IPbw~„��–°·¼ÊÚèèîõşş#&&7?GSpw„†�¡°°°ÚÚÚççü&1?JY``yŒ��²´Â××İææóù  &8?JOW^inƒ…Ÿ´´´½ÃÔâôôú
3<<BKKjjwzƒŒ”Ÿ±·ÂÂÏÒÛäì÷ '*3<>`sˆ�™«±¹¹¹¹Ä=
|”�¾33“3—3 3£3¬3µ3Ç3Ç3ó3÷3ü3ÿ344 4"4*4-4:4B4J4R4Y4i4i4u4}`2vOvO�OŠO­OÒO¾OáOæOíOõOüOPPP0P%PHPPP~À-°f°fÎfŞfèfèfòfòfüfggg g)g6g6gDgXgXg|g‰g‰g™g¦g¦gÉgÖgÖgëg␍h"hDhMhZhZh}h‡h‡hºhíhóhóhóhi¸ºäȌȌàŒâŒîŒòŒÿŒ����"�&�.�9�M�Y�[�[�d�f�f�o�q�q�z�|�|�…�…���”�—�¡�²�¸�Ä�Ä�,�€œøÆ&Æ&ä&õ&␍''0'%'H'h'T'w'ˆ'�'®'š'Æ'ã'ê'(û'(>(*(M(^(t(`(Œ(™(™(±(±(»(�œX{V2V2b2r2}2§2×2è2ù2 333-343B3Z3i3v3y3’3•3š3±3Á3Ñ3Õ3Ü34‚x± °°°%°,°K°Z°i°x°‡°–° ° °¥°¬°¿°Î°Ó°î°±±±0±4±B±I±N±N±U±g±p±r±€±’±’±’±¤±¯±Á±Ì±Ù±Ş±î±ó±²²²!²&²6²;²K²M²]²_²o²q²‚²‹²‹²�²�²¤²´²´²Ï²á²ó²³³³³³+³ƒ\åø0�0�K�R�W�e�z���‹�™�œ���¨�º�º�Á�÷�„0ÎÖ&&>~rHF’š…`,^„^„t„†„�„—„¦„¿„ÄɄ߄ü„ş„ş„/……ş„N…X…†L4CÎ0Î0Ü0î0ô0ü0111/15181t1‡(–œO3O3]3l3p3s3y3ˆ\DWv1v1„1–1œ1¤1¶1¼1Å1×1İ1æ1ø1ş12O2‰, öÕöÕÖ ÖÖÖÖŠ„ �␍�␍¬␍¾␍Å␍Ì␍Û␍à␍)>+M\^€€€�«¡ÃÍ‹`>~f~f›f£fªfÏfİfßfífúfg g"g1g<g@gKgWg^gjg�g˜g«gÂgÌgÚgìgîgüghhh(h.h>h>hVhVh{h{h€h€h‰h•h¢h®hÃhÚhéhôhii)iAibibikipipipipi€i‰i‘i–i¤i²iÂiÇiÇiÕiÕiÚiÚiäiïijjj#j.j8j<jEj^jajqjxj–jŸjŸj®j¾jÎjÕjÛjçjïjújkkkk+k6k<kLk\k\k‰k§k³k»kÆkÍkØkèkøkøkl␍l␍ll"l4l:lHlUlblllplyl’l•l¥l¬l±l±lÅlÅlÊlÎlŞlçlùlÿlmmmmm/m8mDmTmTmTmYmqmqm€mƒm—mµmÀmémûmnnn!n(n:nJnenlnpnvn~n‰n˜oŒ8í÷&&&&@&U&k&Œ&y&¤&¼&¼&Æ&�`j~8Ÿ8ŸXŸ_ŸgŸrŸ|Ÿ‡Ÿ�Ÿ�Ÿ¨Ÿ«ŸĞŸÒŸâŸâŸğŸ�_ØØ8Ø?ØFØKØbØtØ~؄ؖ؛ادزشؾØÈØÈØÌØÔØÜØäØîØ÷ØÿØÙ Ù&Ù7Ù>ÙAÙFÙUÙ[ÙcÙcÙjÙmÙrÙ�Ù‡Ù�Ù�Ù�٠٥ٴٿÙÇÙÇÙÒÙæÙíÙôÙ Ú�83=ÖÖÖÖßÖßÖíÖñÖÿÖ××�8>H××××%×)×0×3×8בD*Ö/Ö/ğ/0␍00 080A0E0W0]0|0’Ä{¨VşVş€şƒşŠş�ş•ş—şœş¢ş¢ş´ş»şÑşäşóşùşûşÿÿÿÿ&ÿ(ÿ/ÿ5ÿ?ÿ?ÿ?ÿVÿhÿoÿ~ÿ€ÿ–ÿ©ÿ©ÿ»ÿ“0+3~0~0‡0­0¾0Ä0Ä0Ì0”„\yfñfñxñ�ñ—ñ ñ¢ñ©ñ¹ñÄñÆñĞñĞñÙñêñíñíñòòò7ò>òBòQòdò·ò• 
//'/D/I/–hö ÖcÖcìc÷cddd$d5d>dOdUdadxdxdŠd›d¨d±dÂdÈde—„a~JJNJTJ]JiJqJxJ|J…J…JŠJ‘J©JÓJØJüJKKK6KZKyK‹K˜lò ~~–¨¯ØÚüş3 BBT[}}…™ y}€Š€Š‰Š•ŠšŠš(A>ç>ç`çhçnçvçxçxç‰ç‰ç‰ç‘ç™ç«çºç«çÏçÑçÑçëçíçíçøçıçèèèè1è3è@èBèOèQè^èfènèuè„è‘è“è¤è±è±è±èºèÌèßèåèíèïèüèüèéééé&é>éCéCéCéQéWé\édéoé�éŒé‘é‘é˜éœéªé®é·é¾éÜéééğéùéêêêêê"ê-ê;ê;ê[ê[ê[êbêpêê’ê¥ê§ê§ê§êºêºêÁêÈêÍêÓêåêïê ë5ë;ë;ëOëTëxëë‹ë©ë¼ëÇëÎëÒëÒëÒëÒëİëçëõëì"ì?ìIìIìWìuì¥ì¸ìÉìàìóìøìøìøìí íí(í-í-í-í?íiíoíoíoízí„í�í›í�í�í�í¢í®í®íøí›H%¯/¯/½/Ä/Ï/Ü/ç/ï/ï/0000œ0 NN-NN<NXNNNpNxN�Lİì%%0%E%[%|%i%”%™%Ä%å%Ò%ı%&& &�ğ·�K�KÃKÌKØKàKëK
L
LLL1LL@L@LNLXL_LL�L›L¢L¢L¾L¾LåLêL M"M?MBMJMQMqMsM�M”M”M°M°MÍMÍMôMNŸTVg��¤±·½ÎÜêü! 0
R††µªÖÂùå%5<IT`ksx„‰�¤¨³¸ÃÜåñö
38Qfx}ˆ���’«ÀËÕàâíõõú=¡àZ�˜d˜d²dÀdÅdÒdàdédee7e@ePekeve†eˆeŠe”e e¤e±e½eÏe×eïeóeóeóeóeøef0f0f7f:fBfNfWf­f¢d1¾(¾(Ü(ô() )())@)`)L)o)€)–)‚)®)»)»)Ó)Ó)İ)£ü!\ÎÎæø0
?`ubª�„¹ÖÖÖè:QEƒˆ›�ñÒó ø&N<]zzzŒ©©ÊÑóóû¤(NäNä\ää…äŠäŠä�ä¥(!'~Ö~Ö‡Ö•Ö›Ö�Ö¢Ö¦D]j<9<9V9]9f9r9‡9�9•9›9�9�9¬9§„¼Ù˜©˜©Ë©×©Û©ã©ë©ï©ú©ş©ªªªªª(ª9ª;ª?ªPªaªpªƒª‹ª–ª–ª–ª¨ª¨€ › ›¹›À›Ç›Î›Ô›ä›ï›ù›œœœ œ;œEœOœVœaœsœ{œ{œ‘œ‘œ£œ© Ê 6V6V\VyV�VŒVœV¥V©VÄVÚVóVùVWWWW0WRWXW`WeWkWnW„W�W�W±W¹WÎWÓWâWX
XXXXX-X8XEXQXdXqX~X•X©X³XµXÌXàXåXğX÷XYYY,Yª°)ğ¡ğ¡¢ ¢%¢)¢2¢A¢M¢X¢c¢k¢v¢~¢�¢�¢•¢¯¢Õ¢Ï¢å¢î¢#££3£3£K£V£r£y£�£Ö£Ö£Ö£Ö£7¤«˜‹-Ş·Ş·û·¸
¸¸,¸6¸6¸M¸W¸r¸ˆ¸–¸š¸º¸Î¸â¸é¸í¸¹¹!¹.¹.¹5¹<¹A¹F¹K¹R¹Y¹s¹z¹Š¹�¹�¹˜¹®¹²¹²¹Ã¹Ö¹é¹é¹ï¹ú¹º ººº#º.º5º5º@º^ºbºzºkº•º•º›º¢º±º»ºÉºĞºÔºÖºèºèºèºúº»(»6»6»:»O»W»g»r»‡»Œ»š»©»³»Á»Ì»Ğ»Õ»İ»á»ğ»ò»¼¼¼¼#¼*¼.¼B¼L¼Z¼a¼e¼u¼€¼…¼£¼­¼»¼Â¼Æ¼Ğ¼Ş¼å¼é¼ó¼½½½½½½)½4½D½P½f½n½y½ˆ½�½›½ ½¨½³½¿½Ã½Î½Ó½ç½ï½ú½ú½ú½ú½¾4¾@¾H¾X¾h¾†¾Š¾¹¾®¾Ÿ¾É¾É¾Ó¾Ú¾é¾ø¾¿¿¿¿¿,¿6¿D¿K¿O¿O¿Q¿c¿c¿u¿u¿u¿‡¿™¿¡¿¹¿å¿ó¿÷¿ÀÀ#À.ÀDÀIÀPÀcÀmÀ{À‚À†ÀˆÀ›À¥À³ÀºÀ¾À¾À¾À¾ÀÌÀ×ÀæÀğÀşÀ Á␍Á␍ÁÁÁÁ-Á/Á>Á@ÁOÁQÁ`ÁgÁkÁÁ‰Á—Á�Á¢Á²Á½ÁÂÁàÁêÁøÁÿÁÂ␍ÂÂ"Â&Â0ÂDÂLÂWÂ[Â[Â[ÂfÂmÂ{•¥°ÂÅÂÊÂÕÂåÂñÂÃÃÃ)Ã1Ã<ÃAÃIÃTÃ`ÃdÃoÃtÈÃ�ÛÛÛÛïÿÃÔÃáÃåÃùÃ
Ä Ä,Ä0Ä>ÄSÄcÄzēĬĮĹÄÁÄÁÄÊÄçÄøÄÅ(Å6ÅAÅMÅUÅWÅbÅjÅjÅjŇŕţźÅÑÅàÅíÅ␍ÆÆÆ$Æ8ÆRÆRÆVÆlÆ{ƖơƸÆÀÆÀÆåÆåÆøÆÇÇ3ÇMÇ\ÇiljǗǭÇÉÇÙÇñÇñÇ È ÈÈ0ÈHÈQÈQÈQÈ]ÈnȆÈ�È�ȖȟȥȱÈɬ0ùAø�ø��)�4�>�D�N�T�^�l�v�ˆ�’�˜�¢�¨�²�¹�Å�Ë�Ô�ÿ�����/�9�K�U�j�j�m�w�Œ�‘�¡�¬�±�Å�Ø�â�÷�‘‘‘$‘5‘E‘V‘c‘c‘p‘p‘x‘†‘Í‘­l£:EE/EGEWEwE‰E¡E¼E¼EæEîEòEõEùEşEF FFF F%F)F.F8FIFPFWFYF]FfFpFsF~FŠF�F�F©F¯F¶F¿FØFéFòFûFGGG%G6GGGSGaGcGjGqGvGzG‡G�G±G¿GÉGÓGÜGõGHHH H)H/H3H8H<HIHPH^HhH}H‡H�H©HºHÃHÌHÔHİHãHçHìHòHüHI%I3I9I>IFINIVIcIkIŠI}IŸI¨IÃI×IêIñIúIJ
JJJ%J>J.JNJRJ¬J®  x‡x‡†‡¨‡®‡¯¸�·§'§'µ'º'õ'÷',(W(W(g(l(l(€(…(…(¡(¦(¦(Æ(Ë(Ë(ß(ä(ä()))3)Y)y)‹)�)¯)¿)¿)¿)¿)Æ)Ÿ*°$bg÷%÷%û%&%&?&±ƒ.À.À@ÀOÀOÀRÀ[ÀgÀgÀ}À“À¥À¬À°ÀÀÀàÀòÀøÀÁÁÁÁ#Á9Á=ÁZÁxÁŠÁ�ÁŸÁ±Á½Á¿ÁËÁÓÁ×ÁİÁæÁæÁæÁøÁ  Â&Â.ÂDÂKÂKÂKÂY€‰‘£«´¿ÂÅÂÛÂâÂêÂñÂÃÃÃÃÃÃ,ÃSÃ`ÃiÃqÃËÔÔßæôøÃÄÃÜÃäÃêÃùÃÄÄÄÄÄ%Ä-Ä3ÄPÄYÄaÄgÄmÄmÄmÄtÄ{ĊĒĘÄ�Ä�ĠĪIJxşÖşÖ ×!×(×3×I×s×�×–×®×´×Ã×Ì×Ô×Üת×ä×ê×ù×ØØ ØØ³¤Ôy~b~b¡b©b¹bÁbåbübcccc c+c3c3c;ckcªc…cÍcÒcÚcêcìcd d)d0d8d@dLdTd\dodwd|d†d¦d­d¯d¹dÈdèdïdñdeeee!e(eAeGeOeOeTeXedemeve‚e¥e³eáeäef␍f!f;f?f^flfxf¦f¬f®fÜfßfßfûfgg6g>gBgMgUgeggg•g˜g g°g²gàgægægğgğgûg,h4h4h4h4h=hIh_hxh‹h’h�h¥h¥h¸h¼h¼h¼hÃhÈhÛhâhîhõhõhiii)i0i<iCiCiPiZiZi_i‚i‚i”i´à˜Ì¾@¾@Ó@ñ@Ş@&A AA5ADALAWAYAdAoAoAtA©A®AãAûAèAB
B1B,BMB\BdBoBqB|B‡B‡BŒB­B¯BĞBĞB×BÜBşBC"C"C"C*Cµ\âõæbæbübcc c-c9cPcPcbchcscƒc�cœc©cÕcÛÜ^^|�–�¤¨ª±¸¼¼Äİççû%).BFOSX^{{‰ ¥¾ÏÓÓÓØãíô $,59;BTd{}–©­­­ÁÅÎÒ×İúú  $ = N R d d d i x œ ¾ É Ï å ö û    ' + - 3 L L Z q s Œ � ¡ ¡ ¨ » ¿ Ñ Ö ê ò û ÿ ! !!!1!H!M!f!y!}!�!�!�!�!”!!Å!é!ô!ú!"!"!"!"(";"T"T"T"c"c"v"�"˜"©"®"´"¾"À"Ì"Ì"Ó"Ş"ó"õ"##!###.#:#J#Q#X#b#j#n#r#t#y#�#…#—#™#�#¦#ª#¬#¬#µ#Â#Ø#ø#$ $,$3$3$F$J$J$J$Q$V$p$~$Š$‘$‘$«$­$²$Ì$Ú$æ$í$í$ú$%%%·˜ »�HIHIeItItItI‘I‘I¢I¢I¨IªIªI°I²I²I¸IºIºIÁIÅIÊIÊIÊIÊIÊIÊIÒIêIêIÿI
}}}}}}}#}B}X}}}™}­}²}²}Í}Ú}Ü}ë}ô}~~~~~6~8~8~@~;~{~{~{~š~š~š~»~À~À~À~â~ç~ç~ç~   +00KY[js���”�µ··¿ºúúú€€/€/€Y€q€‰€”€ª€¾€×€ï€�%�'�8�U�l�s�k…R| $ŞæŞæüæ
ç ç:çRç]çyçyçyç†ç¡ç£ç£ç£ç°çËçÍçÍçÛçèçèèè%èSæd®Û®ÛÈÛÑÛñÛñÛ÷ÛÿÛÜÜÜÜ*Ü*ÜDÜIÜIÜOÜTÜTÜZÜ_Ü_ÜeÜjÜj܂ܕܛܠܠܩÜÉÜÉÜÉÜĞÜÒÜÒÜÙÜÛÜÛÜáÜáÜèÜêÜêÜğÜğÜ÷ÜùÜùÜÿÜÿÜİİİİİ"İ"İ"İ"İ.İ6İ>İFİNİVİ^İdİ|݋ݕݘݘݢݨݮݮݲݺİÁİÅİÍİÕİÛİãİêİòİúİşİŞŞŞ"Ş.Ş4Ş<Ş@ŞGŞOŞWŞ[ŞaŞiŞpŞxހބފޕޚްŞÁŞÆŞÉŞoßTL”£@†@†Y†[†b†x†ˆ†�†¦†¾†Á†Ó†‡UÔ*[nïnï‚ï—ï¦ïªï¸ïÁïĞïĞïßïêïõïğğğ.ğEğKğPğTğgğgğ}ğğ‰ğ­ğ¸ğºğÓğ×ğåğêğêğñğñññ…ñV$[[9["[C[K[WPÍİ�D�D¿D¬DáDÎDğDÿDEEE E*E*ELEREX,>Ö>ÖGÖMÖUÖ^ÖgÖlÖY„¾�¾�ß�ô���B�O�a���‘�‘�����¥�¸��Æ�Æ�Ñ�Û�á�ç�ê�ø�ÿ�‘‘!‘6‘;‘F‘Q‘k‘…‘–‘œ‘¢‘©‘Ç‘¯‘Бܑ֑䑒ì‘␍’’’!’!’(’F’.’O’U’[’c’ƒ’k’Œ’’’˜’ ’ ’ ’¶’¶’¶’¶’Á’Ë’Ô’ô’“““'“;“@“@“K“S“^“g“s“‡“—“¬“Á“Ş“ã“ã“î“ö“”””-”J”_”t””„”„”�”¥”º”Ɣהܔ픕• ••$•)•)•8•=•=•L•Q•Q•b•g•g•x•}•}•�•Ÿ•¤•¤•·•ƕ˕ٕ˕í•ò•–ò•––'––;–@–N–@–b–g–g–„–‰–«–°–¾–°–Ò–×–×–ô–ù–— —.— —B—G—G—d—i—‹—�—�—�—²—·—·—Ô—Ù—û—˜˜˜"˜'˜'˜B˜G˜G˜b˜g˜g˜‚˜‡˜‡˜¢˜§˜§˜˜ǘǘâ˜ç˜ç˜™™™"™'™'™8™=™=™N™S™S™_™j™™„™„™�™©™®™Ô™Û™å™ê™û™šš%š*š;šFšNšSšSšWš[šbšlšvšvš‰š�š�š�š’š«š´š´šÚšßšßšçšûš››+›6›A›L›^›j›s›x›x›x›‰›¦›±›»›Æ›Ë›Ö›Ş›ã›ã›î›ö›ÿ›
œœ2œJœ^œcœcœnœ�œ‹œ–œ·œÜԜٜêœîœóœóœ����&�6�E�b�w�Œ�—�œ�§�¯�´�¿�Ï�Ş�û��%�%�%�%�*�/�/�;�L�L�q�s�����š�®�¸�º�Æ�Î�ë�ü�ŸŸ4ŸEŸVŸgŸrŸŠŸšŸŸŸŸŸªŸ¯Ÿ¯Ÿ·ŸŸÇŸÇŸÏŸÚŸߟߟ矠ñŸïŸ  % % - N 7 5 f k  k — œ œ © ® ®  » » Í ß ä ä ø ä ¡¡¡¡"¡"¡5¡:¡:¡M¡R¡R¡l¡|¡�¡�¡›¡«¡°¡°¡Ê¡Ú¡ß¡ß¡ù¡ ¢¢%¢¢=¢B¢B¢M¢R¢�¢|¢j¢R¢¦¢«¢ç¢Õ¢â«¢ÿ¢£££#£(£(£7£G£L£L£[£i£n£–£„£n£®£³£Û£É£³£ó£ø£ ¤¤ø£8¤=¤=¤Z¤D¤„¤”¤™¤™¤´¤ ¤ޤî¤ó¤ó¤ÿ¤¥¥¥¥¥(¥8¥=¥=¥P¥`¥e¥e¥x¥ˆ¥�¥�¥ ¥°¥µ¥µ¥½¥Â¥Â¥Ê¥Ï¥Ï¥×¥Ü¥Ü¥ä¥é¥é¥ü¥¦¦¦¦g¦U¦C¦1¦¦t¦y¦Ǧµ¦£¦‘¦y¦Ô¦Ù¦Ù¦è¦§§§§4§9§9§J§X§]§]§e§j§j§r§w§w§§„§„§¼§ª§˜§‹§Û§ö§û§û§3¨!¨¨¨R¨m¨r¨§¨•¨Ѝr¨¿¨Ĩù¨ç¨ܨĨ©©0©©©H©M©j©T©M©‚©‡©‡©“©¬©¼©Í©Í©ò©ô©
ªªª-ª:ªkªœªŠª¿ªǪǪǪÓªتتëªöª«««« « «9«>«>«F«K«_«K«n«y«~«’«~«¡«¬«±«±«¼«Í«Ò«Ò«İ«è«í«í«ş«¬¬¬¬¬3¬>¬C¬N¬C¬]¬b¬v¬b¬…¬Ь•¬Ь¤¬©¬½¬©¬̬ѬѬå¬Ѭô¬ô¬ô¬ù¬­ù¬­­­)­­<­A­A­M­A­`­e­e­q­e­„­‰­�­‰­¬­¸­íέÓ­ç­Ó­ö­®␍®®®1®®H®@®Q®V®V®^®c®c®l®q®q®z®®®ˆ®�®�®˜®�®�®¨®­®­®¸®½®½®È®Í®Í®Ø®İ®İ®è®í®í®ø®ı®¯ı® ¯+¯6¯A¯F¯F¯P¯U¯U¯_¯d¯d¯n¯s¯s¯}¯‚¯‚¯Н�¯�¯œ¯¡¯¡¯®¯³¯³¯³¯³¯³¯»¯À¯À¯ȯͯͯÕ¯Ú¯Ú¯â¯ç¯ç¯ï¯ô¯°ô¯°(°-°-°4°?°_°d°z°…°�°а­°¸°ðȰȰϰÚ°ú°ÿ°± ±9±%±H±S±^±c±c±j±u±•±š±°±»±Ô±À±ã±î±ù±ş±ş±²²(²H²M²c²n²‡²s²ª²–²¹²IJɲɲä²вó²³³.³9³R³>³u³a³„³�³”³”³¯³›³¾³޳ã³ù³´´ ´@´,´O´Z´_´_´n´s´s´‚´‡´‡´‡´�´’´’´’´œ´�´�´¨´¯´Ò´Ô´Ô´Ş´Ş´Ş´Ş´Ş´à´à´÷´ş´ µ µµµ!µ,µ7µBµ<µ]µzµoµ’µ’µ µšµƵ»µ޵޵޵çµîµ'¶'¶F¶Q¶h¶ˆ¶ˆ¶ˆ¶©¶¹¶ζà¶ğ¶ğ¶··+·=·=·A·F·M·]·|·|·€·—·�·£·£·§·²·¾·Ì·ù·¸¸!¸T¸`¸e¸{¸“¸Ÿ¸°¸µ¸Ƹ帹<¹?¹O¹Q¹Q¹U¹t¹¹¹‚¹“¹Ĺç¹ç¹ê¹¼Z, nÖnÖ|Ö‚Ö†Ö�Ö˜Ö�Ö[`BV··ä‡ò‡ù‡ı‡ ˆ%ˆ)ˆ/ˆEˆbˆdˆdˆ•ˆƒˆdˆ´ˆ¾ˆ\8
�Z�Z¿Z¬ZÎZÙZäZïZúZ[ []\’     + 3 > I T V l l ~ Š “ – Å ^øª¤ÎìÎìóìøìí1í1í<íIígíoíœí¡íÊíêíî îî3îYî^î‡î¤îÊîáîçîëîï ïï"ï*ïIïOïSïlïtï“ï˜ï©ï±ïĞïÕïİïãïçïëïıïğ
ğ(ğ-ğ:ğ?ğ?ğLğdğsğ€ğ ğ ğ·ğ¼ğ¼ğÓğÕğÕğéğëğëğññññññ4ñ4ñIñNñNñ]ñ]ñ–ñ¯ñ¯ñÂñÇñÇñÇñÇñöñò*ò*ò*ò7òNòPòPòPò]òtòvòvòƒòšòšò±ò³òÎòêòêòêòîòğòğòğòõò÷ò÷òüòüòó ó ó'ó'ó'ó/ó4ó4ó4ó<óAóAóIóIóKóuówó—ó·ó·ó·ó·ó·óÑóÔóéóğóòóûóôôôô$ô6ô6ôBôUôlôvô�ô°ôÌôìô␍õ!õ?õdõwõ–õ¼õÕõäõúõöööOöTöTögögösö…öŠöŠö�ö¼öáöôö÷9÷Z÷i÷—÷©÷³÷Õ÷×÷×÷×÷ã÷ã÷ã÷ø1ø3ø3øBøBøGøGøGøGøGø^øcøvøÅø_\
îOîOPP2P?PVPiPtP‰PvP˜P P«PÁP·PÙPßP`øA&;&;D;G;N;U;\;`;b;i;p;t;x;‹;³;Î;»;æ;ë;<<<#<2<l<q<�<¦<«<´<À<È<Ï<ñ<÷<====I=k=q=x=x=~=�=…=–=¹=Ë=a$~ß~ß�ߨߨ߮ßb|XsşéşéêDêDêcêsêuêuêuêuê|ê„êŸê¸êºêºêºêÂêİêßêßêéêéêëc”"†4†4¨4²4¾4Ã4Ó4Ù4î455 5.5E5M5W5f5n5{5ƒ5†5†5†5ˆ5—5¡5ª5²5µ5Ç5dôÍ8878D8G8P8V8m8„8›8¦8Ü8ü8999+9=9J9`9v9�9’9¤9©9¬9Ì9ì9ô9ü9:!:A:I:Q:S:s:{:€:…:�:�:›:›:§:§:¹:ù:;;";ed¤¹ø‹ø‹ŒŒŒ!Œ)Œ7ŒJŒVŒpŒ}Œ}Œ€Œ�Œ�Œ¸Œ¼ŒÄŒf(¸şŸ*Ÿ*µ*º*Î*ı*␍++$+0+7+G+e+�+ +®+®+µ+Å+Ñ+á+ê+,,,,-,-,C,C,Y,Y,o,o,…,…,›,›,±,±,È,È,ß,ß,ö,ö,␍-␍-$-$-;-;-R-R-i-q-|-�-˜-©-¬-®-Å-Ì-/g¬÷şş%-58CUUlsvx„••˜ ¹ÇÊÍÔØàî   e h(ÅËş�ş�%‚‚4‚F‚N‚iC®P®PÑPæPëPóPûPQQQ Q%Q*Q2QNQTQVQXQeQeQrQgQƒQ‰Q‹Q�QšQšQšQŸQ¨Q°Q¹QÁQÃQËQÓQÛQèQîQùQRRR*RKRRR]RfRwR{RƒRƒR—R§R¯R²RSj8-7O0O0c0g0l0w0‚0…0‰0‘0kˆWõ¾ˆ¾ˆ؈óˆùˆ‰‰‰,‰1‰<‰Z‰D‰i‰|‰�‰—‰Ÿ‰©‰ljÙ‰â‰ê‰ô‰Šù‰Š0Š:ŠBŠZŠDŠŠiŠ�Š ŠªŠ²Š²Š»ŠÊÙŠòŠ‹‹‹‹‹#‹A‹C‹H‹S‹i‹i‹i‹m‹y‹š‹¤‹®‹·‹Ø‹â‹ì‹î‹î‹ ŒŒ'Œ*ŒCŒGŒbŒfŒ…Œ‰Œ¤Œ¨Œ¨Œ¨Œ®Œ¼ŒÆŒߌåŒğŒüŒşŒ� �%�0�>�H�a�d�l�x�z�‚�…��� �¬�®��¼�Õ�í�ù���(�8�Q�b�b�m�x���œ�±��Ë�Û�ô��� ���,�3�E�leãvßvß�ߙ߹߹߿ßÇßÏß×ßßßåßòßòßààà àààààà!à&à&à>àQàWà\à\àeà…à…à…àŒà�à�à•à—à—à�à�à¤à¦à¦à¬à¬à³àµàµà»à»àÂàÂàÊàĞàÖàŞàŞàŞàŞàêàòàúàá
ááá á8áGáQáTáTá^ádájájánává}á…á�á‘á—áŸá¦á®á¶áºáÀáËáÑáŞáêáğáøáüáâ ââââ%â,â4â<â@âFâQâVâlâ}â‚â…â+ãm`�!�!˜!Ÿ!³!Ç!Ì!ê!ï!␍""-"/"F"Z"c"e"y"‰"º"n�2Ò0”0”F”W”h”y”Š”›”®”¶”Ä”â”í”ó”•••(•9•?•T•o•o•{•ƒ•‹•‘•¦•®•²•º•ȕΕӕӕè•ı•– –––=–P–\–`–j–ƒ–‰–‹–˜–š–¬–¬–³–»–Í–Í–ş– — —#—-—1—=—A—M—Q—]—a—a—w—Š—�—”—�—¢—±—µ—Ä—È—Û—ß—ß—ß—ß—ö—˜˜˜0˜@˜N˜Y˜o˜|˜‹˜“˜ ˜»˜Ë˜Û˜à˜à˜à˜à˜í˜ü˜™
™ ™.™C™T™d™j™j™j™|™‚™�™”™¡™¼™Ì™Ø™Ş™ë™ı™ š-š¹›oÔ¼í(m(m:mKmVmamzmŒm¤m©m¸m¿mÌmÓmámèmêmímòmômúmn.nDn\nanpnwn„n›n¹nÀnÂnÅnÊnín oop$hm?&?&M&a&h&‚&qxKe¶R¶RŞRÊRíRSôRSS#S+S2S=SHSPSXScSnS„SySœS¤SrJ‡VsVsrsys‘s©s³s¾s¾sÃsÎsÚsåsósttt t5tJtJt^tftvtƒt’tŸt°tÁtÏtİtätêtÿtuu(u5uFuVu_upupuvu„u•u¢u²uvs8³½^P^PbPgPlP}P‹P”P™P�P Pt88B—0—0«0¯0´0¿0É0Ì0Ğ0Ø0u0ˆ�~N~N”N§N´NºN½NÅNvÜtffˆ“�§·ÉÏÕÛñà/5:]ptz‘—§­¹ÇÌÚó
#(0O]iƒ¢©³ÂÈÎÔÚğ%1HSbpŒœªÁÍÒàü%.4?DJaly€€��Ÿ­¼ÎÎÖù8w`-AΆΆä†ö†ı†‡‡/‡3‡9‡O‡l‡n‡n‡Ÿ‡�‡n‡¾‡ȇxD‡Ô~ã~ã�ã˜ã£ã©ã¯ã³ã·ãããããêãíãòãää/ä3ä8ä8ä?äBäGäSädähäyä‹ä�ä‘ä£ä§äÃäÇäÌäÌäàäãäñäûäå(å3å7å<årå‹å–åšå«å¶åºå¼åÇåËåËåßåãåååååğåôåæ æ æ ææ2æyˆÕó6æ6æJæ`æ`æ`æbæbæiækækærætætæ�æƒæƒæ�æ—æ™æ™æ¦æ­æ¯æ¯æÇæÌæÌæÜæz°0Xş[ş[\\)\�\s\h\N\7\“\¥\•\Å\Å\Ü\Ğ\]] ]4]!]C]I]P]t]c]W]‹]�]©]©]°]Ú]Ú]Ú]æ]{ÄL¹ûû,û7ûBûhûhûjûwû‚ûˆû™û¨û·ûÄûÄûÊûÏûÔûêûıûü üü+ü3ü>ü:üUücücücünü‰ütü‘ü¤ü¦üÂü®üÊüØüØüÚüöüöüıüı ııı8ıLı?ıTıZıcıcıcıvı{ı{ıƒıƒı�ı£ı¬ı¬ı¬ı¬ıÈıßıåıêıêıÿış
ş
şş3şSşXş]ş]şiş†ş•ş¤ş¬ş±ş·ş¼ş¼şÃşÊşíş
ÿ ÿ)ÿ>ÿ>ÿDÿDÿQÿZÿZÿxÿ�ÿ™ÿ�ÿ«ÿ¶ÿ¿ÿÇÿ×ÿîÿîÿşÿşÿ?HHJQVVcnt}}��¯ºÈÑÖ  (;PU\ip‚—�¤­­Ğ×Üêú1CFFW_gs�—¤¦­ÁĞĞĞúúú'9FQ_jy€€™¬®½ÒÔâ÷÷ı++8;FX_jow~‰�£¥¿ÔÔÔÖİãô!*/S\\bkkŠŠ—𣬴¿Ñ×ââïòû )/::GJS\^€“¨®¹ËÑÙÙÙÙä]
|”�¾33“3—3 3£3¬3µ3Ç3Ç3ó3÷3ü3ÿ344 4"4*4-4:4B4J4R4Y4i4i4u4}`2æPæPQúPQBQ.QQQVQ]QeQlQwQQŠQ Q•Q¸QÀQ~À-°f°fÎfŞfèfèfòfòfüfggg g)g6g6gDgXgXg|g‰g‰g™g¦g¦gÉgÖgÖgëg␍h"hDhMhZhZh}h‡h‡hºhíhóhóhóhi¸ºäȌȌàŒâŒîŒòŒÿŒ����"�&�.�9�M�Y�[�[�d�f�f�o�q�q�z�|�|�…�…���”�—�¡�²�¸�Ä�Ä�,�€œø6(6(T(e(}(„( (•(¸(Ø(Ä(ç(ø(ı()
)6)S)Z)v)k)�)®)š)½)Î)ä)Ğ)ü) * *!*!*+*�œ¢Æ2Æ2Ò2â2í23G3X3i3{3‚3‰3�3¤3²3Ê3Ù3æ3é344
4!414A4E4L4‚4‚x± (°(°>°E°L°k°z°‰°˜°§°¶°À°À°Å°Ì°ß°î°ó°±(±(±>±P±T±b±i±n±n±u±‡±�±’± ±²±²±²±Ä±Ï±á±ì±ù±ş±²²#²/²4²A²F²V²[²k²m²}²²�²‘²¢²«²«²­²½²Ä²Ô²Ô²ï²³³%³5³5³5³8³K³ƒ\åø0�0�K�R�W�e�z���‹�™�œ���¨�º�º�Á�÷�„0ÎÖFF^�’hf²º…`,Î…Î…ä…ö…ı…††/†3†9†O†l†n†n†Ÿ†�†n†¾†Ȇ†L[j>1>1L1^1d1l1~1„1�1Ÿ1¥1¨1ä1‡(–œO3O3]3l3p3s3y3ˆ\k~æ1æ1ô12 22&2,252G2M2V2h2n2q2¿2‰, ÖÖ$Ö+Ö3Ö8Ö>ÖŠ„ şş.5<KPrrw™®›½ÌÎğğğÿ3=‹`BŞgŞgûgh
h/h=h?hMhZh`hkh‚h‘hœh h«h·h¾hÊháhøh i"i,i:iLiNi\ininiwiˆi�i�i�i¶i¶iÛiÛiàiàiéiõijj#j:jIjTjfjrj‰j¡jÂjÂjËjĞjĞjĞjĞjàjéjñjöjkk"k'k'k5k5k:k:kDkOkakgkskƒk�k˜kœk¥k¾kÁkÑkØkökÿkÿkll.l5l;lGlOlZlalelxl~l‹l–lœl¬l¼l¼lélmmm&m-m8mHmXmXmhmmmmmwm‚m”mšm¨mµmÂmÌmĞmÙmòmõmn nnn%n%n*n.n>nGnYn_nananonun~n�n˜n¤n´n´n´n¹nÑnÑnànãn÷no oIo[ofoxo|o�oˆošoªoÅoÌoĞoÖoŞoéoøpŒ8í÷–'–'°'Å'Û'ü'é'(,(,(6(�`j~XŸXŸxŸŸ‡Ÿ’ŸœŸ§Ÿ¯Ÿ¾ŸÈŸËŸğŸòŸ   �_†Ù†Ù¨Ù¯Ù¶Ù»ÙÒÙäÙîÙôÙÚ ÚÚ Ú"Ú$Ú.Ú8Ú8Ú<ÚDÚLÚTÚ^ÚgÚoÚrÚ{Ú–Ú§Ú®Ú±Ú¶ÚÅÚËÚÓÚÓÚÚÚİÚâÚñÚ÷ÚÿÚÿÚ␍ÛÛÛ$Û/Û7Û7ÛBÛVÛ]ÛdÛ{Û�83=öÖöÖÿÖÿÖ␍×× ×"×'×�8>H.×.×7×7×E×I×P×S×XבDDQF0F0`0s0}0„0�0¨0±0µ0Ç0Í0ì0’Ä{¨ÆÿÆÿğÿóÿúÿÿÿ $+ATcikrx‚‚–˜Ÿ¥¯¯¯ÆØßîğ+“0RZî0î0÷01.14141<1”„\y†ñ†ñ˜ñ­ñ·ñÀñÂñÉñÙñäñæñğñğñùñ
ò␍ò␍ò1ò<ò>òWò^òbòqò„ò×ò• 
>/>/G/d/i/–hú6e6eLeWebepe{e„e•e�e¯eµeÁeØeØeêeûeff"f(fvf—„a~�K�K¾KÄKÍKÙKáKèKìKõKõKúKLLCLHLlLtLvL�L¦LÊLéLûL˜lò îî &HJl�n£�²²ÄËííõ™ y}€Š€Š‰Š•ŠšŠš(A^ç^ç€çˆç�ç–ç˜ç˜ç©ç©ç©ç±ç¹çËçÚçËçïçñçñç è␍è␍èèè7è<è<è<èQèSè`èbèoèqè~è†è�è•è¤è±è³èÄèÑèÑèÑèÚèìèÿèé␍éééé1é1é1é<éFé^écécécéqéwé|é„é�é¡é¬é±é±é¸é¼éÊéÎé×éŞéüé êêê5ê:ê:ê:ê:êBêMê[ê[ê{ê{ê{ê‚ê�êŸê²êÅêÇêÇêÇêÚêÚêáêèêíêóêëë+ëUë[ë[ëoëtë˜ëŸë«ëÉëÜëçëîëòëòëòëòëıëìì7ìBì_ìiìiìwì•ìÅìØìéìííííí í+í=íHíMíMíMí_í‰í�í�í�íší¤í°í»í½í½í½íÂíÎíÎíî›H%¯/¯/½/Ä/Ï/Ü/ç/ï/ï/0000œ0 vOvO�OŠO¬OÈO¾OàOèO�Lİì†&†& &µ&Ë&ì&Ù&' '4'U'B'm'…'…'�'�ğ·şLşL3M<MHMPM[MzMzM„M†M¡M‰M°M°M¾MÈMÏMïMñM NNN.N.NUNZNyN’N¯N²NºNÁNáNãNıNOO O O=O=OdOvOŸTVg®®ÄÑ×İîü
 &47A 0
Röö%F2iUx„‰•¥¬¹ÄĞÛãèôù␍#(3LUafz�……Š£¨ÁÖèíø0;EPR]eeuj�­¡àZ�˜d˜d²dÀdÅdÒdàdédee7e@ePekeve†eˆeŠe”e e¤e±e½eÏe×eïeóeóeóeóeøef0f0f7f:fBfNfWf­f¢d1.*.*L*d*u*|*˜*�*°*Ğ*¼*ß*ğ*+ò*+++++C+C+M+£ü!\>>Vhs †z¯ĞåÒô)FFFXuuªÁµóø ÿ3!Bc{h–о¬Íêêêü:Acck¤(nänä|äŸä¥äªäªä°ä¥(!'�Ö�Ö§ÖµÖ»Ö½ÖÂÖ¦D]j<9<9V9]9f9r9‡9�9•9›9�9�9¬9§„¼Ù¸©¸©ë©÷©û©ª ªªªª"ª&ª.ª3ª7ªHªYª[ª_ªpª�ª�ª£ª«ª¶ª¶ª¶ªÈª¨€À›À›Ù›à›ç›î›ô›œœœ$œ;œ>œ@œ[œeœoœvœ�œ“œ›œ›œ±œ±œÃœ© Ê ¦W¦WÌWéWñWüW XXX4XJXcXiXqXtX‰X�X XÂXÈXĞXÕXÛXŞXôXıXÿX!Y)Y>YCYRYtYzYYYYŒY�Y¨YµYÁYÔYáYîYZZ#Z%Z<ZPZUZ`ZgZŠZŠZŠZœZª°)¢¢3¢@¢E¢I¢R¢a¢m¢x¢ƒ¢‹¢–¢�¢¡¢­¢µ¢Ï¢õ¢ï¢££C£/£S£S£k£v£’£™£½£ö£ö£ö£ö£W¤«˜‹-ş·ş·¸"¸*¸5¸L¸V¸V¸m¸w¸’¸¨¸¶¸º¸Ú¸î¸¹ ¹␍¹&¹0¹A¹N¹N¹U¹\¹a¹f¹k¹r¹y¹“¹š¹ª¹®¹®¹¸¹Î¹Ò¹Ò¹ã¹ö¹ º ººº!º)º4º;ºCºNºUºUº`º~º‚ºšº‹ºµºµº»ºÂºÑºÛºéºğºôºöº»»»»"»H»V»V»Z»o»w»‡»’»§»¬»º»É»Ó»á»ì»ğ»õ»ı»¼¼¼!¼#¼2¼4¼C¼J¼N¼b¼l¼z¼�¼…¼•¼ ¼¥¼Ã¼Í¼Û¼â¼æ¼ğ¼ş¼½ ½½'½/½:½>½>½>½I½T½d½p½†½�½™½¨½°½»½À½È½Ó½ß½ã½î½ó½¾¾¾¾¾¾7¾T¾`¾h¾x¾ˆ¾¦¾ª¾Ù¾Î¾¿¾é¾é¾ó¾ú¾ ¿¿"¿0¿7¿;¿=¿L¿V¿d¿k¿o¿o¿q¿ƒ¿ƒ¿•¿•¿•¿§¿¹¿Á¿Ù¿ÀÀÀ5À<ÀCÀNÀdÀiÀpÀƒÀ�À›À¢À¦À¨À»ÀÅÀÓÀÚÀŞÀŞÀŞÀŞÀìÀ÷ÀÁÁÁ)Á-Á-Á2Á:Á>ÁMÁOÁ^Á`ÁoÁqÁ€Á‡Á‹ÁŸÁ©Á·Á¾ÁÂÁÒÁİÁâÁÂ
 Â#Â-Â;ÂBÂFÂPÂdÂlÂwÂ{Â{Â{†Â�›µÂÅÂĞÂåÂêÂõÂÃÃ'Ã/Ã:ÃIÃQÃ\ÃaÃiÃtÀÄÃ�ÔèðûûûûÃÏÃßÃôÃÄÄÄ*Ä?ÄLÄPÄ^ÄsăĚijÄÌÄÎÄÙÄáÄáÄêÄÅÅ/ÅHÅVÅaÅmÅuÅwłŊŊŊŧŵÅÃÅÚÅñÅÆ␍Æ-Æ4Æ4ÆDÆXÆrÆrÆvƌƛƶÆÁÆØÆàÆàÆÇÇÇ3Ç<ÇSÇmÇ|ljǩǷÇÍÇéÇùÇÈÈ)È)È5ÈPÈhÈqÈqÈqÈ}È�ȦȯȯȶȿÈÅÈÑÈ0ɬ<ùDø�ø��)�4�>�D�N�T�^�l�v�ˆ�’�˜�¢�¨�²�¹�Å�Ë�Ô�ÿ�����/�9�K�U�j�j�m�w�Œ�‘�¡�¬�±�Å�Ç�Ø�û�û�‘‘(‘1‘9‘G‘X‘h‘y‘†‘†‘“‘“‘›‘©‘ğ‘­$› >O>OROZOeOkO®l£:†E†EŸE·EÇEçEùEF,F,FVF^FbFeFiFnFxF{F‚FˆF�F•F™F�F¨F¹FÀFÇFÉFÍFÖFàFãFîFúFıFGG G&G/GHGYGbGkGsG~G‰G•G¦G·GÃGÑGÓGÚGáGæGêG÷GşG!H/H9HCHLHeHvHHˆH�H™HŸH£H¨H¬H¹HÀHÎHØHíH÷HII*I3I<IDIMISIWI\IbIlIvI•I£I©I®I¶I¾IÆIÓIÛIúIíIJJ3JGJZJaJjJsJzJƒJŒJ•J®J�J¾JÂJK¯  x‡x‡†‡¨‡®‡°¸�·§'§'µ'º'õ'÷',(W(W(g(l(l(€(…(…(¡(¦(¦(Æ(Ë(Ë(ß(ä(ä()))3)Y)y)‹)�)¯)¿)¿)¿)¿)Æ)Ÿ*±$bg÷%÷%û%&%&?&²ƒ�Á�Á°Á¿Á¿ÁÂÁËÁ×Á×ÁíÁ Â0ÂPÂbÂhÂw€„Š“©­ÂÊÂèÂúÂÃÃ!Ã-Ã/Ã;ÃCÃGÃMÃVÃVÃVÃhÃsÃyÃ�ÖÃ�ôûûûÃÉÃğÃùÃÄÄÄ$Ä/Ä5ÄKÄRÄZÄaÄvććÄ�Ä�Ä�ÄœÄÃÄĞÄÙÄáÄóÄûÄÅÅÅÅ$Å(Å4ÅLÅTÅZÅiÅrÅvÅ~ŇŇŕÅ�Å£ÅÀÅÉÅÑÅ×ÅİÅİÅİÅäÅëÅúÅÆÆÆÆÆÆ³xnØnØ|ؘؑأعØãØÿØÙÙ$Ù3Ù<ÙDÙLÙNÙTÙZÙiÙqÙwÙyÙÙ´¤Ôyîcîcdd)d1dUdldpdxd€d†d�d›d£d£d«dÛdeõd=eBeJeZe\eŠe�e™e e¨e°e¼eÄeÌeßeçeìeöeff f)f8fXf_faf�fˆfˆfˆf‘f˜f±f·f¿f¿fÄfÈfÔfİfæfòfg#gQgTgpg}g‘g«g¯gÎgÜgèghhhLhOhOhkhxhŒh¦h®h²h½hÅhÕh×hiii i"iPiViVi`i`ikiœi¤i¤i¤i¤i­i¹iÏièiûijjjj(j,j,j,j3j8jKjRj^jejejj�j†j™j j¬j³j³jÀjÊjÊjÏjòjòjkµà˜Ì.B.BCBaBNB–B|BpB¥B´B¼BÇBÉBÔBßBßBäBCCSCkCXC�CzC¡CœC½CÌCÔCßCáCìC÷C÷CüCD D@D@DGDLDnDpD’D’D’DšD\æùFdFd\dndtdd�d™d°d°dÂdÈdÓdãdîdüd e5e·ÛÜÎÎìÿ␍!(,,4MWWkv„•™�²¿ÃÈÎëëù  . ? C C C H S ] d w { € ” œ ¥ © « ² Ä Ô ë í      1 5 > B G M j j x � ” ­ ¾  Ô Ô Ô Ù è  !.!9!?!U!f!k!v!Š!�!—!›!�!£!¼!¼!Ê!á!ã!ü!␍""""+"/"A"F"Z"b"k"o"t"{"‘"¡"¸"½"Ö"é"í"ÿ"ÿ"ÿ"ÿ"#&#5#Y#d#j#€#‘#‘#‘#˜#«#Ä#Ä#Ä#Ó#Ó#æ#ı#$$$$$.$0$<$<$C$N$c$e$p$…$‘$“$�$ª$º$Á$È$Ò$Ú$Ş$â$ä$é$ñ$õ$% %%%%%%%%2%H%h%‚%�%œ%£%£%¶%º%º%º%Á%Æ%à%î%ú%&&&&"&<&J&V&]&]&j&t&t&†&¸˜ »�HIHIeItItItI‘I‘I¢I¢I¨IªIªI°I²I²I¸IºIºIÁIÅIÊIÊIÊIÊIÊIÊIÒIêIêIÿI
JJ!J9J;JZJ\J{J€JŸJ¤JªJªJÃJÆJíJúJK2K2K;K@K^KLKdKsKxKKˆK›K£K«K°K°K°K¹KÒKØKØKñKÿKL5L7L?LELMLRLRLXLXLaLrLtL‰L‹L“L™L¡L¦L¦L¦L¦L´LËLÍLáLáLéLïL÷LüLM␍MMM"M$M$M$M,M,M:MQMUMWMcMeM€M†M�M“MœM§MªM°M¶M¿MÂMÂMĞMáMãM N&N,N4N9NBNGNGNLNNNVNVNqNƒNˆN”NšN�N´N¶N¹NÉNÍNÔNİNìNúNOO␍OOOO"O/OGOLOVO~O‰O”OŸOªOµOÀOËOÖOÖOÖOŞOŞO÷OP"P;P;P=P=PFPLPNPNPTPZPZPbPkPqP}P}P„P‡P¦P±P¹PÁPÆPÆPÍPÑPÖPèPíP÷PQQQ5Q5Q>QLQ]QiQpQ~Q�Q£Q©Q®Q®Q³QÉQÕQİQíQ÷QRRRR R R*R8RDR[RqRˆR�R�R§R¬R¬RÌRÌRŞRäRíRóRüR
SSS&S,S.S9SKSaSaSuS…S—SœS¨S®S±SÈSÊSÍSİSçSêSêSùST"T'T3T9T<TSTUTXThTlTtT‚T‡TŒTŒT’TšTŸTŸT¥T¥T³T¹T¿TÉTÓTáTöTùTûTUUUUUUUU$U,U1U1U6UAUFUKUVU[U�UƒUˆU�U’U—UœU¡U¦U¦U«U°UÌUÖUêUşUV V VV V&V0V:VHV]V`VbVlV{V€V€V€VˆV�V–V–V›V›V¡V©V®V®V³V¾VÃVÈVÍVÜVÜVíVóVóVWW␍WW!W/WDWGWIWSWbWgWgWgWoWtW}W‚W‚WˆW�W•W•WšW¥WªW¯W´WÃWÃWÔWÚWÚWèWîWôWşWXX+X.X0X:XIXNXNXNXVX[XdXiXiXoXwX|X|X‰X�X�X�X£X©X³X½XËXàXãXåXïXşXYYY YYYYY$Y,Y1Y1Y>YDYDYRYXY^YhYrY€Y•Y˜YšY¤Y³Y¸Y¸Y¸YÀYÅYÎYÓYÓYİYåYêYêYêYğYúYZZZZ Z)Z/Z4Z4Z=ZKZTZbZgZgZpZ~ZŠZ›Z¨Z¯Z·ZÁZÏZÏZÔZÔZßZßZßZãZèZèZïZóZøZ[[[[ [([-[3[3[;[D[R[][b[h[p[u[u[u[u[u[u[u[u[u[u[�[”[�[£[«[°[µ[¾[É[Ò[Ú[ß[ß[ß[å[í[ò[ò[ö[û[û[\\\'\-\-\6\L\L\R\[\q\q\z\|\‚\‹\¡\¡\ª\ª\ª\³\¸\¸\À\Å\Å\â\ğ\ü\]]]]]]]2];]A]S]]]]]e]e]m]o]o]ˆ]’]›]�]�]�]£]§]©]©]©]©]®]´]º]¾]7a¸Ìz©–i–i¸iÃiÙiõijj,j7jMj9j\jdjdjsjsj{j‡j�j²jÁjÌjßjåjåjåjêjïjşj k#k%k*k9kDkQk[k[kik¹”*K8¤8¤P¤W¤^¤a¤j¤m¤p¤t¤y¤›¤ˆ¤«¤³¤»¤¾¤À¤Ğ¤Ù¤â¤è¤ë¤ü¤¥+¥6¥h¥ºà.¢&A&ADAOA`AcAgApAwA…A”AªA»AÌAŞAğAÿAB B.B.B<B@BDBIBMBZBaBoBƒBŒB’B B¹B»B¿BÉBÉBÎBÎBÎBÓBÓBâBëBóB C C CCC&C2C=CBCBCECJCJCiCuC‚C„C„CˆCŠCŠC©CµCÁCÃCÃCÆCÈCÈCÕC×C×CÚCÚCãCéCîC
D
D
D
D
D
D
D
D
D
D
D
D DD/D>DMDMDQDQDYDrDvD{DE»,ÎÕÎÕÜÕãÕëÕğÕöÕ¼l3JVPVPlP†PrP•PºP¦PÉPÎPÕPÕPÛPŞPâPêPQ␍Q#QQ;QEQ½PQa%%%+%2%B%S%X%u%{%‚%‰%—%£%µ%ñ%¾D+–ä–äªä¸ä¾äáäçäíäååå$å$å,å¿ô#œ^5^5f5u5y5†5“5§5¶5Ó5à5ò56<6J6f6x6�6§6²6Ó6ñ677&7A7Z7Z7u7�7¸7Ó7å7ô7888!828E8U8b8n8}8š8š8¢8¢8¢8³8À8Ç8æ8ï899 99/9G9P9`9h9m9‘9¡9±9¼9Ğ9Õ9İ9:::C:]:]:u:„:Œ:›:¤:¬:¾:à:è:ğ:û:ı:␍;%;=;U;m;;–;Ÿ;¨;º;È;Ì;Ğ;À °‡°‡¹‡Ø‡İ‡Á\ˆ[vÌvÌ�̴̗̤̯̺ÌÌÌÒÌêÌğÌÍ$Í/Í5ÍWÍWÍgÍ|Í~Í�Í�Í•Í�ͥͳ͹ÍÂÍÎÍÎÍĞÍâÍèÍíÍíÍÎÎ"Î"Î5ÎBÎGÎGÎ^ÎgÎvΌΗΥΰÎÀÎÍÎßÎåÎïÎûÎÏ
Ï
ÏÏÏÏ Ï$Ï$Ï,Ï1Ï1Ï9Ï>Ï>ÏDÏIÏIÏPÏUÏUÏ\ÏaÏaÏlÏqÏqÏ|Ï�Ï�όϑϑϜϜϷϾÏÄÏÇÏÒÏÕÏéÏöÏĞ ĞĞ!Ğ#Ğ)Ğ=ĞJĞYĞYĞYĞYĞcĞ}ВФеоĞÏĞÕĞÚĞåĞ÷ĞÑÑÑ.Ñ9ÑCÑSÑbÑhÑsÑyÑ�Ñ”Ñ¥Ñ°Ñ¶ÑÆÑÆÑÖÑéÑõÑıÑ␍ÒÒÒ+Ò6Ò;ÒXÒmÒ{Ò‹Ò—Ò©Ò´ÒÃÒÅÒ×ÒßÒäÒëÒïÒıÒÓ␍ÓÓÓ(Ó.Ó0Ó=ÓJÓTÓmÓ{Ó{Ó�ÓˆÓÌÕÂD#°Ø«Ø«÷«¬!¬!¬/¬B¬\¬_¬h¬„¬„¬„¬Œ¬�¬�¬–¬˜¬˜¬ ¬¢¬¢¬ª¬ª¬³¬¹¬¾¬¾¬Ç¬Ö¬Ú¬ß¬å¬ê¬ê¬ê¬ê¬ò¬û¬­­­ ­­1­P­S­i­ˆ­ˆ­ˆ­�­’­’­’­š­œ­œ­œ­¤­¦­¦­¦­®­°­°­»­»­Á­Æ­Æ­Æ­Æ­Í­Ø­ê­ø­®®®® ® ®'®+®1®I®W®j®w® ®£®¬®³®Ç®Ï®Ø®ã®ã®î®ô®ù®ù®ù®¯¯¯#¯)¯4¯K¯b¯n¯t¯y¯y¯€¯‹¯‹¯�¯¢¯¨¯¨¯¨¯¨¯°Ãd*,C,CNCXC[C[CeCxCzC‡C‰C”C¨C°CÀCÅCËCÓCÖCèCÄLWfG1G1[1_1d1o1o1y111ƒ1‹1Å\CVß0ß0õ0õ0ù0ş01111#1)1)17191C1Æ8(2¦Ö¦Ö¯Ö¯Ö½ÖÁÖÈÖËÖĞÖǨYv\v\�\–\¡\´\¨\æ\J]0]%] ]ô\P]e]U]…]Š]§]¬]Á]®]Ğ]Ö]Ö]İ]^2^^I^g^g^g^s^ÈlF]ş*ş*+A+#+P+p+Œ+‚+¤+¼+©+Ë+ä+,,/,/,6,X,X,b,É4Š“NêNêbêgêmêqêuê”êœêÊxÌæŞ€Ş€ �ö€�"�)�?�D�I�M�O�U�[�q�^�€�™�¡�³�Ö�Ì�å�ñ�Ë”"¨ª¨ª¶ªÈªÌªÔªÜªçªòªúª«««+«2«9«D«O«Q«\«g«i«u«€«‹«”«œ«œ« «×«Ì€ÚöO5O5m5q5u5}5‹5�5‘5§5­5¯5Á5Å5É5Ñ5Ù5å5ú5 6666&6;6ÍŞ`æCæCD!DFD(D`D–D›D›D�D¨DÀDÏDÑDÙDûDE.E;EVEjEoE‰E“E•EšE±EØEêE÷EF2F(FLFRFRF[F{F‡FŠFŒF§F‘F¶F¶FÈFÈFÖFàF GG%G%G*G-GCGOGdGˆG’G˜G¨GĞG¿GßGáGóGHHH0H6HEHmH\H|H~H�HšH®H¸HÁHØHâHäHøHII!I'I'I'I0IPIxIgI‡IŒI�I¦IÑIÇIæIæIæI J JJÎ`8ÌŞ/Ş/00$0-080?0W0\0_0b0k0y0ƒ0ˆ0°0µ0Â0î0ó01 1%141`1h1m1‚1®1¶1»1»1Î1á1õ1ù12,21212]2]2]2]2]2q2‰2�2‘2”2”2Á2Æ2Ï2Ü2ä2ÿ23$3/3K3K3K3X3o3q3q3q3~3•3—3—3¤3»3»3Ë3Ğ3÷34 4<4<4<4I4`4b4b4b4o4†4ˆ4ˆ4•4¬4¬4¼4Ä4É4é455.5.5.5;5R5T5T5a5x5x5Œ5�5œ5¾5Ü5á5ï5ı56 6 6 6&6.60606X6�6Ϥ%J¶æ¶æĞæüæüæç+ç0ç0ç?çQçkçsçzççšç¢ç¢ç¢ç¤ç¤ç¤ç¤çÀçÀçÀçÀç×çÙçÙçÙçÙçôçÿç4èĞĞçö�ö� ‚‚‚‚)‚.‚3‚>‚C‚C‚C‚x‚e‚‡‚®‚®‚Ç‚à‚ù‚ƒƒƒ0ƒIƒbƒ{ƒ€ƒ€ƒ™ƒ²ƒ˃äƒæƒæƒÿƒ„1„J„J„J„\„Ñ0�‰îéîéüéêê%êFêFêLêÒ<:E?8?8H8S8a8m8y8‚8‹8”8š8Ÿ8ÓluŒ×&×&å&ï&ö&␍'␍''' '*'8'U'W'g'g'l'n'u'§'ÔÈŸÍÆrÆrÚrsùrår$sVs<s/s�s†s‘sŸs®sÅsâs;t#ttAtLtxt}t…t¤t¬tÑtÆt²tätıtét u u7u>ujujujujuruÕL^mf,f,„,–,�,¿,¿,Ñ,Ş,î,ä,--ÖÈg•�1�1³1·1Ö1ø12 22$212:2:2?2I2a2l2|2ˆ2�2š2«2­2¾2À2Â2Â2Â2Ê2Ê2Ô2Ô2Ü2ä2ì2ô2ø23O3×  ‡ ‡.‡E‡K‡Ø`FZŸ8Ÿ8¯8¶8¸8½8Ì8Ò8ç8ç8õ8õ89
9␍99%9(909Ù<öÖ�Ö�ß�ê�õ�� ��3�>�N�Ú ␍1ee.e@eFeRe]ekewe�e™e©e»eÁeÇeÍeàeæeïeõef␍ff f.f;fxfÛ, N/N/\/m/†/š/�/£/Ü4à‡à‡î‡ø‡ˆˆˆˆˆ ˆİÄMzüüJüMüRü_üdüvüxü|ü€üƒü–ü¯üÕüŞüéüğü ı/ı4ıMısıxıı˜ı¾ıÀıÙıÿıÿıÿış1ş@şRşŞ„¶t¶tÔt×tİtñtùt
uuu"u"u/u8u>uNu\u^u}u‘u˜u¤u´u´uÂuÕuàuäuõuõuõuúuúuvv(v.v3vGvMvUvgvmvov~v‹v‘v—vœv¢v¨v¯v»vÂvÄvÉvÑvÓvØvävævëvóvõvúvww wwww w w w0w0w0wGwMwSw^wcwkw„wŠw•w™wŸwªwÃwÎwÙwßwìwñwöwöw xxx<xGxRx^xXxgxpxuxzx�x–xŸx«x±x½xÁxÆxËxÖxáxìxîxôxyy y$y/y:y:y@yMyOyTy]yvy�yŒy’yŸyŸy£y¨y¨y¹y»y»yÎyĞyĞyãyåyåyøyúyúy␍zzz!z!z'z,z,zCzWzLzdzlzszyz�z”zŸz–z¯z¯z±zÉzÌzÎzİzïzÿz {"{<{A{U{e{x{}{}{†{š{¬{·{¿{Ç{Ë{Ù{ß{ä{ä{ê{ş{|||| |$|$|$|*|9|L|Y|]|b|b|f|k|k|p|{|‡|¡|·|Ã|Ã|É|Ö|Ø|å|ñ|}}} },},},},}0}5}F}X}c}k}s}u}‡}Œ}š}©}¯}¼}¼}Ó}ã}ã}÷}~~~~1~1~7~D~F~X~X~c~c~c~c~c~߀ß „È>T>T\TjT�T†T«T±T¶T¼TÊTÑTàTåTñTUU!U,U?UFU`U}U‰U¤U¼UØUáUğUøUVVV#V1VQVVV^VwV‰V™VŸVªV³V¹VÿVéVÚVWJW4W%WZW]W‚WXà<+6ìCìC␍DDD.DGDODiDuDá„ |F F h s z ‚ … … •     £ ª ± · ½ à Ê Ğ á á ã ì ø ş # ' * : B G G N W h n w ‚ “ “ œ ¡ « ² ¹ Á Ç É × î ñ !␍!!!!! !2!;!L!m!~!–!�!§!¯!¶!¶!¿!Æ!Ò!â!í!í!í!""%"("ã"â„97737B7I7c7�7¦7·7À7Î7à7ù7ù7 8%8-808<8ãX{ÍISfqƒ‘—¨¯·ÍÕèı␍)9BHMTZ`fq|† ¨Â×äçïó#>[_ho�‰�”�Ÿ±ÈÖÜàâïïïñ ä 
P‡P‡Y‡m‡r‡å¤ŸÄö~ö~*/58<<_d‘} ¹¥ÈŞÊíõú€€€ €"€€1€1€1€L€{€‡€æ˜Íï'"61@OO^^mm||‹‹š®©¸¸ÇÖåPçxÇá¶a¶aÔaæaìaøabb!b'b2bBbNbWb]bcbnb|b‰b•b£b²b²bâbèd”©�ê�ê¢êµêµêÏêÖêâêâêùêùêëë'ë'ë>ë>ëUëWëWë[ëéÌÂñÎÎğ÷*5IMRVX^p|‘“¬»¿¿¿Òççóù#24MggyêP7G|D|D’D�D¦DªD»DÉDÏDÛDãDîDôD÷DEë ®-�<�<¨<³<·<À<Ç<Î<ä<õ<==*=9=H=Y=h=h=o=s=|=‰=�=™= =¤=Ä=Ä=Ä=Ä=Ä=Ğ=Ô=×=ß=í=õ=>
>>#>.>3>3>@>F>U>l>n>y>†>‘>”>š>–>®>Å>Ç>Õ>×>â>è>è>ğ>ğ>? ? ? ? ?$?$?<?J?U?Z?Z?]?b?b?�?�?œ?�?�?¢?¤?¤?Ã?Ñ?İ?ß?ß?â?ä?ä?ñ?ó?ó?ö?ö?ö?ö?ö?ÿ?@ @@5@B@P@W@ Aì(rxPŠPŠ^ŠeŠuŠxŠ~Ší(nt‡&‡&�&š&«&¶&¶&Ô&îTzK¾ò¾òÜòâòåòîòøòó ó)ó/ó2ó6ó8óPó`ómósówó}óó‚ó†ó†ó©ó­ó³ó³óºóÜóñóôôô$ô/ô9ô=ô@ôGôMôQôWôhônôsôxô…ô‡ô™ô›ô¢ô¯ô±ôÃôÃôÃôÃôÃôçôòôşôõõ*õ6õSõwõ‘õ–õ­õ²õÀõ×õÜõâõóõööö+ö?öFöRöjövövövö|öö‚ö›ö¡öµö»öÀöËöËöĞöİöêöêöğöşö÷÷÷!÷(÷1÷8÷8÷=÷J÷W÷W÷]÷k÷‚÷ˆ÷‹÷�÷•÷•÷¦÷­÷º÷Ç÷Ç÷Î÷Ø÷ß÷å÷ì÷÷÷ ø ø%ø*ø1ø9ø@øPøTø]øuøzø�ø£ø®ø´ø¼øÕøéøéøùùù,ù3ù:ù\ùoù“ù•ùŸùÁùÁùÁùÚùæù÷ùúúéúïÀ€¬v^v^�^’^—^¦^±^½^Ş^¿^í^ò^ò^_H_+__k_p_™_�_ª_Ë_¬_Ú_ß_ø_ÿ_"`8`8`^`^`j`ğ î.î.ı.//ñ4‹”&N&N>NaNnNtNzN}N�Nò8 ///$///7/>/D/J/J/P/ó ¦/¦/°/¸/½/ôÎPvuvu”u¤u¯uÅuâuñuvCvIvOvWvYvavvvyv„v�v¦vÃvÒvöv$w*w0w8w=wEwZw]whwtwyww…w�w•w�w­wÅwÓwxx xx$xJxxx~xƒxƒx”xŸxªxÇxßxëxóxyyyy0y2yOygysy{y‰y‰y�y¡y®y¸yÏyæyÿyzz@zWznz|z~z•z¬z¬zµzÁz×zğz{{!{%{%{%{,{1{D{O{i{k{p{ƒ{�{›{¥{¥{·{õ˜k␍¬9¬9Â9Î9Î9ä9ï9ñ9::::":&:*:-:-:6:::P:P:†:’:¤:´:Ë:Ğ:Ó:Ø:Ø:Ø:ô:û:;;;;;8;D;L;Q;Q;m;z;‚;‡;‡;£;¯;¸;À;È;Ô;ê;õ;<<*<2<7<7<S<m<w<ƒ<‹<�<�<¯<»<Í<Ò<î<ú< ===*=/=/=/=/=2=7=7=7=V=b=t=v=y=~=~=~=ˆ=�=—=Ÿ=¨=³=¹=Æ=Ô=Ô=Ş=ç=ï=$>*>1>@>Z>_>_>r>z>z>|>|>|>�>�>ˆ>�>’>™>�>�>�>�>¬>¬>Ñ>Ú>Ú>Ş>ùBö(üBüB
CC!C'C÷�ªÊnknkŒk”k k¶kËkÙkäkókùkùkùkşklll5l7l<lJlUlblilwlø\2EŞ)Ş)ø)*ÿ),*H*>*`*u*b*„*�*¯*È*È*Ï*ñ*ñ*û*ù8fp–L–L®L½LÑLàLæLìLïLMú0�—H‹H‹\‹h‹v‹y‹‘‹”‹œ‹û0S[n×nׂ׊חס״×üP>NȈȈԈèˆëˆÿˆ‰ ‰‰ ‰'‰*‰0‰ıT•¦�N�N¸NËNÎNØNåNúNüNOO,O,O2O5O‰Oş<˜£ ‹ ‹´‹»‹Ç‹Ó‹ã‹è‹ë‹ï‹÷‹ÿ 26.å.å<åHåH!/ZZ2Z>ZTZ@ZcZeZlZwZƒZ‹Z DƒNRNRrRyR~R†R R©R«R¸R¸RºRÔRÚRÜRŞRëRëRëRëRïRşRSSS S'S-S/SKSOSaStSzS�S“S S S´S»SÂSËSÙSâST TTTTT&T)T9Tläûãã"ã8ãFãQãUã\ã`ãiãxãzãzã�ã�ã™ãŸãŸãŸãŸã§ã´KtEE6EGELESE]E]EeExE|E�E–E˜E›EŸE¦EºE¾EÆEÒEÙEİEåEçEïEıEFF
F#F+F3FAFEFSF !E6p6pFpRp^pnp†pŒpšp«p³pºpÓpqq'q4qDqJqLq]qq†qŒqšq¢q¸qÃqÉqÏqòqôB»ii"i%i,i7iFiHiSibibioi}i€i‚i‚i‡iŒi•i i¦i¯iÂiÇiÜiçiñiñijj4jHj_jejjjqjwj~jƒjƒj‰j�j”j”j§jµjÍjÓjØjìjöjıjıjk5k;k@k@kkkpkpk›kÂkÇkÇkÇkÊkÑk×kŞkãkãkékïkôkôk l l%lHlNl^ljlpl~l…l‡l›l¡l¨l¨lªlªlªl¯lµlºl¾lÀlÃlÎlİlàlâlælælëlëlùl#m˜}Ÿæ"æ"#####)#9#A#I#N#Y#c#i#t#„#Œ#œ#£#«#³#»#Ã#È#Ó#á#á#÷# B†^<^<v<}<�<¸<Ã<Ğ<Ş<Ò<====*=d=f=“=›=›=Ğ=è=Õ= >÷=>>->B>D>O>W>W>x>}>†>’>š>¸>¥>í>Ó>Ç>ü>??9?Q?>?s?`?”?‚?£?µ?«?Ì?Ì?Ì?õ?õ?@Ğ1ББä‘ä‘
’
’*’.’3’3’3’?’D’T’Y’Y’Y’^’^’w’~’�’›’¤’´’½’¿’¿’¿’¿’Æ’Í’Ô’Û’â’é’ğ’÷’÷’ù’ù’ÿ’“ ” D �o�o¬o¶oÀoĞoÕoŞoêoìoşoşop0p
SSS&S,S.S9SKSaSaSuS…S—SœS¨S®S±SÈSÊSÍSİSçSêSêSùST"T'T3T9T<TSTUTXThTlTtT‚T‡TŒTŒT’TšTŸTŸT¥T¥T³T¹T¿TÉTÓTáTöTùTûTUUUUUUUU$U,U1U1U6UAUFUKUVU[U�UƒUˆU�U’U—UœU¡U¦U¦U«U°UÌUÖUêUşUV V VV V&V0V:VHV]V`VbVlV{V€V€V€VˆV�V–V–V›V›V¡V©V®V®V³V¾VÃVÈVÍVÜVÜVíVóVóVWW␍WW!W/WDWGWIWSWbWgWgWgWoWtW}W‚W‚WˆW�W•W•WšW¥WªW¯W´WÃWÃWÔWÚWÚWèWîWôWşWXX+X.X0X:XIXNXNXNXVX[XdXiXiXoXwX|X|X‰X�X�X�X£X©X³X½XËXàXãXåXïXşXYYY YYYYY$Y,Y1Y1Y>YDYDYRYXY^YhYrY€Y•Y˜YšY¤Y³Y¸Y¸Y¸YÀYÅYÎYÓYÓYİYåYêYêYêYğYúYZZZZ Z)Z/Z4Z4Z=ZKZTZbZgZgZpZ~ZŠZ›Z¨Z¯Z·ZÁZÏZÏZÔZÔZßZßZßZãZèZèZïZóZøZ[[[[ [([-[3[3[;[D[R[][b[h[p[u[u[u[u[u[u[u[u[u[u[�[”[�[£[«[°[µ[¾[É[Ò[Ú[ß[ß[ß[å[í[ò[ò[ö[û[û[\\\'\-\-\6\L\L\R\[\q\q\z\|\‚\‹\¡\¡\ª\ª\ª\³\¸\¸\À\Å\Å\â\ğ\ü\]]]]]]]2];]A]S]]]]]e]e]m]o]o]ˆ]’]›]�]�]�]£]§]©]©]©]©]®]´]º]¾]7a¹Ìz©kk(k3kIkekrk‰kœk§k½k©kÌkÔkÔkãkãkëk÷k␍l"l1l<lOlUlUlUlZl_lnlyl“l•lšl©l´lÁlËlËlÙlº”*KX¤X¤p¤w¤~¤�¤Š¤�¤�¤”¤™¤»¤¨¤Ë¤Ó¤Û¤Ş¤à¤ğ¤ù¤¥¥ ¥¥:¥K¥V¥ˆ¥»à.¢–A–A´A¿AĞAÓA×AàAçAõABB+B<BNB`BoB~B�B�B�B¬B°B´B¹B½BÊBÑBßBóBüBCC)C+C/C9C9C>C>C>CCCCCRC[CcCyCyCyC~C~C–C¢C­C²C²CµCºCºCÙCåCòCôCôCøCúCúCD%D1D3D3D6D8D8DEDGDGDJDJDSDYD^DzDzDzDzDzDzDzDzDzDzDzDzD|D�DŸD®D½D½DÁDÁDÉDâDæDëD†E¼,îÕîÕüÕÖ ÖÖÖ½l3JÆQÆQÜQöQâQR*RR9R>RERERKRNRRRZRrR}R“RˆR«RµR¾PQa%%%+%2%B%S%X%u%{%‚%‰%—%£%µ%ñ%¿D+¶ä¶äÊäØäŞäåå␍å2å8å>åDåDåLåÀô#œÎ5Î5Ö5å5é5ö566&6C6P6b6„6¬6º6Ö6è677"7C7a7p7‹7–7±7Ê7Ê7å78(8C8U8d8s8s8~8‘8¢8µ8Å8Ò8Ş8í8
9
9999#90979V9_9p9t9|9‡9Ÿ9·9À9Ğ9Ø9İ9::!:,:@:E:M:s:u:€:³:Í:Í:å:ô:ü: ;;;.;P;X;`;k;m;};•;­;Å;İ;ï;<<<*<8<<<@<Á °‡°‡¹‡Ø‡İ‡Â\ˆ[–̷̖̰ÌÄÌÏÌÔÌÚÌìÌòÌ
ÍÍ.ÍDÍOÍUÍwÍw͇͜Í�ͭ͡͵ͽÍÅÍÓÍÙÍâÍîÍîÍğÍÎÎ␍Î␍Î$Î$ÎBÎBÎUÎbÎgÎgÎ~·ΖάηÎÅÎĞÎàÎíÎÿÎÏÏÏ(Ï*Ï*Ï2Ï7Ï7Ï?ÏDÏDÏLÏQÏQÏYÏ^Ï^ÏdÏiÏiÏpÏuÏuÏ|Ï�Ï�όϑϑϜϡϡϬϱϱϼϼÏ×ÏŞÏäÏçÏòÏõÏ ĞĞ%Ğ,Ğ/ĞAĞCĞIĞ]ĞjĞyĞyĞyĞyЃĞ�вĞÄĞÕĞŞĞïĞõĞúĞÑÑ(Ñ7Ñ=ÑNÑYÑcÑsтшѓљѮѴÑÅÑĞÑÖÑæÑæÑöÑ ÒÒÒ-Ò4Ò:ÒKÒVÒ[ÒxÒ�Ò›Ò«Ò·ÒÉÒÔÒãÒåÒ÷ÒÿÒÓ ÓÓÓ'Ó-Ó7Ó=ÓHÓNÓPÓ]ÓjÓtÓ�Ó›Ó›Ó¡Ó¨ÓìÕÃD#°ø«ø«¬9¬A¬A¬O¬b¬|¬¬ˆ¬¤¬¤¬¤¬¬¬®¬®¬¶¬¸¬¸¬À¬Â¬Â¬Ê¬Ê¬Ó¬Ù¬Ş¬Ş¬ç¬ö¬ú¬ÿ¬­
­
­
­
­­­!­&­&­+­8­Q­p­s­‰­¨­¨­¨­°­²­²­²­º­¼­¼­¼­Ä­Æ­Æ­Æ­Î­Ğ­Ğ­Û­Û­á­æ­æ­æ­æ­í­ø­
®®&®0®0®0®@®@®G®K®Q®i®w®Š®—®À®Ã®Ì®Ó®ç®ï®ø®¯¯¯¯¯¯¯ ¯&¯;¯C¯I¯T¯k¯‚¯�¯”¯™¯™¯ ¯«¯«¯°¯Â¯È¯È¯È¯È¯$°Äd*,C,CNCXC[C[CeCxCzC‡C‰C”C¨C°CÀCÅCËCÓCÖCèCÅLWfG1G1[1_1d1o1o1y111ƒ1‹1Æ\CVß0ß0õ0õ0ù0ş01111#1)1)17191C1Ç8(2ÆÖÆÖÏÖÏÖİÖáÖèÖëÖğÖȨYæ]æ]ş]^^$^^V^º^ ^•^{^d^À^Õ^Å^õ^ú^__1__@_F_F_M_w_¢_…_¹_×_×_×_ã_ÉlF]n,n,ˆ,±,“,À,à,ü,ò,-,--;-T-t-†-Ÿ-Ÿ-¦-È-È-Ò-Ê4Š“¾ë¾ëÒë×ëİëáëåëì ìËxÌæN‚N‚y‚f‚ˆ‚’‚™‚¯‚´‚¹‚½‚¿‚ł˂á‚΂ğ‚ ƒƒ#ƒFƒ<ƒUƒaƒÌ”"ȪȪ֪èªìªôªüª«««%«0«5«K«R«Y«d«o«q«|«‡«‰«•« «««´«¼«¼«À«÷«Í€ÚöO5O5m5q5u5}5‹5�5‘5§5­5¯5Á5Å5É5Ñ5Ù5å5ú5 6666&6;6ÎŞ`VEVE†E‘E¶E˜EĞEF F FFF0F?FAFIFkFŒF�F«FÆFÚFßFùFGG
G!GHGZGgG‚G¢G˜G¼GÂGÂGËGëG÷GúGüGHH&H&H8H8HFHPH{HqH•H•HšH�H³H¿HÔHøHIII@I/IOIQIcIwI‹I�I I¦IµIİIÌIìIîIJ
JJ(J1JHJRJTJhJrJrJ‘J—J—J—J JÀJèJ×J÷JüJKKAK7KVKVKVK|K|K�KÏ`8ÌN1N1…1Œ1”1�1¨1¯1Ç1Ì1Ï1Ò1Û1é1ó1ø1 2%222^2c2p2�2•2¤2Ğ2Ø2İ2ò23&3+3+3>3Q3e3i3‹3œ3¡3¡3Í3Í3Í3Í3Í3á3ù3ş34441464?4L4T4o4†4”4Ÿ4»4»4»4È4ß4á4á4á4î45555+5+5;5@5g5~5�5¬5¬5¬5¹5Ğ5Ò5Ò5Ò5ß5ö5ø5ø5666,64696Y6p6‚6�6�6�6«6Â6Ä6Ä6Ñ6è6è6ü6ş6 7.7L7Q7_7m7w7y7y7y7–7�7 7 7È78Ф%J&è&è@èlèlè‹è›è è è¯èÁèÛèãèêèïè
éééééééé0é0é0é0éGéIéIéIéIédéoé¤éÑĞçfƒfƒ|ƒˆƒ�ƒ�ƒ™ƒ�ƒ£ƒ®ƒ³ƒ³ƒ³ƒèƒÕƒ÷ƒ„„7„P„i„‚„‡„‡„ „¹„Ò„ë„ğ„ğ„ …"…;…T…V…V…o…ˆ…¡…º…º…º…Ì…Ò0�‰^ë^ëlërëvë•ë¶ë¶ë¼ëÓ<:E?8?8H8S8a8m8y8‚8‹8”8š8Ÿ8ÔluŒ×&×&å&ï&ö&␍'␍''' '*'8'U'W'g'g'l'n'u'§'ÕÈŸÍ6t6tJtttitUt”tÆt¬tŸtñtötuuu5uRu«u“uu±u¼uèuíuõuvvAv6v"vTvmvYv�v|v§v®vÚvÚvÚvÚvâvÖL^mÖ-Ö-ô-.␍././.A.N.^.T.v.€.×$qv†M†MšM¢M­M³MØÈg•�1�1³1·1Ö1ø12 22$212:2:2?2I2a2l2|2ˆ2�2š2«2­2¾2À2Â2Â2Â2Ê2Ê2Ô2Ô2Ü2ä2ì2ô2ø23O3Ù  ‡ ‡.‡E‡K‡Ú`FZŸ8Ÿ8¯8¶8¸8½8Ì8Ò8ç8ç8õ8õ89
9␍99%9(909Û<öF�F�O�Z�e�p�{�…�£�®�¾�Ü 5vfvf�f f¦f²f½fËf×fîfùf gg!g'g-g@gFgOgUgggmgxg€g�g›gØgİ,29¾/¾/Ì/İ/ö/
0␍00Ş4à‡à‡î‡ø‡ˆˆˆˆˆ ˆßÄMz�ı�ıºı½ıÂıÏıÔıæıèıìığıóış şEşNşYş`şyşŸş¤ş½şãşèşïşÿ.ÿ0ÿIÿoÿoÿoÿ‡ÿ¡ÿ°ÿÂÿà ˆÇvv4v7v=vQvYvjvwv}v‚v‚v�v˜v�v®v¼v¾vİvñvøvwww"w5w@wDwUwUwUwZwZwfwuwˆw�w“w§w­wµwÇwÍwÏwŞwëwñw÷wüwxxxx"x$x)x1x3x8xDxFxKxSxUxZxbxdxixqxsxxx€x€x€x�x�x�x§x­x³x¾xÃxÜxâxíxõxÿxy y"y-y8y>yKyPyUyUyjyry|y„yŒy­y¸yÃyÏyÉyØyáyæyëyzzzz"z.z2z7z<zGzRz]z_zezrzwz|z•z z«z«z±z¾zÀzÅzÎzçzòzız{{{{{{*{,{,{?{A{A{T{V{V{i{k{k{~{€{€{’{’{˜{�{�{´{È{½{Õ{İ{ä{ê{ò{||| | |"|:|=|?|N|`|p|||“|­|²|Æ|Ö|é|î|î|÷| }}(}0}8}<}J}P}U}U}[}o}}„}„}Š}�}•}•}•}›}ª}½}Ê}Î}Ó}Ó}×}Ü}Ü}á}ì}ø}~(~4~4~:~G~I~V~b~q~„~„~‘~�~�~�~�~¡~¦~·~É~Ô~Ü~ä~æ~ø~ı~  --DTThtv‹¢¢¨µ·ÉÉÔÔÔÔÔP‚á „ÈUU,U:UQUVU{U�U†UŒUšU¡U°UµUÁUÓUÓUñUüUVV0VMVYVtVŒV¨V±VÀVÈVÕVŞVãVóVW!W&W.WGWYWiWoWzWƒW‰WÏW¹WªWßWXXõW*X-XRXáXâ<+6ìCìC␍DDD.DGDODiDuDã„ |f f ˆ “ š ¢ ¥ ¥ µ À À à Ê Ñ × İ ã ê ğ       C G J Z b g g n w ˆ � — ¢ ³ ³ ¼ Á Ë Ò Ù á ç é ÷ !! !-!:!:!:!:!@!R![!l!�!�!¶!½!Ç!Ï!Ö!Ö!ß!æ!ò!"␍"␍"␍"!"5"E"H"#ä„97737B7I7c7�7¦7·7À7Î7à7ù7ù7 8%8-808<8åX{Í>>is†‘£±·ÈÏ×íõ-79IYbhmtz€†‘œŸ¦ÀÈâ÷%4;C^{ˆ�¡©°´½¿Ñèöü(..@æ 
P‡P‡Y‡m‡r‡ç¤ŸÄf€f€‚€ˆ€š€Ÿ€¥€¨€¬€¬€Ï€Ô€�í€�)��8�N�:�]�e�j�p�s�w�y�’�~�¡�¡�¡�¼�ë�÷�è˜Íï'"61@OO^^mm||‹‹š®©¸¸ÇÖåPéxËåcc4cFcLcXcococ�c‡c’c¢c®c·c½cÃcÎcÜcécõcdddBdêd”©ììì%ì%ì?ìFìRìRìiìiì€ì€ì—ì—ì®ì®ìÅìÇìÇìËìëÌÂñ>>`grˆˆš¥¹½ÂÆÈÎàì+///BWWcis~Œ“¢¤½××éìP7G|D|D’D�D¦DªD»DÉDÏDÛDãDîDôD÷DEí ®-ş<ş<=#='=0=7=>=T=e=v=ˆ=š=©=¸=É=Ø=Ø=ß=ã=ì=ù=> >>>4>4>4>4>4>@>D>G>O>]>e>r>z>‚>“>�>£>£>°>¶>Å>Ü>Ş>é>ö>??
???5?7?E?G?R?X?X?`?`?r?y?�?�?�?”?”?¬?º?Å?Ê?Ê?Í?Ò?Ò?ñ?ÿ? @@@@@@3@A@M@O@O@R@T@T@a@c@c@f@f@f@f@f@o@u@y@…@¥@²@À@Ç@�Aî(rxPŠPŠ^ŠeŠuŠxŠ~Šï(nt‡&‡&�&š&«&¶&¶&Ô&ğTzKŞòŞòüòóóóó0ó@óIóOóRóVóXópó€ó�ó“ó—ó�óŸó¢ó¦ó¦óÉóÍóÓóÓóÚóüóô$ô7ô=ôDôOôYô]ô`ôgômôqôwôˆô�ô“ô˜ô¥ô§ô¹ô»ôÂôÏôÑôãôãôãôãôãôõõõ5õ5õJõVõsõ—õ±õ¶õÍõÒõàõ÷õüõöö(ö.ö>öKö_öföröŠö–ö–ö–öœöŸö¢ö»öÁöÕöÛöàöëöëöğöıö
÷
÷÷÷5÷;÷>÷A÷H÷Q÷X÷X÷]÷j÷w÷w÷}÷‹÷¢÷¨÷«÷®÷µ÷µ÷Æ÷Í÷Ú÷ç÷ç÷î÷ø÷ÿ÷ø øø+ø+øEøJøQøYø`øpøtø}ø•øšø¡øÃøÎøÔøÜøõø ù ù$ù$ù>ùLùSùZù|ù�ù³ùµù¿ùáùáùáùúùúú0ú4ú ûñÀ€¬æ_æ_ş_```!`-`N`/`]`b`b`‡`¸`›`�`Û`à` aaa;aaJaOahaoa’a¨a¨aÎaÎaÚaò ///6/</ó4‘šÆNÆNŞNOOOOO>Oô8 ///$///7/>/D/J/J/P/õ :>00 0(0-0öÎPævævww w5wRwaw…w³w¹w¿wÇwÉwÑwæwéwôwxx3xBxfx”xšx x¨x­xµxÊxÍxØxäxéxïxõxıxy␍yy5yCyqywy|y„y”yºyèyîyóyóyzzz7zOz[zczqzqzvz‰z z¢z¿z×zãzëzùzùzşz{{({?{V{o{�{�{°{Ç{Ş{ì{î{|||%|1|G|`|s|~|‘|•|•|•|œ|¡|´|¿|Ù|Û|à|ó|ş| }}}'}÷˜k␍¬9¬9Â9Î9Î9ä9ï9ñ9::::":&:*:-:-:6:::P:P:†:’:¤:´:Ë:Ğ:Ó:Ø:Ø:Ø:ô:û:;;;;;8;D;L;Q;Q;m;z;‚;‡;‡;£;¯;¸;À;È;Ô;ê;õ;<<*<2<7<7<S<m<w<ƒ<‹<�<�<¯<»<Í<Ò<î<ú< ===*=/=/=/=/=2=7=7=7=V=b=t=v=y=~=~=~=ˆ=�=—=Ÿ=¨=³=¹=Æ=Ô=Ô=Ş=ç=ï=$>*>1>@>Z>_>_>r>z>z>|>|>|>�>�>ˆ>�>’>™>�>�>�>�>¬>¬>Ñ>Ú>Ú>Ş>ùBø(üBüB
CC!C'Cù�ªÊŞlŞlülmm&m;mImTmcmimimimnmsm�mŒm¥m§m¬mºmÅmÒmÙmçmú\2EN+N+h+�+o+œ+¸+®+Ğ+å+Ò+ô+␍, ,8,8,?,a,a,k,û8fpMMM-MAMPMVM\M_M€Mü0�—H‹H‹\‹h‹v‹y‹‘‹”‹œ‹ı0S[�×�עת׷×Á×Ô׺P>NȈȈԈèˆëˆÿˆ‰ ‰‰ ‰'‰*‰0‰ÿT¡²nOnOˆO›O�O¨OµOÊOÌOŞOèOüOüOPPYP<˜£ ‹ ‹´‹»‹Ç‹Ó‹ã‹è‹ë‹ï‹÷‹ 26NåNå\åhåH!/�[�[¢[®[Ä[°[Ó[Õ[Ü[ç[ó[û[ DƒSSBSISNSVSpSyS{SˆSˆSŠS¤SªS¬S®S»S»S»S»S¿SÎS×SßSèSğS÷SıSÿST T1TDTJT^TcTpTpT„T‹T’T›T©T²TÕTÛTßTäTéTìTöTùT Uläû.ã.ãBãXãfãqãuã|ã€ã‰ã˜ãšãšã®ã°ã¹ã¿ã¿ã¿ã¿ãÇã´KtEE6EGELESE]E]EeExE|E�E–E˜E›EŸE¦EºE¾EÆEÒEÙEİEåEçEïEıEFF
F#F+F3FAFEFSF %I–q–q¦q²q¾qÎqæqìqúq rrr3r`rzr‡r”r¤rªr¬r½rßrærìrúrss#s)s/sRsôB»ii"i%i,i7iFiHiSibibioi}i€i‚i‚i‡iŒi•i i¦i¯iÂiÇiÜiçiñiñijj4jHj_jejjjqjwj~jƒjƒj‰j�j”j”j§jµjÍjÓjØjìjöjıjıjk5k;k@k@kkkpkpk›kÂkÇkÇkÇkÊkÑk×kŞkãkãkékïkôkôk l l%lHlNl^ljlpl~l…l‡l›l¡l¨l¨lªlªlªl¯lµlºl¾lÀlÃlÎlİlàlâlælælëlëlùl#m˜}Ÿ##"#'#.#8#>#I#Y#a#i#n#y#ƒ#‰#”#¤#¬#¼#Ã#Ë#Ó#Û#ã#è#ó#$$$  B†Î=Î=æ=í=>(>3>@>N>B>w>w>ƒ>‹>š>Ô>Ö>? ? ?@?X?E?y?g?ˆ?�?�?²?´?¿?Ç?Ç?è?í?ö?@
@(@@]@C@7@l@‰@t@©@Á@®@ã@Ğ@Aò@A%AA<A<A<AeAeAqA
Ğ1ğ‘ğ‘’’*’*’J’N’S’S’S’_’d’t’y’y’y’~’~’—’�’­’»’Ä’Ô’İ’ß’ß’ß’ß’æ’í’ô’û’“ ““““““ “$“+” D$şpşp qq q0q5q>qJqLq^q^q`q�q
+3
View File
@@ -361,6 +361,7 @@ class CIntermediateStruct
#define FSF_PUBLIC 0x01
#define FSF_ASM 0x02
#define FSF_STATIC 0x04
#define FSF__ 0x08
#define FSF_INTERRUPT (1<<Ff_INTERRUPT)
#define FSF_HASERRCODE (1<<Ff_HASERRCODE)
#define FSF_ARGPOP (1<<Ff_ARGPOP)
@@ -388,6 +389,8 @@ class CIntermediateStruct
#define PRS1_CLASS 0x000300
#define PRS1B_STATIC_LOCAL_VAR 4
#define PRS1_STATIC_LOCAL_VAR 0x000400
#define PRS1B__EXTERN_IMPORT 5
#define PRS1_NOT_REALLY__EXTERN 0x000500
#define PRSF_UNION 0x010000
+3
View File
@@ -7,6 +7,9 @@ public extern I64 ExePrint2(U8 *fmt,...);
public extern I64 ExePutS(U8 *buf,U8 *filename=NULL,I64 ccf_flags=0,
CLexHashTableContext *htc=NULL);
public extern I64 ExePutS2(U8 *buf,U8 *filename=NULL,I64 ccf_flags=0);
public _extern _LAST_FUN I64 LastFun(I64 argc,I64 *argv);
public extern I64 RunFile(U8 *name,I64 ccf_flags=0,...);
public extern I64 RunFile2(U8 *name,I64 ccf_flags=0,...);
public extern CCmpGlbls cmp;
#help_index "Compiler/Directive"
-1
View File
@@ -1151,6 +1151,5 @@ op789A_next:
else
dbg_info->body[num_lines]=ip+buf;
}
return ip;
}
+7 -7
View File
@@ -407,7 +407,7 @@ I64 PrsFunCall(CCmpCtrl *cc,CPrsStk *ps,Bool indirect,CHashFun *tempf)
is_putchars=FALSE;
}
if (Bt(&tempf->flags,Ff_INTERNAL)&& IC_SQR<=tempf->executable_addr<=IC_ATAN)
if (Bt(&tempf->flags,Ff_INTERNAL)&& IC_SQR<=tempf->exe_addr<=IC_ATAN)
is_template_fun=TRUE;
else
is_template_fun=FALSE;
@@ -548,7 +548,7 @@ I64 PrsFunCall(CCmpCtrl *cc,CPrsStk *ps,Bool indirect,CHashFun *tempf)
tempcbh=tempcbh1;
}
if (Bt(&tempf->flags,Ff_INTERNAL))
ICAdd(cc,tempf->executable_addr,0,tempf->return_class);
ICAdd(cc,tempf->exe_addr,0,tempf->return_class);
else {
if (indirect)
ICAdd(cc,IC_CALL_INDIRECT,
@@ -561,9 +561,9 @@ I64 PrsFunCall(CCmpCtrl *cc,CPrsStk *ps,Bool indirect,CHashFun *tempf)
else
ICAdd(cc,IC_CALL_EXTERN,tempf,tempf->return_class);
} else
ICAdd(cc,IC_CALL_INDIRECT2,&tempf->executable_addr,tempf->return_class);
ICAdd(cc,IC_CALL_INDIRECT2,&tempf->exe_addr,tempf->return_class);
} else
ICAdd(cc,IC_CALL,tempf->executable_addr,tempf->return_class);
ICAdd(cc,IC_CALL,tempf->exe_addr,tempf->return_class);
if ((Bt(&tempf->flags,Ff_RET1) || Bt(&tempf->flags,Ff_ARGPOP)) &&
!Bt(&tempf->flags,Ff_NOARGPOP)) {
if (indirect) {
@@ -632,17 +632,17 @@ I64 PrsUnaryTerm(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,
}
cc->abs_cnts.externs++;
ICAdd(cc,IC_IMM_I64,
&tempf->executable_addr,cmp.internal_types[RT_PTR]);
&tempf->exe_addr,cmp.internal_types[RT_PTR]);
ICAdd(cc,IC_DEREF,0,cmp.internal_types[RT_PTR]);
} else {
if (cc->flags&CCF_AOT_COMPILE) {
ICAdd(cc,IC_ABS_ADDR,
tempf->executable_addr,cmp.internal_types[RT_PTR]);
tempf->exe_addr,cmp.internal_types[RT_PTR]);
if (cc->flags&CCF_ASM_EXPRESSIONS)
cc->abs_cnts.abs_addres++;
} else
ICAdd(cc,IC_IMM_I64,
tempf->executable_addr,cmp.internal_types[RT_PTR]);
tempf->exe_addr,cmp.internal_types[RT_PTR]);
}
cc->abs_cnts.c_addres++;
Lex(cc);
+4 -1
View File
@@ -297,8 +297,11 @@ U8 *COCCompile(CCmpCtrl *cc,I64 *_code_size,CDbgInfo **_dbg,I64 *_type)
if (cc->flags&CCF_AOT_COMPILE)
res=MAlloc(code_size);
else
else {
res=MAlloc(code_size,Fs->code_heap);
if (cc->htc.fun)
Fs->last_fun=cc->htc.fun;
}
COCHeaderPut(cc,10,FALSE);
code_size=OptPass789A(cc,reg_offsets,res,_dbg);
+31 -26
View File
@@ -104,9 +104,9 @@ CHashFun *PrsFunJoin(CCmpCtrl *cc,
tempf->clobbered_reg_mask=REGG_CLOBBERED+REGG_STK_TEMP;
tempf->str=name;
if (cc->flags&CCF_AOT_COMPILE)
tempf->executable_addr=aotc->ip;
tempf->exe_addr=aotc->ip;
else
tempf->executable_addr=&UndefinedExtern;
tempf->exe_addr=&UndefinedExtern;
LBts(&tempf->flags,Cf_EXTERN);
tempf->flags|=fsp_flags&FSG_FUN_FLAGS1;
if (name) //if not fun_ptr
@@ -161,7 +161,7 @@ U0 PrsFun(CCmpCtrl *cc,CHashClass *temp_return,U8 *name,I64 fsp_flags)
ICAdd(cc,IC_LEAVE,0,cc->htc.fun->return_class);
cc->htc.fun->size&=~7;
if (cc->flags&CCF_AOT_COMPILE) {
cc->htc.fun->executable_addr=cc->aotc->ip;
cc->htc.fun->exe_addr=cc->aotc->ip;
cc->htc.fun->type|=HTF_EXPORT|HTF_RESOLVE;
r=COCCompile(cc,&size,&cc->htc.fun->dbg_info,NULL);
if (r) {
@@ -172,11 +172,11 @@ U0 PrsFun(CCmpCtrl *cc,CHashClass *temp_return,U8 *name,I64 fsp_flags)
}
} else {
old_trace=Btr(&cc->opts,OPTf_TRACE);
cc->htc.fun->executable_addr=COCCompile(
cc->htc.fun->exe_addr=COCCompile(
cc,&size,&cc->htc.fun->dbg_info,NULL);
if (old_trace) {
Bts(&cc->opts,OPTf_TRACE);
Un(cc->htc.fun->executable_addr,size,64);
Un(cc->htc.fun->exe_addr,size,64);
}
SysSymImportsResolve(cc->htc.fun->str);
}
@@ -229,19 +229,21 @@ U0 PrsGlblVarLst(CCmpCtrl *cc,I64 saved_mode,CHashClass *saved_tempc,
if (tempex && mode&255==PRS0_EXTERN && !(cc->flags&CCF_AOT_COMPILE) &&
tempex->type&HTT_EXPORT_SYS_SYM) {
val=tempex->val;
mode=PRS0__EXTERN|PRS1_NULL;
mode=PRS0__EXTERN|PRS1_NOT_REALLY__EXTERN;
}
if (cc->token=='(') {
switch (mode&255) {
case PRS0__INTERN:
tempf=PrsFunJoin(cc,tempc,st,fsp_flags);
tempf->executable_addr=val;
tempf->exe_addr=val;
Bts(&tempf->flags,Ff_INTERNAL);
LBtr(&tempf->flags,Cf_EXTERN);
return;
case PRS0__EXTERN:
if (!(fsp_flags&FSF__) && !(mode&PRS1_NOT_REALLY__EXTERN))
LexExcept(cc,"Expecting label with underscore at ");
tempf=PrsFunJoin(cc,tempc,st,fsp_flags);
tempf->executable_addr=val;
tempf->exe_addr=val;
SysSymImportsResolve(tempf->str);
LBtr(&tempf->flags,Cf_EXTERN);
if (saved_mode&255==PRS0__EXTERN)
@@ -252,8 +254,10 @@ U0 PrsGlblVarLst(CCmpCtrl *cc,I64 saved_mode,CHashClass *saved_tempc,
case PRS0_EXTERN:
PrsFunJoin(cc,tempc,st,fsp_flags);
return;
case PRS0_IMPORT:
case PRS0__IMPORT:
if (!(fsp_flags&FSF__))
LexExcept(cc,"Expecting label with underscore at ");
case PRS0_IMPORT:
if (!(cc->flags&CCF_AOT_COMPILE))
LexExcept(cc,"import not needed at ");
else {
@@ -859,9 +863,9 @@ U0 PrsTryBlk(CCmpCtrl *cc,I64 try_cnt)
if (cc->flags&CCF_AOT_COMPILE)
ICAdd(cc,IC_CALL_IMPORT,temp_try,tempc);
else
ICAdd(cc,IC_CALL_INDIRECT2,&temp_try->executable_addr,tempc);
ICAdd(cc,IC_CALL_INDIRECT2,&temp_try->exe_addr,tempc);
} else
ICAdd(cc,IC_CALL,temp_try->executable_addr,tempc);
ICAdd(cc,IC_CALL,temp_try->exe_addr,tempc);
if ((Bt(&temp_try->flags,Ff_RET1) ||
Bt(&temp_try->flags,Ff_ARGPOP)) && !Bt(&temp_try->flags,Ff_NOARGPOP))
ICAdd(cc,IC_ADD_RSP1,16,tempc);
@@ -879,9 +883,9 @@ U0 PrsTryBlk(CCmpCtrl *cc,I64 try_cnt)
if (cc->flags&CCF_AOT_COMPILE)
ICAdd(cc,IC_CALL_IMPORT,temp_untry,tempc);
else
ICAdd(cc,IC_CALL_INDIRECT2,&temp_untry->executable_addr,tempc);
ICAdd(cc,IC_CALL_INDIRECT2,&temp_untry->exe_addr,tempc);
} else
ICAdd(cc,IC_CALL,temp_untry->executable_addr,tempc);
ICAdd(cc,IC_CALL,temp_untry->exe_addr,tempc);
ICAdd(cc,IC_CALL_END,0,tempc);
ICAdd(cc,IC_END_EXP,0,0,ICF_RES_NOT_USED);
@@ -992,14 +996,13 @@ Bool PrsStmt(CCmpCtrl *cc,I64 try_cnt=0,
case KW__EXTERN:
if (Bt(&cc->opts,OPTf_EXTERNS_TO_IMPORTS))
goto sm_underscore_import;
if (cc->flags&CCF_AOT_COMPILE) {
if (cc->token!=TK_IDENT || !(tempex=cc->hash_entry) ||
!(tempex->type & HTT_EXPORT_SYS_SYM))
LexExcept(cc,"Expecting System sym at ");
i=tempex->val;
Lex(cc);
} else
i=LexExpressionI64(cc);
if (cc->token!=TK_IDENT || !(tempex=cc->hash_entry) ||
!(tempex->type & HTT_EXPORT_SYS_SYM))
LexExcept(cc,"Expecting system sym at ");
if (*cc->cur_str=='_')
fsp_flags|=FSF__;
i=tempex->val;
Lex(cc);
if (cc->token!=TK_IDENT || !(tempex=cc->hash_entry) ||
!(tempex->type & (HTT_CLASS|HTT_INTERNAL_TYPE)))
LexExcept(cc,"Expecting type at ");
@@ -1009,7 +1012,9 @@ Bool PrsStmt(CCmpCtrl *cc,I64 try_cnt=0,
case KW__IMPORT:
sm_underscore_import:
if (cc->token!=TK_IDENT)
LexExcept(cc,"Expecting System sym at ");
LexExcept(cc,"Expecting system sym at ");
if (*cc->cur_str=='_')
fsp_flags|=FSF__;
import_name=cc->cur_str;
cc->cur_str=0;
if (Lex(cc)!=TK_IDENT || !(tempex=cc->hash_entry) ||
@@ -1017,7 +1022,7 @@ sm_underscore_import:
LexExcept(cc,"Expecting type at ");
Lex(cc);
PrsGlblVarLst(cc,PRS0__IMPORT|PRS1_NULL,tempex,
import_name,FALSE);
import_name,fsp_flags);
Free(import_name);
break;
case KW_EXTERN:
@@ -1045,7 +1050,7 @@ sm_underscore_import:
LexExcept(cc,"Expecting type at ");
sm_import:
Lex(cc);
PrsGlblVarLst(cc,PRS0_IMPORT|PRS1_NULL,tempex,0,FALSE);
PrsGlblVarLst(cc,PRS0_IMPORT|PRS1_NULL,tempex,0,fsp_flags);
break;
case KW__INTERN:
i=LexExpressionI64(cc);
@@ -1095,10 +1100,10 @@ sm_import:
temp_untry,cmp.internal_types[RT_PTR]);
else
ICAdd(cc,IC_CALL_INDIRECT2,
&temp_untry->executable_addr,
&temp_untry->exe_addr,
cmp.internal_types[RT_PTR]);
} else
ICAdd(cc,IC_CALL,temp_untry->executable_addr,
ICAdd(cc,IC_CALL,temp_untry->exe_addr,
cmp.internal_types[RT_PTR]);
}
}
+3 -3
View File
@@ -16,8 +16,7 @@ U0 DoOnce()
"Install onto hard drive ";
if (YorN) {
DocBottom;
ExeFile("::/Misc/OSInstall");
if (ExePrint("OSInstall(FALSE);")) {
if (RunFile("::/Misc/OSInstall",,FALSE)) {
*sys_registry_doc->filename.name='C';
"\n\n1) TAD\n\n";
switch (GetI64("Staff Member Number:")) {
@@ -40,7 +39,8 @@ U0 DoOnce()
}
if (FileFind("D:/Temp/Logs/access.log")) {
Auto("\n\n%C",CH_ESC);
WebLogRep("D:/Temp/Logs/*.log","D:/Temp/LogRep.TXT");
RunFile("::/Demo/WebLogDemo/WebLogRep",,
"D:/Temp/Logs/*.log","D:/Temp/LogRep.TXT");
Del("D:/Temp/Logs/*.log");
}
}
-1
View File
@@ -10,7 +10,6 @@ MapFileLoad("::/Kernel/Kernel");
MapFileLoad("::/Compiler/Compiler");
#include "::/Apps/Psalmody/Load"
#include "::/Demo/WebLogDemo/WebLogRep"
#include "~/TOSCfg"
#include "~/TOSMisc"
#include "~/TOSToHtml"
Binary file not shown.
+6 -2
View File
@@ -48,7 +48,7 @@ $WW,1$$FG,5$$TX+CX,"TODO"$$FG$
* $LK,"::/Demo/Games/FlatTops.CPP"$ is torpedo, not bombs.
* $LK,"::/Demo/Games/EagleDive.CPP"$ doesn't make sense or look real. Bad.
* $LK,"::/Demo/Games/EagleDive.CPP"$ foreground clipping issues.
* Reset MPs with $LK,"Core0StartMP",A="MN:Core0StartMP"$() after boot. Free old task memory?
@@ -333,6 +333,8 @@ $ID,-5$
$FG,5$$TX+CX,"Test"$$FG$
* $LK,"SpriteBitMap",A="FI:::/Adam/Gr/SpriteBitMap.CPP"$: Grabscroll?
* $LK,"DrvMap",A="MN:DrvMap"$() in $LK,"MountFile",A="MN:MountFile"$().
* Return ress for $LK,"GrBlot",A="MN:GrBlot"$, $LK,"GrRect",A="MN:GrRect"$, $LK,"GrPutChar",A="MN:GrPutChar"$?
* Collision cnts for $LK,"GrBlot",A="MN:GrBlot"$, $LK,"GrRect",A="MN:GrRect"$, $LK,"GrPutChar",A="MN:GrPutChar"$?
@@ -404,11 +406,13 @@ Moses gets Aaron $TX,"Exodus 4:10-16",HTML="http://www.biblegateway.com/passag
There is no council against the Lord $TX,"Proverbs 21:30",HTML="http://www.biblegateway.com/verse/en/Proverbs%2021:30"$
Human help is worthless $TX,"Psalm 108:12",HTML="http://www.biblegateway.com/verse/en/Psalm%20108:12"$
Do not seek your own wealth $TX,"1 Corinthians 10:24",HTML="http://www.biblegateway.com/verse/en/1%20Corinthians%2010:24"$
The stone rejected is conrerstone $TX,"Matthew 21:42",HTML="http://www.biblegateway.com/verse/en/Matthew%2021:42"$
New wineskins $TX,"Mark 2:22",HTML="http://www.biblegateway.com/verse/en/Mark%202:22"$
$FG,5$$TX+CX,"Misc Notes"$$FG$
Intel CEO's name: Brian Krzanich
>$FG,2$lspci -v$FG$
Size:$TX,"17400 KB",D="DD_TEMPLEOSCD_K_SIZE"$
Size:$TX,"17408 KB",D="DD_TEMPLEOSCD_K_SIZE"$
$FG,5$$TX+CX,"My Web Bookmarks"$$FG$$WW,0$
$TX,"My FireFox Bookmarks",HTML="http://www.templeos.org/Wb/Home/Downloads/Blog/Bookmarks"$
+20 -20
View File
@@ -2,7 +2,7 @@ $TR-UL,"Adam"$
$ID,2$$TR,"SysMsgFlags"$
$ID,2$sys_msg_flags[0]=0xFF;
$ID,-2$$TR,"SysRegVer"$
$ID,2$registry_version=4.080;
$ID,2$registry_version=4.090;
$ID,-2$$ID,-2$$TR-C-UL,"TempleOS"$
$ID,2$$TR,"TOS"$
$ID,2$I64 tos_code_walk_thru=105,tos_after_egypt_in_action=46;
@@ -10,36 +10,36 @@ $ID,-2$$TR,"CircleTrace"$
$ID,2$F64 best_score=4.9425;
$ID,-2$$TR,"DiningStars"$
$ID,2$F64 best_score=9999.0000;
$ID,-2$$TR,"DunGen"$
$ID,2$F64 best_score=20.5295;
$ID,-2$$TR,"Staff"$
$ID,2$#define PERSONAL_INITIALS "TAD"
#define MACHINE_CFG 0
$ID,-2$$TR,"BlackDiamond"$
$ID,2$I64 best_score=9;
$ID,-2$$TR,"EagleDive"$
$ID,2$I64 best_score=8;
$ID,-2$$TR,"DunGen"$
$ID,2$F64 best_score=20.5295;
$ID,-2$$TR,"CastleFrankenstein"$
$ID,2$F64 best_score=33.8405;
$ID,-2$$TR,"ZoneOut"$
$ID,2$F64 best_score=8.1373;
$ID,-2$$TR,"Varoom"$
$ID,2$F64 best_score=46.2643;
$ID,-2$$TR,"FlapBat"$
$ID,2$F64 best_score=16.4090;
$ID,-2$$TR,"TimeOut"$
$ID,2$I64 best_score=22202;
$ID,-2$$TR,"RawHide"$
$ID,2$F64 best_score=96.1279;
$ID,-2$$TR,"XCaliber"$
$ID,2$I64 best_score=248;
I64 msg_flags=1;
$ID,-2$$TR,"BlackDiamond"$
$ID,2$I64 best_score=9;
$ID,-2$$TR,"FlapBat"$
$ID,2$F64 best_score=16.4090;
$ID,-2$$TR,"Wenceslas"$
$ID,2$F64 best_score=43.9944;
$ID,-2$$TR,"BomberGolf"$
$ID,2$I64 best_score=175;
$ID,-2$$TR,"TimeOut"$
$ID,2$I64 best_score=22202;
$ID,-2$$TR,"ZoneOut"$
$ID,2$F64 best_score=8.1373;
$ID,-2$$TR,"KeepAway"$
$ID,2$I64 best_score0=68,best_score1=30;
$ID,-2$$TR,"Varoom"$
$ID,2$F64 best_score=46.2643;
$ID,-2$$TR,"CastleFrankenstein"$
$ID,2$F64 best_score=33.8405;
$ID,-2$$TR,"XCaliber"$
$ID,2$I64 best_score=248;
I64 msg_flags=1;
$ID,-2$$TR,"EagleDive"$
$ID,2$I64 best_score=8;
$ID,-2$$ID,-2$$TR,"DemoCompany"$
$ID,2$
$TR,"Game1"$
+18 -18
View File
@@ -11,13 +11,13 @@ U8 TOSGetDrv()
return res;
}
U0 TOSMakeOSDrvBootInstall(U8 drv_let)
U0 TOSBootHDIns(U8 drv_let)
{
drv_let=ToUpper(drv_let);
Auto(TOS_CFG);
MakeOSDrvBootInstall(drv_let);
BootHDIns(drv_let);
if (StrOcc(TOS_MASTER_BOOT_DRVS,drv_let))
MasterBootInstall(drv_let);
BootMHDIns(drv_let);
}
U0 TOSCopyDrv(U8 src,U8 dst)
@@ -34,7 +34,7 @@ U0 TOSCopyDrv(U8 src,U8 dst)
DocClear;
Drv(dst);
TOSMakeOSDrvBootInstall(dst);
TOSBootHDIns(dst);
}
U0 TOSPromptAndCopyDrv()
@@ -229,7 +229,7 @@ install this on top.
Drv('C');
DistroPrep;
Auto(TOS_DVD_CFG);
MakeOSDrvBootInstall('C','T');
BootDVDIns('C');
Fmt('B',,FALSE,FSt_REDSEA);
DelTree(TOS_DISTRO_DIR);
CopyTree("C:/",TOS_DISTRO_DIR "/");
@@ -241,7 +241,7 @@ U0 MakeStaffDistro()
ISO9660ISO(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",,
TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSSTAFF_SIZE",
"Download $TX,"TempleOS V4.08",D="DD_OS_NAME_VERSION"$ - T.S. Company Internal Distro (%0.1f MB)",
"Download $TX,"TempleOS V4.09",D="DD_OS_NAME_VERSION"$ - T.S. Company Internal Distro (%0.1f MB)",
0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024));
Drv('C');
}
@@ -264,7 +264,7 @@ I call $LK,"MakeBootDrvFile",A="FF:::/Demo/AcctExample/TOSDistro.CPP,MakeBootRes
DistroPrep;
MakeBootRescueDrvFile;
Auto(TOS_DVD_DBG_CFG);
MakeOSDrvBootInstall('C','T');
BootDVDIns('C');
Fmt('B',,FALSE,FSt_REDSEA);
DelTree(TOS_DISTRO_DIR);
CopyTree("C:/",TOS_DISTRO_DIR "/");
@@ -277,7 +277,7 @@ U0 MakeDbgDistro()
ISO9660ISO(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",,
TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSDBG_SIZE",
"Download $TX,"TempleOS V4.08",D="DD_OS_NAME_VERSION"$ - Debug Distro (%0.1f MB)",
"Download $TX,"TempleOS V4.09",D="DD_OS_NAME_VERSION"$ - Debug Distro (%0.1f MB)",
0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024));
Drv('C');
}
@@ -287,7 +287,7 @@ U0 StdDistroPrep()
Drv('C');
DistroPrep;
Auto(STD_DISTRO_DVD_CFG);
MakeOSDrvBootInstall('C','T');
BootDVDIns('C');
Fmt('B',,FALSE,FSt_REDSEA);
DelTree(TOS_DISTRO_DIR);
CopyTree("C:/",TOS_DISTRO_DIR "/");
@@ -303,7 +303,7 @@ U0 MakeStdDistro()
ISO9660ISO(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",,
TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSCD_SIZE",
"Download $TX,"TempleOS V4.08",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1f MB)",
"Download $TX,"TempleOS V4.09",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1f MB)",
0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024));
Drv('C');
}
@@ -312,7 +312,7 @@ U0 MakeStdRedSeaDistro()
StdDistroPrep;
RedSeaISO(TOS_ISO_C_NAME,TOS_DISTRO_DIR,TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSCD_RS_SIZE",
"Download $TX,"TempleOS V4.08",D="DD_OS_NAME_VERSION"$ - Standard RedSea Distro (%0.1f MB)",
"Download $TX,"TempleOS V4.09",D="DD_OS_NAME_VERSION"$ - Standard RedSea Distro (%0.1f MB)",
0.1*(10*Size(TOS_ISO_C_NAME,"+s")/1024/1024));
Drv('C');
}
@@ -338,7 +338,7 @@ U0 MakeLiteDistro()
ISO9660ISO(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",,
TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSLITE_SIZE",
"Download $TX,"TempleOS V4.08",D="DD_OS_NAME_VERSION"$ - Lite Distro (%0.1f MB)",
"Download $TX,"TempleOS V4.09",D="DD_OS_NAME_VERSION"$ - Lite Distro (%0.1f MB)",
0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024));
Drv('C');
}
@@ -371,7 +371,7 @@ U0 MakeUltraDistro()
ISO9660ISO(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",,
TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSULTRA_SIZE",
"Download $TX,"TempleOS V4.08",D="DD_OS_NAME_VERSION"$ - UltraSmall Distro (%0.2f MB)",
"Download $TX,"TempleOS V4.09",D="DD_OS_NAME_VERSION"$ - UltraSmall Distro (%0.2f MB)",
0.01*(100*Size(TOS_ISO_NAME,"+s")/1024/1024));
Drv('C');
}
@@ -380,7 +380,7 @@ U0 MakeUltraRedSeaDistro()
UltraDistroPrep;
RedSeaISO(TOS_ISO_C_NAME,TOS_DISTRO_DIR,TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSULTRA_RS_SIZE",
"Download $TX,"TempleOS V4.08",D="DD_OS_NAME_VERSION"$ - UltraSmall RedSea Distro (%0.2f MB)",
"Download $TX,"TempleOS V4.09",D="DD_OS_NAME_VERSION"$ - UltraSmall RedSea Distro (%0.2f MB)",
0.01*(100*Size(TOS_ISO_C_NAME,"+s")/1024/1024));
Drv('C');
}
@@ -389,25 +389,25 @@ U0 UpdateISODocDefines()
{
try {
DefinePrint("DD_TEMPLEOSCD_SIZE",
"Download $TX,"TempleOS V4.08",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1f MB)",
"Download $TX,"TempleOS V4.09",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1f MB)",
0.1*(10*Size("D:/Wb/TempleOSCD.ISO","+s")/1024/1024));
DefinePrint("DD_TEMPLEOSCD_K_SIZE",
"%d KB",Size("D:/Wb/TempleOSCD.ISO","+s")/1024);
DefinePrint("DD_TEMPLEOSCD_RS_SIZE",
"Download $TX,"TempleOS V4.08",D="DD_OS_NAME_VERSION"$ - Standard RedSea Distro (%0.1f MB)",
"Download $TX,"TempleOS V4.09",D="DD_OS_NAME_VERSION"$ - Standard RedSea Distro (%0.1f MB)",
0.1*(10*Size("D:/Wb/TempleOSCDRS.ISO","+s")/1024/1024));
DefinePrint("DD_TEMPLEOSCD_RS_K_SIZE",
"%d KB",Size("D:/Wb/TempleOSCDRS.ISO","+s")/1024);
DefinePrint("DD_TEMPLEOSULTRA_SIZE",
"Download $TX,"TempleOS V4.08",D="DD_OS_NAME_VERSION"$ - UltraSmall Distro (%0.2f MB)",
"Download $TX,"TempleOS V4.09",D="DD_OS_NAME_VERSION"$ - UltraSmall Distro (%0.2f MB)",
0.01*(100*Size("D:/Wb/TempleOSUltra.ISO","+s")/1024/1024));
DefinePrint("DD_TEMPLEOSULTRA_K_SIZE",
"%d KB",Size("D:/Wb/TempleOSUltra.ISO","+s")/1024);
DefinePrint("DD_TEMPLEOSULTRA_RS_SIZE",
"Download $TX,"TempleOS V4.08",D="DD_OS_NAME_VERSION"$ - UltraSmall RedSea Distro (%0.2f MB)",
"Download $TX,"TempleOS V4.09",D="DD_OS_NAME_VERSION"$ - UltraSmall RedSea Distro (%0.2f MB)",
0.01*(100*Size("D:/Wb/TempleOSUltraRS.ISO","+s")/1024/1024));
DefinePrint("DD_TEMPLEOSULTRA_RS_K_SIZE",
"%d KB",Size("D:/Wb/TempleOSUltraRS.ISO","+s")/1024);
+4 -2
View File
@@ -682,5 +682,7 @@ U0 InsMyURL()
Free(url);
}
if (FileFind("~/Downloads/Words/LinuxDict.TXT"))
GodInit("~/Downloads/Words/LinuxDict.TXT");
//if (FileFind("~/Downloads/Words/LinuxDict.TXT"))
// GodInit("~/Downloads/Words/LinuxDict.TXT");
if (FileFind("~/Downloads/Words/HappyWords.TXT"))
GodInit("~/Downloads/Words/HappyWords.TXT");
+2 -2
View File
@@ -171,7 +171,7 @@ public CDoc *Doc2Html(CDoc *doc_in,U8 *html_header=NULL,U8 *body_header=NULL,
"<head>\n"
"<meta http-equiv=\"Content-Type\" "
"content=\"text/html;charset=US-ASCII\">\n"
"<meta name=\"generator\" content=\"$TX,"TempleOS V4.08",D="DD_OS_NAME_VERSION"$\">\n";
"<meta name=\"generator\" content=\"$TX,"TempleOS V4.09",D="DD_OS_NAME_VERSION"$\">\n";
if (!body_header) body_header=
"<body>\n"
"<pre style=\"font-family:courier;font-size:10pt\">\n";
@@ -393,7 +393,7 @@ U0 TOSWebFile(U8 *name)
"<meta name=\"keywords\" "
"content=\"Operating System,64-Bit,64 Bit,"
"Temple,OS,TempleOS,Free,Open Source,Public Domain,x86_64\">\n"
"<meta name=\"generator\" content=\"$TX,"TempleOS V4.08",D="DD_OS_NAME_VERSION"$\">\n",
"<meta name=\"generator\" content=\"$TX,"TempleOS V4.09",D="DD_OS_NAME_VERSION"$\">\n",
"<body style=\"background-color:#55FFFF; border-style:solid;
border-width:8px; border-color:#0000AA;
+2 -2
View File
@@ -1,5 +1,5 @@
asm {
DIV_U64_BY_U64::
_DIV_U64_BY_U64::
PUSH RBP
MOV RBP,RSP
XOR RDX,RDX
@@ -17,6 +17,6 @@ DIV_U64_BY_U64::
RET1 16
}
_extern DIV_U64_BY_U64 I64 DivU64ByU64(I64 dividend,I64 divisor);
_extern _DIV_U64_BY_U64 I64 DivU64ByU64(I64 dividend,I64 divisor);
"123456/10=%d\n",DivU64ByU64(123456,10);
+70 -41
View File
@@ -73,7 +73,6 @@ I64 strip_height,x,y,z,game_score;
Bool game_over;
class MPCtrl {
I64 mp_cnt;
I64 init_not_done_flags,update_not_done_flags,app_not_done_flags;
I64 strip_width[MP_MAX_PROCESSORS];
Bool app_done;
@@ -139,8 +138,8 @@ U0 MPDoPanels(CTask *task)
Panel *tempp,*start_ptr=NULL,*end_ptr=NULL;
CD3I32 *poly;
Fish *tempf;
lo=Gs->num*(MAP_HEIGHT-1)/mp.mp_cnt;
hi=(Gs->num+1)*(MAP_HEIGHT-1)/mp.mp_cnt;
lo=Gs->num*(MAP_HEIGHT-1)/mp_cnt;
hi=(Gs->num+1)*(MAP_HEIGHT-1)/mp_cnt;
for (threshold=8;threshold>=1;threshold--)
for (j=lo;j<hi;j++) {
for (i=0;i<MAP_WIDTH-1;i++) {
@@ -280,22 +279,14 @@ U0 InitMap()
and convert it to panels. "panels[][]" holds the panels
for each spot.
*/
I64 i,x,y,xx,yy;
I64 i;
InitElevations;
MemSet(panels,0,sizeof(panels));
xx=x/(MAP_SCALE*COORDINATE_SCALE);
yy=y/(MAP_SCALE*COORDINATE_SCALE);
z+=elevations[yy][xx]*COORDINATE_SCALE;
CalcNormals;
panel_root=NULL;
num_panels=0;
mp.init_not_done_flags=1<<mp.mp_cnt-1;
for (i=0;i<mp.mp_cnt;i++)
mp.init_not_done_flags=1<<mp_cnt-1;
for (i=0;i<mp_cnt;i++)
Spawn(&MPDoPanels,Fs,"Do Panels",i);
while (mp.init_not_done_flags)
Sleep(1);
@@ -434,10 +425,11 @@ U0 MPDrawIt(CTask *task,CDC *dc)
{
I64 j,strip_width,*s2w,x1,y1,z1, xx,yy,
xh,yh,zh,yh2,xh2,x1h,y1h,x1wa,y1wa,x1wb,y1wb,
x3,y3,z3,
x3,y3,z3,dd,dd_old,
cx=task->pix_width>>1,
cy=task->pix_height>>1;
Panel reg *tempp;
Bool w_on_map,h_on_map;
xx=x/(MAP_SCALE*COORDINATE_SCALE);
yy=y/(MAP_SCALE*COORDINATE_SCALE);
@@ -514,9 +506,12 @@ U0 MPDrawIt(CTask *task,CDC *dc)
//Take half steps to cover whole grid.
xh>>=1; yh>>=1;
xh2>>=1; yh2>>=1;
w_on_map=FALSE;
dd_old=MAX_I64;
for (strip_width=0;cnts.jiffies<update_jiffy_limit;strip_width++) {
x1h=x1wa;
y1h=y1wa;
h_on_map=FALSE;
for (j=0;j<strip_height && cnts.jiffies<update_jiffy_limit;j++) {
x1=x1h>>8; y1=y1h>>8;
if (0<=x1<MAP_WIDTH && 0<=y1<MAP_HEIGHT) {
@@ -528,10 +523,18 @@ U0 MPDrawIt(CTask *task,CDC *dc)
} else
tempp->cnt++;
}
}
h_on_map=TRUE;
} else if (h_on_map)
break;
x1h+=xh;
y1h+=yh;
}
if (h_on_map)
w_on_map=TRUE;
else if (w_on_map) {
strip_width=MAX_I64;
break;
}
x1wb-=yh2;
y1wb+=xh2;
if (strip_width&1) {
@@ -541,6 +544,12 @@ U0 MPDrawIt(CTask *task,CDC *dc)
x1wa+=x1wb;
y1wa+=y1wb;
}
if (!w_on_map) {
dd=SqrI64(x1wa>>8-MAP_WIDTH>>1)+SqrI64(y1wa>>8-MAP_HEIGHT>>1);
if (dd>dd_old)
break;
dd_old=dd;
}
}
Free(s2w);
@@ -573,6 +582,12 @@ U0 DrawHorizon(CDC *dc)
CD3I32 p[4];
I32 *old_db=dc->depth_buf;
dc->depth_buf=NULL;
CColorROPU32 ground_color;
if (z/COORDINATE_SCALE<(WATER_ELEVATION+3)*MAP_SCALE)
ground_color=BLUE;
else
ground_color=LTGREEN;
Mat4x4IdentEqu(dc->r);
Mat4x4RotZ(dc->r,é2);
@@ -616,12 +631,12 @@ U0 DrawHorizon(CDC *dc)
if (-ã/2<=é1<ã/2 ^^ -ã/2<=Wrap(è-ã/2)<ã/2)
dc->color=LTCYAN;
else
dc->color=LTGREEN;
dc->color=ground_color;
GrFillPoly3(dc,4,p);
p[0].y=dc->height-1;
p[1].y=dc->height-1;
if (-ã/2<=é1<ã/2 ^^ -ã/2<=Wrap(è-ã/2)<ã/2)
dc->color=LTGREEN;
dc->color=ground_color;
else
dc->color=LTCYAN;
GrFillPoly3(dc,4,p);
@@ -642,12 +657,12 @@ U0 DrawHorizon(CDC *dc)
if (x1<x2 ^^ -ã/2<=é1<ã/2 ^^ -ã/2<=Wrap(è-ã/2)<ã/2)
dc->color=LTCYAN;
else
dc->color=LTGREEN;
dc->color=ground_color;
GrFillPoly3(dc,4,p);
p[0].x=dc->width-1;
p[1].x=dc->width-1;
if (x1<x2 ^^ -ã/2<=é1<ã/2 ^^ -ã/2<=Wrap(è-ã/2)<ã/2)
dc->color=LTGREEN;
dc->color=ground_color;
else
dc->color=LTCYAN;
GrFillPoly3(dc,4,p);
@@ -659,7 +674,7 @@ U0 DrawHorizon(CDC *dc)
U0 Core0EagleDive()
{
CDC *dc=DCAlias(main_dc,Fs);
I64 i,xx,yy,height,bkcolor,cx=Fs->pix_width>>1,cy=Fs->pix_height>>1;
I64 i,xx,yy,elev,height,bkcolor,cx=Fs->pix_width>>1,cy=Fs->pix_height>>1;
F64 min_strip_width,roll,pitch,heading;
Fish *tempf;
@@ -668,9 +683,14 @@ U0 Core0EagleDive()
xx=x/(MAP_SCALE*COORDINATE_SCALE);
yy=y/(MAP_SCALE*COORDINATE_SCALE);
height=z/COORDINATE_SCALE-elevations[yy][xx];
if (0<=xx<MAP_WIDTH && 0<=yy<MAP_HEIGHT)
elev=elevations[yy][xx];
else
elev=MAX_I64;
height=z/COORDINATE_SCALE-elev;
if (height<0) {
if (elevations[yy][xx]>WATER_ELEVATION*MAP_SCALE) {
if (elev>WATER_ELEVATION*MAP_SCALE) {
dc->color=bkcolor=BLACK;
if (!game_over) {
GrRect(dc,0,0,dc->width,dc->height);
@@ -688,7 +708,7 @@ U0 Core0EagleDive()
DrawHorizon(dc);
DCDepthBufRst(dc);
mp.update_not_done_flags=1<<mp.mp_cnt-1;
mp.update_not_done_flags=1<<mp_cnt-1;
MPDrawIt(Fs,dc);
xx=x/COORDINATE_SCALE;
@@ -704,7 +724,7 @@ U0 Core0EagleDive()
Sleep(1);
min_strip_width=MAX_F64;
for (i=0;i<mp.mp_cnt;i++)
for (i=0;i<mp_cnt;i++)
min_strip_width=Min(min_strip_width,32.0*mp.strip_width[i]/(i+32.0));
strip_height=ClampI64(
strip_height*Clamp(0.25*min_strip_width/strip_height,0.9,1.1),
@@ -772,7 +792,7 @@ Fish *FishFind(I64 x1,I64 y1,I64 *_dd)
U0 AnimateTask(I64)
{//Steadily moves the airplane fwd.
I64 *s2w,x1,y1,z1,dx,dy,dz,dd;
F64 t0=tS,mS,é,d;
F64 t0=tS,mS,é,d,pitch;
Fish *tempf;
while (TRUE) {
mS=1000*(tS-t0);
@@ -792,7 +812,17 @@ U0 AnimateTask(I64)
x1=x/COORDINATE_SCALE; y1=y/COORDINATE_SCALE; z1=z/COORDINATE_SCALE;
if (z1<(WATER_ELEVATION+3)*MAP_SCALE) {
speed=0.5;
if (z1<WATER_ELEVATION*MAP_SCALE) {
z=WATER_ELEVATION*MAP_SCALE*COORDINATE_SCALE;
pitch=Wrap(-è-ã/2,-ã);
if (Abs(pitch)>ã/2) {
pitch=Wrap(ã-pitch,-ã);
if (pitch<-ã/8)
è+=mS/1000.0*Sign(3*ã/8-è);
} else if (pitch<-ã/8)
è+=mS/1000.0*Sign(-3*ã/8-è);
}
speed=1.0;
if (tempf=FishFind(x1,y1,&dd)) {
d=Sqrt(dd);
x1-=tempf->p.x;
@@ -831,7 +861,7 @@ U0 AnimateTask(I64)
U0 MPEnd()
{
update_jiffy_limit=0;
mp.app_not_done_flags=1<<mp.mp_cnt-1-1;
mp.app_not_done_flags=1<<mp_cnt-1-1;
mp.app_done=TRUE;
//Wait for all cores to exit
while (mp.app_not_done_flags)
@@ -855,18 +885,15 @@ U0 SongTask(I64)
}
}
U0 Init(I64 _mp_cnt)
U0 Init()
{
I64 i;
I64 i,xx,yy;
main_dc=DCNew(GR_WIDTH,GR_HEIGHT);
critical_section_flag=0;
game_over=FALSE;
game_score=0;
MemSet(&mp,0,sizeof(MPCtrl));
if (_mp_cnt<=mp_cnt)
mp.mp_cnt=_mp_cnt;
else
mp.mp_cnt=mp_cnt;
QueInit(&fish_root);
InitMap;
DCDepthBufAlloc(main_dc);
@@ -876,13 +903,17 @@ U0 Init(I64 _mp_cnt)
é1= 0.0*ã/180.0;
é2= 0.0*ã/180.0;
speed = 2.5;
claws_down=0;
x=MAP_WIDTH>>1 *COORDINATE_SCALE*MAP_SCALE;
y=MAP_HEIGHT>>1*COORDINATE_SCALE*MAP_SCALE;
z=64 *COORDINATE_SCALE*MAP_SCALE;
claws_down=0;
for (i=1;i<mp.mp_cnt;i++)
xx=x/(MAP_SCALE*COORDINATE_SCALE);
yy=y/(MAP_SCALE*COORDINATE_SCALE);
z+=elevations[yy][xx]*COORDINATE_SCALE;
for (i=1;i<mp_cnt;i++)
Spawn(&CoreAPEagleDiveTask,Fs,"AP EagleDive",i);
Fs->task_end_cb=&TaskEndCB;
game_t0=tS;
@@ -911,7 +942,7 @@ U0 CleanUp()
DCDel(main_dc);
}
U0 EagleDive(I64 _mp_cnt=MP_MAX_PROCESSORS)
U0 EagleDive()
{
I64 ch,sc;
F64 pp,tt1,tt2;
@@ -937,7 +968,7 @@ U0 EagleDive(I64 _mp_cnt=MP_MAX_PROCESSORS)
DocClear;
"Initializing...\n";
Fs->song_task=Spawn(&SongTask,NULL,"Song",,Fs);
Init(_mp_cnt);
Init;
Fs->animate_task=Spawn(&AnimateTask,NULL,"Animate",,Fs);
Fs->draw_it=&DrawIt;
try //in case <CTRL-ALT-c> is pressed.
@@ -967,7 +998,7 @@ U0 EagleDive(I64 _mp_cnt=MP_MAX_PROCESSORS)
Fs->draw_it=NULL;
CleanUp;
WinMgrSync;
Init(_mp_cnt);
Init;
Fs->draw_it=&DrawIt;
break;
}
@@ -981,9 +1012,7 @@ U0 EagleDive(I64 _mp_cnt=MP_MAX_PROCESSORS)
PutExcept;
SettingsPop;
CleanUp;
#ifjit
RegWriteBranch("TempleOS/EagleDive","I64 best_score=%d;\n",best_score);
#endif
MenuPop;
}
+1 -1
View File
@@ -12,7 +12,7 @@ You can load it with:
If you want to change the system font permanently,
save to a file with this font editor program
and cut and paste the code into $LK,"::/Kernel/FontStd.CPP"$.
You will need to recompile Kernel by calling $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$().
You will need to recompile Kernel by calling $LK,"BootHDIns",A="MN:BootHDIns"$().
See $LK,"::/Demo/ExtendedChars.CPP"$, $LK,"::/Demo/Games/CharDemo.CPP"$,
$LK,"::/Demo/Graphics/CharAnimation.CPP"$ and $LK,"::/Demo/ScreenCodes.CPP"$.
+1 -1
View File
@@ -217,7 +217,7 @@ U0 Main()
"$$RED$$This code is not efficient, but the compiler is simple.$$FG$$\n";
Un(code,dst-code); //Unassemble the code we created.
//$LK,"Call",A="MN:Call"$() is a function. See $LK,"_CALL",A="FF:::/Kernel/KUtils.CPP,_CALL"$::
//See also $LK,"CallInd",A="MN:CallInd"$(). See $LK,"_CALLIND",A="FF:::/Kernel/KUtils.CPP,_CALLIND"$::
//See also $LK,"CallInd",A="MN:CallInd"$(). See $LK,"_CALL_IND",A="FF:::/Kernel/KUtils.CPP,_CALL_IND"$::
"$$LTBLUE$$Answer:%d$$FG$$\n",Call(code);
} catch {
"$$RED$$Error$$FG$$\n";
+1
View File
@@ -326,6 +326,7 @@ I64 TestCoreRange(RangeJob *r)
if (rj.hi>r->hi)
rj.hi=r->hi;
res+=TestCoreSubRange(&rj);
Yield;
}
return res;
}
+1 -1
View File
@@ -148,7 +148,7 @@ public CDoc *Doc2Html(CDoc *doc_in,U8 *html_header=NULL,U8 *body_header=NULL,
"<head>\n"
"<meta http-equiv=\"Content-Type\" "
"content=\"text/html;charset=US-ASCII\">\n"
"<meta name=\"generator\" content=\"$TX,"TempleOS V4.08",D="DD_OS_NAME_VERSION"$\">\n";
"<meta name=\"generator\" content=\"$TX,"TempleOS V4.09",D="DD_OS_NAME_VERSION"$\">\n";
if (!body_header) body_header=
"<body>\n"
"<pre style=\"font-family:courier;font-size:10pt\">\n";
+1 -2
View File
@@ -23,8 +23,7 @@ U0 DoOnce()
"Install onto hard drive ";
if (YorN) {
DocBottom;
ExeFile("::/Misc/OSInstall");
ExePrint("OSInstall(TRUE);");
RunFile("::/Misc/OSInstall",,TRUE);
}
if (FileFind("::/Misc/Tour")) {
"\nTake Tour";
+1 -1
View File
@@ -4,4 +4,4 @@ When an $FG,2$AutoFile$FG$ runs, a child task is $LK,"Spawn",A="MN:Spawn"$()ed w
See $LK,"::/Demo/AutoFile/AFDir.AUT"$.
Note: $LK,"Auto",A="MN:Auto"$("") can be used if all you need is to send ASCII characters. It differs from $LK,"AutoStr",A="MN:AutoStr"$(). You'll probably use $LK,"Auto",A="MN:Auto"$() a lot and not $LK,"AutoStr",A="MN:AutoStr"$(). With $LK,"Auto",A="MN:Auto"$(), for example, you can place answers to the prompts for recompiling the $FG,2$Kernel$FG$ module during $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$().
Note: $LK,"Auto",A="MN:Auto"$("") can be used if all you need is to send ASCII characters. It differs from $LK,"AutoStr",A="MN:AutoStr"$(). You'll probably use $LK,"Auto",A="MN:Auto"$() a lot and not $LK,"AutoStr",A="MN:AutoStr"$(). With $LK,"Auto",A="MN:Auto"$(), for example, you can place answers to the prompts for recompiling the $FG,2$Kernel$FG$ module during $LK,"BootHDIns",A="MN:BootHDIns"$().
BIN
View File
Binary file not shown.
+22 -3
View File
@@ -2,7 +2,26 @@ $WW,1$$FG,5$$TX+CX,"Change Log"$$FG$
Use $LK,"R",A="MN:R"$() to rename if I change a label.
$IV,1$----06/24/16 21:56:10----$IV,0$
$IV,1$----07/04/16 14:13:54----$IV,0$
* $BK,1$TempleOS version 4.09 Released$BK,0$
* Improved $LK,"::/Demo/Games/EagleDive.CPP"$.
* Improved $LK,"GrFillTri0",A="MN:GrFillTri0"$().
$IV,1$----07/03/16 04:30:05----$IV,0$
* Added $LK,"Unmount",A="MN:Unmount"$().
* Made BootLoader mandatory in $LK,"RedSeaISO",A="MN:RedSeaISO"$().
* Added $LK,"BDT_FILE_READ",A="MN:BDT_FILE_READ"$.
$IV,1$----07/01/16 05:29:08----$IV,0$
* Made underscore mandatory on $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ callable asm functions.
$IV,1$----06/28/16 13:15:08----$IV,0$
* Changed $LK,"TaskRep",A="MN:TaskRep"$() and $LK,"MemRep",A="MN:MemRep"$().
* Changed $LK,"::/Adam/WallPaper.CPP"$.
$IV,1$----06/26/16 14:01:16----$IV,0$
* Added $LK,"LastFun",A="MN:LastFun"$(), $LK,"RunFile",A="MN:RunFile"$(), $LK,"RunFile2",A="MN:RunFile2"$() and $LK,"PopUpRunFile",A="MN:PopUpRunFile"$().
* Made boot code modular.
$IV,1$----06/24/16 14:15:13----$IV,0$
* Added A.I. to $LK,"::/Apps/KeepAway/KeepAway.CPP"$ and changed scoring.
@@ -48,7 +67,7 @@ $IV,1$----05/23/16 01:30:28----$IV,0$
* $LK,"R",A="MN:R"$("ISOFileCreate","$LK,"ISO9660ISO",A="MN:ISO9660ISO"$");
$IV,1$----05/19/16 02:16:09----$IV,0$
* Added $LK,"BDT_FILE",A="MN:BDT_FILE"$.
* Added $LK,"BDT_FILE_WRITE",A="MN:BDT_FILE_WRITE"$.
$IV,1$----05/17/16 07:16:38----$IV,0$
* Worked on compiler $LK,"CICArg",A="MN:CICArg"$.a1_type_pointed_to.
@@ -246,7 +265,7 @@ $IV,1$----01/12/16 19:17:12----$IV,0$
$IV,1$----01/12/16 10:06:18----$IV,0$
* $BK,1$TempleOS version 4.01 Released$BK,0$
* Standardized drive letters. Your $LK,"Auto",A="MN:Auto"$() config scripts for compiling the kernel with $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$() must be changed.
* Standardized drive letters. Your $LK,"Auto",A="MN:Auto"$() config scripts for compiling the kernel with $LK,"BootHDIns",A="MN:BootHDIns"$() must be changed.
* Added $LK,"CCF_QUESTION_HELP",A="MN:CCF_QUESTION_HELP"$.
$IV,1$----01/11/16 00:04:38----$IV,0$
+1 -1
View File
@@ -39,4 +39,4 @@ $ID,-2$
* You can define handler functions for $FG,2$<CTRL-ALT-letter>$FG$ keys with $LK,"CtrlAltCBSet",A="MN:CtrlAltCBSet"$(). They operate either in a interrupt environment or in the window mgr when it queues kbd msgs. You can do $LK,"Raw",A="MN:Raw"$() output. $FG,2$<CTRL-ALT-letter>$FG$ handlers take a scan_code as an arg.
* If you recompile $FG,2$Kernel$FG,2$$FG$ with $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$(), you can set the $FG,4$MemInit$FG$, option to initialize memory to a value at boot, the $FG,4$HeapInit$FG$ option to cause mem alloced off the heap to be initialized or $FG,4$VarInit$FG$ option so both global and local vars will be initialized to a value. Pick a non-zero value to discover uninitialized var bugs. You can set $LK,"sys_var_init_flag",A="MN:sys_var_init_flag"$, and $LK,"sys_heap_init_flag",A="MN:sys_heap_init_flag"$ directly after booting.
* If you recompile $FG,2$Kernel$FG,2$$FG$ with $LK,"BootHDIns",A="MN:BootHDIns"$(), you can set the $FG,4$MemInit$FG$, option to initialize memory to a value at boot, the $FG,4$HeapInit$FG$ option to cause mem alloced off the heap to be initialized or $FG,4$VarInit$FG$ option so both global and local vars will be initialized to a value. Pick a non-zero value to discover uninitialized var bugs. You can set $LK,"sys_var_init_flag",A="MN:sys_var_init_flag"$, and $LK,"sys_heap_init_flag",A="MN:sys_heap_init_flag"$ directly after booting.
+3 -3
View File
@@ -1,8 +1,8 @@
$HL,1$$WW,0$#define __DATE__ #exe{StreamPrint("\"%D\"",Now);}
#define __TIME__ #exe{StreamPrint("\"%T\"",Now);}
#define __LINE__ #exe{StreamPrint("%d",Fs->last_lex->lex_include_stk->line_num);}
#define __CMD_LINE__ #exe{StreamPrint("%d",Fs->last_lex->flags&CCF_CMD_LINE && Fs->last_lex->lex_include_stk->depth<2);}
#define __FILE__ #exe{StreamPrint("\"%s\"",Fs->last_lex->lex_include_stk->full_name);}
#define __LINE__ #exe{StreamPrint("%d",Fs->last_cc->lex_include_stk->line_num);}
#define __CMD_LINE__ #exe{StreamPrint("%d",Fs->last_cc->flags&CCF_CMD_LINE && Fs->last_cc->lex_include_stk->depth<2);}
#define __FILE__ #exe{StreamPrint("\"%s\"",Fs->last_cc->lex_include_stk->full_name);}
#define __DIR__ #exe{StreamDir;}
See $LK,"::/Demo/Directives.CPP"$.$HL,0$$WW,1$
+2 -2
View File
@@ -31,7 +31,7 @@ $ID,2$The term $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.TXT,JIT Compile Mode
$ID,-2$$TR,"Why do files end in .Z? Are they encrypted?"$
$ID,2$Files with names ending in $FG,2$.Z$FG$ are individually compressed using $LK,"TempleOS Compression",A="FI:::/Kernel/Compress.CPP"$. They are not encrypted. $LK,"Copy",A="MN:Copy"$() or rename them with $LK,"Move",A="MN:Move"$() to a name without $FG,2$.Z$FG$ and they will be stored in an uncompressed form. See $LK,"TOSZ",A="FI:::/Doc/TOSZ.TXT"$ for Linux or Windows uncompress C/C++ code.
$ID,-2$$TR,"Is it open source? How do I build it?"$
$ID,2$TempleOS is 100% open src. All the src code is included in the distro. Use $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$() to compile the kernel and compiler. The rest is $LK,"JIT Compiled",A="FF:::/Doc/Glossary.TXT,JIT Compile Mode"$ during boot. See $LK,"::/StartOS.CPP"$.
$ID,2$TempleOS is 100% open src. All the src code is included in the distro. Use $LK,"BootHDIns",A="MN:BootHDIns"$() to compile the kernel and compiler. The rest is $LK,"JIT Compiled",A="FF:::/Doc/Glossary.TXT,JIT Compile Mode"$ during boot. See $LK,"::/StartOS.CPP"$.
$ID,-2$$TR,"Where are object files? How do I link?"$
$ID,2$TempleOS does not use object files or a linker. $LK,"AOT Compile Mode",A="FF:::/Doc/Glossary.TXT,AOT Compile Mode"$ is used to directly create flat binary files, $FG,2$/Kernel.BIN.C$FG$ and $FG,2$/Compiler/Compiler.BIN.Z$FG$ with no object files and linking.$FG$ $LK,"JIT Compile Mode",A="FF:::/Doc/Glossary.TXT,JIT Compile Mode"$ place code in memory, ready to run, with no object files or linking. Linking is done when $FG,2$BIN$FG$ modules are $LK,"Load",A="MN:Load"$()ed.
$ID,-2$$TR,"What is the FPS refresh rate?"$
@@ -57,7 +57,7 @@ $ID,2$There is no $FG,2$PATH$FG$. You do not enter filenames at the command-lin
$ID,-2$$TR,"How do I boot it with Grub?"$
$ID,2$If you use $LK,"Grub",A="FI:::/Doc/Grub.TXT"$, you $FG,2$chain-load$FG$ like Windows. See $LK,"Boot",A="FI:::/Doc/Boot.TXT"$. You can use the TempleOS boot-loader. $LK,"Master-Boot-Loader-Stage1",A="FI:::/Adam/Opt/Boot/BootMHD.CPP"$, $LK,"Master-Boot-Loader-Stage2",A="FI:::/Adam/Opt/Boot/BootMHD2.CPP"$, $LK,"Partition-Boot-Loader",A="FI:::/Adam/Opt/Boot/BootHD.CPP"$, $LK,"CD-DVD-Boot-Loader",A="FI:::/Adam/Opt/Boot/BootDVD.CPP"$.
$ID,-2$$TR,"How do I get Kernel.BIN to boot?"$
$ID,2$The boot-loaders must be patched by you running $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$() or $LK,"MasterBootInstall",A="MN:MasterBootInstall"$(). Those will write the block address into the boot-loader because the boot-loaders do not navigate file systems to find the $LK,"Stage2",A="FI:::/Kernel/KStart.CPP"$ if you relocate it.
$ID,2$The boot-loaders must be patched by you running $LK,"BootHDIns",A="MN:BootHDIns"$() or $LK,"BootMHDIns",A="MN:BootMHDIns"$(). Those will write the block address into the boot-loader because the boot-loaders do not navigate file systems to find the $LK,"Stage2",A="FI:::/Kernel/KStart.CPP"$ if you relocate it.
$ID,-2$$TR,"Why is there some 16-Bit code?"$
$ID,2$TempleOS is 64-bit. Like all PC operating systems, the boot-loader starts in 16-bit real-mode. TempleOS calls a few $FG,2$BIOS$FG$ info routines, switches to VGA-640x480x4bit, switches to 32-bit, then, 64-bit mode. There is an odd thing called a $FG,2$$TX,"PCI BIOS",HTML="http://www.o3one.org/hwdocs/bios_doc/pci_bios_21.pdf"$$FG$ which is 32-bit used for $FG,2$PCI$FG$ config space access. TempleOS calls $LK,"that",A="FI:::/Kernel/PCIBIOS.CPP"$ a couple times. It must temporarily drop-out-of 64-bit mode for that and stop multi-tasking.
$ID,-2$$TR,"Why are you pushing 32-bit values on the stack?"$
+6
View File
@@ -42,6 +42,12 @@ $ID,-2$
$FG,2$'f'$FG$
$ID,2$Format drive.
$ID,-2$
$FG,2$'i'$FG$
$ID,2$Mount ISO.C file.
$ID,-2$
$FG,2$'u'$FG$
$ID,2$Unmount drive(s).
$ID,-2$
$FG,2$'M'$FG$
$ID,2$Make CD/DVD ISO file. This creates a file image of the dir the cursor is on. The name of the ISO file is $LK,"blkdev.dft_iso_filename",A="MN:CBlkDevGlbls"$ and can be redefined in your start-up scripts. You may wish to place it on a different drive.
$ID,-2$
+4 -4
View File
@@ -66,7 +66,7 @@ $FG,2$Ident$FG$ Identifier, Identity, Identical
$FG,2$IDT$FG$ Interrupt Descriptor Table
$FG,2$Idx$FG$ Index
$FG,2$Init$FG$ Initialize
$FG,2$Ins$FG$ Insert
$FG,2$Ins$FG$ Insert, Install
$FG,2$Inst$FG$ Instruction
$FG,2$Int$FG$ Interrupt, Integer
$FG,2$ip_$FG$ Input Pointer. See $LK,"InputPointer.CPP",A="FI:::/Kernel/SerialDev/InputPointer.CPP"$.
@@ -165,7 +165,7 @@ $ID,2$$FG,2$Ahead-of-Time$FG$ compiling is conventional compilation mode. Do no
In $FG,2$AOT$FG$ mode, $FG,2$.PRJ$FG$ files are compiled to $FG,2$.BIN$FG$ files, skipping $FG,2$.OBJ$FG$ files. After compiling, $FG,2$.BIN$FG$ files are $LK,"Load",A="MN:Load"$()ed.
There is no $FG,2$main()$FG$ routine. Instead, stmts outside functions are automatically executed upon loading. There is no way to unload except by killing the task. To invoke $FG,2$AOT Compiled Mode$FG$, $LK,"Cmp",A="MN:Cmp"$() is used. The $FG,2$Kernel$FG$ module and compiler are made in $FG,2$AOT$FG$ compiled mode. See $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$() which calls $LK,"MakeAll",A="MN:MakeAll"$() where $FG,2$Kernel.BIN.C$FG$ and $FG,2$Compiler.BIN.Z$FG$ are created.
There is no $FG,2$main()$FG$ routine. Instead, stmts outside functions are automatically executed upon loading. There is no way to unload except by killing the task. To invoke $FG,2$AOT Compiled Mode$FG$, $LK,"Cmp",A="MN:Cmp"$() is used. The $FG,2$Kernel$FG$ module and compiler are made in $FG,2$AOT$FG$ compiled mode. See $LK,"BootHDIns",A="MN:BootHDIns"$() which calls $LK,"MakeAll",A="MN:MakeAll"$() where $FG,2$Kernel.BIN.C$FG$ and $FG,2$Compiler.BIN.Z$FG$ are created.
$ID,-2$$TR,"JIT Compile Mode"$
$ID,2$In $FG,2$just-in-time$FG$ mode, the compiler places code and data in memory alloced from the heap, incrementally, making them immediately ready for in-place execution. This mode is used during cmd line operations. When you $FG,2$#include$FG$ a file, it is compiled function by function and code ends-up all over in the memory, at least in the first 2Gig of memory. The $LK,"ExeFile",A="MN:ExeFile"$() routine is the same as $FG,2$#include$FG$ but can be used in programs. $LK,"ExePrint",A="MN:ExePrint"$() routine will compile and run a string.
$ID,-2$$TR,"Compiler Intermediate Code"$
@@ -222,14 +222,14 @@ $LK,"FILEMASK_SRC",A="MN:FILEMASK_SRC"$
$LK,"FILEMASK_AOT",A="MN:FILEMASK_AOT"$
$LK,"FILEMASK_JIT",A="MN:FILEMASK_JIT"$
$LK,"FILEMASK_GRA",A="MN:FILEMASK_GRA"$
$ID,-2$$TR,"Naming Convention"$
$ID,-2$$TR-C,"Naming Convention"$
$ID,2$Since there are no $FG,2$namespaces$FG$ and I don't plan to implement name spaces, I highly recommend putting a 2-3 character module code prefix on syms. e.g. $FG,2$WS$FG$, $FG,2$Doc$FG$, $FG,2$Lex$FG$
$FG,5$ALL_CAPS$FG$
Assembly Language labels are capitalized with underscores between words. So are $FG,2$#define$FG$'s.
$FG,5$_ALL_CAPS$FG$
Asm routines which are $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ callible should have a leading underscore.
Asm routines which are $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ callable must have a leading underscore.
$FG,5$MixedCaps$FG$
$LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ Functions and class names are MixedCaps.
+1 -1
View File
@@ -2,7 +2,7 @@ $FG,5$$TX+CX,"The Grub Master Bootloader"$$FG$
$WW,1$Here are my $FG,2$grub.cfg$FG$ file entries for my TempleOS partitions. I don't have the patience to do it correctly and GRUB obfuscates. Chain loading is just the normal way an operating system like Windows boots. They do drives, zero-based, and partitions on drives, one-based. They call traditional partitioning a "msdos" partition and I presume, if there is a new way to partition drives, it has a new name.
In addition to a Windows and a Linux partition, I have a Primary TempleOS $FG,2$'D'$FG$, Backup TempleOS $FG,2$'E'$FG$ and a Transfer $FG,2$'I'$FG$ partition for transferring between Windows and TempleOS. "hd0" is 1st hard drive, zero-based numbering. "msdos1" is partition #1, traditional msdos partitioning. I keep $FG,2$'D'$FG$, $FG,2$'E'$FG$, and $FG,2$'I'$FG$ ident by frequently copying all files and I use $FG,2$'I'$FG$ to transfer files. They only need to be a couple Gig in size. Every time I copy files, use $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$() to $LK,"MakeAll",A="MN:MakeAll"$ and prepare the partition $LK,"boot sector",A="FI:::/Adam/Opt/Boot/BootHD.CPP"$ for chainloading by patching the new block address and size of $FG,2$Kernel.BIN.C$FG$.
In addition to a Windows and a Linux partition, I have a Primary TempleOS $FG,2$'D'$FG$, Backup TempleOS $FG,2$'E'$FG$ and a Transfer $FG,2$'I'$FG$ partition for transferring between Windows and TempleOS. "hd0" is 1st hard drive, zero-based numbering. "msdos1" is partition #1, traditional msdos partitioning. I keep $FG,2$'D'$FG$, $FG,2$'E'$FG$, and $FG,2$'I'$FG$ ident by frequently copying all files and I use $FG,2$'I'$FG$ to transfer files. They only need to be a couple Gig in size. Every time I copy files, use $LK,"BootHDIns",A="MN:BootHDIns"$() to $LK,"MakeAll",A="MN:MakeAll"$ and prepare the partition $LK,"boot sector",A="FI:::/Adam/Opt/Boot/BootHD.CPP"$ for chainloading by patching the new block address and size of $FG,2$Kernel.BIN.C$FG$.
menuentry "TempleOS D" {
insmod chain
+2 -2
View File
@@ -8,9 +8,9 @@ $FG,2$/Demo$FG$ Here you can find lots of sample code to do various things.
$FG,2$/Doc$FG$ Here you can find documentation.
$FG,2$/Kernel$FG$ The core of the operating system is found here. Since priviledge levels are not used, calling it a $FG,2$kernel$FG$ is deceptive. It is $FG,2$AOT$FG$ compiled by $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$(). It is loaded by the boot loader and must fit in 640K.
$FG,2$/Kernel$FG$ The core of the operating system is found here. Since priviledge levels are not used, calling it a $FG,2$kernel$FG$ is deceptive. It is $FG,2$AOT$FG$ compiled by $LK,"BootHDIns",A="MN:BootHDIns"$(). It is loaded by the boot loader and must fit in 640K.
$FG,2$/Compiler$FG$ The compiler module src code is found here. The compiler is $FG,2$AOT$FG$ compiled to produce a binary file which is loaded at boot. It, too, is $FG,2$AOT$FG$ compiled by $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$().
$FG,2$/Compiler$FG$ The compiler module src code is found here. The compiler is $FG,2$AOT$FG$ compiled to produce a binary file which is loaded at boot. It, too, is $FG,2$AOT$FG$ compiled by $LK,"BootHDIns",A="MN:BootHDIns"$().
$FG,2$/Adam$FG$ The non-kernel part of the operating system is found here. It is $FG,2$JIT$FG$ compiled during boot. The $LK,"Adam Task",A="FF:::/Doc/Glossary.TXT,Adam Task"$ is the father of all tasks, like Adam and Eve.
BIN
View File
Binary file not shown.
+4 -4
View File
@@ -21,7 +21,7 @@ $ID,2$This will perform a special $LK,"Mount",A="MN:Mount"$() automatically.
$BK,1$WARNING:$BK,0$ This command erases everything on a hard drive. It repartitions a whole drive and formats the partitions$FG$. This command should be skipped if you already have your hard drive partitioned.
$BK,1$WARNING:$BK,0$ This command doesn't play well with other operating systems. You'll need to do a $LK,"MasterBootZero",A="MN:MasterBootZero"$() to restore your drive to a state where other operating systems can partition it.
$BK,1$WARNING:$BK,0$ This command doesn't play well with other operating systems. You'll need to do a $LK,"BootMHDZero",A="MN:BootMHDZero"$() to restore your drive to a state where other operating systems can partition it.
$ID,-2$
$ID,-2$2) $LK,"Fmt",A="MN:Fmt"$($FG,2$'D'$FG$,$FG,2$TRUE,FALSE,FSt_FAT32$FG$)
$ID,2$This command formats a drive with $FG,2$FAT32$FG$ or the $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ file system type. Use the drive letter of the partition in place of $FG,2$'D'$FG$.
@@ -31,12 +31,12 @@ $BK,1$WARNING:$BK,0$ If you are upgrading, be sure not to lose the file, $FG,2$
$ID,-2$3) $LK,"CopyTree",A="MN:CopyTree"$($FG,2$"T:/"$FG$,$FG,2$"D:/"$FG$)
$ID,2$This command is used to copy files onto a hard drive partition from the CD/DVD. Use the drive letter of the partition in place of $FG,2$'D'$FG$.
$ID,-2$4) $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$($FG,2$'D'$FG$)
$ID,-2$4) $LK,"BootHDIns",A="MN:BootHDIns"$($FG,2$'D'$FG$)
$ID,2$This command recompiles the source code on a drive and writes to the $UL,1$drive's$UL,0$ boot record. You'll need to reenter the $LK,"Mount",A="MN:Mount"$ information so it can be stored in the kernel.
$ID,-2$5) Use Linux's $LK,"Grub",A="FI:::/Doc/Grub.TXT"$ or TempleOS' $LK,"MasterBootInstall",A="MN:MasterBootInstall"$($FG,2$'D'$FG$)
$ID,-2$5) Use Linux's $LK,"Grub",A="FI:::/Doc/Grub.TXT"$ or TempleOS' $LK,"BootMHDIns",A="MN:BootMHDIns"$($FG,2$'D'$FG$)
$ID,2$
The $LK,"MasterBootInstall",A="MN:MasterBootInstall"$() command places a boot loader on a drive. It saves the old master boot record to $FG,2$/0000Adam/Opt/Boot/OldMBR.BIN.C$FG$ and replaces it. When you boot, you will have the option of booting the old master boot record. This command can be skipped if you already have a boot loader. Be sure not to lose the copy of the old boot record, like if you reformat the drive.
The $LK,"BootMHDIns",A="MN:BootMHDIns"$() command places a boot loader on a drive. It saves the old master boot record to $FG,2$/0000Adam/Opt/Boot/OldMBR.BIN.C$FG$ and replaces it. When you boot, you will have the option of booting the old master boot record. This command can be skipped if you already have a boot loader. Be sure not to lose the copy of the old boot record, like if you reformat the drive.
Delete $FG,2$/0000Adam/Opt/Boot/OldMBR.BIN.C$FG$ if you want to get a fresh copy of a mbr, like if installing from your own custom CD containing it's own $FG,2$/0000Adam/Opt/Boot/OldMBR.BIN.C$FG$ onto a system with a non-TempleOS boot loader.
+2 -2
View File
@@ -29,9 +29,9 @@ $FG,2$Merge(\"C:/*\",\"D:/*\",\"+r+d\");$FG$ to check my changes.
* You can use $FG,2$filter_lines$FG$ in the editor text search form ($FG,2$<CTRL-f>$FG$) to temporarily display just lines near each match. A value of $FG,2$filter lines$FG$ set to $FG,2$5$FG$ will display lines within 5 lines of matches. Then, you can do another find to a different string and achieve a $FG,2$AND$FG$ search. When finished, press $FG,2$<ESC>$FG$.
* You can recompile and reinstall the kernel with $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$(). You'll probably want to make a function for recompiling that uses the $LK,"Auto",A="MN:Auto"$() function to answer the cfg questions. See my technique $LK,"Cfg Strs",A="FL:::/Demo/AcctExample/TOSCfg.CPP,1"$, $LK,"Update Funs",A="FL:::/Demo/AcctExample/TOSDistro.CPP,1"$.
* You can recompile and reinstall the kernel with $LK,"BootHDIns",A="MN:BootHDIns"$(). You'll probably want to make a function for recompiling that uses the $LK,"Auto",A="MN:Auto"$() function to answer the cfg questions. See my technique $LK,"Cfg Strs",A="FL:::/Demo/AcctExample/TOSCfg.CPP,1"$, $LK,"Update Funs",A="FL:::/Demo/AcctExample/TOSDistro.CPP,1"$.
* $LK,"Scale2Mem",A="MN:Scale2Mem"$(min,max,limit=2*1024*1024*1024) can be used for cfg questions when recompiling. The $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$() cfg prompts accept expressions, not just numbers. The dft disk cache is $FG,2$Scale2Mem(0x80000,0x8000000)$FG$.
* $LK,"Scale2Mem",A="MN:Scale2Mem"$(min,max,limit=2*1024*1024*1024) can be used for cfg questions when recompiling. The $LK,"BootHDIns",A="MN:BootHDIns"$() cfg prompts accept expressions, not just numbers. The dft disk cache is $FG,2$Scale2Mem(0x80000,0x8000000)$FG$.
* You can permanently disable $FG,2$AutoComplete$FG$ commenting-out $LK,"ACInit",A="FF:/Home/HomeSys.CPP,ACInit"$() in $LK,"~/HomeSys.CPP",A="FF:/Home/HomeSys.CPP,ACInit"$.
+1 -1
View File
@@ -1,5 +1,5 @@
$WW,1$$FG,5$$TX+CX,"Upgrading TempleOS"$$FG$
To upgrade, you generally boot the new TempleOS CD/DVD, install on top of your drive, modify your files and set it to boot your account by executing $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$(). Often, your code will have to be modified to work with the new version. See $LK,"Change Log",A="FI:::/Doc/ChangeLog.TXT"$. You might have to boot an alternate drive or the CD and modify your code until it boots okay.
To upgrade, you generally boot the new TempleOS CD/DVD, install on top of your drive, modify your files and set it to boot your account by executing $LK,"BootHDIns",A="MN:BootHDIns"$(). Often, your code will have to be modified to work with the new version. See $LK,"Change Log",A="FI:::/Doc/ChangeLog.TXT"$. You might have to boot an alternate drive or the CD and modify your code until it boots okay.
See the $LK,"Installing",A="FI:::/Doc/Install.TXT"$ documentation.
+1 -1
View File
@@ -241,7 +241,7 @@ CBlkDev *ATAMount(U8 first_drv_let,I64 type,I64 base0,I64 base1,I64 unit)
CBlkDev *res;
if (0<=first_drv_let-'A'<NUM_DRVS && (type==BDT_ATA || type==BDT_ATAPI) &&
0<=unit<=1) {
res=BlkDevNextFree(first_drv_let,type);
res=BlkDevNextFreeSlot(first_drv_let,type);
res->unit=unit;
res->base0=base0;
res->base1=base1;
+9 -7
View File
@@ -5,7 +5,8 @@ U0 BlkDevLockFwdingSet(CBlkDev *bd)
switch (bd->type) {
case BDT_RAM:
break;
case BDT_FILE:
case BDT_FILE_READ:
case BDT_FILE_WRITE:
bd->lock_fwding=Let2BlkDev(*bd->file_dsk_name);
break;
case BDT_ATA:
@@ -32,15 +33,16 @@ I64 BlkDevAdd(CBlkDev *bd,Bool one_drv,Bool make_free)
bd->bd_signature=BD_SIGNATURE_VAL;
if (make_free)
dv=DrvMakeFree(bd->first_drv_let+res);
dv=DrvMakeFreeSlot(bd->first_drv_let+res);
else
dv=DrvNextFree(bd->first_drv_let+res);
dv=DrvMakeFreeSlot(DrvNextFreeLet(bd->first_drv_let+res));
dv->bd=bd;
dv->drv_offset=bd->drv_offset;
dv->size=bd->max_blk+1-bd->drv_offset;
switch (bd->type) {
case BDT_RAM:
case BDT_FILE:
case BDT_FILE_READ:
case BDT_FILE_WRITE:
dv->dv_signature=DRV_SIGNATURE_VAL;
dv->fs_type=FSt_REDSEA;
//This is to force creation of a RAM
@@ -81,9 +83,9 @@ I64 BlkDevAdd(CBlkDev *bd,Bool one_drv,Bool make_free)
for (i=0;i<4;i++) {
if (mbr.p[i].type) {
if (make_free)
dv=DrvMakeFree(bd->first_drv_let+res);
dv=DrvMakeFreeSlot(bd->first_drv_let+res);
else
dv=DrvNextFree(bd->first_drv_let+res);
dv=DrvMakeFreeSlot(DrvNextFreeLet(bd->first_drv_let+res));
dv->bd=bd;
dv->drv_offset=mbr.p[i].offset+offset;
dv->size =mbr.p[i].size;
@@ -151,7 +153,7 @@ I64 BlkDevAdd(CBlkDev *bd,Bool one_drv,Bool make_free)
if (res)
BlkDevLockFwdingSet(bd);
else
MemSet(bd,0,sizeof(CBlkDev));
BlkDevDel(bd);
return res;
}
+4 -2
View File
@@ -47,7 +47,8 @@ Bool RBlks(CDrv *dv,U8 *buf, I64 blk, I64 cnt)
case BDT_RAM:
MemCpy(buf,bd->RAM_dsk+blk<<BLK_SIZE_BITS,cnt<<BLK_SIZE_BITS);
break;
case BDT_FILE:
case BDT_FILE_READ:
case BDT_FILE_WRITE:
FRBlks(bd->file_dsk,buf,blk,cnt);
break;
case BDT_ATA:
@@ -86,7 +87,8 @@ Bool WBlks(CDrv *dv,U8 *buf, I64 blk, I64 cnt)
case BDT_RAM:
MemCpy(bd->RAM_dsk+blk<<BLK_SIZE_BITS,buf,cnt<<BLK_SIZE_BITS);
break;
case BDT_FILE:
case BDT_FILE_READ:
case BDT_FILE_WRITE:
FWBlks(bd->file_dsk,buf,blk,cnt);
break;
case BDT_ATA:
+53 -39
View File
@@ -33,41 +33,53 @@ Bool BlkDevInit(CBlkDev *bd)
CDirEntry de;
U8 buf[STR_LEN];
CDrv *dv=Let2Drv(bd->first_drv_let);
Bool res=FALSE,invalid=FALSE;
Bool res=FALSE;
if (!LBts(&bd->flags,BDf_INITIALIZED)) {
bd->flags|=BDF_INIT_IN_PROGRESS;
switch (bd->type) {
start:
case BDT_RAM:
if (!bd->RAM_dsk) {
bd->RAM_dsk=AMAlloc((bd->max_blk+1)<<BLK_SIZE_BITS);
bd->max_blk=MSize(bd->RAM_dsk)>>BLK_SIZE_BITS-1;
}
break;
case BDT_FILE:
if (!bd->file_dsk_name) {
StrPrint(buf,"%C:/Drv%C.DRV.C",
blkdev.boot_drv_let,bd->first_drv_let);
bd->file_dsk_name=AStrNew(buf);
}
if (FileFind(bd->file_dsk_name,&de,FUF_JUST_FILES))
bd->max_blk=de.size>>BLK_SIZE_BITS-1;
else {
invalid=TRUE;
if (bd->max_blk<7)
bd->max_blk=7;
}
bd->file_dsk=FOpen(bd->file_dsk_name,"wc+",bd->max_blk+1);
break;
end:
case BDT_RAM:
if (!bd->RAM_dsk) {
bd->RAM_dsk=AMAlloc((bd->max_blk+1)<<BLK_SIZE_BITS);
bd->max_blk=MSize(bd->RAM_dsk)>>BLK_SIZE_BITS-1;
}
dv->fs_type=FSt_REDSEA;
dv->size=bd->max_blk+1-bd->drv_offset;
if (!invalid && RedSeaDrvValidate(bd->first_drv_let))
if (RedSeaDrvValidate(bd->first_drv_let))
RedSeaDrvInit(dv);
else
RedSeaFmt(bd->first_drv_let);
res=TRUE;
break;
case BDT_FILE_READ:
if (FileFind(bd->file_dsk_name,&de,FUF_JUST_FILES)) {
bd->max_blk=de.size>>BLK_SIZE_BITS-1;
try bd->file_dsk=FOpen(bd->file_dsk_name,"rc",bd->max_blk+1);
catch
Fs->catch_except=TRUE;
if (bd->file_dsk) {
dv->fs_type=FSt_REDSEA;
dv->size=bd->max_blk+1-bd->drv_offset;
if (RedSeaDrvValidate(bd->first_drv_let)) {
RedSeaDrvInit(dv);
res=TRUE;
}
}
}
break;
case BDT_FILE_WRITE:
if (!bd->file_dsk_name) {
StrPrint(buf,"%C:/Drv%C.DRV.C",
blkdev.boot_drv_let,bd->first_drv_let);
bd->file_dsk_name=AStrNew(buf);
}
if (bd->max_blk<7)
bd->max_blk=7;
bd->file_dsk=FOpen(bd->file_dsk_name,"wc",bd->max_blk+1);
dv->fs_type=FSt_REDSEA;
dv->size=bd->max_blk+1-bd->drv_offset;
RedSeaFmt(bd->first_drv_let);
res=TRUE;
break;
case BDT_ATA:
bd->max_reads=128;
bd->max_writes=1;
@@ -105,7 +117,7 @@ U0 BlkDevsRelease()
}
}
CBlkDev *BlkDevNextFree(U8 first_drv_let,I64 type)
CBlkDev *BlkDevNextFreeSlot(U8 first_drv_let,I64 type)
{//Locate free slot for new BlkDev, like during $LK,"Mount",A="MN:Mount"$().
I64 i=0;
CBlkDev *res;
@@ -117,20 +129,21 @@ CBlkDev *BlkDevNextFree(U8 first_drv_let,I64 type)
MemSet(res,0,sizeof(CBlkDev));
res->first_drv_let=first_drv_let;
res->type=type;
if (type==BDT_ATAPI)
res->flags=BDF_REMOVABLE;
else
res->flags=0;
if (type!=BDT_RAM)
res->flags|=BDF_READ_CACHE;
if (type==BDT_ATAPI) {
res->blk_size=DVD_BLK_SIZE;
res->flags|=BDF_READ_ONLY;
} else
res->blk_size=BLK_SIZE;
res->flags=BDF_READ_CACHE;
res->blk_size=BLK_SIZE;
res->max_blk=0xEFFFFFFF;
switch (type) {
case BDT_RAM:
res->flags&=~BDF_READ_CACHE;
break;
case BDT_FILE_READ:
res->flags|=BDF_READ_ONLY;
break;
case BDT_ATAPI:
res->flags|=BDF_REMOVABLE|BDF_READ_ONLY;
res->blk_size=DVD_BLK_SIZE;
break;
}
return res;
}
} while (++i<NUM_BLKDEVS);
@@ -140,6 +153,7 @@ CBlkDev *BlkDevNextFree(U8 first_drv_let,I64 type)
U0 BlkDevDel(CBlkDev *bd)
{//Delete BlkDev
DrvBlkDevDel(bd);
FClose(bd->file_dsk);
Free(bd->file_dsk_name);
Free(bd->dev_id_record);
+31 -11
View File
@@ -35,7 +35,7 @@ U0 DrvsRelease()
}
}
CDrv *DrvMakeFree(U8 drv_let)
CDrv *DrvMakeFreeSlot(U8 drv_let)
{//Make a slot free for a new drv, like during $LK,"Mount",A="MN:Mount"$().
//!!! drv_let is not a $LK,"remapped",A="MN:DrvMap"$ drv.
I64 i=ToUpper(drv_let)-'A';
@@ -48,18 +48,22 @@ CDrv *DrvMakeFree(U8 drv_let)
return res;
}
CDrv *DrvNextFree(U8 first_drv_let='C')
U8 DrvNextFreeLet(U8 first_drv_let='C')
{//Locate free slot for new drv, like during $LK,"Mount",A="MN:Mount"$().
//!!! first_drv_let is not a $LK,"remapped",A="MN:DrvMap"$ drv.
I64 i=ToUpper(first_drv_let)-'A';
I64 i=ToUpper(first_drv_let)-'A',type=Let2BlkDevType(first_drv_let);
if (!(0<=i<NUM_DRVS))
throw('Drv');
do
if (blkdev.drvs[i].dv_signature!=DRV_SIGNATURE_VAL)
return DrvMakeFree(i+'A');
if (blkdev.drvs[i].dv_signature!=DRV_SIGNATURE_VAL) {
if (Let2BlkDevType(i+'A')!=type)
throw('Drv');
else
return i+'A';
}
while (++i<NUM_DRVS);
throw('Drv');
return NULL; //never gets here
return 0; //Never gets here.
}
U0 DrvDel(CDrv *dv)
@@ -71,6 +75,17 @@ U0 DrvDel(CDrv *dv)
MemSet(dv,0,sizeof(CDrv));
}
U0 DrvBlkDevDel(CBlkDev *bd)
{//Delete drv's of BlkDev
I64 i;
CDrv *dv;
for (i=0;i<NUM_DRVS;i++) {
dv=&blkdev.drvs[i];
if (dv->bd==bd)
DrvDel(dv);
}
}
U0 DrvFATBlkAlloc(CDrv *dv)
{
DrvChk(dv);
@@ -150,8 +165,10 @@ I64 Let2BlkDevType(U8 drv_let)
return BDT_RAM;
if ('C'<=drv_let<='L')
return BDT_ATA;
if ('M'<=drv_let<='S')
return BDT_FILE;
if ('M'<=drv_let<='P')
return BDT_FILE_READ;
if ('Q'<=drv_let<='S')
return BDT_FILE_WRITE;
if ('T'<=drv_let<='Z')
return BDT_ATAPI;
return BDT_NULL;
@@ -241,7 +258,8 @@ Bool Drv(U8 drv_let)
if (dv!=Fs->cur_dv) {
if (bd->flags & BDF_REMOVABLE && !(bd->flags & BDF_INITIALIZED))
ChgDsk(Drv2Let(dv));
if (bd->type==BDT_RAM || bd->type=BDT_FILE)
if (bd->type==BDT_RAM ||
bd->type==BDT_FILE_READ || bd->type==BDT_FILE_WRITE)
BlkDevInit(bd);
}
Fs->cur_dv=dv;
@@ -288,7 +306,7 @@ U8 *DrvModelNum(U8 drv_let=0)
return res;
}
U8 blkdev_text_attr[BDT_NUM_TYPES]={BLACK,LTCYAN,WHITE,LTGREEN,LTBLUE};
U8 blkdev_text_attr[BDT_NUM_TYPES]={BLACK,LTCYAN,WHITE,LTGREEN,LTRED,LTBLUE};
U8 drv_text_attr[3]={BLACK,BLUE,RED};
U8 DrvTextAttrGet(U8 drv_let=0)
@@ -325,7 +343,7 @@ U0 DrvRep()
else
ch='+';
attr=DrvTextAttrGet(drv_let);
"$$FG,%d$$$$BG,%d$$%C %-8Z %-9Z %04X %04X %02X\n",
"$$FG,%d$$$$BG,%d$$%C %-8Z %-10Z %04X %04X %02X\n",
attr&15,attr>>4,drv_let,dv->fs_type&FSG_TYPE_MASK,"ST_DRV_TYPES",
bd->type,"ST_BLKDEV_TYPES",bd->base0,bd->base1,bd->unit;
if (st=DrvModelNum(drv_let)) {
@@ -336,6 +354,8 @@ U0 DrvRep()
" Serial#:%s\n",st;
Free(st);
}
if (bd->type==BDT_FILE_READ || bd->type==BDT_FILE_WRITE)
" File=\"%s\"\n",bd->file_dsk_name;
" %016X-%016X\n$$FG$$$$BG$$",dv->drv_offset,dv->drv_offset+dv->size-1;
}
}
+17 -9
View File
@@ -21,7 +21,7 @@ U0 HashFunSegFind(CHashTable *h,U8 *addr,
if (tempex->type&HTT_FUN) {
if (!Bt(&tempex(CHashFun *)->flags,Cf_EXTERN) &&
!Bt(&tempex(CHashFun *)->flags,Ff_INTERNAL))
j=tempex(CHashFun *)->executable_addr;
j=tempex(CHashFun *)->exe_addr;
} else if (tempex->type&HTT_EXPORT_SYS_SYM)
j=tempex->val;
if (j) {
@@ -131,12 +131,14 @@ U8 *FunSegCacheFind(U8 *addr,I64 *_offset)
}
}
U0 StrPrintFunSeg(U8 *buf,I64 addr,I64 field_len)
U0 StrPrintFunSeg(U8 *buf,I64 addr,I64 field_len,I64 flags)
{
I64 offset;
CHashExport *tempex;
U8 *str,*str2;
Bool is_fun=FALSE;
if (!(flags&SPF_TRUNCATE))
field_len=0;
if (addr) {
if (str=FunSegCacheFind(addr,&offset)) {
if (addr!=SYS_IDLE_PT)
@@ -153,21 +155,27 @@ U0 StrPrintFunSeg(U8 *buf,I64 addr,I64 field_len)
if (offset>0xFFFF) offset=0xFFFF;
if (is_fun) {
str2=MStrPrint("&%s",str);
if (field_len>7)
StrPrint(buf,"%*ts+0x%04X",field_len-7,str2,offset);
else
if (field_len>7) {
if (flags&SPF_LEFT_JUSTIFY && StrLen(str2)<field_len-7)
StrPrint(buf,"%s+0x%04X",str2,offset);
else
StrPrint(buf,"%*ts+0x%04X",field_len-7,str2,offset);
} else
StrPrint(buf,"%s+0x%04X",str2,offset);
Free(str2);
} else {
if (field_len>7)
StrPrint(buf,"%*ts+0x%04X",field_len-7,str,offset);
else
if (field_len>7) {
if (flags&SPF_LEFT_JUSTIFY && StrLen(str)<field_len-7)
StrPrint(buf,"%s+0x%04X",str,offset);
else
StrPrint(buf,"%*ts+0x%04X",field_len-7,str,offset);
} else
StrPrint(buf,"%s+0x%04X",str,offset);
}
return;
}
}
if (field_len)
if (flags&SPF_TRUNCATE)
StrPrint(buf,"%*tX",field_len,addr);
else
StrPrint(buf,"%X",addr);
+4 -4
View File
@@ -457,9 +457,9 @@ U0 G(U8 *ip=INVALID_PTR,CTask *task=NULL)
LBtr(&task->rflags,RFLAGf_TRAP);//No single step
Suspend(task,FALSE);
if (task==Fs) {
if (IsDbg && task->next_lex!=&task->next_lex) {
if (IsDbg && task->next_cc!=&task->next_cc) {
"Exit Dbg\n";
Btr(&task->last_lex->flags,CCf_PMT);
Btr(&task->last_cc->flags,CCf_PMT);
}
} else
Exit;
@@ -487,8 +487,8 @@ public U0 S(U8 *ip=INVALID_PTR,CTask *task=NULL) //Single-step.
Suspend(task,FALSE);
if (task==Fs) {
if (IsDbg) {
if (task->next_lex!=&task->next_lex)
Btr(&task->last_lex->flags,CCf_PMT);
if (task->next_cc!=&task->next_cc)
Btr(&task->last_cc->flags,CCf_PMT);
}
} else
Exit;
+2 -1
View File
@@ -108,7 +108,8 @@ U0 SysDefinesLoad()
DefineLstLoad("ST_FILE_ATTRS","R\0H\0S\0V\0D\0A\0 \0 \0X\0T\0Z\0C\0F\0");
DefineLstLoad("ST_FILE_UTIL_FLAGS","r\0d\0i\0a\0c\0R\0p\0m\0x\0s\0"
"D\0F\0T\0S\0A\0J\0G\0Z\0O\0P\0f\0l\0lb\0la\0");
DefineLstLoad("ST_BLKDEV_TYPES","NULL\0RAM\0ATA\0FILE\0ATAPI\0");
DefineLstLoad("ST_BLKDEV_TYPES",
"NULL\0RAM\0ATA\0FILE_READ\0FILE_WRITE\0ATAPI\0");
DefineLstLoad("ST_DRV_TYPES",
"NULL\0REDSEA\0FAT32\0ISO9660\0ISO13490\0ISO13346\0NTFS\0UNKNOWN\0");
DefineLstLoad("ST_COLORS","BLACK\0BLUE\0GREEN\0CYAN\0"
+3 -2
View File
@@ -13,7 +13,7 @@ extern I64 BIOSTotalMem();
extern I64 BlkDevAdd(CBlkDev *bd,Bool one_drv,Bool make_free);
extern CBlkDev *BlkDevChk(CBlkDev *bd,Bool except=TRUE);
extern Bool BlkDevLock(CBlkDev *bd);
extern CBlkDev *BlkDevNextFree(U8 first_drv_let,I64 type);
extern CBlkDev *BlkDevNextFreeSlot(U8 first_drv_let,I64 type);
extern Bool BlkDevUnlock(CBlkDev *bd,Bool rst=FALSE);
extern U0 BlkDevsRelease();
extern U8 *Caller(I64 num=1);
@@ -29,6 +29,7 @@ extern I64 Del(U8 *files_find_mask,Bool make_mask=FALSE,
extern U8 *DftExt(U8 *name,U8 *extension);
extern Bool Drv(U8 drv_let);
extern U8 Drv2Let(CDrv *dv=NULL);
extern U0 DrvBlkDevDel(CBlkDev *bd);
extern CDrv *DrvChk(CDrv *dv,Bool except=TRUE);
extern U8 DrvTextAttrGet(U8 drv_let=0);
extern Bool DrvTypeSet(U8 drv_let,I64 type=FSt_REDSEA);
@@ -92,7 +93,7 @@ extern U0 SrvCmdQueDel(CSrvCmd *root);
extern I64 SrvCmdsHandler(I64 run_flags,CTask *task=NULL);
extern U0 SrvCtrlInit(CSrvCtrl *ctrl);
extern U8 *StrPrint(U8 *dst,U8 *fmt,...);
extern U0 StrPrintFunSeg(U8 *buf,I64 addr,I64 field_len);
extern U0 StrPrintFunSeg(U8 *buf,I64 addr,I64 field_len,I64 flags);
extern Bool Suspend(CTask *task=NULL,Bool state=TRUE);
extern CSrvCmd *TaskMsg(CTask *_srv,CTask *master,
I64 code,I64 a1,I64 a2,I64 flags);
+2 -2
View File
@@ -30,7 +30,7 @@ I64 HashVal(CHash *temph)
if (Bt(&temph(CHashFun *)->flags,Cf_EXTERN))
return temph;
else
return temph(CHashFun *)->executable_addr;
return temph(CHashFun *)->exe_addr;
case HTt_REG:
return temph(CHashReg *)->reg_num|temph(CHashReg *)->reg_type<<8;
case HTt_KEYWORD:
@@ -176,7 +176,7 @@ CHashGeneric *HashPublic(U8 *st,I64 mask,Bool val=TRUE)
else
res->type&=~HTF_PUBLIC;
if (res->type&HTG_SRC_SYM)
HashSrcFileSet(Fs->last_lex,res);
HashSrcFileSet(Fs->last_cc,res);
return res;
} else
return NULL;
+1 -1
View File
@@ -32,7 +32,7 @@ U0 LoadOneImport(U8 **_src,U8 *module_base,I64 ld_flags)
if (tempex) {
ptr2=module_base+i;
if (tempex->type & HTT_FUN)
i=tempex(CHashFun *)->executable_addr;
i=tempex(CHashFun *)->exe_addr;
else if (tempex->type & HTT_GLBL_VAR)
i=tempex(CHashGlblVar *)->data_addr;
else
+5 -5
View File
@@ -55,12 +55,12 @@ GDT_TR_RING3: DU8 MP_MAX_PROCESSORS*16 DUP(0);
//************************************
CORE0_16BIT_INIT::
//EAX is $LK,"SYS_BOOT_SRC",A="FF:::/Kernel/KStart.CPP,[SYS_BOOT_SRC]"$. (Val passed from boot blk, $LK,"BootHD",A="FF:::/Adam/Opt/Boot/BootHD.CPP,BOOT_SRC_HARDDRV"$, $LK,"BootDVD",A="FF:::/Adam/Opt/Boot/BootDVD.CPP,BOOT_SRC_DVD"$, & $LK,"BootRAM",A="FF:::/Adam/Opt/Boot/Reboot.CPP,BOOT_SRC_RAM"$.)
//EAX is $LK,"SYS_BOOT_SRC",A="FF:::/Kernel/KStart.CPP,[SYS_BOOT_SRC]"$. (Val passed from boot blk, $LK,"BootHD",A="FF:::/Adam/Opt/Boot/BootHD.CPP,BOOT_SRC_HARDDRV"$, $LK,"BootDVD",A="FF:::/Adam/Opt/Boot/BootDVD.CPP,BOOT_SRC_DVD"$, & $LK,"BootRAM",A="FF:::/Adam/Opt/Boot/BootRAM.CPP,BOOT_SRC_RAM"$.)
MOV ECX,EAX
MOV AX,(BOOT_RAM_LIMIT-BOOT_STK_SIZE)/16
MOV SS,AX
MOV SP,BOOT_STK_SIZE
PUSH ECX //Will be $LK,"SYS_BOOT_SRC",A="FF:::/Kernel/KStart.CPP,[SYS_BOOT_SRC]"$. See $LK,"BootHD",A="FF:::/Adam/Opt/Boot/BootHD.CPP,BOOT_SRC_HARDDRV"$, $LK,"BootDVD",A="FF:::/Adam/Opt/Boot/BootDVD.CPP,BOOT_SRC_DVD"$ & $LK,"BootRAM",A="FF:::/Adam/Opt/Boot/Reboot.CPP,BOOT_SRC_RAM"$.
PUSH ECX //Will be $LK,"SYS_BOOT_SRC",A="FF:::/Kernel/KStart.CPP,[SYS_BOOT_SRC]"$. See $LK,"BootHD",A="FF:::/Adam/Opt/Boot/BootHD.CPP,BOOT_SRC_HARDDRV"$, $LK,"BootDVD",A="FF:::/Adam/Opt/Boot/BootDVD.CPP,BOOT_SRC_DVD"$ & $LK,"BootRAM",A="FF:::/Adam/Opt/Boot/BootRAM.CPP,BOOT_SRC_RAM"$.
PUSH EBX
MOV AX,VGAM_TEXT/16
MOV ES,AX
@@ -139,7 +139,7 @@ GET_IP: POP BX
OUT 0x92,AL
POP U32 [SYS_BOOT_BLK]
POP U32 [SYS_BOOT_SRC] //See $LK,"BootHD",A="FF:::/Adam/Opt/Boot/BootHD.CPP,BOOT_SRC_HARDDRV"$, $LK,"BootDVD",A="FF:::/Adam/Opt/Boot/BootDVD.CPP,BOOT_SRC_DVD"$, & $LK,"BootRAM",A="FF:::/Adam/Opt/Boot/Reboot.CPP,BOOT_SRC_RAM"$.
POP U32 [SYS_BOOT_SRC] //See $LK,"BootHD",A="FF:::/Adam/Opt/Boot/BootHD.CPP,BOOT_SRC_HARDDRV"$, $LK,"BootDVD",A="FF:::/Adam/Opt/Boot/BootDVD.CPP,BOOT_SRC_DVD"$, & $LK,"BootRAM",A="FF:::/Adam/Opt/Boot/BootRAM.CPP,BOOT_SRC_RAM"$.
CLD
XOR EAX,EAX
@@ -236,7 +236,7 @@ SYS_CACHE_LINE_WIDTH:: DU64 DFT_CACHE_LINE_WIDTH;
SYS_SEMAS:: DU8 NUM_SYS_SEMAS*SEMA_STRUCT_SIZE DUP(0);
//************************************
ALIGN 16,OC_NOP
CORE0_32BIT_INIT:: //Entry point for $LK,"RAMReboot",A="MN:RAMReboot"$.
CORE0_32BIT_INIT:: //Entry point for $LK,"BootRAM",A="MN:BootRAM"$.
PUSH U32 RFLAGG_START
POPFD
MOV EAX,SYS_START_CR0
@@ -350,7 +350,7 @@ USE64
RET
//************************************
SYS_RAM_REBOOT:: //This gets copied high. $LK,"SYS_RAM_REBOOT",A="FF:::/Adam/Opt/Boot/Reboot.CPP,SYS_RAM_REBOOT:2"$
SYS_RAM_REBOOT:: //This gets copied high. $LK,"SYS_RAM_REBOOT",A="FF:::/Adam/Opt/Boot/BootRAM.CPP,SYS_RAM_REBOOT:2"$
PUSH U32 CGDT.ds //stk seg
PUSH U32 BOOT_RAM_LIMIT //stk
PUSH U32 0 //flags
+2 -2
View File
@@ -171,7 +171,7 @@ I64 TaskInit(CTask *task,I64 stk_size)
(&task->next_child_task)(U8 *)-offset(CTask.next_sibling_task);
SrvCtrlInit(&task->srv_ctrl);
QueInit(&task->next_lex);
QueInit(&task->next_cc);
QueInit(&task->next_except);
QueInit(&task->next_ctrl);
QueInit(&task->next_ode);
@@ -356,7 +356,7 @@ U0 UserTaskCont()
Bool cont=TRUE;
do {
cc=CmpCtrlNew(,CCF_CMD_LINE|CCF_PMT|CCF_QUESTION_HELP);
QueIns(cc,Fs->last_lex);
QueIns(cc,Fs->last_cc);
try {
Lex(cc);
ExeCmdLine(cc);
+5 -6
View File
@@ -329,7 +329,7 @@ _CPUID::
POP RSI
POP RBP
RET1 16
_CALLIND::
_CALL_IND:: //See $LK,"_LAST_FUN",A="MN:_LAST_FUN"$
PUSH RBP
MOV RBP,RSP
PUSH RSI
@@ -350,10 +350,10 @@ _CALLIND::
POP RBP
RET
@@05: XOR RAX,RAX
MOV RCX,U64 SF_ARG2[RBP] //argc
@@05: MOV RCX,U64 SF_ARG2[RBP] //argc
SHL RCX,3
ADD RSP,RCX
XOR RAX,RAX
POP RDI
POP RSI
POP RBP
@@ -381,8 +381,7 @@ _CALLEXTNUM::
POP RBP
RET
@@05: XOR RAX,RAX
MOV RCX,U64 SF_ARG2[RBP] //argc
@@05: MOV RCX,U64 SF_ARG2[RBP] //argc
SHL RCX,3
ADD RSP,RCX
POP RDI
@@ -411,7 +410,7 @@ _CALLEXTSTR::
TEST U32 CHash.type[RAX],HTT_FUN
JZ @@05
MOV RAX,U64 CHashFun.executable_addr[RAX]
MOV RAX,U64 CHashFun.exe_addr[RAX]
JMP @@10
@@05: MOV RAX,U64 CHashExport.val[RAX]
@@10: TEST RAX,RAX
+1063 -1047
View File
File diff suppressed because it is too large. Load diff
+2 -2
View File
@@ -1,5 +1,5 @@
//Compile this by calling $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$().
//Don't do it directly. See $LK,"Cmp(\"/Kernel/Kernel\")",A="FF:::/Adam/Opt/Boot/BootIns.CPP,Cmp(\"/Kernel/Kernel\""$.
//Compile this by calling $LK,"BootHDIns",A="MN:BootHDIns"$().
//Don't do it directly. See $LK,"Cmp(\"/Kernel/Kernel\")",A="FF:::/Adam/Opt/Boot/BootHDIns.CPP,Cmp(\"/Kernel/Kernel\""$.
#exe {
Cd(__DIR__);;
+27 -10
View File
@@ -858,7 +858,7 @@ public class CHashFun:CHashClass
CHashClass *return_class;
U32 arg_cnt,pad,
used_reg_mask,clobbered_reg_mask;
U8 *executable_addr;
U8 *exe_addr;
CExternUsage *ext_lst;
};
@@ -2025,11 +2025,11 @@ class CCodeCtrl
#define __DATE__ #exe{StreamPrint("\"%D\"",Now);}
#define __TIME__ #exe{StreamPrint("\"%T\"",Now);}
#define __LINE__ #exe{StreamPrint("%d",\
Fs->last_lex->lex_include_stk->line_num);}
#define __CMD_LINE__ #exe{StreamPrint("%d",Fs->last_lex->flags&CCF_CMD_LINE &&\
Fs->last_lex->lex_include_stk->depth<2);}
Fs->last_cc->lex_include_stk->line_num);}
#define __CMD_LINE__ #exe{StreamPrint("%d",Fs->last_cc->flags&CCF_CMD_LINE &&\
Fs->last_cc->lex_include_stk->depth<2);}
#define __FILE__ #exe{StreamPrint("\"%s\"",\
Fs->last_lex->lex_include_stk->full_name);}
Fs->last_cc->lex_include_stk->full_name);}
#define __DIR__ #exe{StreamDir;}
#define LFSF_DOC 1
@@ -2296,6 +2296,7 @@ public class CATARep
#define BLK_SIZE_BITS 9
#define BLK_SIZE (1<<BLK_SIZE_BITS)
#define DVD_BLK_SIZE (4*BLK_SIZE)
#define DVD_BOOT_LOADER_SIZE DVD_BLK_SIZE*1
#define INVALID_CLUSTER (-1)
class CMBRPrt
@@ -2628,9 +2629,10 @@ public class CDirEntry
#define BDT_NULL 0
#define BDT_RAM 1
#define BDT_ATA 2
#define BDT_FILE 3
#define BDT_ATAPI 4
#define BDT_NUM_TYPES 5
#define BDT_FILE_READ 3
#define BDT_FILE_WRITE 4
#define BDT_ATAPI 5
#define BDT_NUM_TYPES 6
#define BDF_REMOVABLE 0x001
#define BDF_INITIALIZED 0x002
@@ -3386,7 +3388,8 @@ U0 pad;#assert $$==offset(CTaskDying.wake_jiffy)
CHashTable *hash_table;
CSrvCtrl srv_ctrl;
CCmpCtrl *next_lex,*last_lex;
CCmpCtrl *next_cc,*last_cc;
CHashFun *last_fun;
I64 win_old_left,win_old_right,win_old_top,win_old_bottom;
@@ -3889,7 +3892,7 @@ public class CDbgGlbls
#define BOOT_SRC_HARDDRV 3
#define BOOT_SRC_DVD 4
// $LK,"Auto",A="MN:Auto"$("") StdIn for call to $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$().
// $LK,"Auto",A="MN:Auto"$("") StdIn for call to $LK,"BootHDIns",A="MN:BootHDIns"$().
#define STD_DISTRO_DVD_CFG "Tb\nScale2Mem(2048,0x40000)\nt \n\n\n\n"
#help_index "Misc/Registry"
@@ -3911,4 +3914,18 @@ class CProgress
U8 desc[PROGRESS_DESC_LEN];
};
#help_index "Char/Operations"
#define SPF_PAD_ZERO 0x001
#define SPF_LEFT_JUSTIFY 0x002
#define SPF_TRUNCATE 0x004
#define SPF_COMMA 0x008
#define SPF_DOLLAR 0x010
#define SPF_SLASH 0x020
#define SPF_QUESTION 0x040
#define SPF_AUX_FMT_NUM 0x080
#define SPF_DECIMAL 0x100
#define SPF_NEG 0x200
#define SPF_NEG_E 0x400
#define SPF_NEG_AUX_FMT_NUM 0x800
#help_index ""
+1 -1
View File
@@ -45,7 +45,7 @@ public _extern _CALL I64 Call(U8 *machine_code); //Call addr with no args.
public _extern _CALLEXTSTR I64 CallExtStr(
/*argpop*/ U8 *name,...); //Search sym table for fun and pass it args.
//Can have any fixed number of arguments.
public _extern _CALLIND I64 CallInd(
public _extern _CALL_IND I64 CallInd(
/*argpop*/I64 (*fp_addr)(...),...); //Call with fixed number of args.
#help_index "Call/System Extern Num"
+9 -9
View File
@@ -195,7 +195,6 @@ public extern U0 S(U8 *ip=INVALID_PTR,CTask *task=NULL);
#help_index "Debugging/Debugger;DolDoc/Cmd Line (Typically);"\
"Cmd Line (Typically);Help System"
public extern Bool Man(U8 *st,I64 edf_dof_flags=0);
#help_index "Debugging/Dump"
public extern U0 CallerRep(U8 **rbp=NULL,CTask *task=NULL);
public extern U0 D(U8 *addr,I64 cnt=0x80,Bool show_offset=TRUE);
@@ -327,7 +326,7 @@ extern I64 FileAttr(U8 *name,I64 old_attr=0);
public extern CBlkDev *BlkDevChk(CBlkDev *bd,Bool except=TRUE);
public extern U0 BlkDevDel(CBlkDev *bd);
public extern Bool BlkDevLock(CBlkDev *bd);
public extern CBlkDev *BlkDevNextFree(U8 first_drv_let,I64 type);
public extern CBlkDev *BlkDevNextFreeSlot(U8 first_drv_let,I64 type);
public extern Bool BlkDevUnlock(CBlkDev *bd,Bool rst=FALSE);
public extern U0 BlkDevsRelease();
public extern I64 Cluster2Blk(CDrv *dv,I64 c);
@@ -339,9 +338,9 @@ public extern U8 Drv2Let(CDrv *dv=NULL);
public extern CDrv *DrvChk(CDrv *dv,Bool except=TRUE);
public extern U0 DrvDel(CDrv *dv);
public extern Bool DrvLock(CDrv *dv);
public extern CDrv *DrvMakeFree(U8 drv_let);
public extern CDrv *DrvMakeFreeSlot(U8 drv_let);
public extern U8 *DrvModelNum(U8 drv_let=0);
public extern CDrv *DrvNextFree(U8 first_drv_let='C');
public extern U8 DrvNextFreeLet(U8 first_drv_let='C');
public extern U8 *DrvSerialNum(U8 drv_let=0);
public extern U8 DrvTextAttrGet(U8 drv_let=0);
public extern Bool DrvUnlock(CDrv *dv,Bool rst=FALSE);
@@ -394,6 +393,7 @@ extern U0 (*fp_set_std_palette)();
public extern U8 *Color2Str(U8 *buf,CColorROPU32 c);
public extern CColorROPU16 Str2ColorU16(U8 *st);
public extern CColorROPU32 Str2ColorU32(U8 *st);
#help_index "Hash"
#help_file "::/Doc/Hash"
public _extern _HASH_ADD U0 HashAdd(CHash *temph,CHashTable *table);
@@ -668,21 +668,21 @@ public extern U0 WinDerivedValsUpdate(CTask *task=NULL);
#help_file "::/Doc/TaskSrv"
#help_index "Task/Srv/Exe"
public extern I64 Adam(U8 *fmt,...);
public extern U0 AdamErr(U8 *fmt,...);
public extern U0 AdamLog(U8 *fmt,...);
public extern I64 PopUp(U8 *buf,CTask *parent=NULL,CTask **_pu_task=NULL);
public extern I64 PopUpPrint(U8 *fmt,...);
public extern I64 ExeCmdLine(CCmpCtrl *cc);
public extern U0 SrvCmdDel(CSrvCmd *tempc);
extern U0 SrvCmdLine();
public extern I64 SrvCmdsHandler(I64 run_flags,CTask *task=NULL);
public extern U0 SrvTaskCont();
public extern CSrvCmd *TaskExe(CTask *srv,CTask *master,U8 *data,I64 flags);
public extern U0 TaskRstAwaitingMsg(CTask *task=NULL);
public extern U0 UserTaskCont();
#help_index "Task/Srv/Exe;Compiler"
public extern I64 ExeCmdLine(CCmpCtrl *cc);
public extern U0 UserTaskCont();
public extern I64 Adam(U8 *fmt,...);
public extern I64 PopUp(U8 *buf,CTask *parent=NULL,CTask **_pu_task=NULL);
public extern I64 PopUpPrint(U8 *fmt,...);
#help_index "Task/Srv/Exe;MultiCore"
public extern I64 JobResGet(CSrvCmd *rqst=NULL);
+1 -1
View File
@@ -181,7 +181,7 @@ I64 BIOSTotalMem()
I64 Scale2Mem(I64 min,I64 max,I64 limit=2*1024*1024*1024)
{//Helps pick DiskCache and RAMDisk sizes.
//Can be used in $LK,"MakeOSDrvBootInstall",A="MN:MakeOSDrvBootInstall"$() config scripts.
//Can be used in $LK,"BootHDIns",A="MN:BootHDIns"$() config scripts.
I64 i;
if (sys_data_bp)
i=sys_data_bp->alloced_u8s;
+5 -5
View File
@@ -375,7 +375,7 @@ sch_done:
}
I64 PopUp(U8 *buf,CTask *parent=NULL,CTask **_pu_task=NULL)
{//Execute code text in PopUp win task.
{//Execute code in $LK,"PopUp",A="MN:PopUp"$ task.
I64 res;
CSrvCmd *tempc;
CTask *task=Spawn(&SrvCmdLine,NULL,"Servant",,parent);
@@ -396,7 +396,7 @@ I64 PopUp(U8 *buf,CTask *parent=NULL,CTask **_pu_task=NULL)
}
I64 PopUpPrint(U8 *fmt,...)
{//Execute code text in PopUp win task.
{//Execute code in $LK,"PopUp",A="MN:PopUp"$ task.
U8 *buf=StrPrintJoin(NULL,fmt,argc,argv);
I64 res;
res=PopUp(buf,Fs);
@@ -405,7 +405,7 @@ I64 PopUpPrint(U8 *fmt,...)
}
I64 Adam(U8 *fmt,...)
{//Sends text to the adam task which gets compiled and run.
{//Make adam_task execute code.
I64 res;
U8 *buf=StrPrintJoin(NULL,fmt,argc,argv);
CSrvCmd *tempc;
@@ -422,7 +422,7 @@ I64 Adam(U8 *fmt,...)
}
U0 AdamLog(U8 *fmt,...)
{//Sends text to the adam task which gets displayed.
{//Display text in adam_task.
U8 *buf=StrPrintJoin(NULL,fmt,argc,argv);
if (Fs==adam_task)
"%s",buf;
@@ -432,7 +432,7 @@ U0 AdamLog(U8 *fmt,...)
}
U0 AdamErr(U8 *fmt,...)
{//Sends text to the adam task which gets displayed as red and blinking.
{//Display red blinking Err text in adam_task.
U8 *buf=StrPrintJoin(NULL,fmt,argc,argv),
*st=MStrPrint(ST_ERR_ST "%s",buf);
if (Fs==adam_task)
+2 -21
View File
@@ -1,16 +1,3 @@
#define SPF_PAD_ZERO 0x001
#define SPF_LEFT_JUSTIFY 0x002
#define SPF_TRUNCATE 0x004
#define SPF_COMMA 0x008
#define SPF_DOLLAR 0x010
#define SPF_SLASH 0x020
#define SPF_QUESTION 0x040
#define SPF_AUX_FMT_NUM 0x080
#define SPF_DECIMAL 0x100
#define SPF_NEG 0x200
#define SPF_NEG_E 0x400
#define SPF_NEG_AUX_FMT_NUM 0x800
U0 SPutChar(U8 **_dst,U8 ch,U8 **_buf)
{
I64 i;
@@ -425,19 +412,13 @@ to avoid this.
case 'p':
if (cur_arg>=argc)
throw('StrPrint');
if (flags&SPF_TRUNCATE)
StrPrintFunSeg(temp_buf,argv[cur_arg++],len);
else
StrPrintFunSeg(temp_buf,argv[cur_arg++],0);
StrPrintFunSeg(temp_buf,argv[cur_arg++],len,flags);
OutStr(temp_buf,_buf,_dst,len,flags);
break;
case 'P':
if (cur_arg>=argc)
throw('StrPrint');
if (flags&SPF_TRUNCATE)
StrPrintFunSeg(temp_buf,argv[cur_arg],len);
else
StrPrintFunSeg(temp_buf,argv[cur_arg],0);
StrPrintFunSeg(temp_buf,argv[cur_arg],len,flags);
if (!IsRaw || !_buf) {
StrPrint(temp_buf2,"$$LK,\"%s\",A=\"AD:0x%X\"$$",
temp_buf,argv[cur_arg]);
+5 -3
View File
@@ -2,9 +2,10 @@
#define STD_DISTRO_DVD_CFG "Tb\nScale2Mem(2048,0x40000)\nt \n\n\n\n"
U0 MakeMyISO(U8 *out_iso_filename)
U0 MakeMyISO(U8 *_out_iso_filename)
{//Does everything with current drive.
//If you have not recompiled $FG,2$Kernel$FG$ and defined your CD/DVD drive, use $LK,"Mount",A="MN:Mount"$.
U8 *out_iso_filename=FileNameAbs(_out_iso_filename);
if (!DrvIsWritable) {
"Drive must be writable. Install on Hard drive, first.\n";
return;
@@ -14,7 +15,7 @@ U0 MakeMyISO(U8 *out_iso_filename)
MkDir("/Distro");
Auto(STD_DISTRO_DVD_CFG);
MakeOSDrvBootInstall(,'T');
BootDVDIns;
Copy("/*","/Distro");
Del("/Distro/" KERNEL_BIN_C);
@@ -43,8 +44,9 @@ U0 MakeMyISO(U8 *out_iso_filename)
//DVDImageWrite('T',out_iso_filename,MT_DVD); //Uncomment to burn.
//DelTree("/Distro");
Free(out_iso_filename);
}
MakeMyISO("/MyDistro.ISO");
MakeMyISO("/Temp/MyDistro.ISO");
// Study my account examples $LK,"Cfg Strs",A="FL:::/Demo/AcctExample/TOSCfg.CPP,1"$, $LK,"Update Funs",A="FL:::/Demo/AcctExample/TOSDistro.CPP,1"$.
+5 -5
View File
@@ -31,7 +31,7 @@ U0 VMInstallDrv(CTask *task,U8 drv_let,
CATARep *ata_drv,CATARep *atapi_drv)
{
InstallDrv(drv_let);
XTalkWait(task,"MakeOSDrvBootInstall('%C');\n\nB\n0x20000\n",drv_let);
XTalkWait(task,"BootHDIns('%C');\n\nB\n0x20000\n",drv_let);
if (ata_drv)
XTalkWait(task,"Cp%d\n",ata_drv->num);
if (atapi_drv)
@@ -62,7 +62,7 @@ U0 VMInstallWiz()
if (VMPrtDsk(task,ata_drv)) {
VMInstallDrv(task,'C',ata_drv,atapi_drv);
VMInstallDrv(task,'D',ata_drv,atapi_drv);
MasterBootInstall('C');
BootMHDIns('C');
}
LinkedLstDel(root);
WinVert(task->win_top,Fs->win_bottom);
@@ -147,13 +147,13 @@ U0 RegularInstallWiz()
Fmt(drv_let,,FALSE,FSt_REDSEA);
}
InstallDrv(drv_let);
XTalkWait(task,"MakeOSDrvBootInstall('%C');\n\nB\n0x20000\n"
XTalkWait(task,"BootHDIns('%C');\n\nB\n0x20000\n"
"Cs%s\n%s\n%C\n\n\n", //Exit Drives,Dsk Cache,Options
drv_let,base0,base1,'0'+unit);
"$$RED$$Install Master Boot loader?$$FG$$";
if (YorN) {
'\n';
MasterBootInstall(drv_let);
BootMHDIns(drv_let);
}
Free(base0);
Free(base1);
@@ -189,7 +189,7 @@ Bool DoInstall(Bool pmt_reboot)
res=TRUE;
} else {
"\n\nThis wizard works if you have a partition ready. "
"You can partition the drive or MakeOSDrvBootInstall() "
"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) {
+2 -2
View File
@@ -13,10 +13,10 @@ TourPut(
"We will now place some text on the command line and jump to source code.\n",
TRUE);
"MakeOS";
"BootHD";
TourPut(
"Look at the $$GREEN$$MakeOSDrvBootInstall$$FG$$ entry in the AutoComplete "
"Look at the $$GREEN$$BootHDIns$$FG$$ entry in the AutoComplete "
"window. Notice it is underlined. This means a source code link is "
"available.\n\n"
"Press $$GREEN$$<CTRL-SHIFT-F1>$$FG$$ to jump to source code.\n");
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -17,7 +17,7 @@ HashTablePurge(adam_task->hash_table);
#help_index "Misc"
//Use Dbg("Type 'G;'"); to debug before window mgr is running.
public F64 os_version=4.080;//Operating system version.
public F64 os_version=4.090;//Operating system version.
#include "/Adam/MakeAdam"