TempleOSCDV4.02.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:46:54 +02:00
1 parent fedf66361e
commit 1541d7328d
171 files changed
+5160 -5071

No files matched your search

Binary file not shown.
-158
View File
@@ -58,39 +58,6 @@ public U8 *Dump(U8 *filename,Bool write=FALSE)
return buf; return buf;
} }
#help_index "File/Program Routines"
U0 FOFlatten(CDirEntry *tempde,CDirEntry **a,I64 *i)
{
CDirEntry *tempde1;
while (tempde) {
tempde1=tempde->next;
if (tempde->attr&RS_ATTR_DIR) {
FOFlatten(tempde->sub,a,i);
DirEntryDel(tempde);
} else {
a[*i]=tempde;
*i=*i+1;
}
tempde=tempde1;
}
}
public I64 FileCnt(CDirEntry *tempde)
{//Cnt of files in $LK,"CDirEntry",A="MN:CDirEntry"$ tree.
I64 cnt=0;
while (tempde) {
if (tempde->attr&RS_ATTR_DIR)
cnt+=FileCnt(tempde->sub);
else
cnt++;
tempde=tempde->next;
}
return cnt;
}
#help_index "File/Cmd Line (Typically);Cmd Line (Typically)"
public Bool Copy(U8 *src_files_find_mask,U8 *dst_files_find_mask=".") public Bool Copy(U8 *src_files_find_mask,U8 *dst_files_find_mask=".")
{//Copy files. {//Copy files.
//If the name ends in ".Z", it will //If the name ends in ".Z", it will
@@ -281,128 +248,3 @@ Touch(filename,"",,datetime);
} }
DirTreeDel(tempde1); DirTreeDel(tempde1);
} }
public I64 FF(U8 *files_find_mask,U8 *fu_flags=NULL)
{//Files find. List files matching mask.
I64 cnt=0,fuf_flags=0;
CDirEntry *tempde,*tempde1;
ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r+f+F");
ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),fu_flags);
tempde=tempde1=FilesFind(files_find_mask,fuf_flags);
while (tempde) {
PutFileLink(tempde->full_name);
'\n';
cnt++;
tempde=tempde->next;
}
DirTreeDel(tempde1);
return cnt;
}
public U0 DrvTextAttrSet(U8 drv_let,U8 attr)
{//Set color of the window border text
//for when this drive is the current drive.
CDrv *dv;
try {
dv=Let2Drv(drv_let);
dv->text_attr=attr;
} catch
Fs->catch_except=TRUE;
}
I64 RedSeaUnusedDrvSpace(U8 drv_let=0)
{
CDrv *dv=Let2Drv(drv_let);
I64 result=0,i,l;
U8 *bitmap;
try {
l=(dv->size+dv->spc-1)/dv->spc;
i=((l+7)>>3+BLK_SIZE-1)>>BLK_SIZE_BITS;
bitmap=MAlloc(i<<BLK_SIZE_BITS);
RBlks(dv,bitmap,dv->fat1,i);
for (i=0;i<l;i++)
if (!Bt(bitmap,i))
result++;
Free(bitmap);
} catch
DrvUnlock(dv);
return result*BLK_SIZE*dv->spc;
}
I64 FAT32UnusedDrvSpace(U8 drv_let=0)
{
CDrv *dv=Let2Drv(drv_let);
I64 result=0,i,l;
U32 *bitmap;
try {
l=(dv->size+dv->spc-1)/dv->spc;
i=(l*4+BLK_SIZE-1)>>BLK_SIZE_BITS;
bitmap=MAlloc(i<<BLK_SIZE_BITS);
RBlks(dv,bitmap,dv->fat1,i);
for (i=0;i<l;i++)
if (!bitmap[i])
result++;
Free(bitmap);
} catch
DrvUnlock(dv);
return result*BLK_SIZE*dv->spc;
}
public I64 UnusedDrvSpace(U8 drv_let=0)
{//Returns unused size in bytes.
CDrv *dv=Let2Drv(drv_let),*old_dv=Fs->cur_dv;
U8 *old_dir=StrNew(Fs->cur_dir);
I64 result=0;
Drv(drv_let);
switch (dv->type) {
case DVT_REDSEA:
result=RedSeaUnusedDrvSpace(drv_let);
break;
case DVT_FAT32:
result=FAT32UnusedDrvSpace(drv_let);
break;
default:
PrintErr("File System Not Supported\n");
}
Drv(Drv2Let(old_dv));
Cd(old_dir);
Free(old_dir);
return result;
}
#help_index "File/Program Routines"
I64 Size1(CDirEntry *tempde,I64 *_fuf_flags,I64 round_to)
{
U8 buf[BLK_SIZE];
I64 result=0,i;
CDrv *dv;
while (tempde) {
if ((i=tempde->size) && Bt(_fuf_flags,FUf_EXPAND) &&
!(tempde->attr&RS_ATTR_DIR) &&
FileAttr(tempde->name)&RS_ATTR_COMPRESSED) {
dv=Let2Drv(*tempde->full_name);
RBlks(dv,buf,Cluster2Blk(dv,tempde->cluster),1);
i=(&buf)(CArcCompress *)->expanded_size;
}
if (round_to)
i=CeilU64(tempde->size,round_to);
if (tempde->attr&RS_ATTR_DIR)
i+=Size1(tempde->sub,_fuf_flags,round_to);
tempde->user_data=i;
result+=i;
tempde=tempde->next;
}
return result;
}
public I64 Size(U8 *files_find_mask="/*",U8 *fu_flags=NULL,I64 round_to=0)
{//Total size of files in mask. "+x" for expanded size.
//Does not include directory size of base directory, but
//does include size of sub directories.
I64 fuf_flags=0,result=0;
CDirEntry *tempde1=NULL;
ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r");
ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),fu_flags);
if (tempde1=FilesFind(files_find_mask,fuf_flags&FUG_FILES_FIND)) {
fuf_flags&=FUF_EXPAND;
result=Size1(tempde1,&fuf_flags,round_to);
DirTreeDel(tempde1);
}
return result;
}
+73 -317
View File
@@ -60,336 +60,92 @@ public CDirEntry *DirTreeUnserialize(U8 *src)
return tempde; return tempde;
} }
#help_index "Install;File/Cmd Line (Typically);Cmd Line (Typically)" #help_index "File/Program Routines"
U0 FOFlatten(CDirEntry *tempde,CDirEntry **a,I64 *i)
#define ROUND_DRV_TO (63*255)
#define DRV_HEADER 63
class CPlannedDrv
{ {
CPlannedDrv *next,*last; CDirEntry *tempde1;
I64 size; while (tempde) {
Bool pri; tempde1=tempde->next;
}; if (tempde->attr&RS_ATTR_DIR) {
FOFlatten(tempde->sub,a,i);
//Available to assist in writing scripts. DirEntryDel(tempde);
I64 drv_dsk_dsk_size; } else {
a[*i]=tempde;
public U0 PrtDsk(U8 drv_let=0) *i=*i+1;
{//Partition the disk containing partition drv_let.
//drv_let=0 means add new drive that
//is not already mounted.
CBlkDev *bd;
CPlannedDrv root,*temppp;
CMasterBoot mbr;
Bool pri=TRUE;
I64 ext_base,drv_let2,pri_cnt=0,
i,start_offset,offset,remaining;
"This command does not play well\n"
"with other operating systems.\n"
"You really should use another\n"
"operating system's partitioner.\n"
"If you use this, it may, in fact,\n"
"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"
"Continue";
if (!YorN) return;
if (drv_let)
try
Let2BlkDev(drv_let);
catch {
drv_let=0;
Fs->catch_except=TRUE;
} }
tempde=tempde1;
if (!drv_let) {
Mount(TRUE);
return;
}
bd=Let2BlkDev(drv_let);
if (!bd || bd->type!=BDT_ATA)
return;
drv_dsk_dsk_size=bd->max_blk+1;
QueInit(&root);
drv_let2=bd->first_drv_let;
remaining=FloorU64(bd->max_blk+1,ROUND_DRV_TO);
while (FloorU64(remaining,ROUND_DRV_TO)>=ROUND_DRV_TO) {
temppp=MAlloc(sizeof(CPlannedDrv));
do {
"$$RED$$Partition %C$$FG$$\n",drv_let2;
temppp->pri=FALSE;
if (pri) {
"Primary Partition";
if (YorN) {
pri_cnt++;
temppp->pri=TRUE;
if (pri_cnt==3)
pri=FALSE;
} else
pri=FALSE;
}
"Blocks Remaining:%d (0x%X)\n",
remaining-DRV_HEADER,remaining-DRV_HEADER;
temppp->size=CeilU64(GetI64("Size in Blocks :",
remaining-DRV_HEADER)+DRV_HEADER,ROUND_DRV_TO);
} while (!(ROUND_DRV_TO<=temppp->size<=FloorU64(remaining,ROUND_DRV_TO)));
QueIns(temppp,root.last);
remaining-=temppp->size;
drv_let2++;
}
"\n\n!!! Repartition Drive !!!\n\n";
temppp=root.next;
drv_let2=bd->first_drv_let;
while (temppp!=&root) {
"Drive %C:%08X ",drv_let2,temppp->size;
if (temppp->pri)
"Primary\n";
else
"Logical\n";
temppp=temppp->next;
drv_let2++;
}
if (!AreYouSure)
goto pd_done;
remaining=FloorU64(bd->max_blk+1,ROUND_DRV_TO)-ROUND_DRV_TO;
temppp=root.next;
MemSet(&mbr,0,BLK_SIZE);
mbr.signature=0xAA55;
offset=0;
for (i=0;i<pri_cnt;i++) {
mbr.p[i].active=0x80;
mbr.p[i].start_head=0;
mbr.p[i].start_cyl=0x101;
mbr.p[i].type=1; //Will get set different.
mbr.p[i].end_head=0xFE;
mbr.p[i].end_cyl=0xFFFF;
mbr.p[i].offset=DRV_HEADER+offset;
mbr.p[i].size=temppp->size-DRV_HEADER;
offset+=temppp->size;
remaining-=temppp->size;
temppp=temppp->next;
}
if (!i) i++;
if (temppp!=&root) {
mbr.p[i].active=0x80;
mbr.p[i].start_head=0;
mbr.p[i].start_cyl=0x101;
mbr.p[i].type=0xF;
mbr.p[i].end_head=0xFE;
mbr.p[i].end_cyl=0xFFFF;
mbr.p[i].offset=offset;
mbr.p[i].size=remaining;
ext_base=offset;
}
ATAWriteBlks(bd,&mbr,0,1);
while (temppp!=&root) {
start_offset=offset;
MemSet(&mbr,0,BLK_SIZE);
mbr.signature=0xAA55;
mbr.p[0].active=0x80;
mbr.p[0].start_head=1;
mbr.p[0].start_cyl=0x101;
mbr.p[0].type=1; //Will get set different.
mbr.p[0].end_head=0xFE;
mbr.p[0].end_cyl=0xFFFF;
mbr.p[0].offset=DRV_HEADER;
mbr.p[0].size=temppp->size-DRV_HEADER;
offset+=temppp->size;
temppp=temppp->next;
if (temppp!=&root) {
mbr.p[1].active=0x80;
mbr.p[1].start_head=0;
mbr.p[1].start_cyl=0x101;
mbr.p[1].type=5;
mbr.p[1].end_head=0xFE;
mbr.p[1].end_cyl=0xFFFF;
mbr.p[1].offset=offset-ext_base;
mbr.p[1].size=temppp->size;
}
ATAWriteBlks(bd,&mbr,start_offset,1);
}
bd->flags&=~(BDF_INITIALIZED | BDF_INIT_IN_PROGRESS);
BlkDevAdd(bd,FALSE,TRUE);
for (i=bd->first_drv_let;i<drv_let2;i++)
Fmt(i,,FALSE);
pd_done:
while (root.next!=&root) {
temppp=root.next;
QueRem(temppp);
Free(temppp);
} }
} }
#help_index "Info;File/Cmd Line (Typically);Cmd Line (Typically)" I64 Size1(CDirEntry *tempde,I64 *_fuf_flags,I64 round_to)
U0 RedSeaDrvView(U8 drv_let=0)
{ {
CDrv *dv=Let2Drv(drv_let); U8 buf[BLK_SIZE];
I64 lohi,c1,i,x,y,l,s; I64 result=0,i;
U8 *bitmap;
CDC *dc=DCAlias;
l=(GR_HEIGHT-3*FONT_HEIGHT)*(GR_WIDTH-FONT_WIDTH<<1),
s=(dv->size+dv->spc-1)/dv->spc;
SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$
WinMax;
DocCursor;
DocClear;
DCFill;
try {
i=((s+7)>>3+BLK_SIZE-1)>>BLK_SIZE_BITS;
bitmap=MAlloc(i<<BLK_SIZE_BITS);
RBlks(dv,bitmap,dv->fat1,i);
i=0;
for (y=0;y<GR_HEIGHT-3*FONT_HEIGHT;y++) {
if (ScanKey)
break;
for (x=0;x<GR_WIDTH-FONT_WIDTH<<1;x++) {
lohi=i*s;
c1=lohi/l;
if (Bt(bitmap,c1))
dc->color=ROP_XOR+BLUE^TRANSPARENT;
else
dc->color=ROP_XOR+WHITE^TRANSPARENT;
GrPlot(dc,x,y);
i++;
}
}
Free(bitmap);
} catch
DrvUnlock(dv);
GetChar;
SettingsPop;
DCFill;
DCDel(dc);
}
U0 FAT32DrvView(U8 drv_let=0)
{
CDrv *dv=Let2Drv(drv_let);
I64 lohi,c1,i,x,y,l,s;
U32 *bitmap;
CDC *dc=DCAlias;
l=(GR_HEIGHT-3*FONT_HEIGHT)*(GR_WIDTH-FONT_WIDTH<<1),
s=(dv->size+dv->spc-1)/dv->spc;
SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$
WinMax;
DocCursor;
DocClear;
DCFill;
try {
i=(s*4+BLK_SIZE-1)>>BLK_SIZE_BITS;
bitmap=MAlloc(i<<BLK_SIZE_BITS);
RBlks(dv,bitmap,dv->fat1,i);
i=0;
for (y=0;y<GR_HEIGHT-3*FONT_HEIGHT;y++) {
if (ScanKey)
break;
for (x=0;x<GR_WIDTH-FONT_WIDTH<<1;x++) {
lohi=i*s;
c1=lohi/l;
if (bitmap[c1])
dc->color=ROP_XOR+BLUE^TRANSPARENT;
else
dc->color=ROP_XOR+WHITE^TRANSPARENT;
GrPlot(dc,x,y);
i++;
}
}
Free(bitmap);
} catch
DrvUnlock(dv);
GetChar;
SettingsPop;
DCFill;
DCDel(dc);
}
public U0 DrvView(U8 drv_let=0)
{//Drive view. Graph the allocation map's fragmentation.
CDrv *dv=Let2Drv(drv_let),*old_dv=Fs->cur_dv;
Drv(drv_let);
switch (dv->type) {
case DVT_REDSEA:
RedSeaDrvView(drv_let);
break;
case DVT_FAT32:
FAT32DrvView(drv_let);
break;
default:
PrintErr("File System Not Supported\n");
}
Drv(Drv2Let(old_dv));
}
public U0 DskView(U8 drv_let=0)
{//Disk view. Pie chart of partition sizes.
I64 i,j,
h=Fs->pix_width,
v=Fs->pix_height,
radius;
CDrv *dv; CDrv *dv;
CBlkDev *bd=Let2BlkDev(drv_let); while (tempde) {
CDC *dc=DCAlias; if ((i=tempde->size) && Bt(_fuf_flags,FUf_EXPAND) &&
F64 sect_start,sect_end; !(tempde->attr&RS_ATTR_DIR) &&
FileAttr(tempde->name)&RS_ATTR_COMPRESSED) {
dv=Let2Drv(*tempde->full_name);
RBlks(dv,buf,Cluster2Blk(dv,tempde->cluster),1);
i=(&buf)(CArcCompress *)->expanded_size;
}
if (round_to)
i=CeilU64(tempde->size,round_to);
if (tempde->attr&RS_ATTR_DIR)
i+=Size1(tempde->sub,_fuf_flags,round_to);
tempde->user_data=i;
result+=i;
tempde=tempde->next;
}
return result;
}
public I64 Size(U8 *files_find_mask="/*",U8 *fu_flags=NULL,I64 round_to=0)
{//Total size of files in mask. "+x" for expanded size.
//Does not include directory size of base directory, but
//does include size of sub directories.
I64 fuf_flags=0,result=0;
CDirEntry *tempde1=NULL;
ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r");
ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),fu_flags);
if (tempde1=FilesFind(files_find_mask,fuf_flags&FUG_FILES_FIND)) {
fuf_flags&=FUF_EXPAND;
result=Size1(tempde1,&fuf_flags,round_to);
DirTreeDel(tempde1);
}
return result;
}
SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ public I64 FileCnt(CDirEntry *tempde)
DocCursor; {//Cnt of files in $LK,"CDirEntry",A="MN:CDirEntry"$ tree.
DocClear; I64 cnt=0;
DCFill; while (tempde) {
if (h<v) if (tempde->attr&RS_ATTR_DIR)
radius=0.4*h; cnt+=FileCnt(tempde->sub);
else else
radius=0.4*v; cnt++;
dc->color=BLACK; tempde=tempde->next;
GrCircle(dc,h>>1,v>>1,radius);
j=1;
for (i=0;i<NUM_DRVS;i++) {
dv=&blkdev.drvs[i];
if (bd==dv->bd && dv->type) {
sect_start=-(dv->base_offset*2*ã/(bd->max_blk+1));
sect_end =-((dv->base_offset+dv->size)*2*ã/(bd->max_blk+1));
dc->color=BLACK;
GrLine(dc,h>>1,v>>1,
h>>1+radius*Cos(sect_start),
v>>1+radius*Sin(sect_start));
GrLine(dc,h>>1,v>>1,
h>>1+radius*Cos(sect_end),
v>>1+radius*Sin(sect_end));
dc->color=j;
GrPrint(dc,0,v-FONT_HEIGHT*j,"%C %-8Z",Drv2Let(dv),
dv->type.u16[0],"ST_DRV_TYPES");
GrFloodFill(dc,
h>>1+(radius-4)*Cos((sect_start+sect_end)/2),
v>>1+(radius-4)*Sin((sect_start+sect_end)/2),FALSE);
j++;
} }
} return cnt;
GetChar(,FALSE);
SettingsPop;
DCFill;
DCDel(dc);
} }
#help_index "File/Cmd Line (Typically);Cmd Line (Typically)" #help_index "File/Cmd Line (Typically);Cmd Line (Typically)"
public I64 FF(U8 *files_find_mask,U8 *fu_flags=NULL)
{//Files find. List files matching mask.
I64 cnt=0,fuf_flags=0;
CDirEntry *tempde,*tempde1;
ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r+f+F");
ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),fu_flags);
tempde=tempde1=FilesFind(files_find_mask,fuf_flags);
while (tempde) {
PutFileLink(tempde->full_name);
'\n';
cnt++;
tempde=tempde->next;
}
DirTreeDel(tempde1);
return cnt;
}
public I64 Zip(U8 *files_find_mask="*",U8 *fu_flags=NULL) public I64 Zip(U8 *files_find_mask="*",U8 *fu_flags=NULL)
{//Compress files by moving to .Z filename. {//Compress files by moving to .Z filename.
+218 -3
View File
@@ -209,11 +209,11 @@ public I64 ChkDsk(U8 drv_let=0,Bool fix=FALSE,Bool confirm=TRUE)
//You probably want to reformat and reinstall. //You probably want to reformat and reinstall.
I64 errs=0; I64 errs=0;
CDrv *dv=Let2Drv(drv_let); CDrv *dv=Let2Drv(drv_let);
switch (dv->type) { switch (dv->fs_type) {
case DVT_REDSEA: case FSt_REDSEA:
errs=RedSeaChkDsk(drv_let,&fix,&confirm); errs=RedSeaChkDsk(drv_let,&fix,&confirm);
break; break;
case DVT_FAT32: case FSt_FAT32:
errs=FAT32ChkDsk(drv_let,&fix,&confirm); errs=FAT32ChkDsk(drv_let,&fix,&confirm);
break; break;
default: default:
@@ -228,3 +228,218 @@ public I64 ChkDsk(U8 drv_let=0,Bool fix=FALSE,Bool confirm=TRUE)
} }
return errs; return errs;
} }
U0 RedSeaDrvView(U8 drv_let=0)
{
CDrv *dv=Let2Drv(drv_let);
I64 lohi,c1,i,x,y,l,s;
U8 *bitmap;
CDC *dc=DCAlias;
l=(GR_HEIGHT-3*FONT_HEIGHT)*(GR_WIDTH-FONT_WIDTH<<1),
s=(dv->size+dv->spc-1)/dv->spc;
SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$
WinMax;
DocCursor;
DocClear;
DCFill;
try {
i=((s+7)>>3+BLK_SIZE-1)>>BLK_SIZE_BITS;
bitmap=MAlloc(i<<BLK_SIZE_BITS);
RBlks(dv,bitmap,dv->fat1,i);
i=0;
for (y=0;y<GR_HEIGHT-3*FONT_HEIGHT;y++) {
if (ScanKey)
break;
for (x=0;x<GR_WIDTH-FONT_WIDTH<<1;x++) {
lohi=i*s;
c1=lohi/l;
if (Bt(bitmap,c1))
dc->color=ROP_XOR+BLUE^TRANSPARENT;
else
dc->color=ROP_XOR+WHITE^TRANSPARENT;
GrPlot(dc,x,y);
i++;
}
}
Free(bitmap);
} catch
DrvUnlock(dv);
GetChar;
SettingsPop;
DCFill;
DCDel(dc);
}
U0 FAT32DrvView(U8 drv_let=0)
{
CDrv *dv=Let2Drv(drv_let);
I64 lohi,c1,i,x,y,l,s;
U32 *bitmap;
CDC *dc=DCAlias;
l=(GR_HEIGHT-3*FONT_HEIGHT)*(GR_WIDTH-FONT_WIDTH<<1),
s=(dv->size+dv->spc-1)/dv->spc;
SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$
WinMax;
DocCursor;
DocClear;
DCFill;
try {
i=(s*4+BLK_SIZE-1)>>BLK_SIZE_BITS;
bitmap=MAlloc(i<<BLK_SIZE_BITS);
RBlks(dv,bitmap,dv->fat1,i);
i=0;
for (y=0;y<GR_HEIGHT-3*FONT_HEIGHT;y++) {
if (ScanKey)
break;
for (x=0;x<GR_WIDTH-FONT_WIDTH<<1;x++) {
lohi=i*s;
c1=lohi/l;
if (bitmap[c1])
dc->color=ROP_XOR+BLUE^TRANSPARENT;
else
dc->color=ROP_XOR+WHITE^TRANSPARENT;
GrPlot(dc,x,y);
i++;
}
}
Free(bitmap);
} catch
DrvUnlock(dv);
GetChar;
SettingsPop;
DCFill;
DCDel(dc);
}
public U0 DrvView(U8 drv_let=0)
{//Drive view. Graph the allocation map's fragmentation.
CDrv *dv=Let2Drv(drv_let),*old_dv=Fs->cur_dv;
Drv(drv_let);
switch (dv->fs_type) {
case FSt_REDSEA:
RedSeaDrvView(drv_let);
break;
case FSt_FAT32:
FAT32DrvView(drv_let);
break;
default:
PrintErr("File System Not Supported\n");
}
Drv(Drv2Let(old_dv));
}
public U0 DskView(U8 drv_let=0)
{//Disk view. Pie chart of partition sizes.
I64 i,j,attr,
h=Fs->pix_width,
v=Fs->pix_height,
radius;
CDrv *dv;
CBlkDev *bd=Let2BlkDev(drv_let);
CDC *dc=DCAlias;
F64 sect_start,sect_end;
SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$
DocCursor;
DocClear;
DCFill;
if (h<v)
radius=0.4*h;
else
radius=0.4*v;
dc->color=BLACK;
GrCircle(dc,h>>1,v>>1,radius);
j=1;
for (i=0;i<NUM_DRVS;i++) {
dv=&blkdev.drvs[i];
if (bd==dv->bd && dv->fs_type) {
sect_start=-(dv->base_offset*2*ã/(bd->max_blk+1));
sect_end =-((dv->base_offset+dv->size)*2*ã/(bd->max_blk+1));
dc->color=BLACK;
GrLine(dc,h>>1,v>>1,
h>>1+radius*Cos(sect_start),
v>>1+radius*Sin(sect_start));
GrLine(dc,h>>1,v>>1,
h>>1+radius*Cos(sect_end),
v>>1+radius*Sin(sect_end));
attr=DrvTextAttrGet(Drv2Let(dv));
dc->color=attr&15;
GrPrint(dc,0,v-FONT_HEIGHT*j,"%C %-8Z",Drv2Let(dv),
dv->fs_type,"ST_DRV_TYPES");
dc->color.c1=attr>>4;
dc->color|=ROPF_DITHER;
GrFloodFill(dc,
h>>1+(radius-4)*Cos((sect_start+sect_end)/2),
v>>1+(radius-4)*Sin((sect_start+sect_end)/2),FALSE);
j++;
}
}
GetChar(,FALSE);
SettingsPop;
DCFill;
DCDel(dc);
}
I64 RedSeaUnusedDrvSpace(U8 drv_let=0)
{
CDrv *dv=Let2Drv(drv_let);
I64 result=0,i,l;
U8 *bitmap;
try {
l=(dv->size+dv->spc-1)/dv->spc;
i=((l+7)>>3+BLK_SIZE-1)>>BLK_SIZE_BITS;
bitmap=MAlloc(i<<BLK_SIZE_BITS);
RBlks(dv,bitmap,dv->fat1,i);
for (i=0;i<l;i++)
if (!Bt(bitmap,i))
result++;
Free(bitmap);
} catch
DrvUnlock(dv);
return result*BLK_SIZE*dv->spc;
}
I64 FAT32UnusedDrvSpace(U8 drv_let=0)
{
CDrv *dv=Let2Drv(drv_let);
I64 result=0,i,l;
U32 *bitmap;
try {
l=(dv->size+dv->spc-1)/dv->spc;
i=(l*4+BLK_SIZE-1)>>BLK_SIZE_BITS;
bitmap=MAlloc(i<<BLK_SIZE_BITS);
RBlks(dv,bitmap,dv->fat1,i);
for (i=0;i<l;i++)
if (!bitmap[i])
result++;
Free(bitmap);
} catch
DrvUnlock(dv);
return result*BLK_SIZE*dv->spc;
}
public I64 UnusedDrvSpace(U8 drv_let=0)
{//Returns unused size in bytes.
CDrv *dv=Let2Drv(drv_let),*old_dv=Fs->cur_dv;
U8 *old_dir=StrNew(Fs->cur_dir);
I64 result=0;
Drv(drv_let);
switch (dv->fs_type) {
case FSt_REDSEA:
result=RedSeaUnusedDrvSpace(drv_let);
break;
case FSt_FAT32:
result=FAT32UnusedDrvSpace(drv_let);
break;
default:
PrintErr("File System Not Supported\n");
}
Drv(Drv2Let(old_dv));
Cd(old_dir);
Free(old_dir);
return result;
}
+2 -2
View File
@@ -217,9 +217,9 @@ U0 FMRebuildDoc(CDoc **_doc,CDirEntry **_root,I64 mode)
DocPrint(doc,"$$LTBLUE$$"); DocPrint(doc,"$$LTBLUE$$");
for (i=0;i<NUM_DRVS;i++) { for (i=0;i<NUM_DRVS;i++) {
dv=&blkdev.drvs[i]; dv=&blkdev.drvs[i];
if (dv->type==DVT_REDSEA||dv->type==DVT_FAT32) if (dv->fs_type==FSt_REDSEA||dv->fs_type==FSt_FAT32)
FMRebuildDocDrv(Drv2Let(dv),doc,_root,TRUE); FMRebuildDocDrv(Drv2Let(dv),doc,_root,TRUE);
else if (dv->type==DVT_ISO9660) { else if (dv->fs_type==FSt_ISO9660) {
if (dv->bd->flags&BDF_INITIALIZED) if (dv->bd->flags&BDF_INITIALIZED)
tempde=FMRebuildDocDrv(Drv2Let(dv),doc,_root,TRUE); tempde=FMRebuildDocDrv(Drv2Let(dv),doc,_root,TRUE);
else { else {
+2 -1
View File
@@ -1,7 +1,8 @@
Cd(__DIR__);; Cd(__DIR__);;
#include "ADskA" #include "ADskA"
#include "Mount"
#include "ADskB" #include "ADskB"
#include "PrtDsk"
#include "Mount"
#include "ChkDsk" #include "ChkDsk"
#include "FileMgr" #include "FileMgr"
Cd("..");; Cd("..");;
+55 -43
View File
@@ -1,34 +1,47 @@
#help_index "Install;File/Cmd Line (Typically);Cmd Line (Typically);" #help_index "Install;File/Cmd Line (Typically);Cmd Line (Typically);"
CDoc *BlkDevPmt(U8 boot_drv_let=0,Bool make_free=FALSE,Bool repartition=FALSE) 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 num_hints,drv_let,type,unit; I64 cnt,result=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];
CATARep *root=NULL,*tempha; CATARep *root=NULL,*tempha;
Bool one_drv,make_free;
CDoc *doc; CDoc *doc;
boot_drv_let=ToUpper(boot_drv_let);
do {
cnt=0;
if (!_doc)
DrvRep;
"\n****** Mount Drives ******\n" "\n****** Mount Drives ******\n"
"$$GREEN$$A$$FG$$-$$GREEN$$B$$FG$$ are RAM drives.\n" "$$GREEN$$A$$FG$$-$$GREEN$$B$$FG$$ are RAM drives.\n"
"$$GREEN$$C$$FG$$-$$GREEN$$S$$FG$$ are hard drives.\n" "$$GREEN$$C$$FG$$-$$GREEN$$S$$FG$$ are ATA hard drives.\n"
"$$GREEN$$T$$FG$$-$$GREEN$$Z$$FG$$ are CD/DVD drives.\n" "$$GREEN$$T$$FG$$-$$GREEN$$Z$$FG$$ are ATAPI CD/DVD drives.\n"
"\nDrive Letter ($$PURPLE$$<ENTER>$$FG$$ to exit):"; "\nDrive Letter ($$PURPLE$$<ENTER>$$FG$$ to exit):";
drv_let=ToUpper(GetChar); drv_let=ToUpper(GetChar);
'\n'; '\n';
if ('A'<=drv_let<='Z') { if (type=Let2BlkDevType(drv_let)) {
one_drv=FALSE;
if (_doc) { //Called by $LK,"::/Kernel/KCfg.CPP"$
doc=_doc;
make_free=FALSE;
} else { //Called by $LK,"Mount",A="MN:Mount"$()
doc=DocNew; doc=DocNew;
DocPrint(doc,"CBlkDev *bd;\n");
make_free=TRUE;
}
unit=0; unit=0;
if ('A'<=drv_let<='B') { switch (type) {
case BDT_RAM:
type=BDT_RAM; type=BDT_RAM;
"Addr of RAM disk ($$PURPLE$$<ENTER>$$FG$$ to MAlloc):"; "Addr of RAM disk ($$PURPLE$$<ENTER>$$FG$$ to MAlloc):";
GetS(addr_buf,STR_LEN); GetS(addr_buf,STR_LEN);
"Blks of 512 bytes:"; "Blks of 512 bytes:";
GetS(blks_buf,STR_LEN); GetS(blks_buf,STR_LEN);
} else { break;
case BDT_ATA:
case BDT_ATAPI:
num_hints=ATARep(,,&root); num_hints=ATARep(,,&root);
if ('C'<=drv_let<='S')
type=BDT_ATA;
else
type=BDT_ATAPI;
if (type==BDT_ATAPI && boot_drv_let) if (type==BDT_ATAPI && boot_drv_let)
"<ENTER> to use booted CD/DVD\n"; "<ENTER> to use booted CD/DVD\n"; //Only $LK,"::/Kernel/KCfg.CPP"$
do { do {
if (num_hints) if (num_hints)
"Enter dev number or\nport with $$PURPLE$$0x$$FG$$ prefix.\n" "Enter dev number or\nport with $$PURPLE$$0x$$FG$$ prefix.\n"
@@ -57,46 +70,45 @@ CDoc *BlkDevPmt(U8 boot_drv_let=0,Bool make_free=FALSE,Bool repartition=FALSE)
'\n'; '\n';
} }
LinkedLstDel(root); LinkedLstDel(root);
break;
} }
DocPrint(doc,"bd=BlkDevNextFree(%d,%d);bd->unit=%d;\n",drv_let,type,unit); DocPrint(doc,"bd=BlkDevNextFree(\'%C\',%d);bd->unit=%d;\n",
if (type==BDT_RAM) { drv_let,type,unit);
switch (type) {
case BDT_RAM:
if (!*addr_buf) StrCpy(addr_buf,"0"); if (!*addr_buf) StrCpy(addr_buf,"0");
DocPrint(doc,"bd->RAM_dsk=%s;bd->max_blk=(%s)-1;\n",addr_buf,blks_buf); DocPrint(doc,"bd->RAM_dsk=%s;bd->max_blk=(%s)-1;\n",
} addr_buf,blks_buf);
if (type==BDT_ATA || type==BDT_ATAPI) { break;
case BDT_ATA:
case BDT_ATAPI:
if (type==BDT_ATAPI && !*base0_buf) { if (type==BDT_ATAPI && !*base0_buf) {
DocPrint(doc,"GetBaseUnit(bd);\n"); DocPrint(doc,"GetBaseUnit(bd);\n"); //Only $LK,"::/Kernel/KCfg.CPP"$
if (drv_let==boot_drv_let) if (drv_let==boot_drv_let)
make_free=TRUE; make_free=TRUE;
} else } else
DocPrint(doc,"bd->base0=%s;bd->base1=%s;\n", DocPrint(doc,"bd->base0=%s;bd->base1=%s;\n",base0_buf,base1_buf);
base0_buf,base1_buf);
}
if (type==BDT_ATA && repartition) { if (type==BDT_ATA && repartition) {
"\nReformat WHOLE drive!"; "\nReformat WHOLE drive!";
if (YorN) { one_drv=YorN;
DocPrint(doc,"if (!BlkDevAdd(bd,TRUE,TRUE))"
"\"\n\n$$BK,1$$$$RED$$Operation Failed$$BK,0$$$$FG$$\n\n\";"
"else PrtDsk(bd->first_drv_let);\n");
return doc;
} }
break;
} }
DocPrint(doc,"if (!BlkDevAdd(bd,FALSE,%d))" DocPrint(doc,"BlkDevAdd(bd,%d,%d);\n",one_drv,make_free);
"\"\n\n$$BK,1$$$$RED$$Operation Failed$$BK,0$$$$FG$$\n\n\";\n",make_free); if (_doc) //Called by $LK,"::/Kernel/KCfg.CPP"$
return doc; cnt++;
} else else { //Called by $LK,"Mount",A="MN:Mount"$()
return NULL; if ((cnt=ExeDoc(doc)) && one_drv)
} PrtDsk(drv_let);
public U0 Mount(Bool repartition=FALSE)
{//Mount a drive.
CDoc *doc;
ExePrint("CBlkDev *bd;"); //Leaks
do {
DrvRep;
if (doc=BlkDevPmt(,TRUE,repartition)) {
ExeDoc(doc);
DocDel(doc); DocDel(doc);
} }
} while (doc); }
result+=cnt;
} while (cnt || !result && _doc); //At least 1 if Called by $LK,"::/Kernel/KCfg.CPP"$
return result;
}
public I64 Mount(Bool repartition=FALSE)
{//Mount drives.
return Mount2(0,NULL,repartition);
} }
+163
View File
@@ -0,0 +1,163 @@
#help_index "Install;File/Cmd Line (Typically);Cmd Line (Typically)"
#define ROUND_DRV_TO (63*255)
#define DRV_HEADER 63
class CPlannedDrv
{
CPlannedDrv *next,*last;
I64 size;
Bool pri;
};
//Available to assist in writing scripts.
I64 drv_dsk_dsk_size=0;
public I64 PrtDsk(U8 drv_let=0)
{//Partition the disk containing partition drv_let.
//drv_let=0 means add new drive that
//is not already mounted.
CBlkDev *bd;
CPlannedDrv root,*temppp;
CMasterBoot mbr;
Bool pri=TRUE;
I64 ext_base,drv_let2,pri_cnt=0,
i,start_offset,offset,remaining;
drv_dsk_dsk_size=0;
"This command does not play well\n"
"with other operating systems.\n"
"You really should use another\n"
"operating system's partitioner.\n"
"If you use this, it may, in fact,\n"
"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"
"Continue";
if (!YorN) return 0;
if (drv_let && !Let2BlkDev(drv_let,FALSE))
drv_let=0;
if (!drv_let) {
Mount(TRUE);
return 0;
}
if (!(bd=Let2BlkDev(drv_let,FALSE)) || bd->type!=BDT_ATA)
return 0;
drv_dsk_dsk_size=bd->max_blk+1;
QueInit(&root);
drv_let2=bd->first_drv_let;
remaining=FloorU64(bd->max_blk+1,ROUND_DRV_TO);
while (FloorU64(remaining,ROUND_DRV_TO)>=ROUND_DRV_TO) {
temppp=MAlloc(sizeof(CPlannedDrv));
do {
"$$RED$$Partition %C$$FG$$\n",drv_let2;
temppp->pri=FALSE;
if (pri) {
"Primary Partition";
if (YorN) {
pri_cnt++;
temppp->pri=TRUE;
if (pri_cnt==3)
pri=FALSE;
} else
pri=FALSE;
}
"Blocks Remaining:%d (0x%X)\n",
remaining-DRV_HEADER,remaining-DRV_HEADER;
temppp->size=CeilU64(GetI64("Size in Blocks :",
remaining-DRV_HEADER)+DRV_HEADER,ROUND_DRV_TO);
} while (!(ROUND_DRV_TO<=temppp->size<=FloorU64(remaining,ROUND_DRV_TO)));
QueIns(temppp,root.last);
remaining-=temppp->size;
drv_let2++;
}
"\n\n!!! Repartition Drive !!!\n\n";
temppp=root.next;
drv_let2=bd->first_drv_let;
while (temppp!=&root) {
"Drive %C:%08X ",drv_let2,temppp->size;
if (temppp->pri)
"Primary\n";
else
"Logical\n";
temppp=temppp->next;
drv_let2++;
}
if (!AreYouSure)
goto pd_done;
remaining=FloorU64(bd->max_blk+1,ROUND_DRV_TO)-ROUND_DRV_TO;
temppp=root.next;
MemSet(&mbr,0,BLK_SIZE);
mbr.signature=0xAA55;
offset=0;
for (i=0;i<pri_cnt;i++) {
mbr.p[i].active=0x80;
mbr.p[i].start_head=0;
mbr.p[i].start_cyl=0x101;
mbr.p[i].type=1; //Will get set different.
mbr.p[i].end_head=0xFE;
mbr.p[i].end_cyl=0xFFFF;
mbr.p[i].offset=DRV_HEADER+offset;
mbr.p[i].size=temppp->size-DRV_HEADER;
offset+=temppp->size;
remaining-=temppp->size;
temppp=temppp->next;
}
if (!i) i++;
if (temppp!=&root) {
mbr.p[i].active=0x80;
mbr.p[i].start_head=0;
mbr.p[i].start_cyl=0x101;
mbr.p[i].type=0xF;
mbr.p[i].end_head=0xFE;
mbr.p[i].end_cyl=0xFFFF;
mbr.p[i].offset=offset;
mbr.p[i].size=remaining;
ext_base=offset;
}
ATAWriteBlks(bd,&mbr,0,1);
while (temppp!=&root) {
start_offset=offset;
MemSet(&mbr,0,BLK_SIZE);
mbr.signature=0xAA55;
mbr.p[0].active=0x80;
mbr.p[0].start_head=1;
mbr.p[0].start_cyl=0x101;
mbr.p[0].type=1; //Will get set different.
mbr.p[0].end_head=0xFE;
mbr.p[0].end_cyl=0xFFFF;
mbr.p[0].offset=DRV_HEADER;
mbr.p[0].size=temppp->size-DRV_HEADER;
offset+=temppp->size;
temppp=temppp->next;
if (temppp!=&root) {
mbr.p[1].active=0x80;
mbr.p[1].start_head=0;
mbr.p[1].start_cyl=0x101;
mbr.p[1].type=5;
mbr.p[1].end_head=0xFE;
mbr.p[1].end_cyl=0xFFFF;
mbr.p[1].offset=offset-ext_base;
mbr.p[1].size=temppp->size;
}
ATAWriteBlks(bd,&mbr,start_offset,1);
}
bd->flags&=~(BDF_INITIALIZED | BDF_INIT_IN_PROGRESS);
BlkDevAdd(bd,FALSE,TRUE);
for (i=bd->first_drv_let;i<drv_let2;i++)
Fmt(i,,FALSE);
pd_done:
while (root.next!=&root) {
temppp=root.next;
QueRem(temppp);
Free(temppp);
}
return drv_dsk_dsk_size;
}
+2 -2
View File
@@ -11,8 +11,8 @@ U0 LoadDocDefines()
//This is cut and replaced when I generate a distro. //This is cut and replaced when I generate a distro.
//See $LK,"DD_TEMPLEOS_LOC",A="FF:::/Demo/AcctExample/TOSDistro.CPP,DD_TEMPLEOS_LOC"$. //See $LK,"DD_TEMPLEOS_LOC",A="FF:::/Demo/AcctExample/TOSDistro.CPP,DD_TEMPLEOS_LOC"$.
$TR-C,"LineRep"$ $TR-C,"LineRep"$
$ID,4$DefinePrint("DD_TEMPLEOS_LOC","118,914"); $ID,4$DefinePrint("DD_TEMPLEOS_LOC","118,999");
DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","80,867"); DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","80,991");
$ID,-4$ $ID,-4$
DefinePrint("DD_KERNEL","%08X",bfh); DefinePrint("DD_KERNEL","%08X",bfh);
bfh(I64)+=bfh->file_size-1; bfh(I64)+=bfh->file_size-1;
+2 -1
View File
@@ -2,8 +2,8 @@ extern U0 ACDDef(I64 n,CTask *parent=NULL);
extern U0 ACDDefsPut(CDoc *doc,U8 *st,I64 num=-1); extern U0 ACDDefsPut(CDoc *doc,U8 *st,I64 num=-1);
extern U0 ACDFillin(I64 n); extern U0 ACDFillin(I64 n);
extern U0 ACFillIn(I64 n); extern U0 ACFillIn(I64 n);
extern U0 ACFindMisspelled(CDoc *doc);
extern U0 ACMan(I64 n,CTask *parent=NULL); extern U0 ACMan(I64 n,CTask *parent=NULL);
extern U0 ACMisspelledFind(CDoc *doc);
extern I64 AdamFile(U8 *filename,Bool warn_ext=TRUE); extern I64 AdamFile(U8 *filename,Bool warn_ext=TRUE);
extern Bool AutoComplete(Bool val=OFF); extern Bool AutoComplete(Bool val=OFF);
extern I64 BMPWrite(U8 *filename,CDC *dc,I64 bits=4); extern I64 BMPWrite(U8 *filename,CDC *dc,I64 bits=4);
@@ -56,6 +56,7 @@ extern CMenuEntry *MenuEntryFind(CMenu *m,U8 *full_name);
extern CMenu *MenuFilePush(U8 *filename); extern CMenu *MenuFilePush(U8 *filename);
extern U0 MenuPop(); extern U0 MenuPop();
extern CMenu *MenuPush(U8 *st); extern CMenu *MenuPush(U8 *st);
extern I64 Mount(Bool repartition=FALSE);
extern CTask *Noise(I64 mS,I64 min_freq,I64 max_freq); extern CTask *Noise(I64 mS,I64 min_freq,I64 max_freq);
extern Bool Plain(U8 *filename,I64 edf_dof_flags=0); extern Bool Plain(U8 *filename,I64 edf_dof_flags=0);
extern Bool PopUpCancelOk(U8 *header=NULL,U8 *footer=NULL); extern Bool PopUpCancelOk(U8 *header=NULL,U8 *footer=NULL);
+1 -1
View File
@@ -19,7 +19,7 @@ $$ --> $$$$
U8 *src,*dst; U8 *src,*dst;
CDoc *doc; CDoc *doc;
CDocEntry *doc_e; CDocEntry *doc_e;
if (doc=DocRead(in_name,DOCF_PLAIN_TEXT_WITH_TABS|DOCF_DBL_DOLLARS)) { if (doc=DocRead(in_name,DOCF_PLAIN_TEXT_TABS|DOCF_DBL_DOLLARS)) {
doc_e=doc->root.next; doc_e=doc->root.next;
while (doc_e!=doc) { while (doc_e!=doc) {
if (doc_e->type_u8==DOCT_TEXT) { if (doc_e->type_u8==DOCT_TEXT) {
+1 -1
View File
@@ -204,7 +204,7 @@ U0 ACDDef(I64 n,CTask *parent=NULL)
ACDPopUpDef(acd.fillins[n],-1,parent); ACDPopUpDef(acd.fillins[n],-1,parent);
} }
U0 ACFindMisspelled(CDoc *doc) U0 ACMisspelledFind(CDoc *doc)
{ {
Bool unlock=DocLock(doc); Bool unlock=DocLock(doc);
CDocEntry *doc_e=doc->cur_entry; CDocEntry *doc_e=doc->cur_entry;
+1 -2
View File
@@ -129,10 +129,9 @@ public U0 ACInit(U8 *mask=NULL)
Bool start_flag; Bool start_flag;
CBlkDev *bd=Let2BlkDev; CBlkDev *bd=Let2BlkDev;
AutoComplete;
while (LBts(&ac.flags,ACf_INIT_IN_PROGRESS)) while (LBts(&ac.flags,ACf_INIT_IN_PROGRESS))
Yield; Yield;
AutoComplete;
if (DrvIsWritable && FileFind(ACD_DEF_FILENAME_Z) && if (DrvIsWritable && FileFind(ACD_DEF_FILENAME_Z) &&
!FileFind(ACD_DEF_FILENAME)) { !FileFind(ACD_DEF_FILENAME)) {
if (bd->type!=BDT_RAM) { if (bd->type!=BDT_RAM) {
+3 -2
View File
@@ -23,7 +23,8 @@ U0 ACDocRst(I64 left,I64 top)
DocRst(doc,TRUE); DocRst(doc,TRUE);
doc->flags|=DOCF_MIN_SIZE; doc->flags|=DOCF_MIN_SIZE;
Fs->border_src=BDS_CONST; Fs->border_src=BDS_CONST;
Fs->text_attr =Fs->border_attr=LTGRAY<<4+BLUE; Fs->border_attr=LTGRAY<<4+DrvTextAttrGet(':')&15;
Fs->text_attr =LTGRAY<<4+BLUE;
LBtr(&Fs->display_flags,DISPLAYf_SHOW); LBtr(&Fs->display_flags,DISPLAYf_SHOW);
WinHorz(left,Fs->win_right); WinHorz(left,Fs->win_right);
WinVert(top,Fs->win_bottom); WinVert(top,Fs->win_bottom);
@@ -259,9 +260,9 @@ U0 ACTask(I64)
public Bool AutoComplete(Bool val=OFF) public Bool AutoComplete(Bool val=OFF)
{//Turn AutoComplete OFF or ON. {//Turn AutoComplete OFF or ON.
Bool old_autocomplete=FALSE; Bool old_autocomplete=FALSE;
if (val) {
while (Bt(&ac.flags,ACf_INIT_IN_PROGRESS)) while (Bt(&ac.flags,ACf_INIT_IN_PROGRESS))
Sleep(10); Sleep(10);
if (val) {
if (TaskValidate(ac.task)) if (TaskValidate(ac.task))
old_autocomplete=TRUE; old_autocomplete=TRUE;
else { else {
+3 -2
View File
@@ -13,7 +13,8 @@
public U0 PCIDevFileGen() public U0 PCIDevFileGen()
{ {
Bool first=TRUE,del=FALSE,del2=FALSE,cont=FALSE; Bool first=TRUE,del=FALSE,del2=FALSE,cont=FALSE;
CDoc *doc=DocRead(PCI_DEV_FILE,DOCF_PLAIN_TEXT|DOCF_DBL_DOLLARS); CDoc *doc=DocRead(PCI_DEV_FILE,
DOCF_PLAIN_TEXT|DOCF_DBL_DOLLARS|DOCF_NO_CURSOR);
CDocEntry *doc_e=doc->root.next,*doc_e2; CDocEntry *doc_e=doc->root.next,*doc_e2;
while (doc_e!=doc) { while (doc_e!=doc) {
doc_e2=doc_e->next; doc_e2=doc_e->next;
@@ -121,7 +122,7 @@ U0 PCILookUpDevs()
CDoc *doc; CDoc *doc;
if (dev.pci_root.next!=&dev.pci_root) if (dev.pci_root.next!=&dev.pci_root)
return; return;
doc=DocRead(PCI_DEV_FILE,DOCF_PLAIN_TEXT); doc=DocRead(PCI_DEV_FILE,DOCF_PLAIN_TEXT|DOCF_NO_CURSOR);
for (b=0;b<sys_pci_busses;b++) for (b=0;b<sys_pci_busses;b++)
for (d=0;d<32;d++) for (d=0;d<32;d++)
for (f=0;f<8;f++) { for (f=0;f<8;f++) {
+1 -1
View File
@@ -462,7 +462,7 @@ U0 EdInsChar(I64 ch,I64 sc,CDoc *doc)
} else } else
goto ic_done; goto ic_done;
} }
if (ch=='$$' && !(doc->flags & (DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_WITH_TABS))) { if (ch=='$$' && !(doc->flags & (DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_TABS))) {
doc->flags|=DOCF_IN_DOLLAR; doc->flags|=DOCF_IN_DOLLAR;
doc->dollar_buf_ptr=0; doc->dollar_buf_ptr=0;
doc->dollar_buf[doc->dollar_buf_ptr++]=ch; doc->dollar_buf[doc->dollar_buf_ptr++]=ch;
+11 -18
View File
@@ -25,7 +25,7 @@ public U0 DocLoad(CDoc *doc,U8 *src2,I64 size)
doc->cur_bin_num=tempb->num+1; doc->cur_bin_num=tempb->num+1;
} }
} }
if (!(doc->flags & (DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_WITH_TABS))) if (!(doc->flags & (DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_TABS)))
DocBinsValidate(doc); DocBinsValidate(doc);
DocTop(doc); //DOCT_CURSOR will set it in recalc DocTop(doc); //DOCT_CURSOR will set it in recalc
DocRecalc(doc); DocRecalc(doc);
@@ -59,14 +59,13 @@ public U8 *DocSave(CDoc *doc,I64 *_size=NULL)
I64 ch,i,cnt; I64 ch,i,cnt;
U8 *st,*result,*dst,*src; U8 *st,*result,*dst,*src;
if (!(doc->flags & (DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_TABS)))
DocBinsValidate(doc);
DocRecalc(doc);
if (doc->flags&DOCF_NO_CURSOR || doc->root.next==doc) if (doc->flags&DOCF_NO_CURSOR || doc->root.next==doc)
cnt=1; //terminator cnt=1; //terminator
else else
cnt=2; //cursor + terminator cnt=2; //cursor + terminator
if (!(doc->flags & (DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_WITH_TABS)))
DocBinsValidate(doc);
DocRecalc(doc);
for (doc_e=doc->root.next;doc_e!=doc;doc_e=doc_e->next) { for (doc_e=doc->root.next;doc_e!=doc;doc_e=doc_e->next) {
if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) { if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) {
switch (doc_e->type_u8) { switch (doc_e->type_u8) {
@@ -80,30 +79,25 @@ public U8 *DocSave(CDoc *doc,I64 *_size=NULL)
else else
cnt++; cnt++;
break; break;
case DOCT_SOFT_NEW_LINE:
break;
case DOCT_TEXT://$BK,1$Update $LK,"DOCT_TEXT",A="FF:D:/Compiler/Lex.CPP,DOCT_TEXT"$$BK,0$ case DOCT_TEXT://$BK,1$Update $LK,"DOCT_TEXT",A="FF:D:/Compiler/Lex.CPP,DOCT_TEXT"$$BK,0$
if (!(doc_e->de_flags & ~(DOCEF_TAG|DOCG_BL_IV_UL|DOCEF_WORD_WRAP| if (!(doc_e->de_flags & ~(DOCEF_TAG|DOCG_BL_IV_UL|DOCEF_WORD_WRAP|
DOCEF_HIGHLIGHT|DOCEF_SKIP|DOCEF_FILTER_SKIP))&& DOCEF_HIGHLIGHT|DOCEF_SKIP|DOCEF_FILTER_SKIP))&&
!(doc_e->type&DOCG_BL_IV_UL)) { !(doc_e->type&DOCG_BL_IV_UL)) {
cnt+=StrLen(doc_e->tag); cnt+=StrLen(doc_e->tag);
if (!(doc->flags & (DOCF_PLAIN_TEXT | DOCF_PLAIN_TEXT_WITH_TABS)) || if (!(doc->flags & (DOCF_PLAIN_TEXT | DOCF_PLAIN_TEXT_TABS)) ||
doc->flags&DOCF_DBL_DOLLARS) doc->flags&DOCF_DBL_DOLLARS)
cnt+=StrOcc(doc_e->tag,'$$'); cnt+=StrOcc(doc_e->tag,'$$');
} else {
st=Doc2PlainText(doc,doc_e);
cnt+=StrLen(st)+2;
Free(st);
}
break; break;
}
default: default:
if (doc_e->type_u8!=DOCT_SOFT_NEW_LINE &&
doc_e->type_u8!=DOCT_CURSOR) {
st=Doc2PlainText(doc,doc_e); st=Doc2PlainText(doc,doc_e);
cnt+=StrLen(st)+2; cnt+=StrLen(st)+2;
Free(st); Free(st);
} }
} }
} }
}
for (b=doc->bin_root.next;b!=&doc->bin_root;b=b->next) { for (b=doc->bin_root.next;b!=&doc->bin_root;b=b->next) {
if (b->use_cnt>b->temp_use_cnt) if (b->use_cnt>b->temp_use_cnt)
cnt+=offset(CDocBin.end)- cnt+=offset(CDocBin.end)-
@@ -125,7 +119,7 @@ public U8 *DocSave(CDoc *doc,I64 *_size=NULL)
*dst++=CH_CURSOR; *dst++=CH_CURSOR;
*dst++=ch; *dst++=ch;
if (ch=='$$') { if (ch=='$$') {
if (!(doc->flags & (DOCF_PLAIN_TEXT | DOCF_PLAIN_TEXT_WITH_TABS)) || if (!(doc->flags & (DOCF_PLAIN_TEXT | DOCF_PLAIN_TEXT_TABS)) ||
doc->flags&DOCF_DBL_DOLLARS) doc->flags&DOCF_DBL_DOLLARS)
*dst++=ch; *dst++=ch;
} }
@@ -148,9 +142,9 @@ public U8 *DocSave(CDoc *doc,I64 *_size=NULL)
*dst++='\r'; *dst++='\r';
*dst++='\n'; *dst++='\n';
break; break;
case DOCT_SOFT_NEW_LINE:
break;
default: default:
if (doc_e->type_u8!=DOCT_SOFT_NEW_LINE &&
doc_e->type_u8!=DOCT_CURSOR) {//(Cursor is set by cur_entry)
*dst++='$$'; *dst++='$$';
st=Doc2PlainText(doc,doc_e); st=Doc2PlainText(doc,doc_e);
StrCpy(dst,st); StrCpy(dst,st);
@@ -161,7 +155,6 @@ public U8 *DocSave(CDoc *doc,I64 *_size=NULL)
} }
} }
} }
}
if (doc->cur_entry==doc && doc->root.next!=doc && if (doc->cur_entry==doc && doc->root.next!=doc &&
!(doc->flags&DOCF_NO_CURSOR)) !(doc->flags&DOCF_NO_CURSOR))
*dst++=CH_CURSOR; *dst++=CH_CURSOR;
+1 -1
View File
@@ -17,7 +17,7 @@ U0 DocInit()
"PRY\0MRX\0WR\0L\0X\0Q\0FST\0B\0S\0BD\0C\0CA\0RD\0UD\0P\0TRM\0Z\0H\0" "PRY\0MRX\0WR\0L\0X\0Q\0FST\0B\0S\0BD\0C\0CA\0RD\0UD\0P\0TRM\0Z\0H\0"
"TR\0LS\0SK\0PU\0SIF\0FS\0NC\0DD\0"); "TR\0LS\0SK\0PU\0SIF\0FS\0NC\0DD\0");
DefineLstLoad("ST_LINK_TYPES", DefineLstLoad("ST_LINK_TYPES",
"FI\0FA\0FF\0FL\0MN\0PI\0PF\0PL\0BF\0DF\0HI\0AD\0AI\0AA\0AF\0AL\0"); "FI\0FA\0FF\0FL\0MN\0PI\0PF\0PL\0BF\0DN\0HI\0AD\0AI\0AA\0AF\0AL\0");
doldoc.hash=HashTableNew(512); doldoc.hash=HashTableNew(512);
HashDefineLstAdd("ST_DOC_CMDS",DHT_DOC_CMD,doldoc.hash); HashDefineLstAdd("ST_DOC_CMDS",DHT_DOC_CMD,doldoc.hash);
+7 -7
View File
@@ -13,8 +13,8 @@
"PF:haystack_filename,needle_str:occurnum" "PF:haystack_filename,needle_str:occurnum"
"PL:filename,linenum" "PL:filename,linenum"
"BF:haystack_bible_book,needle_str" "BF:haystack_bible_book,needle_str"
"DF:word" "DN:word"
"DF:word,defnum" "DN:word,defnum"
"HI:index" "HI:index"
"AD:code_address_number" "AD:code_address_number"
@@ -67,7 +67,7 @@ Bool DocFileEd(I64 _type,U8 *filename,
try { try {
switch (type) { switch (type) {
case LK_PLAIN: case LK_PLAIN:
flags=DOCF_PLAIN_TEXT; flags=DOCF_PLAIN_TEXT|DOCF_NO_CURSOR;
case LK_DOC: case LK_DOC:
type=LK_FILE; type=LK_FILE;
break; break;
@@ -75,17 +75,17 @@ Bool DocFileEd(I64 _type,U8 *filename,
type=LK_FILE_ANCHOR; type=LK_FILE_ANCHOR;
break; break;
case LK_PLAIN_FIND: case LK_PLAIN_FIND:
flags=DOCF_PLAIN_TEXT; flags=DOCF_PLAIN_TEXT|DOCF_NO_CURSOR;
case LK_DOC_FIND: case LK_DOC_FIND:
type=LK_FILE_FIND; type=LK_FILE_FIND;
break; break;
case LK_PLAIN_LINE: case LK_PLAIN_LINE:
flags=DOCF_PLAIN_TEXT; flags=DOCF_PLAIN_TEXT|DOCF_NO_CURSOR;
case LK_DOC_LINE: case LK_DOC_LINE:
type=LK_FILE_LINE; type=LK_FILE_LINE;
break; break;
case LK_BIBLE_FIND: case LK_BIBLE_FIND:
flags=DOCF_PLAIN_TEXT; flags=DOCF_PLAIN_TEXT|DOCF_NO_CURSOR;
break; break;
} }
@@ -309,7 +309,7 @@ public Bool DocLinkChk(U8 *link_st)
result=TRUE; result=TRUE;
Free(st); Free(st);
break; break;
default://TODO: Need to validate HI: and DF: default://TODO: Need to validate HI: and DN:
if (Ed(link_st,EDF_BAIL)) if (Ed(link_st,EDF_BAIL))
result=TRUE; result=TRUE;
} }
+9 -11
View File
@@ -12,11 +12,9 @@ U0 SysMacroStripKey(CSrvCmd *macro_root,I64 a1,I64 a2)
while (tempc!=macro_root) { while (tempc!=macro_root) {
tempc1=tempc->next; tempc1=tempc->next;
if (tempc->cmd_code==SVCT_MSG && if (tempc->cmd_code==SVCT_MSG &&
(tempc->msg_code==MSG_KEY_DOWN || (tempc->msg_code==MSG_KEY_DOWN || tempc->msg_code==MSG_KEY_UP ||
tempc->msg_code==MSG_KEY_UP ||
tempc->msg_code==MSG_KEY_DOWN_UP) && tempc->msg_code==MSG_KEY_DOWN_UP) &&
a1 && tempc->aux1==a1 || a1 && tempc->aux1==a1 || !a1 && tempc->aux2==a2) {
!a1 && tempc->aux2==a2) {
QueRem(tempc); QueRem(tempc);
SrvCmdDel(tempc); SrvCmdDel(tempc);
} }
@@ -161,15 +159,15 @@ I64 PopUpMacroMenu()
"\n\n\n$$GREEN$$SHIFT-F2$$FG$$ will play macro.\n"); "\n\n\n$$GREEN$$SHIFT-F2$$FG$$ will play macro.\n");
doc->flags|=DOCF_MIN_SIZE | DOCF_FORM; doc->flags|=DOCF_MIN_SIZE | DOCF_FORM;
StrPrint(buf,"DocMenu(%d);",doc); StrPrint(buf,"DocMenu(%d);",doc);
sys_macro_util_task=Spawn(&SrvCmdLine,NULL,"Macro Popup",,Fs); sys_macro_task=Spawn(&SrvCmdLine,NULL,"Macro Popup",,Fs);
Fs->popup_task=sys_macro_util_task; Fs->popup_task=sys_macro_task;
LBts(&sys_macro_util_task->display_flags,DISPLAYf_WIN_ON_TOP); LBts(&sys_macro_task->display_flags,DISPLAYf_WIN_ON_TOP);
tempc=TaskExe(sys_macro_util_task,Fs,buf, tempc=TaskExe(sys_macro_task,Fs,buf,
1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER); 1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER);
JobResultScan(tempc,&result); JobResultScan(tempc,&result);
Fs->popup_task=NULL; Fs->popup_task=NULL;
Kill(sys_macro_util_task); Kill(sys_macro_task);
sys_macro_util_task=NULL; sys_macro_task=NULL;
DocDataScan(doc,doc_e); DocDataScan(doc,doc_e);
DocDel(doc); DocDel(doc);
return result; return result;
@@ -208,6 +206,6 @@ U0 MacroTask(I64)
U0 EdMacroUtil() U0 EdMacroUtil()
{ {
if (!sys_macro_util_task) if (!sys_macro_task)
Spawn(&MacroTask,NULL,"Macro"); Spawn(&MacroTask,NULL,"Macro");
} }
+4 -3
View File
@@ -497,7 +497,7 @@ U0 DocEntryToggle(CDoc *doc)
U8 ch,*st,*st2; U8 ch,*st,*st2;
I64 i,j,k; I64 i,j,k;
if (doc_ce!=doc && if (doc_ce!=doc &&
!(doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_WITH_TABS))) { !(doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_TABS))) {
if (doc_ce->type_u8==DOCT_TEXT && !(doc_ce->de_flags & if (doc_ce->type_u8==DOCT_TEXT && !(doc_ce->de_flags &
~(DOCEF_TAG|DOCG_BL_IV_UL|DOCEF_WORD_WRAP|DOCEF_HIGHLIGHT| ~(DOCEF_TAG|DOCG_BL_IV_UL|DOCEF_WORD_WRAP|DOCEF_HIGHLIGHT|
DOCEF_SKIP|DOCEF_FILTER_SKIP)) && DOCEF_SKIP|DOCEF_FILTER_SKIP)) &&
@@ -593,7 +593,7 @@ U0 DocFlagsToggle(CDoc *doc,I64 tog_flags)
U8 *st; U8 *st;
CDocUndo *u_next,*u_last; CDocUndo *u_next,*u_last;
doc->flags|=DOCF_COLOR_NAMES; doc->flags=doc->flags&~DOCF_NO_CURSOR|DOCF_COLOR_NAMES;
st=DocSave(doc,&size); st=DocSave(doc,&size);
u_next=doc->undo_root.next; u_next=doc->undo_root.next;
@@ -604,8 +604,9 @@ U0 DocFlagsToggle(CDoc *doc,I64 tog_flags)
doc->undo_root.next=u_next; doc->undo_root.next=u_next;
doc->undo_root.last=u_last; doc->undo_root.last=u_last;
DocUndoCntSet(doc); DocUndoCntSet(doc);
doc->flags=flags & ~(DOCG_BL_IV_UL|DOCF_WORD_WRAP); doc->flags=flags&~(DOCF_NO_CURSOR|DOCG_BL_IV_UL|DOCF_WORD_WRAP);
DocLoad(doc,st,size); DocLoad(doc,st,size);
doc->flags|=flags&DOCF_NO_CURSOR;
DocCenter(doc); DocCenter(doc);
if (unlock) if (unlock)
DocUnlock(doc); DocUnlock(doc);
+1 -1
View File
@@ -15,7 +15,7 @@ U0 PopUpViewPrintEndCB()
} }
public CTask *PopUpViewPrint(U8 *fmt,...) public CTask *PopUpViewPrint(U8 *fmt,...)
{//View Print statement in PopUp win task. {//View Print stmt in PopUp win task.
CTask *task; CTask *task;
U8 *buf=StrPrintJoin(NULL,fmt,argc,argv); U8 *buf=StrPrintJoin(NULL,fmt,argc,argv);
CDoc *doc=DocNew; CDoc *doc=DocNew;
+5 -5
View File
@@ -253,8 +253,8 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
} else { } else {
DocUnlock(doc); DocUnlock(doc);
if (sc&SCF_SHIFT) { if (sc&SCF_SHIFT) {
if (TaskValidate(sys_macro_util_task)) if (TaskValidate(sys_macro_task))
PostMsgWait(sys_macro_util_task, PostMsgWait(sys_macro_task,
MSG_KEY_DOWN_UP,CH_SHIFT_ESC,0); MSG_KEY_DOWN_UP,CH_SHIFT_ESC,0);
SysMacroStripKey(&sys_macro_root,ch,sc); SysMacroStripKey(&sys_macro_root,ch,sc);
PlaySysMacro; PlaySysMacro;
@@ -557,7 +557,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Cmd /Sprite Graphic Resource"); KeyDescSet("Cmd /Sprite Graphic Resource");
else { else {
if (!(doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_WITH_TABS))) { if (!(doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_TABS))) {
DocUnlock(doc); DocUnlock(doc);
if (doc_ce->type_u8==DOCT_SPRITE) if (doc_ce->type_u8==DOCT_SPRITE)
EdSpriteEd(doc, EdSpriteEd(doc,
@@ -577,7 +577,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Edit/Find Misspelled"); KeyDescSet("Edit/Find Misspelled");
else else
ACFindMisspelled(doc); ACMisspelledFind(doc);
} else { } else {
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Edit/Save"); KeyDescSet("Edit/Save");
@@ -596,7 +596,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
KeyDescSet("Edit/Toggle Plain Text Display"); KeyDescSet("Edit/Toggle Plain Text Display");
else else
if (!(doc->flags&DOCF_FORM) || if (!(doc->flags&DOCF_FORM) ||
doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_WITH_TABS)) doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_TABS))
DocFlagsToggle(doc,DOCF_PLAIN_TEXT); DocFlagsToggle(doc,DOCF_PLAIN_TEXT);
} }
break; break;
+1 -1
View File
@@ -12,7 +12,7 @@ CDocEntry *DocPutS(CDoc *doc,U8 *st)
if (!st || !doc && !(doc=DocPut) || doc->doc_signature!=DOC_SIGNATURE_VAL) if (!st || !doc && !(doc=DocPut) || doc->doc_signature!=DOC_SIGNATURE_VAL)
return NULL; return NULL;
unlock=DocLock(doc); unlock=DocLock(doc);
if (doc->flags & DOCF_PLAIN_TEXT_WITH_TABS) if (doc->flags & DOCF_PLAIN_TEXT_TABS)
char_bitmap=chars_bmp_zero_cr_nl_cursor; char_bitmap=chars_bmp_zero_cr_nl_cursor;
else if (doc->flags & DOCF_PLAIN_TEXT) else if (doc->flags & DOCF_PLAIN_TEXT)
char_bitmap=chars_bmp_zero_tab_ff_cr_nl_cursor; char_bitmap=chars_bmp_zero_tab_ff_cr_nl_cursor;
+1 -1
View File
@@ -329,7 +329,7 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
} }
best_doc_e=doc->cur_entry; best_doc_e=doc->cur_entry;
if (!(doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_WITH_TABS)) && if (!(doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_TABS)) &&
FilesFindMatch(doc->filename.name,FILEMASK_SRC)) FilesFindMatch(doc->filename.name,FILEMASK_SRC))
doc->flags|=DOCF_HIGHLIGHT; doc->flags|=DOCF_HIGHLIGHT;
else else
+3 -15
View File
@@ -182,27 +182,15 @@ public I64 DocMax(I64 i=MAX_I64)
#help_index "DolDoc/Task;StdOut/Task" #help_index "DolDoc/Task;StdOut/Task"
U0 DocUpdateTaskDocs(CTask *task) U0 DocUpdateTaskDocs(CTask *task)
{//This is called from $LK,"GrUpdateTaskWin",A="MN:GrUpdateTaskWin"$() by the winmgr at 30fps. {//This is called from $LK,"GrUpdateTaskWin",A="MN:GrUpdateTaskWin"$() by the winmgr at 30fps.
CDrv *dv;
CDoc *doc; CDoc *doc;
CD3I64 saved_scroll; CD3I64 saved_scroll;
I64 border_attr; if (task->border_src==BDS_CUR_DRV && task->cur_dv)
if (task->border_src==BDS_CUR_DRV && task->cur_dv) { task->border_attr=DrvTextAttrGet(Drv2Let(task->cur_dv));
border_attr=task->cur_dv->text_attr;
if (border_attr&15!=border_attr>>4)
task->border_attr=border_attr;
}
if (task->title_src==TTS_TASK_NAME) if (task->title_src==TTS_TASK_NAME)
StrCpy(task->task_title,task->task_name); StrCpy(task->task_title,task->task_name);
if ((doc=DocDisplay(task)) && !(doc->flags&DOCF_DONT_SHOW)) { if ((doc=DocDisplay(task)) && !(doc->flags&DOCF_DONT_SHOW)) {
if (task->border_src==BDS_ED_FILENAME_DRV) if (task->border_src==BDS_ED_FILENAME_DRV)
try { task->border_attr=DrvTextAttrGet(*doc->filename.name);
if (dv=Let2Drv(*doc->filename.name)) {
border_attr=dv->text_attr;
if (border_attr&15!=border_attr>>4)
task->border_attr=border_attr;
}
} catch
Fs->catch_except=TRUE;
if (task->title_src==TTS_ED_FILENAME) if (task->title_src==TTS_ED_FILENAME)
MemCpy(task->task_title,doc->filename.name,TASK_TITLE_LEN); MemCpy(task->task_title,doc->filename.name,TASK_TITLE_LEN);
DocRecalc(doc,TRUE,DOC_RECALC_TO_SCREEN); DocRecalc(doc,TRUE,DOC_RECALC_TO_SCREEN);
+24 -17
View File
@@ -296,9 +296,9 @@ Bool GetLink(I64 type,U8 **_tag,U8 **_link,Bool *_pop_up,
else else
*_tag=StrNew(e->tag); *_tag=StrNew(e->tag);
if (e->num<0) if (e->num<0)
*_link=MStrPrint("DF:%s",e->aux); *_link=MStrPrint("DN:%s",e->aux);
else else
*_link=MStrPrint("DF:%s,%d",e->aux,e->num); *_link=MStrPrint("DN:%s,%d",e->aux,e->num);
} }
break; break;
@@ -906,7 +906,7 @@ U0 EdInsHexEd()
Free(e); Free(e);
} }
class CEdBinary class CEdBin
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n"; U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n";
I64 bin_num fmtstr "$$DA,512,A=\"Bin Num:%d\"$$\n"; I64 bin_num fmtstr "$$DA,512,A=\"Bin Num:%d\"$$\n";
@@ -915,9 +915,9 @@ class CEdBinary
U8 bin_ptr_link_tag[512] fmtstr "$$DA-P,511,A=\"File Bin Tag:%s\"$$\n"; U8 bin_ptr_link_tag[512] fmtstr "$$DA-P,511,A=\"File Bin Tag:%s\"$$\n";
}; };
U0 EdInsBinary(I64 bin_num,I64 type) U0 EdInsBin(I64 bin_num,I64 type)
{ {
CEdBinary *e=CAlloc(sizeof(CEdBinary)); CEdBin *e=CAlloc(sizeof(CEdBin));
StrPrint(e->tag,"<%d>",bin_num); StrPrint(e->tag,"<%d>",bin_num);
e->bin_num=bin_num; e->bin_num=bin_num;
e->bin_ptr_link_bin_num=1; e->bin_ptr_link_bin_num=1;
@@ -1036,15 +1036,22 @@ I64 PopUpSpriteType()
I64 i; I64 i;
CDoc *doc=DocNew; CDoc *doc=DocNew;
DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Graphic Sprite Resource Menu\"$$\n" DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Graphic Sprite Resource Menu\"$$\n"
"$$LK+PU+CX,\"Click for Help\",A=\"FI:::/Doc/Resource.TXT.Z\"$$\n" "$$LK+PU+CX,\"Click for Help\",A=\"FI:::/Doc/Resource.TXT.Z\"$$\n\n"
"\n$$LTBLUE$$$$MU,\"Make Sprite\",LE=EST_SPRITE$$\n" "$$LTBLUE$$$$MU,\"Make Sprite\",LE=EST_SPRITE$$$$FG$$\t "
"$$MU,\"Pointer to Sprite\",LE=EST_SPRITE_PTR$$\n" "Start by making a sprite.\n"
"$$MU,\"Duplicate Sprite\",LE=EST_DUP_SPRITE$$\n" "$$LTBLUE$$$$MU,\"Ptr to Sprite\",LE=EST_SPRITE_PTR$$$$FG$$\t "
"$$MU,\"Sprite Size (not really needed)\",LE=EST_SPRITE_SIZE$$\n" "Insert pointer into src code.\n"
"$$MU,\"Sprite Macro (Icon)\",LE=EST_SPRITE_MACRO$$\n" "$$LTBLUE$$$$MU,\"Duplicate Sprite\",LE=EST_DUP_SPRITE$$$$FG$$ "
"$$MU,\"Sprite Menu Item\",LE=EST_SPRITE_MENU$$\n" "Make dup image for in a doc.\n"
"$$MU,\"Sprite Link\",LE=EST_SPRITE_LINK$$\n" "$$LTBLUE$$$$MU,\"Sprite Size\",LE=EST_SPRITE_SIZE$$$$FG$$\t "
"\n$$MU,\"Abort\",LE=DOCM_CANCEL$$\n\n"); "Insert size of a sprite into src code.\n"
"$$LTBLUE$$$$MU,\"Sprite Macro\",LE=EST_SPRITE_MACRO$$$$FG$$\t "
"Create icon with auto-text payload.\n"
"$$LTBLUE$$$$MU,\"Sprite Menu Item\",LE=EST_SPRITE_MENU$$$$FG$$ "
"Create icon with numeric payload.\n"
"$$LTBLUE$$$$MU,\"Sprite Link\",LE=EST_SPRITE_LINK$$$$FG$$\t "
"Create icon with link payload.\n\n"
"$$LTBLUE$$$$MU,\"Abort\",LE=DOCM_CANCEL$$\n\n");
i=PopUpMenu(doc); i=PopUpMenu(doc);
DocDel(doc); DocDel(doc);
return i; return i;
@@ -1123,13 +1130,13 @@ U8 *EdSprite(I64 bin_num)
CatPrint(buf,"+PU"); CatPrint(buf,"+PU");
break; break;
case EST_SPRITE_PTR: case EST_SPRITE_PTR:
EdInsBinary(--bin_num,DOCT_INS_BINARY); EdInsBin(--bin_num,DOCT_INS_BIN);
break; break;
case EST_SPRITE_SIZE: case EST_SPRITE_SIZE:
EdInsBinary(--bin_num,DOCT_INS_BINARY_SIZE); EdInsBin(--bin_num,DOCT_INS_BIN_SIZE);
break; break;
case EST_DUP_SPRITE: case EST_DUP_SPRITE:
EdInsBinary(--bin_num,DOCT_SPRITE); EdInsBin(--bin_num,DOCT_SPRITE);
break; break;
} }
if (st1) { if (st1) {
+3 -3
View File
@@ -157,7 +157,7 @@ public U8 *BibleLine2Verse(I64 line,I64 separate_ch=CH_SPACE)
ptr+=StrLen(ptr)+1; ptr+=StrLen(ptr)+1;
} }
if (0<=--i<cnt) { if (0<=--i<cnt) {
doc=DocRead(BIBLE_FILENAME,DOCF_PLAIN_TEXT); doc=DocRead(BIBLE_FILENAME,DOCF_PLAIN_TEXT|DOCF_NO_CURSOR);
DocLineNumGoTo(doc,line); //one based DocLineNumGoTo(doc,line); //one based
doc_e=doc->cur_entry; doc_e=doc->cur_entry;
while (doc_e!=doc && (doc_e->type_u8!=DOCT_TEXT || !*doc_e->tag)) while (doc_e!=doc && (doc_e->type_u8!=DOCT_TEXT || !*doc_e->tag))
@@ -214,7 +214,7 @@ public U0 BibleLines(CDoc *doc_out=NULL,I64 start,I64 lines)
CDocEntry *doc_e; CDocEntry *doc_e;
if (!doc_out) doc_out=DocPut; if (!doc_out) doc_out=DocPut;
if (doc_out && FileFind(BIBLE_FILENAME)) { if (doc_out && FileFind(BIBLE_FILENAME)) {
doc_in=DocRead(BIBLE_FILENAME,DOCF_PLAIN_TEXT); doc_in=DocRead(BIBLE_FILENAME,DOCF_PLAIN_TEXT|DOCF_NO_CURSOR);
DocLineNumGoTo(doc_in,start); //one based DocLineNumGoTo(doc_in,start); //one based
doc_e=doc_in->cur_entry; doc_e=doc_in->cur_entry;
while (lines>0 && doc_e!=doc_in) { while (lines>0 && doc_e!=doc_in) {
@@ -247,7 +247,7 @@ public U0 BibleVerse(CDoc *doc_out=NULL,U8 *verse,I64 lines)
i=DefineMatch(st,"ST_BIBLE_BOOKS",LMF_IGNORE_CASE); i=DefineMatch(st,"ST_BIBLE_BOOKS",LMF_IGNORE_CASE);
if (i>=0) { if (i>=0) {
i=Str2I64(DefineSub(i,"ST_BIBLE_BOOK_LINES")); i=Str2I64(DefineSub(i,"ST_BIBLE_BOOK_LINES"));
doc_in=DocRead(BIBLE_FILENAME,DOCF_PLAIN_TEXT); doc_in=DocRead(BIBLE_FILENAME,DOCF_PLAIN_TEXT|DOCF_NO_CURSOR);
DocLineNumGoTo(doc_in,i); //one based DocLineNumGoTo(doc_in,i); //one based
if (*st2) { if (*st2) {
StrCpy(doc_in->find_replace->find_text,st2); StrCpy(doc_in->find_replace->find_text,st2);
+3 -2
View File
@@ -8,7 +8,7 @@ There's something obviously different about people in the Bible compared to peop
You can't tell if God's talking unless you have a context of conversation, but, more importantly, you are commanded to do an offering of love, like communion preparation. $LK,"1 Corinthians,11:27",A="BF:1 Corinthians,11:27"$ When you pick a greeting card for someone, that is love effort. If you expect God to put effort toward you, you must put effort toward Him. God said, "honest measures" applies between your offering of love and His response, like a fair barter. You get out of prayer what you put into it. God wants praise, hymns, or whatever you think He might want. Try and see, like Cain and Abel. $LK,"Genesis,4:1",A="BF:Genesis,4:1"$, $LK,"Ephesians,5:10",A="BF:Ephesians,5:10"$ God told Cain his offering was not good and told him to try again. Cain really loved God! Can you imagine being so heart-broken? You can't tell if God's talking unless you have a context of conversation, but, more importantly, you are commanded to do an offering of love, like communion preparation. $LK,"1 Corinthians,11:27",A="BF:1 Corinthians,11:27"$ When you pick a greeting card for someone, that is love effort. If you expect God to put effort toward you, you must put effort toward Him. God said, "honest measures" applies between your offering of love and His response, like a fair barter. You get out of prayer what you put into it. God wants praise, hymns, or whatever you think He might want. Try and see, like Cain and Abel. $LK,"Genesis,4:1",A="BF:Genesis,4:1"$, $LK,"Ephesians,5:10",A="BF:Ephesians,5:10"$ God told Cain his offering was not good and told him to try again. Cain really loved God! Can you imagine being so heart-broken?
Do a text search for "new song" in the Bible. It's mentioned nine times. When I hear a NEW awesome rock song, it is ecstasy for the first five times I hear it. Soon, it brings little-to-no pleasure. I did $MA-X+PU,"hymns",HTML="http://www.templeos.org/Wb/Home/Wb2/HymnVideos.html",LM="#include \"::/Apps/Psalmody/Load\";JukeBox(\"::/Apps/Psalmody/Examples\");"$ for God. I also did Moses $MA-X+PU,"comics",HTML="http://www.templeos.org/Wb/Home/Wb2/Files/Comics/",LM="Dir(\"::/Apps/AfterEgypt/Comics\");View;\n"$ for God. When you get to the gates of Heaven, St. Peter will ask how many times you gave blood. That shows you loved neighbor. You better also be able to count the ways you loved God with all heart mind and soul. I praised God for sand castles, popcorn, snowmen, bubbles... You try putting effort into praise! $LK,"Matthew,11:25",A="BF:Matthew,11:25"$, $LK,"Matthew,6:29",A="BF:Matthew,6:29"$ Do a text search for "new song" in the Bible. It's mentioned nine times. When I hear a NEW awesome rock song, it is ecstasy for the first five times I hear it. Soon, it brings little-to-no pleasure. I did $MA-X+PU,"hymns",HTML="http://www.templeos.org/Wb/Home/Web/HymnVideos.html",LM="#include \"::/Apps/Psalmody/Load\";JukeBox(\"::/Apps/Psalmody/Examples\");"$ for God. I also did Moses $MA-X+PU,"comics",HTML="http://www.templeos.org/Wb/Home/Downloads/Comics/",LM="Dir(\"::/Apps/AfterEgypt/Comics\");View;\n"$ for God. When you get to the gates of Heaven, St. Peter will ask how many times you gave blood. That shows you loved neighbor. You better also be able to count the ways you loved God with all heart mind and soul. I praised God for sand castles, popcorn, snowmen, bubbles... You try putting effort into praise! $LK,"Matthew,11:25",A="BF:Matthew,11:25"$, $LK,"Matthew,6:29",A="BF:Matthew,6:29"$
This is funny -- $LK,"Acts,2:1",A="BF:Acts,2:1"$ -- they didn't bother to record anything the Holy Spirit said. The Holy Spirit is supposed to be a really good gift. $LK,"Luke,11:13",A="BF:Luke,11:13"$ Just remember, "Boys are made of snakes and snails and puppy-dog tails." This is funny -- $LK,"Acts,2:1",A="BF:Acts,2:1"$ -- they didn't bother to record anything the Holy Spirit said. The Holy Spirit is supposed to be a really good gift. $LK,"Luke,11:13",A="BF:Luke,11:13"$ Just remember, "Boys are made of snakes and snails and puppy-dog tails."
@@ -135,10 +135,11 @@ Chess? $FG,4$"... will winter with you."$FG$
If You could teach one class? $FG,4$Health$FG$ If You could teach one class? $FG,4$Health$FG$
Favorite video game? $FG,4$Donkey Kong$FG$ Favorite video game? $FG,4$Donkey Kong$FG$
Favorite National Park? $FG,4$$TX,"Whitman Mission",HTML="http://www.nps.gov/whmi/index.htm"$$FG$ Favorite National Park? $FG,4$$TX,"Whitman Mission",HTML="http://www.nps.gov/whmi/index.htm"$$FG$
Favorite National Anthem? $FG,4$$TX,"Latvia's National Anthem",HTML="http://www.youtube.com/watch?v=qKITbBjO4nE"$$FG$
Favorite actor? $FG,4$Hugh Grant$FG$ Favorite actor? $FG,4$Hugh Grant$FG$
Favorite vocalist? $FG,4$Mick Jagger$FG$ Favorite vocalist? $FG,4$Mick Jagger$FG$
Favorite guitarist? $FG,4$"$TX,"Simmons Destroyer",HTML="http://www.youtube.com/watch?v=nNADrrjTysk&t=3m55s"$"$FG$ Favorite guitarist? $FG,4$"$TX,"Simmons Destroyer",HTML="http://www.youtube.com/watch?v=nNADrrjTysk&t=3m55s"$"$FG$
Favorite National Anthem? $FG,4$$TX,"Latvia's National Anthem",HTML="http://www.youtube.com/watch?v=qKITbBjO4nE"$$FG$
America the Beautiful? $FG,4$Hates it. Poet was too in love with own beauty.$FG$
Model for new $TX,"Sistine Chapel",HTML="http://en.wikipedia.org/wiki/Sistine_chapel"$? $FG,4$Ben Franklin$FG$ Model for new $TX,"Sistine Chapel",HTML="http://en.wikipedia.org/wiki/Sistine_chapel"$? $FG,4$Ben Franklin$FG$
Voice if God wanted to sing? $FG,4$$TX,"Stabbing Westward's singer",HTML="https://www.youtube.com/watch?v=5NZsCYOM4j0"$$FG$ Voice if God wanted to sing? $FG,4$$TX,"Stabbing Westward's singer",HTML="https://www.youtube.com/watch?v=5NZsCYOM4j0"$$FG$
Stonehenge? $FG,4$Landmark for boundaries.$FG$ Stonehenge? $FG,4$Landmark for boundaries.$FG$
+2 -4
View File
@@ -240,7 +240,7 @@ public I64 GrFloodFill(CDC *dc=gr.dc,I64 x,I64 y,
Bool not_color=FALSE,I64 z=0,I32 *db=NULL) Bool not_color=FALSE,I64 z=0,I32 *db=NULL)
{//2D. Ignore z and db. {//2D. Ignore z and db.
//not_color=TRUE means fill up to everything which is not the current color. //not_color=TRUE means fill up to everything which is not the current color.
//not_color=FALSE means fill all parts equal to the color under the point. //not_color=FALSE means fill all parts equ to the color under the point.
//Returns cnt of pixs changed //Returns cnt of pixs changed
I64 result=0,j,old_flags=dc->flags; I64 result=0,j,old_flags=dc->flags;
CColorROPU32 old_color2=dc->color2; CColorROPU32 old_color2=dc->color2;
@@ -711,7 +711,7 @@ public Bool GrRegPoly3(CDC *dc=gr.dc,
public I64 GrFloodFill3(CDC *dc=gr.dc,I64 x1,I64 y1,I64 z1,Bool not_color=FALSE) public I64 GrFloodFill3(CDC *dc=gr.dc,I64 x1,I64 y1,I64 z1,Bool not_color=FALSE)
{//3D. Transformation. {//3D. Transformation.
//not_color=TRUE means fill up to everything which is not the current color. //not_color=TRUE means fill up to everything which is not the current color.
//not_color=FALSE means fill all parts equal to the color under the point. //not_color=FALSE means fill all parts equ to the color under the point.
//Returns cnt of pixs changed //Returns cnt of pixs changed
I64 result,old_flags=dc->flags, I64 result,old_flags=dc->flags,
_x,_y,_z; _x,_y,_z;
@@ -1364,13 +1364,11 @@ p4y
1 1
4 4
2 2
1 1
4 4
2 2
1 1
4 4
+3 -2
View File
@@ -15,7 +15,8 @@ making CSprite by hand. It uses $LK,"SPT_MESH",A="MN:SPT_MESH"$,
one of the most complicated. one of the most complicated.
*/ */
public U0 Sprite3(CDC *dc=gr.dc,I64 x,I64 y,I64 z,U8 *elems,Bool just_one=FALSE) public U0 Sprite3(CDC *dc=gr.dc,I64 x,I64 y,I64 z,U8 *elems,
Bool just_one_elem=FALSE)
{//Plot a sprite into a CDC. {//Plot a sprite into a CDC.
CSprite *tempg=elems-offset(CSprite.start); CSprite *tempg=elems-offset(CSprite.start);
I64 i,j,k,x1,y1,z1,x2,y2, I64 i,j,k,x1,y1,z1,x2,y2,
@@ -252,7 +253,7 @@ public U0 Sprite3(CDC *dc=gr.dc,I64 x,I64 y,I64 z,U8 *elems,Bool just_one=FALSE)
dc->nearest_sprite_elem_num=cur_sprite_elem_num; dc->nearest_sprite_elem_num=cur_sprite_elem_num;
} }
cur_sprite_elem_num++; cur_sprite_elem_num++;
if (just_one) break; if (just_one_elem) break;
tempg(U8 *)+=SpriteElemSize(tempg); tempg(U8 *)+=SpriteElemSize(tempg);
} }
MemCpy(&dc->sym,&old_sym,sizeof(CGrSym)); MemCpy(&dc->sym,&old_sym,sizeof(CGrSym));
+1 -1
View File
@@ -1153,7 +1153,7 @@ U0 EdSpriteIns(CDoc *doc,I64 x,I64 y)
DocUnlock(doc); DocUnlock(doc);
} }
} }
if (!(doc->flags & (DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_WITH_TABS))) if (!(doc->flags & (DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_TABS)))
DocBinsValidate(doc); DocBinsValidate(doc);
} }
+1 -1
View File
@@ -385,7 +385,7 @@ U0 MPDrawIt(CMeshFrame *e)
CMeshEdTri *tempt=e->tri_root.next; CMeshEdTri *tempt=e->tri_root.next;
I64 i,*old_r=dc->r; I64 i,*old_r=dc->r;
//$LK,"DCAlias",A="MN:DCAlias"$() alllocs a new identity rotation matrix. //$LK,"DCAlias",A="MN:DCAlias"$() allocs a new identity rotation matrix.
//We want e->dc's rotation matrix. //We want e->dc's rotation matrix.
dc->r=e->dc->r; dc->r=e->dc->r;
+13 -21
View File
@@ -42,16 +42,15 @@ public Bool MakeOSDrvBootInstall(U8 src_drv=0,U8 dst_drv=0)
I64 i,type; I64 i,type;
try { try {
if (!src_drv) src_drv=Drv2Let(Fs->cur_dv); if (!src_drv) src_drv=Drv2Let(Fs->cur_dv);
src_drv=ToUpper(src_drv);
if (!dst_drv) dst_drv=src_drv; if (!dst_drv) dst_drv=src_drv;
dst_drv=ToUpper(dst_drv);
if (!Drv(src_drv)) if (!Drv(src_drv))
throw; throw;
MakeAll; MakeAll;
try { if ((bd=Let2BlkDev(dst_drv,FALSE)) && (dv=Let2Drv(dst_drv,FALSE)))
bd=Let2BlkDev(dst_drv);
dv=Let2Drv(dst_drv);
type=bd->type; type=bd->type;
} catch { else {
Fs->catch_except=TRUE;
type=BDT_ATAPI; type=BDT_ATAPI;
PrintWarn("Defaulting to CD/DVD dst.\n"); PrintWarn("Defaulting to CD/DVD dst.\n");
} }
@@ -100,8 +99,8 @@ public U0 MasterBootOldRead(U8 src_drv,U8 dst_drv)
CMasterBoot mbr; CMasterBoot mbr;
Drv(dst_drv); Drv(dst_drv);
dv=Fs->cur_dv; dv=Fs->cur_dv;
if (dv->type!=DVT_REDSEA && dv->type!=DVT_FAT32) if (dv->fs_type!=FSt_REDSEA && dv->fs_type!=FSt_FAT32)
PrintErr("Not RedSea Drv\n"); PrintErr("File System Not Supported\n");
else { else {
//Bypass partition bounds-checking //Bypass partition bounds-checking
BlkDevLock(bd); BlkDevLock(bd);
@@ -146,7 +145,7 @@ public U0 MasterBootZero(U8 dst_drv)
BlkDevUnlock(bd); BlkDevUnlock(bd);
} }
public Bool MasterBootIntall(U8 drv_let,U8 *drv_lst=NULL) public Bool MasterBootInstall(U8 drv_let,U8 *drv_lst=NULL)
{//Create new MBR on the disk that has drv_let as a partition. {//Create new MBR on the disk that has drv_let as a partition.
//Puts stage 2 in BOOT_DIR of drv_let. //Puts stage 2 in BOOT_DIR of drv_let.
CBlkDev *bd,*bd1; CBlkDev *bd,*bd1;
@@ -158,9 +157,10 @@ public Bool MasterBootIntall(U8 drv_let,U8 *drv_lst=NULL)
Bool result=FALSE; Bool result=FALSE;
try { try {
if (drv_lst) if (drv_lst) {
StrCpy(buf,drv_lst); StrCpy(buf,drv_lst);
else { StrUtil(buf,SUF_TO_UPPER);
} else {
j=0; j=0;
for (i='A';i<='Z';i++) for (i='A';i<='Z';i++)
buf[j++]=i; buf[j++]=i;
@@ -169,8 +169,8 @@ public Bool MasterBootIntall(U8 drv_let,U8 *drv_lst=NULL)
Drv(drv_let); Drv(drv_let);
dv=Fs->cur_dv; dv=Fs->cur_dv;
if (dv->type!=DVT_REDSEA && dv->type!=DVT_FAT32) if (dv->fs_type!=FSt_REDSEA && dv->fs_type!=FSt_FAT32)
PrintErr("Not RedSea Drv\n"); PrintErr("File System Not Supported\n");
else { else {
bd=Let2BlkDev(drv_let); bd=Let2BlkDev(drv_let);
if (!FileFind(BOOT_DIR_OLDMBR_BIN_C,,FUF_JUST_FILES)) if (!FileFind(BOOT_DIR_OLDMBR_BIN_C,,FUF_JUST_FILES))
@@ -190,15 +190,7 @@ public Bool MasterBootIntall(U8 drv_let,U8 *drv_lst=NULL)
ptr=buf; ptr=buf;
while (ch=*ptr++) { while (ch=*ptr++) {
try { if ((p1=Let2Drv(ch,FALSE)) && (bd1=Let2BlkDev(ch,FALSE)) && bd1==bd) {
p1 =Let2Drv(ch);
bd1=Let2BlkDev(ch);
} catch {
Fs->catch_except=TRUE;
p1 =NULL;
bd1=NULL;
}
if (p1 && bd1==bd) {
*_q=p1->base_offset; *_q=p1->base_offset;
"Drive %C:%16X\n",Drv2Let(p1),*_q; "Drive %C:%16X\n",Drv2Let(p1),*_q;
CatPrint(menu_ptr,"%d. Drive %C\n\r",j++,Drv2Let(p1)); CatPrint(menu_ptr,"%d. Drive %C\n\r",j++,Drv2Let(p1));
+2 -2
View File
@@ -237,8 +237,8 @@ Bool DiffBins(CDoc *doc1,CDoc *doc2)
public Bool Diff(U8 *dst_file,U8 *src_file,I64 *_df_flags=NULL) public Bool Diff(U8 *dst_file,U8 *src_file,I64 *_df_flags=NULL)
{//Report differences between two files and merge differences {//Report differences between two files and merge differences
//from src_file to dst_file. Don't use _df_flags arg. (Used by $LK,"Merge",A="MN:Merge"$().) //from src_file to dst_file. Don't use _df_flags arg. (Used by $LK,"Merge",A="MN:Merge"$().)
CDoc *doc1=DocRead(dst_file,DOCF_PLAIN_TEXT_WITH_TABS|DOCF_NO_CURSOR), CDoc *doc1=DocRead(dst_file,DOCF_PLAIN_TEXT_TABS|DOCF_NO_CURSOR),
*doc2=DocRead(src_file,DOCF_PLAIN_TEXT_WITH_TABS|DOCF_NO_CURSOR); *doc2=DocRead(src_file,DOCF_PLAIN_TEXT_TABS|DOCF_NO_CURSOR);
CDocEntry *doc_e,**doc_sorted1,**doc_sorted2,**doc_unsorted1,**doc_unsorted2; CDocEntry *doc_e,**doc_sorted1,**doc_sorted2,**doc_unsorted1,**doc_unsorted2;
I64 i,cnt1=0,cnt2=0,df_flags; I64 i,cnt1=0,cnt2=0,df_flags;
Bool result=FALSE; Bool result=FALSE;
+2 -2
View File
@@ -30,7 +30,7 @@ I64 FindFile(U8 *needle_str,U8 *haystack_filename,
U8 *src,*dst,*dst2,*name_buf=NULL; U8 *src,*dst,*dst2,*name_buf=NULL;
I64 i,j,plen,rlen,dlen,cnt=0,old_flags,ss_flags; I64 i,j,plen,rlen,dlen,cnt=0,old_flags,ss_flags;
CDoc *cur_l,*doc=DocRead(haystack_filename, CDoc *cur_l,*doc=DocRead(haystack_filename,
DOCF_PLAIN_TEXT_WITH_TABS|DOCF_NO_CURSOR); DOCF_PLAIN_TEXT_TABS|DOCF_NO_CURSOR);
CDocEntry *doc_e; CDocEntry *doc_e;
if (Bt(_fuf_flags,FUf_IGNORE)) if (Bt(_fuf_flags,FUf_IGNORE))
@@ -118,7 +118,7 @@ I64 FindFile(U8 *needle_str,U8 *haystack_filename,
DocDel(doc); DocDel(doc);
"Wrote:%s\n",name_buf; "Wrote:%s\n",name_buf;
Ed(name_buf); Ed(name_buf);
doc=DocRead(name_buf, DOCF_PLAIN_TEXT_WITH_TABS); doc=DocRead(name_buf, DOCF_PLAIN_TEXT_TABS);
doc_e=doc->cur_entry; doc_e=doc->cur_entry;
if (doc_e->last!=doc) doc_e=doc_e->last; if (doc_e->last!=doc) doc_e=doc_e->last;
src=NULL; src=NULL;
+73 -2
View File
@@ -7,7 +7,11 @@
class CHeapLog class CHeapLog
{ {
CHeapLog *next,*last; CHeapLog *next,*last;
union {
U8 *addr; U8 *addr;
I64 size;
}
I64 cnt;
U8 *caller[HL_CALLER_DEPTH]; U8 *caller[HL_CALLER_DEPTH];
}; };
@@ -67,7 +71,7 @@ U0 HeapLogFree(U8 *addr)
} }
public Bool HeapLog(Bool val=ON,CTask *task=NULL) public Bool HeapLog(Bool val=ON,CTask *task=NULL)
{//Turn on. Collect data. Call $LK,"HeapLogRep",A="MN:HeapLogRep"$(). {//Turn on. Collect data. Call $LK,"HeapLogAddrRep",A="MN:HeapLogAddrRep"$() or $LK,"HeapLogSizeRep",A="MN:HeapLogSizeRep"$().
I64 i; I64 i;
if (val) { if (val) {
if (Bt(&sys_semas[SYS_SEMA_HEAPLOG_ACTIVE],0)) { if (Bt(&sys_semas[SYS_SEMA_HEAPLOG_ACTIVE],0)) {
@@ -108,7 +112,7 @@ public Bool HeapLog(Bool val=ON,CTask *task=NULL)
} }
} }
public U0 HeapLogRep(Bool leave_it=OFF) public U0 HeapLogAddrRep(Bool leave_it=OFF)
{//Call $LK,"HeapLog",A="MN:HeapLog"$() first and collect data. {//Call $LK,"HeapLog",A="MN:HeapLog"$() first and collect data.
I64 i,j,total=0; I64 i,j,total=0;
CHeapLog *temphl,hl; CHeapLog *temphl,hl;
@@ -138,3 +142,70 @@ public U0 HeapLogRep(Bool leave_it=OFF)
if (!leave_it) if (!leave_it)
HeapLog(OFF); HeapLog(OFF);
} }
public U0 HeapLogSizeRep(Bool leave_it=OFF)
{//Call $LK,"HeapLog",A="MN:HeapLog"$() first and collect data.
I64 i,j,k,total=0;
CHeapLog *temphla,hla,*temphls,*temphls1;
CHeapLogHash *size_root;
if (!LBtr(&sys_semas[SYS_SEMA_HEAPLOG_ACTIVE],0)) {
"HeapLog Not Active\n";
return;
}
size_root=MAlloc(sizeof(CHeapLogHash)*HL_HASH_SIZE,heaplog_hc);
for (i=0;i<HL_HASH_SIZE;i++)
QueInit(&size_root[i]);
"$$WW,0$$";
while (LBts(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0))
PAUSE
for (i=0;i<HL_HASH_SIZE;i++) {
temphla=heaplog_root[i].next;
while (temphla!=&heaplog_root[i]) {
//Take snapshot in case modified. (while we work)
MemCpy(&hla,temphla,sizeof(CHeapLog));
k=(MSize(hla.addr)>>3+hla.caller[0])&(HL_HASH_SIZE-1);
temphls=size_root[k].next;
while (temphls!=&size_root[k]) {
if (MSize(hla.addr)==temphls->size) {
for (j=0;j<HL_CALLER_DEPTH;j++)
if (hla.caller[j]!=temphls->caller[j])
goto hl_next;
temphls->cnt++;
goto hl_found;
}
hl_next:
temphls=temphls->next;
}
temphls=MAlloc(sizeof(CHeapLog),heaplog_hc);
MemCpy(temphls,&hla,sizeof(CHeapLog));
temphls->cnt=1;
temphls->size=MSize(hla.addr);
QueIns(temphls,size_root[k].last);
hl_found:
temphla=hla.next;
}
}
LBtr(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0);
for (i=0;i<HL_HASH_SIZE;i++) {
temphls=size_root[i].next;
while (temphls!=&size_root[i]) {
temphls1=temphls->next;
"%08X*%08X=%08X",temphls->size,temphls->cnt,temphls->size*temphls->cnt;
for (j=0;j<HL_CALLER_DEPTH;j++)
" %P",temphls->caller[j];
'\n';
total+=temphls->size*temphls->cnt;
Free(temphls);
temphls=temphls1;
}
}
Free(size_root);
"\n$$LTRED$$Total:%08X$$FG$$\n",total;
LBts(&sys_semas[SYS_SEMA_HEAPLOG_ACTIVE],0);
if (!leave_it)
HeapLog(OFF);
}
+2 -2
View File
@@ -20,7 +20,7 @@ public I64 Sort(U8 *_in_name,U8 *_out_name=NULL,
else else
out_name=StrNew(in_name); out_name=StrNew(in_name);
doc=DocRead(in_name,DOCF_PLAIN_TEXT_WITH_TABS|DOCF_NO_CURSOR); doc=DocRead(in_name,DOCF_PLAIN_TEXT_TABS|DOCF_NO_CURSOR);
doc_e=doc->root.next; doc_e=doc->root.next;
while (doc_e!=doc) { while (doc_e!=doc) {
if (doc_e->type_u8==DOCT_TEXT) if (doc_e->type_u8==DOCT_TEXT)
@@ -159,7 +159,7 @@ U0 SUFile(U8 *filename,I64 suf_flags,F64 indent_scale_factor)
U8 *dst; U8 *dst;
Bool chged=FALSE; Bool chged=FALSE;
I64 reduced=0; I64 reduced=0;
CDoc *doc=DocRead(filename,DOCF_PLAIN_TEXT_WITH_TABS | DOCF_NO_CURSOR); CDoc *doc=DocRead(filename,DOCF_PLAIN_TEXT_TABS|DOCF_NO_CURSOR);
CDocEntry *doc_e=doc->root.next; CDocEntry *doc_e=doc->root.next;
while (doc_e!=doc) { while (doc_e!=doc) {
if (doc_e->type_u8==DOCT_TEXT) { if (doc_e->type_u8==DOCT_TEXT) {
+1 -1
View File
@@ -308,7 +308,7 @@ public U0 ToHtml(U8 *_in_name,U8 *_out_name=NULL,U8 *html_header=NULL,
SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$
WinHorz(0,width-1); //Sets doc width for word wrap. WinHorz(0,width-1); //Sets doc width for word wrap.
in_name=DftExt(_in_name,"CPP.Z"), in_name=DftExt(_in_name,"CPP.Z");
if (_out_name) if (_out_name)
out_name=DftExt(_out_name,"html"); out_name=DftExt(_out_name,"html");
else else
+1 -1
View File
@@ -110,7 +110,7 @@ public U0 ToTXT(U8 *_in_name,U8 *_out_name=NULL,I64 width=70)
SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$
WinHorz(0,width-1); //Sets doc width for word wrap. WinHorz(0,width-1); //Sets doc width for word wrap.
in_name=DftExt(_in_name,"TXT.Z"), in_name=DftExt(_in_name,"TXT.Z");
if (_out_name) if (_out_name)
out_name=DftExt(_out_name,"TXT"); out_name=DftExt(_out_name,"TXT");
else else
+1 -1
View File
@@ -8,7 +8,7 @@ $WW,1$$FG,5$$TX+CX,"Psalmody Help"$$FG$
* The first line of the $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ song files is a comment with a category recognized by $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.CPP,JukeBox"$(). The categories are $FG,2$"no nothing"$FG$, $FG,2$"has words"$FG$, $FG,2$"has graphics"$FG$, or $FG,2$"special"$FG$. The third character in the song comment is a digit rating number, shown in $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.CPP,JukeBox"$(). You can set the song rating in $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.CPP,JukeBox"$() by pressing $FG,2$0$FG$-$FG,2$9$FG$. You can press $FG,2$<DELETE>$FG$ to delete songs. * The first line of the $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ song files is a comment with a category recognized by $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.CPP,JukeBox"$(). The categories are $FG,2$"no nothing"$FG$, $FG,2$"has words"$FG$, $FG,2$"has graphics"$FG$, or $FG,2$"special"$FG$. The third character in the song comment is a digit rating number, shown in $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.CPP,JukeBox"$(). You can set the song rating in $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.CPP,JukeBox"$() by pressing $FG,2$0$FG$-$FG,2$9$FG$. You can press $FG,2$<DELETE>$FG$ to delete songs.
* You can take the $LK,"Play",A="MN:Play"$() statements out of a song file and place them in your programs. You can also add a song to a document with $FG,2$<CTRL-l>$FG$, but you should do it after pressing $FG,2$<CTRL-t>$FG$ because the clipboard-insert in $FG,2$<CTRL-l>$FG$ is screwy. See this $SO,"<Song>",A="2qG3ECB2eGG3qCeFDsBGBG2qG3ECB2eGG3qCeFDsBGBGqEeEFqEB2eG3FetCAGqFCEeEFqEB2eG3FetCAGqFC"$ after pressing $FG,2$<CTRL-t>$FG$, now. * You can take the $LK,"Play",A="MN:Play"$() stmts out of a song file and place them in your programs. You can also add a song to a document with $FG,2$<CTRL-l>$FG$, but you should do it after pressing $FG,2$<CTRL-t>$FG$ because the clipboard-insert in $FG,2$<CTRL-l>$FG$ is screwy. See this $SO,"<Song>",A="2qG3ECB2eGG3qCeFDsBGBG2qG3ECB2eGG3qCeFDsBGBGqEeEFqEB2eG3FetCAGqFCEeEFqEB2eG3FetCAGqFC"$ after pressing $FG,2$<CTRL-t>$FG$, now.
* You can call $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.CPP,JukeBox"$("::/Home/Psalmody"); to play your songs. * You can call $LK,"JukeBox",A="FF:::/Apps/Psalmody/JukeBox.CPP,JukeBox"$("::/Home/Psalmody"); to play your songs.
+1 -1
View File
@@ -77,7 +77,7 @@ U0 AsmHashLoad()
i=LstMatch(cc->cur_str,"R8\0R16\0R32\0R64\0SEG\0FSTK\0" i=LstMatch(cc->cur_str,"R8\0R16\0R32\0R64\0SEG\0FSTK\0"
"MM\0XMM\0OPCODE\0KEYWORD\0ASM_KEYWORD\0"); "MM\0XMM\0OPCODE\0KEYWORD\0ASM_KEYWORD\0");
if (i<0) if (i<0)
LexExcept(cc,"Unknown Statement"); LexExcept(cc,"Unknown Stmt");
Lex(cc); //skip keyword Lex(cc); //skip keyword
if (cc->token!=TK_IDENT) if (cc->token!=TK_IDENT)
LexExcept(cc,"expecting identifier at "); LexExcept(cc,"expecting identifier at ");
+4 -4
View File
@@ -341,7 +341,7 @@ U0 ICMul(CIntermediateCode *tempi,I64 ip)
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,TY_REG+RT_I64,r,0,ip); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,TY_REG+RT_I64,r,0,ip);
} }
U0 ICMulEqual(CIntermediateCode *tempi,I64 ip) U0 ICMulEqu(CIntermediateCode *tempi,I64 ip)
{ {
I64 i=tempi->a2.disp,r=REG_RAX,j; I64 i=tempi->a2.disp,r=REG_RAX,j;
if (!(tempi->ic_class->raw_type&1) && if (!(tempi->ic_class->raw_type&1) &&
@@ -449,7 +449,7 @@ U0 ICDiv(CIntermediateCode *tempi,I64 ip)
TY_REG+RT_I64,REG_RAX,0,ip); TY_REG+RT_I64,REG_RAX,0,ip);
} }
U0 ICDivEqual(CIntermediateCode *tempi,Bool is_mod,I64 ip) U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip)
{ {
if (tempi->ic_flags & ICF_NOT_ADDR) { if (tempi->ic_flags & ICF_NOT_ADDR) {
if (tempi->ic_flags & ICF_A1_FIRST) { if (tempi->ic_flags & ICF_A1_FIRST) {
@@ -542,7 +542,7 @@ U0 ICMod(CIntermediateCode *tempi,I64 ip)
TY_REG+RT_I64,REG_RDX,0,ip); TY_REG+RT_I64,REG_RDX,0,ip);
} }
U0 ICAddSubEctEqual(CIntermediateCode *tempi,I64 type_pointed, U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed,
I64 t1,I64 r1,I64 d1,I64 t2,I64 r2,I64 d2, I64 t1,I64 r1,I64 d1,I64 t2,I64 r2,I64 d2,
I64 t3,I64 r3,I64 d3,I64 op,I64 ip) I64 t3,I64 r3,I64 d3,I64 op,I64 ip)
{ {
@@ -723,7 +723,7 @@ U0 ICShift(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,
ICMov(tempi,t1,r1,d1,TY_REG+RT_I64,result_reg,0,ip); ICMov(tempi,t1,r1,d1,TY_REG+RT_I64,result_reg,0,ip);
} }
U0 ICShiftEqual(CIntermediateCode *tempi,I64 type_pointed,I64 t1,I64 r1,I64 d1, U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed,I64 t1,I64 r1,I64 d1,
I64 t2,I64 r2,I64 d2,I64 t3,I64 r3,I64 d3,I64 us,I64 is,I64 ip) I64 t2,I64 r2,I64 d2,I64 t3,I64 r3,I64 d3,I64 us,I64 is,I64 ip)
{ {
I64 result_reg; I64 result_reg;
+6 -6
View File
@@ -691,7 +691,7 @@ U0 ICSwap(CIntermediateCode *tempi,I64 ip2)
} }
} }
U0 ICAndEqual(CIntermediateCode *tempi,I64 ip2) U0 ICAndEqu(CIntermediateCode *tempi,I64 ip2)
{ {
I64 i,bit; I64 i,bit;
if (tempi->a2.type&TY_MASK==TY_IMM && tempi->a1.type&TY_MASK!=TY_STK && if (tempi->a2.type&TY_MASK==TY_IMM && tempi->a1.type&TY_MASK!=TY_STK &&
@@ -706,13 +706,13 @@ U0 ICAndEqual(CIntermediateCode *tempi,I64 ip2)
return; return;
} }
} }
ICAddSubEctEqual(tempi,tempi->a1.type_pointed, ICAddSubEctEqu(tempi,tempi->a1.type_pointed,
tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->r.type,tempi->r.reg,tempi->r.disp,
tempi->a1.type,tempi->a1.reg,tempi->a1.disp, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,0x210425240423,ip2); tempi->a2.type,tempi->a2.reg,tempi->a2.disp,0x210425240423,ip2);
} }
U0 ICOrEqual(CIntermediateCode *tempi,I64 ip2) U0 ICOrEqu(CIntermediateCode *tempi,I64 ip2)
{ {
I64 i,bit; I64 i,bit;
if (tempi->a2.type&TY_MASK==TY_IMM && tempi->a1.type&TY_MASK!=TY_STK && if (tempi->a2.type&TY_MASK==TY_IMM && tempi->a1.type&TY_MASK!=TY_STK &&
@@ -727,13 +727,13 @@ U0 ICOrEqual(CIntermediateCode *tempi,I64 ip2)
return; return;
} }
} }
ICAddSubEctEqual(tempi,tempi->a1.type_pointed, ICAddSubEctEqu(tempi,tempi->a1.type_pointed,
tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->r.type,tempi->r.reg,tempi->r.disp,
tempi->a1.type,tempi->a1.reg,tempi->a1.disp, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,0x09010D0C010B,ip2); tempi->a2.type,tempi->a2.reg,tempi->a2.disp,0x09010D0C010B,ip2);
} }
U0 ICXorEqual(CIntermediateCode *tempi,I64 ip2) U0 ICXorEqu(CIntermediateCode *tempi,I64 ip2)
{ {
I64 i,bit; I64 i,bit;
if (tempi->a2.type&TY_MASK==TY_IMM && tempi->a1.type&TY_MASK!=TY_STK && if (tempi->a2.type&TY_MASK==TY_IMM && tempi->a1.type&TY_MASK!=TY_STK &&
@@ -748,7 +748,7 @@ U0 ICXorEqual(CIntermediateCode *tempi,I64 ip2)
return; return;
} }
} }
ICAddSubEctEqual(tempi,tempi->a1.type_pointed, ICAddSubEctEqu(tempi,tempi->a1.type_pointed,
tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->r.type,tempi->r.reg,tempi->r.disp,
tempi->a1.type,tempi->a1.reg,tempi->a1.disp, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,0x310635340633,ip2); tempi->a2.type,tempi->a2.reg,tempi->a2.disp,0x310635340633,ip2);
+1 -1
View File
@@ -582,7 +582,7 @@ U0 ICFCmp(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,I64 ip)
TY_REG+RT_I64,REG_RAX,0,ip); TY_REG+RT_I64,REG_RAX,0,ip);
} }
U0 ICFModEqual(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip) U0 ICFModEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip)
{ {
Bool dont_push_float,dont_pop_float; Bool dont_push_float,dont_pop_float;
CmpSetFloatOpPushPop(cc,tempi,&dont_push_float,&dont_pop_float); CmpSetFloatOpPushPop(cc,tempi,&dont_push_float,&dont_pop_float);
+1 -1
View File
@@ -1,4 +1,4 @@
U0 ICFOpEqual(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
{//for ADD,SUB,DIV,MUL {//for ADD,SUB,DIV,MUL
CICArg *a1=&tempi->a1, CICArg *a1=&tempi->a1,
*a2=&tempi->a2; *a2=&tempi->a2;
+1 -1
View File
@@ -26,7 +26,7 @@ extern CHashClass *PrsClass(
extern CHashFun *PrsFunJoin( extern CHashFun *PrsFunJoin(
CCmpCtrl *cc,CHashClass *temp_return,U8 *name,I64 fsp_flags); CCmpCtrl *cc,CHashClass *temp_return,U8 *name,I64 fsp_flags);
extern I64 PrsKeyWord(CCmpCtrl *cc); extern I64 PrsKeyWord(CCmpCtrl *cc);
extern Bool PrsStatement(CCmpCtrl *cc,I64 try_cnt=0, extern Bool PrsStmt(CCmpCtrl *cc,I64 try_cnt=0,
CCodeMisc *lb_break=NULL,I64 cmp_flags=CMPF_PRS_SEMICOLON); CCodeMisc *lb_break=NULL,I64 cmp_flags=CMPF_PRS_SEMICOLON);
extern U0 PrsStreamBlk(CCmpCtrl *cc); extern U0 PrsStreamBlk(CCmpCtrl *cc);
extern CHashClass *PrsType(CCmpCtrl *cc,CHashClass **tempc1, extern CHashClass *PrsType(CCmpCtrl *cc,CHashClass **tempc1,
+48 -49
View File
@@ -72,12 +72,12 @@ CIntermediateStruct intermediate_code_table[IC_NUM_ENTRIES]={
{IS_2_ARG,1,IST_NULL,TRUE,FALSE,0,0,0,"SUB"}, {IS_2_ARG,1,IST_NULL,TRUE,FALSE,0,0,0,"SUB"},
{IS_1_ARG,1,IST_ASSIGN,FALSE,FALSE,0,0,0,"ADD_CONST"}, {IS_1_ARG,1,IST_ASSIGN,FALSE,FALSE,0,0,0,"ADD_CONST"},
{IS_1_ARG,1,IST_ASSIGN,FALSE,FALSE,0,0,0,"SUB_CONST"}, {IS_1_ARG,1,IST_ASSIGN,FALSE,FALSE,0,0,0,"SUB_CONST"},
{IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"EQUAL_EQUAL"}, {IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"EQU_EQU"},
{IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"NOT_EQUAL"}, {IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"NOT_EQU"},
{IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"LESS"}, {IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"LESS"},
{IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"GREATER_EQUAL"}, {IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"GREATER_EQU"},
{IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"GREATER"}, {IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"GREATER"},
{IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"LESS_EQUAL"}, {IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"LESS_EQU"},
{IS_0_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"PUSH_CMP"}, {IS_0_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"PUSH_CMP"},
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"AND_AND"}, {IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"AND_AND"},
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"OR_OR"}, {IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"OR_OR"},
@@ -85,16 +85,16 @@ CIntermediateStruct intermediate_code_table[IC_NUM_ENTRIES]={
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"ASSIGN"}, {IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"ASSIGN"},
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"ASSIGN_PP"}, {IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"ASSIGN_PP"},
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"ASSIGN_MM"}, {IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"ASSIGN_MM"},
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"SHL_EQUAL"}, {IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"SHL_EQU"},
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"SHR_EQUAL"}, {IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"SHR_EQU"},
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"MUL_EQUAL"}, {IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"MUL_EQU"},
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"DIV_EQUAL"}, {IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"DIV_EQU"},
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"MOD_EQUAL"}, {IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"MOD_EQU"},
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"AND_EQUAL"}, {IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"AND_EQU"},
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"OR_EQUAL"}, {IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"OR_EQU"},
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"XOR_EQUAL"}, {IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"XOR_EQU"},
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"ADD_EQUAL"}, {IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"ADD_EQU"},
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"SUB_EQUAL"}, {IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"SUB_EQU"},
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"JMP"}, {IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"JMP"},
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"SUB_CALL"}, {IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"SUB_CALL"},
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"SWITCH"}, {IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"SWITCH"},
@@ -152,18 +152,18 @@ CIntermediateStruct intermediate_code_table[IC_NUM_ENTRIES]={
{IS_1_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_NOT_ZERO"}, {IS_1_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_NOT_ZERO"},
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_CARRY"}, {IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_CARRY"},
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_NOT_CARRY"}, {IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_NOT_CARRY"},
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_EQUAL_EQUAL"}, {IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_EQU_EQU"},
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_NOT_EQUAL"}, {IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_NOT_EQU"},
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_LESS"}, {IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_LESS"},
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_GREATER_EQUAL"}, {IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_GREATER_EQU"},
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_GREATER"}, {IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_GREATER"},
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_LESS_EQUAL"}, {IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_LESS_EQU"},
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2EQUAL_EQUAL"}, {IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2EQU_EQU"},
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2NOT_EQUAL"}, {IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2NOT_EQU"},
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2LESS"}, {IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2LESS"},
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2GREATER_EQUAL"}, {IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2GREATER_EQU"},
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2GREATER"}, {IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2GREATER"},
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2LESS_EQUAL"}, {IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2LESS_EQU"},
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_AND_ZERO"}, {IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_AND_ZERO"},
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_AND_NOT_ZERO"}, {IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_AND_NOT_ZERO"},
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BR_MM_ZERO"}, {IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BR_MM_ZERO"},
@@ -258,7 +258,6 @@ Expressions are evaluated with a stack machine.
1+(2+3)*4 1+(2+3)*4
STK[2]: 1 1 1 1 1 1 21 STK[2]: 1 1 1 1 1 1 21
STK[1]: 2 2 5 5 20 STK[1]: 2 2 5 5 20
STK[0]: 3 4 STK[0]: 3 4
@@ -299,33 +298,33 @@ R8 : RAX R9 RAX R9 RAX
cmp.to_stk_temps_map_odd[--k]=i; cmp.to_stk_temps_map_odd[--k]=i;
cmp.dual_U16_tokens1=d=CAlloc(sizeof(U32)*TK_NUM_TK); cmp.dual_U16_tokens1=d=CAlloc(sizeof(U32)*TK_NUM_TK);
d['!']=TK_NOT_EQUAL<<16+'='; d['!']=TK_NOT_EQU<<16+'=';
d['&']=TK_AND_AND<<16+'&'; d['&']=TK_AND_AND<<16+'&';
d['*']=TK_MUL_EQUAL<<16+'='; d['*']=TK_MUL_EQU<<16+'=';
d['+']=TK_PLUS_PLUS<<16+'+'; d['+']=TK_PLUS_PLUS<<16+'+';
d['-']=TK_DEREFERENCE<<16+'>'; d['-']=TK_DEREFERENCE<<16+'>';
d['/']='*'; d['/']='*';
d[':']=TK_DBL_COLON<<16+':'; d[':']=TK_DBL_COLON<<16+':';
d['<']=TK_LESS_EQUAL<<16+'='; d['<']=TK_LESS_EQU<<16+'=';
d['=']=TK_EQUAL_EQUAL<<16+'='; d['=']=TK_EQU_EQU<<16+'=';
d['>']=TK_GREATER_EQUAL<<16+'='; d['>']=TK_GREATER_EQU<<16+'=';
d['^']=TK_XOR_EQUAL<<16+'='; d['^']=TK_XOR_EQU<<16+'=';
d['|']=TK_OR_OR<<16+'|'; d['|']=TK_OR_OR<<16+'|';
d['%']=TK_MOD_EQUAL<<16+'='; d['%']=TK_MOD_EQU<<16+'=';
cmp.dual_U16_tokens2=d=CAlloc(sizeof(U32)*TK_NUM_TK); cmp.dual_U16_tokens2=d=CAlloc(sizeof(U32)*TK_NUM_TK);
d['&']=TK_AND_EQUAL<<16+'='; d['&']=TK_AND_EQU<<16+'=';
d['+']=TK_ADD_EQUAL<<16+'='; d['+']=TK_ADD_EQU<<16+'=';
d['-']=TK_MINUS_MINUS<<16+'-'; d['-']=TK_MINUS_MINUS<<16+'-';
d['/']='/'; d['/']='/';
d['<']=TK_SHL<<16+'<'; d['<']=TK_SHL<<16+'<';
d['>']=TK_SHR<<16+'>'; d['>']=TK_SHR<<16+'>';
d['^']=TK_XOR_XOR<<16+'^'; d['^']=TK_XOR_XOR<<16+'^';
d['|']=TK_OR_EQUAL<<16+'='; d['|']=TK_OR_EQU<<16+'=';
cmp.dual_U16_tokens3=d=CAlloc(sizeof(U32)*TK_NUM_TK); cmp.dual_U16_tokens3=d=CAlloc(sizeof(U32)*TK_NUM_TK);
d['-']=TK_SUB_EQUAL<<16+'='; d['-']=TK_SUB_EQU<<16+'=';
d['/']=TK_DIV_EQUAL<<16+'='; d['/']=TK_DIV_EQU<<16+'=';
cmp.binary_ops=d=CAlloc(sizeof(U32)*TK_NUM_TK); cmp.binary_ops=d=CAlloc(sizeof(U32)*TK_NUM_TK);
d['`'] =(PREC_EXP+ASSOCF_RIGHT)<<16+IC_POWER; d['`'] =(PREC_EXP+ASSOCF_RIGHT)<<16+IC_POWER;
@@ -347,11 +346,11 @@ R8 : RAX R9 RAX R9 RAX
d['<'] =PREC_CMP<<16+IC_LESS; d['<'] =PREC_CMP<<16+IC_LESS;
d['>'] =PREC_CMP<<16+IC_GREATER; d['>'] =PREC_CMP<<16+IC_GREATER;
d[TK_LESS_EQUAL] =PREC_CMP<<16+IC_LESS_EQUAL; d[TK_LESS_EQU] =PREC_CMP<<16+IC_LESS_EQU;
d[TK_GREATER_EQUAL] =PREC_CMP<<16+IC_GREATER_EQUAL; d[TK_GREATER_EQU] =PREC_CMP<<16+IC_GREATER_EQU;
d[TK_EQUAL_EQUAL] =PREC_CMP2<<16+IC_EQUAL_EQUAL; d[TK_EQU_EQU] =PREC_CMP2<<16+IC_EQU_EQU;
d[TK_NOT_EQUAL] =PREC_CMP2<<16+IC_NOT_EQUAL; d[TK_NOT_EQU] =PREC_CMP2<<16+IC_NOT_EQU;
d[TK_AND_AND] =PREC_AND_AND<<16+IC_AND_AND; d[TK_AND_AND] =PREC_AND_AND<<16+IC_AND_AND;
@@ -360,14 +359,14 @@ R8 : RAX R9 RAX R9 RAX
d[TK_OR_OR] =PREC_OR_OR<<16+IC_OR_OR; d[TK_OR_OR] =PREC_OR_OR<<16+IC_OR_OR;
d['='] =(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_ASSIGN; d['='] =(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_ASSIGN;
d[TK_SHL_EQUAL]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_SHL_EQUAL; d[TK_SHL_EQU]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_SHL_EQU;
d[TK_SHR_EQUAL]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_SHR_EQUAL; d[TK_SHR_EQU]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_SHR_EQU;
d[TK_MUL_EQUAL]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_MUL_EQUAL; d[TK_MUL_EQU]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_MUL_EQU;
d[TK_DIV_EQUAL]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_DIV_EQUAL; d[TK_DIV_EQU]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_DIV_EQU;
d[TK_MOD_EQUAL]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_MOD_EQUAL; d[TK_MOD_EQU]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_MOD_EQU;
d[TK_AND_EQUAL]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_AND_EQUAL; d[TK_AND_EQU]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_AND_EQU;
d[TK_OR_EQUAL] =(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_OR_EQUAL; d[TK_OR_EQU] =(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_OR_EQU;
d[TK_XOR_EQUAL]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_XOR_EQUAL; d[TK_XOR_EQU]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_XOR_EQU;
d[TK_ADD_EQUAL]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_ADD_EQUAL; d[TK_ADD_EQU]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_ADD_EQU;
d[TK_SUB_EQUAL]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_SUB_EQUAL; d[TK_SUB_EQU]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_SUB_EQU;
} }
+5 -5
View File
@@ -1,5 +1,5 @@
U8 *LexStatement2Bin(CCmpCtrl *cc,I64 *_type,I64 cmp_flags=0) U8 *LexStmt2Bin(CCmpCtrl *cc,I64 *_type,I64 cmp_flags=0)
{//Compile one cc statement to bin code. {//Compile one cc stmt to bin code.
I64 size,i,j,k,*result=INVALID_PTR; I64 size,i,j,k,*result=INVALID_PTR;
CCodeCtrl *tempcbh; CCodeCtrl *tempcbh;
if (_type) *_type=RT_I64; if (_type) *_type=RT_I64;
@@ -7,7 +7,7 @@ U8 *LexStatement2Bin(CCmpCtrl *cc,I64 *_type,I64 cmp_flags=0)
if (cc->aot_depth==2) if (cc->aot_depth==2)
COCPush(cc); COCPush(cc);
COCInit(cc); COCInit(cc);
if (!PrsStatement(cc,,,cmp_flags)) { if (!PrsStmt(cc,,,cmp_flags)) {
if (cc->coc.coc_root.next!=&cc->coc.coc_root) { if (cc->coc.coc_root.next!=&cc->coc.coc_root) {
cc->coc.coc_root.last->ic_flags&=~ICF_NO_DEPEND_RESULT; cc->coc.coc_root.last->ic_flags&=~ICF_NO_DEPEND_RESULT;
ICAdd(cc,IC_RETURN_VAL2,0,0); ICAdd(cc,IC_RETURN_VAL2,0,0);
@@ -81,7 +81,7 @@ CAOT *CmpJoin(CCmpCtrl *cc,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv_let=0)
cmp_flags|=CMPF_PRS_SEMICOLON; cmp_flags|=CMPF_PRS_SEMICOLON;
if (cc->flags&CCF_AOT_COMPILE) { if (cc->flags&CCF_AOT_COMPILE) {
while (cc->token!=TK_EOF) { while (cc->token!=TK_EOF) {
buf=LexStatement2Bin(cc,NULL,cmp_flags); buf=LexStmt2Bin(cc,NULL,cmp_flags);
if (buf!=INVALID_PTR) { if (buf!=INVALID_PTR) {
tempie=CAlloc(sizeof(CAOTImportExport)); tempie=CAlloc(sizeof(CAOTImportExport));
tempie->type=IET_MAIN; tempie->type=IET_MAIN;
@@ -92,7 +92,7 @@ CAOT *CmpJoin(CCmpCtrl *cc,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv_let=0)
break; break;
} }
} else } else
PrsStatement(cc,,,cmp_flags); PrsStmt(cc,,,cmp_flags);
AOTGlblsResolve(cc,result); AOTGlblsResolve(cc,result);
} catch { } catch {
if (Fs->except_ch=='Compiler' && !(cmp_flags&CMPF_ASM_BLK)) { if (Fs->except_ch=='Compiler' && !(cmp_flags&CMPF_ASM_BLK)) {
Binary file not shown.
+326 -341
View File
@@ -26,266 +26,266 @@ $LK,"ICAndBranch",A="FL:::/Compiler/BackC.CPP.Z,1",BI=22$
$LK,"MDR_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,134"$ $LK,"MDR_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,134"$
$LK,"U",A="FL:::/Compiler/UAsm.CPP.Z,649",BI=23$ $LK,"U",A="FL:::/Compiler/UAsm.CPP.Z,649",BI=23$
$LK,"ICQueRem",A="FL:::/Compiler/BackC.CPP.Z,493",BI=24$ $LK,"ICQueRem",A="FL:::/Compiler/BackC.CPP.Z,493",BI=24$
$LK,"ICAndEqual",A="FL:::/Compiler/BackC.CPP.Z,694",BI=25$
$LK,"CN_R",A="FL:::/Compiler/BackFA.CPP.Z,4"$ $LK,"CN_R",A="FL:::/Compiler/BackFA.CPP.Z,4"$
$LK,"OptLead1",A="FL:::/Compiler/OptLib.CPP.Z,73",BI=26$ $LK,"OptLead1",A="FL:::/Compiler/OptLib.CPP.Z,73",BI=25$
$LK,"CmpNoteFloatOp",A="FL:::/Compiler/BackFA.CPP.Z,6",BI=27$ $LK,"CmpNoteFloatOp",A="FL:::/Compiler/BackFA.CPP.Z,6",BI=26$
$LK,"AOTGlblsResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,76",BI=28$ $LK,"AOTGlblsResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,76",BI=27$
$LK,"ExePutS2",A="FL:::/Compiler/CMain.CPP.Z,627",BI=29$ $LK,"ExePutS2",A="FL:::/Compiler/CMain.CPP.Z,627",BI=28$
$LK,"HashEntrySize",A="FL:::/Compiler/CHash.CPP.Z,1",BI=30$ $LK,"HashEntrySize",A="FL:::/Compiler/CHash.CPP.Z,1",BI=29$
$LK,"COCPush",A="FL:::/Compiler/PrsLib.CPP.Z,107",BI=31$ $LK,"COCPush",A="FL:::/Compiler/PrsLib.CPP.Z,107",BI=30$
$LK,"SLASH_OP_DEC",A="FL:::/Compiler/BackLib.CPP.Z,255"$ $LK,"SLASH_OP_DEC",A="FL:::/Compiler/BackLib.CPP.Z,255"$
$LK,"ICPushRegs",A="FL:::/Compiler/BackLib.CPP.Z,341",BI=32$ $LK,"ICPushRegs",A="FL:::/Compiler/BackLib.CPP.Z,341",BI=31$
$LK,"PE_POP_HIGHER",A="FL:::/Compiler/PrsExp.CPP.Z,10"$ $LK,"PE_POP_HIGHER",A="FL:::/Compiler/PrsExp.CPP.Z,10"$
$LK,"SLASH_OP_FLD",A="FL:::/Compiler/BackLib.CPP.Z,270"$ $LK,"SLASH_OP_FLD",A="FL:::/Compiler/BackLib.CPP.Z,270"$
$LK,"ICU32",A="FL:::/Compiler/BackLib.CPP.Z,47",BI=33$ $LK,"ICU32",A="FL:::/Compiler/BackLib.CPP.Z,47",BI=32$
$LK,"ICU24",A="FL:::/Compiler/BackLib.CPP.Z,41",BI=34$ $LK,"ICU24",A="FL:::/Compiler/BackLib.CPP.Z,41",BI=33$
$LK,"ICU16",A="FL:::/Compiler/BackLib.CPP.Z,35",BI=35$ $LK,"ICU16",A="FL:::/Compiler/BackLib.CPP.Z,35",BI=34$
$LK,"SLASH_OP_DIV",A="FL:::/Compiler/BackLib.CPP.Z,260"$ $LK,"SLASH_OP_DIV",A="FL:::/Compiler/BackLib.CPP.Z,260"$
$LK,"CmpFillTables",A="FL:::/Compiler/CInit.CPP.Z,236",BI=36$ $LK,"CmpFillTables",A="FL:::/Compiler/CInit.CPP.Z,236",BI=35$
$LK,"AOTStoreCodeU32",A="FL:::/Compiler/AsmLib.CPP.Z,30",BI=37$ $LK,"AOTStoreCodeU32",A="FL:::/Compiler/AsmLib.CPP.Z,30",BI=36$
$LK,"ICFOpEqual",A="FL:::/Compiler/BackFB.CPP.Z,1",BI=38$ $LK,"ICU64",A="FL:::/Compiler/BackLib.CPP.Z,53",BI=37$
$LK,"ICU64",A="FL:::/Compiler/BackLib.CPP.Z,53",BI=39$
$LK,"SLASH_OP_INC",A="FL:::/Compiler/BackLib.CPP.Z,254"$ $LK,"SLASH_OP_INC",A="FL:::/Compiler/BackLib.CPP.Z,254"$
$LK,"AOTStoreCodeU64",A="FL:::/Compiler/AsmLib.CPP.Z,69",BI=40$ $LK,"AOTStoreCodeU64",A="FL:::/Compiler/AsmLib.CPP.Z,69",BI=38$
$LK,"LexPopNoRestore",A="FL:::/Compiler/LexLib.CPP.Z,38",BI=41$ $LK,"LexPopNoRestore",A="FL:::/Compiler/LexLib.CPP.Z,38",BI=39$
$LK,"ExePrint",A="FL:::/Compiler/CMain.CPP.Z,607",BI=42$ $LK,"ExePrint",A="FL:::/Compiler/CMain.CPP.Z,607",BI=40$
$LK,"SLASH_OP_NEG",A="FL:::/Compiler/BackLib.CPP.Z,257"$ $LK,"SLASH_OP_NEG",A="FL:::/Compiler/BackLib.CPP.Z,257"$
$LK,"PrsVarLst",A="FL:::/Compiler/PrsVar.CPP.Z,416",BI=43$ $LK,"PrsVarLst",A="FL:::/Compiler/PrsVar.CPP.Z,416",BI=41$
$LK,"PrsAsmDefine",A="FL:::/Compiler/Asm.CPP.Z,811",BI=44$ $LK,"PrsAsmDefine",A="FL:::/Compiler/Asm.CPP.Z,811",BI=42$
$LK,"PrsAddOp",A="FL:::/Compiler/PrsExp.CPP.Z,15",BI=45$ $LK,"PrsAddOp",A="FL:::/Compiler/PrsExp.CPP.Z,15",BI=43$
$LK,"LexWarn",A="FL:::/Compiler/CExcept.CPP.Z,65",BI=46$ $LK,"LexWarn",A="FL:::/Compiler/CExcept.CPP.Z,65",BI=44$
$LK,"PE_POP_ALL1",A="FL:::/Compiler/PrsExp.CPP.Z,12"$ $LK,"PE_POP_ALL1",A="FL:::/Compiler/PrsExp.CPP.Z,12"$
$LK,"PE_POP_ALL2",A="FL:::/Compiler/PrsExp.CPP.Z,13"$ $LK,"PE_POP_ALL2",A="FL:::/Compiler/PrsExp.CPP.Z,13"$
$LK,"COCAppend",A="FL:::/Compiler/PrsLib.CPP.Z,126",BI=47$ $LK,"COCAppend",A="FL:::/Compiler/PrsLib.CPP.Z,126",BI=45$
$LK,"LexFilePush",A="FL:::/Compiler/Lex.CPP.Z,1",BI=48$ $LK,"LexFilePush",A="FL:::/Compiler/Lex.CPP.Z,1",BI=46$
$LK,"CN_MAIN",A="FL:::/Compiler/BackFA.CPP.Z,3"$ $LK,"CN_MAIN",A="FL:::/Compiler/BackFA.CPP.Z,3"$
$LK,"PrsUnaryModifier",A="FL:::/Compiler/PrsExp.CPP.Z,956",BI=49$ $LK,"PrsUnaryModifier",A="FL:::/Compiler/PrsExp.CPP.Z,956",BI=47$
$LK,"OptFixupUnaryOp",A="FL:::/Compiler/OptLib.CPP.Z,196",BI=50$ $LK,"OptFixupUnaryOp",A="FL:::/Compiler/OptLib.CPP.Z,196",BI=48$
$LK,"LexPush",A="FL:::/Compiler/LexLib.CPP.Z,12",BI=51$ $LK,"LexPush",A="FL:::/Compiler/LexLib.CPP.Z,12",BI=49$
$LK,"SLASH_OP_MOV",A="FL:::/Compiler/BackLib.CPP.Z,261"$ $LK,"SLASH_OP_MOV",A="FL:::/Compiler/BackLib.CPP.Z,261"$
$LK,"ICPopRegs",A="FL:::/Compiler/BackLib.CPP.Z,381",BI=52$ $LK,"ICPopRegs",A="FL:::/Compiler/BackLib.CPP.Z,381",BI=50$
$LK,"SLASH_OP_MUL",A="FL:::/Compiler/BackLib.CPP.Z,258"$ $LK,"SLASH_OP_MUL",A="FL:::/Compiler/BackLib.CPP.Z,258"$
$LK,"SLASH_OP_NOT",A="FL:::/Compiler/BackLib.CPP.Z,256"$ $LK,"SLASH_OP_NOT",A="FL:::/Compiler/BackLib.CPP.Z,256"$
$LK,"NUM_INTERNAL_TYPES",A="FL:::/Compiler/CInit.CPP.Z,1"$ $LK,"NUM_INTERNAL_TYPES",A="FL:::/Compiler/CInit.CPP.Z,1"$
$LK,"SLASH_OP_POP",A="FL:::/Compiler/BackLib.CPP.Z,263"$ $LK,"SLASH_OP_POP",A="FL:::/Compiler/BackLib.CPP.Z,263"$
$LK,"ICFOp",A="FL:::/Compiler/BackFA.CPP.Z,360",BI=53$ $LK,"ICFOp",A="FL:::/Compiler/BackFA.CPP.Z,360",BI=51$
$LK,"CN_A1",A="FL:::/Compiler/BackFA.CPP.Z,2"$ $LK,"CN_A1",A="FL:::/Compiler/BackFA.CPP.Z,2"$
$LK,"CN_A2",A="FL:::/Compiler/BackFA.CPP.Z,1"$ $LK,"CN_A2",A="FL:::/Compiler/BackFA.CPP.Z,1"$
$LK,"LexExpressionF64",A="FL:::/Compiler/PrsExp.CPP.Z,1149",BI=54$ $LK,"LexExpressionF64",A="FL:::/Compiler/PrsExp.CPP.Z,1149",BI=52$
$LK,"ICAdd",A="FL:::/Compiler/PrsLib.CPP.Z,79",BI=55$ $LK,"ICAdd",A="FL:::/Compiler/PrsLib.CPP.Z,79",BI=53$
$LK,"CmpRawType",A="FL:::/Compiler/OptLib.CPP.Z,509",BI=56$ $LK,"CmpRawType",A="FL:::/Compiler/OptLib.CPP.Z,509",BI=54$
$LK,"LexExpressionI64",A="FL:::/Compiler/PrsExp.CPP.Z,1135",BI=57$ $LK,"ICFOpEqu",A="FL:::/Compiler/BackFB.CPP.Z,1",BI=55$
$LK,"ICQueInsRev",A="FL:::/Compiler/BackC.CPP.Z,452",BI=58$ $LK,"LexExpressionI64",A="FL:::/Compiler/PrsExp.CPP.Z,1135",BI=56$
$LK,"LexExpression",A="FL:::/Compiler/PrsExp.CPP.Z,1163",BI=59$ $LK,"ICQueInsRev",A="FL:::/Compiler/BackC.CPP.Z,452",BI=57$
$LK,"ICAddSubEctEqual",A="FL:::/Compiler/BackA.CPP.Z,545",BI=60$ $LK,"LexExpression",A="FL:::/Compiler/PrsExp.CPP.Z,1163",BI=58$
$LK,"PrsExpression",A="FL:::/Compiler/PrsExp.CPP.Z,264",BI=61$ $LK,"PrsExpression",A="FL:::/Compiler/PrsExp.CPP.Z,264",BI=59$
$LK,"PrsClassNew",A="FL:::/Compiler/PrsLib.CPP.Z,40",BI=62$ $LK,"PrsClassNew",A="FL:::/Compiler/PrsLib.CPP.Z,40",BI=60$
$LK,"LexInStr",A="FL:::/Compiler/Lex.CPP.Z,373",BI=63$ $LK,"LexInStr",A="FL:::/Compiler/Lex.CPP.Z,372",BI=61$
$LK,"internal_types_table",A="FL:::/Compiler/CInit.CPP.Z,6"$ $LK,"internal_types_table",A="FL:::/Compiler/CInit.CPP.Z,6"$
$LK,"OptPass3",A="FL:::/Compiler/OptPass3.CPP.Z,1",BI=64$ $LK,"OptPass3",A="FL:::/Compiler/OptPass3.CPP.Z,1",BI=62$
$LK,"OptPass4",A="FL:::/Compiler/OptPass4.CPP.Z,171",BI=65$ $LK,"OptPass4",A="FL:::/Compiler/OptPass4.CPP.Z,171",BI=63$
$LK,"OptPass5",A="FL:::/Compiler/OptPass5.CPP.Z,1",BI=66$ $LK,"OptPass5",A="FL:::/Compiler/OptPass5.CPP.Z,1",BI=64$
$LK,"OptPass6",A="FL:::/Compiler/OptPass6.CPP.Z,111",BI=67$ $LK,"OptPass6",A="FL:::/Compiler/OptPass6.CPP.Z,111",BI=65$
$LK,"Echo",A="FL:::/Compiler/CMisc.CPP.Z,24",BI=68$ $LK,"Echo",A="FL:::/Compiler/CMisc.CPP.Z,24",BI=66$
$LK,"PrsGlblVarLst",A="FL:::/Compiler/PrsStmt.CPP.Z,201",BI=69$ $LK,"PrsGlblVarLst",A="FL:::/Compiler/PrsStmt.CPP.Z,201",BI=67$
$LK,"ICQueInit",A="FL:::/Compiler/BackC.CPP.Z,397",BI=70$ $LK,"ICQueInit",A="FL:::/Compiler/BackC.CPP.Z,397",BI=68$
$LK,"ICCmp",A="FL:::/Compiler/BackB.CPP.Z,136",BI=71$ $LK,"ICCmp",A="FL:::/Compiler/BackB.CPP.Z,136",BI=69$
$LK,"ICAddRSP",A="FL:::/Compiler/BackLib.CPP.Z,69",BI=72$ $LK,"ICAddRSP",A="FL:::/Compiler/BackLib.CPP.Z,69",BI=70$
$LK,"ICDiv",A="FL:::/Compiler/BackA.CPP.Z,428",BI=73$ $LK,"ICDiv",A="FL:::/Compiler/BackA.CPP.Z,428",BI=71$
$LK,"ICDeref",A="FL:::/Compiler/BackLib.CPP.Z,647",BI=74$ $LK,"ICDeref",A="FL:::/Compiler/BackLib.CPP.Z,647",BI=72$
$LK,"ICLea",A="FL:::/Compiler/BackLib.CPP.Z,615",BI=75$ $LK,"ICLea",A="FL:::/Compiler/BackLib.CPP.Z,615",BI=73$
$LK,"CmpBuf",A="FL:::/Compiler/CMain.CPP.Z,157",BI=76$ $LK,"CmpBuf",A="FL:::/Compiler/CMain.CPP.Z,157",BI=74$
$LK,"CMP_TEMPLATES_DONT_PUSH_POP",A="FL:::/Compiler/Templates.CPP.Z,394"$ $LK,"CMP_TEMPLATES_DONT_PUSH_POP",A="FL:::/Compiler/Templates.CPP.Z,394"$
$LK,"ICAddEct",A="FL:::/Compiler/BackA.CPP.Z,1",BI=77$ $LK,"ICAddEct",A="FL:::/Compiler/BackA.CPP.Z,1",BI=75$
$LK,"ICToF64",A="FL:::/Compiler/BackB.CPP.Z,372",BI=78$ $LK,"ICToF64",A="FL:::/Compiler/BackB.CPP.Z,372",BI=76$
$LK,"PrsBinFile",A="FL:::/Compiler/Asm.CPP.Z,885",BI=79$ $LK,"PrsBinFile",A="FL:::/Compiler/Asm.CPP.Z,885",BI=77$
$LK,"HashTableSize2",A="FL:::/Compiler/CHash.CPP.Z,72",BI=80$ $LK,"HashTableSize2",A="FL:::/Compiler/CHash.CPP.Z,72",BI=78$
$LK,"HashEntrySize2",A="FL:::/Compiler/CHash.CPP.Z,33",BI=81$ $LK,"HashEntrySize2",A="FL:::/Compiler/CHash.CPP.Z,33",BI=79$
$LK,"Ui",A="FL:::/Compiler/UAsm.CPP.Z,238",BI=82$ $LK,"Ui",A="FL:::/Compiler/UAsm.CPP.Z,238",BI=80$
$LK,"ICSlashOp",A="FL:::/Compiler/BackLib.CPP.Z,275",BI=83$ $LK,"ICSlashOp",A="FL:::/Compiler/BackLib.CPP.Z,275",BI=81$
$LK,"OptBrZero",A="FL:::/Compiler/OptLib.CPP.Z,231",BI=84$ $LK,"OptBrZero",A="FL:::/Compiler/OptLib.CPP.Z,231",BI=82$
$LK,"Un",A="FL:::/Compiler/UAsm.CPP.Z,664",BI=85$ $LK,"Un",A="FL:::/Compiler/UAsm.CPP.Z,664",BI=83$
$LK,"PrsSizeOf",A="FL:::/Compiler/PrsExp.CPP.Z,298",BI=86$ $LK,"PrsSizeOf",A="FL:::/Compiler/PrsExp.CPP.Z,298",BI=84$
$LK,"ICMulEqual",A="FL:::/Compiler/BackA.CPP.Z,344",BI=87$ $LK,"ICToI64",A="FL:::/Compiler/BackB.CPP.Z,366",BI=85$
$LK,"ICToI64",A="FL:::/Compiler/BackB.CPP.Z,366",BI=88$ $LK,"ICMod",A="FL:::/Compiler/BackA.CPP.Z,521",BI=86$
$LK,"ICMod",A="FL:::/Compiler/BackA.CPP.Z,521",BI=89$ $LK,"OptSetNOP1",A="FL:::/Compiler/OptLib.CPP.Z,17",BI=87$
$LK,"OptSetNOP1",A="FL:::/Compiler/OptLib.CPP.Z,17",BI=90$ $LK,"OptPass789A",A="FL:::/Compiler/OptPass789A.CPP.Z,1",BI=88$
$LK,"OptPass789A",A="FL:::/Compiler/OptPass789A.CPP.Z,1",BI=91$ $LK,"OptSetNOP2",A="FL:::/Compiler/OptLib.CPP.Z,25",BI=89$
$LK,"OptSetNOP2",A="FL:::/Compiler/OptLib.CPP.Z,25",BI=92$
$LK,"FBO1_F64",A="FL:::/Compiler/OptLib.CPP.Z,94"$ $LK,"FBO1_F64",A="FL:::/Compiler/OptLib.CPP.Z,94"$
$LK,"ICToUpper",A="FL:::/Compiler/BackB.CPP.Z,355",BI=93$ $LK,"ICXorEqu",A="FL:::/Compiler/BackC.CPP.Z,736",BI=90$
$LK,"AsmLexExpression",A="FL:::/Compiler/AsmLib.CPP.Z,129",BI=94$ $LK,"ICToUpper",A="FL:::/Compiler/BackB.CPP.Z,355",BI=91$
$LK,"ICMov",A="FL:::/Compiler/BackLib.CPP.Z,435",BI=95$ $LK,"AsmLexExpression",A="FL:::/Compiler/AsmLib.CPP.Z,129",BI=92$
$LK,"ICNot",A="FL:::/Compiler/BackB.CPP.Z,10",BI=96$ $LK,"ICMov",A="FL:::/Compiler/BackLib.CPP.Z,435",BI=93$
$LK,"ICMul",A="FL:::/Compiler/BackA.CPP.Z,286",BI=97$ $LK,"ICNot",A="FL:::/Compiler/BackB.CPP.Z,10",BI=94$
$LK,"ICRex",A="FL:::/Compiler/BackLib.CPP.Z,22",BI=98$ $LK,"ICMul",A="FL:::/Compiler/BackA.CPP.Z,286",BI=95$
$LK,"ICPop",A="FL:::/Compiler/BackLib.CPP.Z,354",BI=99$ $LK,"ICRex",A="FL:::/Compiler/BackLib.CPP.Z,22",BI=96$
$LK,"ICPop",A="FL:::/Compiler/BackLib.CPP.Z,354",BI=97$
$LK,"MDR_RIP_REL",A="FL:::/Compiler/BackLib.CPP.Z,139"$ $LK,"MDR_RIP_REL",A="FL:::/Compiler/BackLib.CPP.Z,139"$
$LK,"SLASH_OP_FADD",A="FL:::/Compiler/BackLib.CPP.Z,264"$ $LK,"SLASH_OP_FADD",A="FL:::/Compiler/BackLib.CPP.Z,264"$
$LK,"ICSub",A="FL:::/Compiler/BackA.CPP.Z,207",BI=100$ $LK,"LexStmt2Bin",A="FL:::/Compiler/CMain.CPP.Z,1",BI=98$
$LK,"COCFloatConstFind",A="FL:::/Compiler/PrsLib.CPP.Z,164",BI=101$ $LK,"ICSub",A="FL:::/Compiler/BackA.CPP.Z,207",BI=99$
$LK,"ICPut",A="FL:::/Compiler/CExcept.CPP.Z,186",BI=102$ $LK,"COCFloatConstFind",A="FL:::/Compiler/PrsLib.CPP.Z,164",BI=100$
$LK,"PrsArrayDims",A="FL:::/Compiler/PrsVar.CPP.Z,247",BI=103$ $LK,"ICPut",A="FL:::/Compiler/CExcept.CPP.Z,186",BI=101$
$LK,"ICSqr",A="FL:::/Compiler/BackC.CPP.Z,581",BI=104$ $LK,"PrsArrayDims",A="FL:::/Compiler/PrsVar.CPP.Z,247",BI=102$
$LK,"ICSqr",A="FL:::/Compiler/BackC.CPP.Z,581",BI=103$
$LK,"FBO1_NOT_CONST",A="FL:::/Compiler/OptLib.CPP.Z,92"$ $LK,"FBO1_NOT_CONST",A="FL:::/Compiler/OptLib.CPP.Z,92"$
$LK,"CMP_TEMPLATES_DONT_POP",A="FL:::/Compiler/Templates.CPP.Z,178"$ $LK,"CMP_TEMPLATES_DONT_POP",A="FL:::/Compiler/Templates.CPP.Z,178"$
$LK,"PrsClass",A="FL:::/Compiler/PrsStmt.CPP.Z,1",BI=105$ $LK,"PrsClass",A="FL:::/Compiler/PrsStmt.CPP.Z,1",BI=104$
$LK,"MemberMetaData",A="FL:::/Compiler/LexLib.CPP.Z,45",BI=106$ $LK,"MemberMetaData",A="FL:::/Compiler/LexLib.CPP.Z,45",BI=105$
$LK,"ICSwitch",A="FL:::/Compiler/BackC.CPP.Z,757",BI=107$ $LK,"ICSwitch",A="FL:::/Compiler/BackC.CPP.Z,757",BI=106$
$LK,"OptBrNotZero",A="FL:::/Compiler/OptLib.CPP.Z,358",BI=108$ $LK,"OptBrNotZero",A="FL:::/Compiler/OptLib.CPP.Z,358",BI=107$
$LK,"ICShiftEqual",A="FL:::/Compiler/BackA.CPP.Z,726",BI=109$ $LK,"LexPutToken",A="FL:::/Compiler/CExcept.CPP.Z,1",BI=108$
$LK,"LexPutToken",A="FL:::/Compiler/CExcept.CPP.Z,1",BI=110$
$LK,"SLASH_OP_FDIV",A="FL:::/Compiler/BackLib.CPP.Z,268"$ $LK,"SLASH_OP_FDIV",A="FL:::/Compiler/BackLib.CPP.Z,268"$
$LK,"AsmHashLoad",A="FL:::/Compiler/AsmInit.CPP.Z,50",BI=111$ $LK,"AsmHashLoad",A="FL:::/Compiler/AsmInit.CPP.Z,50",BI=109$
$LK,"UAsmHashLoad",A="FL:::/Compiler/UAsm.CPP.Z,188",BI=112$ $LK,"UAsmHashLoad",A="FL:::/Compiler/UAsm.CPP.Z,188",BI=110$
$LK,"UnusedExternWarning",A="FL:::/Compiler/CExcept.CPP.Z,104",BI=113$ $LK,"UnusedExternWarning",A="FL:::/Compiler/CExcept.CPP.Z,104",BI=111$
$LK,"SLASH_OP_FILD",A="FL:::/Compiler/BackLib.CPP.Z,273"$ $LK,"SLASH_OP_FILD",A="FL:::/Compiler/BackLib.CPP.Z,273"$
$LK,"ICXorXor",A="FL:::/Compiler/BackB.CPP.Z,98",BI=114$ $LK,"ICXorXor",A="FL:::/Compiler/BackB.CPP.Z,98",BI=112$
$LK,"PrsTryBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,831",BI=115$ $LK,"PrsTryBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,831",BI=113$
$LK,"CInit",A="FL:::/Compiler/CMain.CPP.Z,684",BI=116$ $LK,"CInit",A="FL:::/Compiler/CMain.CPP.Z,684",BI=114$
$LK,"MemberMetaFind",A="FL:::/Compiler/LexLib.CPP.Z,56",BI=117$ $LK,"MemberMetaFind",A="FL:::/Compiler/LexLib.CPP.Z,56",BI=115$
$LK,"ExePrint2",A="FL:::/Compiler/CMain.CPP.Z,646",BI=118$ $LK,"ExePrint2",A="FL:::/Compiler/CMain.CPP.Z,646",BI=116$
$LK,"FBO1_INT",A="FL:::/Compiler/OptLib.CPP.Z,93"$ $LK,"FBO1_INT",A="FL:::/Compiler/OptLib.CPP.Z,93"$
$LK,"PE_DO_UNARY_OP",A="FL:::/Compiler/PrsExp.CPP.Z,8"$ $LK,"PE_DO_UNARY_OP",A="FL:::/Compiler/PrsExp.CPP.Z,8"$
$LK,"PrsVarInit",A="FL:::/Compiler/PrsVar.CPP.Z,1",BI=119$ $LK,"PrsVarInit",A="FL:::/Compiler/PrsVar.CPP.Z,1",BI=117$
$LK,"ICModr1",A="FL:::/Compiler/BackLib.CPP.Z,141",BI=120$ $LK,"ICOrEqu",A="FL:::/Compiler/BackC.CPP.Z,715",BI=118$
$LK,"ICModr2",A="FL:::/Compiler/BackLib.CPP.Z,223",BI=121$ $LK,"ICModr1",A="FL:::/Compiler/BackLib.CPP.Z,141",BI=119$
$LK,"ICModr2",A="FL:::/Compiler/BackLib.CPP.Z,223",BI=120$
$LK,"SLASH_OP_FMUL",A="FL:::/Compiler/BackLib.CPP.Z,267"$ $LK,"SLASH_OP_FMUL",A="FL:::/Compiler/BackLib.CPP.Z,267"$
$LK,"ICPreIncDec",A="FL:::/Compiler/BackB.CPP.Z,393",BI=122$ $LK,"ICPreIncDec",A="FL:::/Compiler/BackB.CPP.Z,393",BI=121$
$LK,"PrsAsmInstruction",A="FL:::/Compiler/Asm.CPP.Z,390",BI=123$ $LK,"PrsAsmInstruction",A="FL:::/Compiler/Asm.CPP.Z,390",BI=122$
$LK,"PrsUnaryTerm",A="FL:::/Compiler/PrsExp.CPP.Z,588",BI=124$ $LK,"PrsUnaryTerm",A="FL:::/Compiler/PrsExp.CPP.Z,588",BI=123$
$LK,"ICFModEqual",A="FL:::/Compiler/BackFA.CPP.Z,585",BI=125$ $LK,"MemberLstDel",A="FL:::/Compiler/LexLib.CPP.Z,157",BI=124$
$LK,"MemberLstDel",A="FL:::/Compiler/LexLib.CPP.Z,157",BI=126$
$LK,"SLASH_OP_FSUB",A="FL:::/Compiler/BackLib.CPP.Z,265"$ $LK,"SLASH_OP_FSUB",A="FL:::/Compiler/BackLib.CPP.Z,265"$
$LK,"ICAndAnd",A="FL:::/Compiler/BackB.CPP.Z,31",BI=127$ $LK,"ICAndAnd",A="FL:::/Compiler/BackB.CPP.Z,31",BI=125$
$LK,"InstEntriesCompare",A="FL:::/Compiler/UAsm.CPP.Z,1",BI=128$ $LK,"InstEntriesCompare",A="FL:::/Compiler/UAsm.CPP.Z,1",BI=126$
$LK,"SLASH_OP_IMUL",A="FL:::/Compiler/BackLib.CPP.Z,259"$ $LK,"SLASH_OP_IMUL",A="FL:::/Compiler/BackLib.CPP.Z,259"$
$LK,"SLASH_OP_FSTP",A="FL:::/Compiler/BackLib.CPP.Z,271"$ $LK,"SLASH_OP_FSTP",A="FL:::/Compiler/BackLib.CPP.Z,271"$
$LK,"COCDel",A="FL:::/Compiler/PrsLib.CPP.Z,186",BI=129$ $LK,"COCDel",A="FL:::/Compiler/PrsLib.CPP.Z,186",BI=127$
$LK,"PE_UNARY_TERM1",A="FL:::/Compiler/PrsExp.CPP.Z,1"$ $LK,"PE_UNARY_TERM1",A="FL:::/Compiler/PrsExp.CPP.Z,1"$
$LK,"ICFAdd",A="FL:::/Compiler/BackFB.CPP.Z,599",BI=130$ $LK,"ICFAdd",A="FL:::/Compiler/BackFB.CPP.Z,599",BI=128$
$LK,"PE_UNARY_TERM2",A="FL:::/Compiler/PrsExp.CPP.Z,2"$ $LK,"PE_UNARY_TERM2",A="FL:::/Compiler/PrsExp.CPP.Z,2"$
$LK,"CmdLinePmt",A="FL:::/Compiler/CMisc.CPP.Z,88",BI=131$ $LK,"CmdLinePmt",A="FL:::/Compiler/CMisc.CPP.Z,88",BI=129$
$LK,"AsmMakeArgMask",A="FL:::/Compiler/Asm.CPP.Z,172",BI=132$ $LK,"AsmMakeArgMask",A="FL:::/Compiler/Asm.CPP.Z,172",BI=130$
$LK,"COCHeaderPut",A="FL:::/Compiler/PrsLib.CPP.Z,229",BI=133$ $LK,"COCHeaderPut",A="FL:::/Compiler/PrsLib.CPP.Z,229",BI=131$
$LK,"PrsGlblInit",A="FL:::/Compiler/PrsVar.CPP.Z,206",BI=134$ $LK,"PrsGlblInit",A="FL:::/Compiler/PrsVar.CPP.Z,206",BI=132$
$LK,"LexD2I32",A="FL:::/Compiler/CMisc.CPP.Z,52",BI=135$ $LK,"ICAndEqu",A="FL:::/Compiler/BackC.CPP.Z,694",BI=133$
$LK,"MemberLstNew",A="FL:::/Compiler/LexLib.CPP.Z,150",BI=136$ $LK,"LexD2I32",A="FL:::/Compiler/CMisc.CPP.Z,52",BI=134$
$LK,"LexD3I32",A="FL:::/Compiler/CMisc.CPP.Z,68",BI=137$ $LK,"MemberLstNew",A="FL:::/Compiler/LexLib.CPP.Z,150",BI=135$
$LK,"OptClassFwd",A="FL:::/Compiler/OptLib.CPP.Z,9",BI=138$ $LK,"LexD3I32",A="FL:::/Compiler/CMisc.CPP.Z,68",BI=136$
$LK,"ICFCmp",A="FL:::/Compiler/BackFA.CPP.Z,545",BI=139$ $LK,"OptClassFwd",A="FL:::/Compiler/OptLib.CPP.Z,9",BI=137$
$LK,"PrsSwitch",A="FL:::/Compiler/PrsStmt.CPP.Z,575",BI=140$ $LK,"ICFCmp",A="FL:::/Compiler/BackFA.CPP.Z,545",BI=138$
$LK,"ICFDiv",A="FL:::/Compiler/BackFB.CPP.Z,587",BI=141$ $LK,"PrsSwitch",A="FL:::/Compiler/PrsStmt.CPP.Z,575",BI=139$
$LK,"AOTStoreCodeU8At",A="FL:::/Compiler/AsmLib.CPP.Z,108",BI=142$ $LK,"ICFDiv",A="FL:::/Compiler/BackFB.CPP.Z,587",BI=140$
$LK,"AOTStoreCodeU8At",A="FL:::/Compiler/AsmLib.CPP.Z,108",BI=141$
$LK,"PE_PUSH_LOWER",A="FL:::/Compiler/PrsExp.CPP.Z,11"$ $LK,"PE_PUSH_LOWER",A="FL:::/Compiler/PrsExp.CPP.Z,11"$
$LK,"ICXorEqual",A="FL:::/Compiler/BackC.CPP.Z,736",BI=143$ $LK,"OptPass6Lag",A="FL:::/Compiler/OptPass6.CPP.Z,28",BI=142$
$LK,"OptPass6Lag",A="FL:::/Compiler/OptPass6.CPP.Z,28",BI=144$ $LK,"OptLag1",A="FL:::/Compiler/OptLib.CPP.Z,51",BI=143$
$LK,"OptLag1",A="FL:::/Compiler/OptLib.CPP.Z,51",BI=145$ $LK,"OptLag2",A="FL:::/Compiler/OptLib.CPP.Z,62",BI=144$
$LK,"OptLag2",A="FL:::/Compiler/OptLib.CPP.Z,62",BI=146$ $LK,"StreamPrint",A="FL:::/Compiler/CMisc.CPP.Z,29",BI=145$
$LK,"StreamPrint",A="FL:::/Compiler/CMisc.CPP.Z,29",BI=147$ $LK,"ICFCvt",A="FL:::/Compiler/BackFA.CPP.Z,121",BI=146$
$LK,"ICFCvt",A="FL:::/Compiler/BackFA.CPP.Z,121",BI=148$ $LK,"StreamDir",A="FL:::/Compiler/CMisc.CPP.Z,43",BI=147$
$LK,"StreamDir",A="FL:::/Compiler/CMisc.CPP.Z,43",BI=149$ $LK,"PrsOffsetOf",A="FL:::/Compiler/PrsExp.CPP.Z,348",BI=148$
$LK,"PrsOffsetOf",A="FL:::/Compiler/PrsExp.CPP.Z,348",BI=150$
$LK,"MDR_REG",A="FL:::/Compiler/BackLib.CPP.Z,132"$ $LK,"MDR_REG",A="FL:::/Compiler/BackLib.CPP.Z,132"$
$LK,"GetOption",A="FL:::/Compiler/CMisc.CPP.Z,6",BI=151$ $LK,"GetOption",A="FL:::/Compiler/CMisc.CPP.Z,6",BI=149$
$LK,"PrsDoWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,503",BI=152$ $LK,"PrsDoWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,503",BI=150$
$LK,"LexStatement2Bin",A="FL:::/Compiler/CMain.CPP.Z,1",BI=153$ $LK,"ICShift",A="FL:::/Compiler/BackA.CPP.Z,693",BI=151$
$LK,"ICShift",A="FL:::/Compiler/BackA.CPP.Z,693",BI=154$ $LK,"ICFMod",A="FL:::/Compiler/BackFA.CPP.Z,249",BI=152$
$LK,"ICFMod",A="FL:::/Compiler/BackFA.CPP.Z,249",BI=155$ $LK,"COCPop",A="FL:::/Compiler/PrsLib.CPP.Z,121",BI=153$
$LK,"COCPop",A="FL:::/Compiler/PrsLib.CPP.Z,121",BI=156$ $LK,"PrsExpression2",A="FL:::/Compiler/PrsExp.CPP.Z,65",BI=154$
$LK,"PrsExpression2",A="FL:::/Compiler/PrsExp.CPP.Z,65",BI=157$
$LK,"SLASH_OP_PUSH",A="FL:::/Compiler/BackLib.CPP.Z,262"$ $LK,"SLASH_OP_PUSH",A="FL:::/Compiler/BackLib.CPP.Z,262"$
$LK,"PE_DEREFERENCE",A="FL:::/Compiler/PrsExp.CPP.Z,5"$ $LK,"PE_DEREFERENCE",A="FL:::/Compiler/PrsExp.CPP.Z,5"$
$LK,"LexPopRestore",A="FL:::/Compiler/LexLib.CPP.Z,23",BI=158$ $LK,"LexPopRestore",A="FL:::/Compiler/LexLib.CPP.Z,23",BI=155$
$LK,"ICUnaries",A="FL:::/Compiler/BackB.CPP.Z,1",BI=159$ $LK,"ICUnaries",A="FL:::/Compiler/BackB.CPP.Z,1",BI=156$
$LK,"ICFMul",A="FL:::/Compiler/BackFB.CPP.Z,569",BI=160$ $LK,"ICFMul",A="FL:::/Compiler/BackFB.CPP.Z,569",BI=157$
$LK,"LexExpression2Bin",A="FL:::/Compiler/PrsExp.CPP.Z,1112",BI=161$ $LK,"ICShiftEqu",A="FL:::/Compiler/BackA.CPP.Z,726",BI=158$
$LK,"ICFPow",A="FL:::/Compiler/BackFA.CPP.Z,280",BI=162$ $LK,"LexExpression2Bin",A="FL:::/Compiler/PrsExp.CPP.Z,1112",BI=159$
$LK,"MapFileWrite",A="FL:::/Compiler/CHash.CPP.Z,90",BI=163$ $LK,"ICFPow",A="FL:::/Compiler/BackFA.CPP.Z,280",BI=160$
$LK,"ICFSub",A="FL:::/Compiler/BackFB.CPP.Z,635",BI=164$ $LK,"MapFileWrite",A="FL:::/Compiler/CHash.CPP.Z,90",BI=161$
$LK,"CmpF1PushPop",A="FL:::/Compiler/OptLib.CPP.Z,529",BI=165$ $LK,"ICFSub",A="FL:::/Compiler/BackFB.CPP.Z,635",BI=162$
$LK,"OptFree",A="FL:::/Compiler/OptLib.CPP.Z,33",BI=166$ $LK,"ICFModEqu",A="FL:::/Compiler/BackFA.CPP.Z,585",BI=163$
$LK,"CmpF1PushPop",A="FL:::/Compiler/OptLib.CPP.Z,529",BI=164$
$LK,"OptFree",A="FL:::/Compiler/OptLib.CPP.Z,33",BI=165$
$LK,"CMP_TEMPLATES_DONT_PUSH2",A="FL:::/Compiler/Templates.CPP.Z,458"$ $LK,"CMP_TEMPLATES_DONT_PUSH2",A="FL:::/Compiler/Templates.CPP.Z,458"$
$LK,"CInternalType",A="FL:::/Compiler/CInit.CPP.Z,3"$ $LK,"CInternalType",A="FL:::/Compiler/CInit.CPP.Z,3"$
$LK,"LexDollar",A="FL:::/Compiler/Lex.CPP.Z,93",BI=167$ $LK,"LexDollar",A="FL:::/Compiler/Lex.CPP.Z,93",BI=166$
$LK,"AsmUnresolvedAdd",A="FL:::/Compiler/AsmResolve.CPP.Z,189",BI=168$ $LK,"AsmUnresolvedAdd",A="FL:::/Compiler/AsmResolve.CPP.Z,189",BI=167$
$LK,"AOTStoreCodeU8",A="FL:::/Compiler/AsmLib.CPP.Z,1",BI=169$ $LK,"AOTStoreCodeU8",A="FL:::/Compiler/AsmLib.CPP.Z,1",BI=168$
$LK,"MDR_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,133"$ $LK,"MDR_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,133"$
$LK,"ICBitOps",A="FL:::/Compiler/BackB.CPP.Z,256",BI=170$ $LK,"ICBitOps",A="FL:::/Compiler/BackB.CPP.Z,256",BI=169$
$LK,"lex_zeros",A="FL:::/Compiler/Lex.CPP.Z,91"$ $LK,"lex_zeros",A="FL:::/Compiler/Lex.CPP.Z,91"$
$LK,"CSwitchCase",A="FL:::/Compiler/PrsStmt.CPP.Z,568"$ $LK,"CSwitchCase",A="FL:::/Compiler/PrsStmt.CPP.Z,568"$
$LK,"AsmResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,1",BI=171$ $LK,"AsmResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,1",BI=170$
$LK,"COCCompile",A="FL:::/Compiler/PrsLib.CPP.Z,249",BI=172$ $LK,"COCCompile",A="FL:::/Compiler/PrsLib.CPP.Z,249",BI=171$
$LK,"Cmp",A="FL:::/Compiler/CMain.CPP.Z,419",BI=173$ $LK,"Cmp",A="FL:::/Compiler/CMain.CPP.Z,419",BI=172$
$LK,"PrsPush2",A="FL:::/Compiler/PrsLib.CPP.Z,11",BI=174$ $LK,"PrsPush2",A="FL:::/Compiler/PrsLib.CPP.Z,11",BI=173$
$LK,"ICArgPut",A="FL:::/Compiler/CExcept.CPP.Z,141",BI=175$ $LK,"ICArgPut",A="FL:::/Compiler/CExcept.CPP.Z,141",BI=174$
$LK,"UndefinedExtern",A="FL:::/Compiler/CExcept.CPP.Z,98",BI=176$ $LK,"UndefinedExtern",A="FL:::/Compiler/CExcept.CPP.Z,98",BI=175$
$LK,"OptIC4",A="FL:::/Compiler/OptPass4.CPP.Z,1",BI=177$ $LK,"OptIC4",A="FL:::/Compiler/OptPass4.CPP.Z,1",BI=176$
$LK,"OptIC6",A="FL:::/Compiler/OptPass6.CPP.Z,1",BI=178$ $LK,"OptIC6",A="FL:::/Compiler/OptPass6.CPP.Z,1",BI=177$
$LK,"ICCmpAndBranch",A="FL:::/Compiler/BackB.CPP.Z,556",BI=179$ $LK,"ICCmpAndBranch",A="FL:::/Compiler/BackB.CPP.Z,556",BI=178$
$LK,"PrsStatement",A="FL:::/Compiler/PrsStmt.CPP.Z,893",BI=180$ $LK,"ICDivEqu",A="FL:::/Compiler/BackA.CPP.Z,452",BI=179$
$LK,"PrsWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,483",BI=181$ $LK,"PrsWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,483",BI=180$
$LK,"ICFCmpAndBranch",A="FL:::/Compiler/BackFB.CPP.Z,306",BI=182$ $LK,"ICFCmpAndBranch",A="FL:::/Compiler/BackFB.CPP.Z,306",BI=181$
$LK,"Lex",A="FL:::/Compiler/Lex.CPP.Z,443",BI=183$ $LK,"Lex",A="FL:::/Compiler/Lex.CPP.Z,442",BI=182$
$LK,"ICTestAndBranch",A="FL:::/Compiler/BackB.CPP.Z,736",BI=184$ $LK,"ICTestAndBranch",A="FL:::/Compiler/BackB.CPP.Z,736",BI=183$
$LK,"uasm",A="FL:::/Compiler/Compiler.PRJ.Z,21"$ $LK,"uasm",A="FL:::/Compiler/Compiler.PRJ.Z,21"$
$LK,"MDR_SIB_D32_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,138"$ $LK,"MDR_SIB_D32_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,138"$
$LK,"PE_MAYBE_MODIFIERS",A="FL:::/Compiler/PrsExp.CPP.Z,3"$ $LK,"PE_MAYBE_MODIFIERS",A="FL:::/Compiler/PrsExp.CPP.Z,3"$
$LK,"PE_UNARY_MODIFIERS",A="FL:::/Compiler/PrsExp.CPP.Z,4"$ $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=184$
$LK,"PE_DO_BINARY_OP",A="FL:::/Compiler/PrsExp.CPP.Z,9"$ $LK,"PE_DO_BINARY_OP",A="FL:::/Compiler/PrsExp.CPP.Z,9"$
$LK,"CmpFixUpAOTAsm",A="FL:::/Compiler/CMain.CPP.Z,302",BI=186$ $LK,"CmpFixUpAOTAsm",A="FL:::/Compiler/CMain.CPP.Z,302",BI=185$
$LK,"OptLabelFwd",A="FL:::/Compiler/OptLib.CPP.Z,1",BI=187$ $LK,"OptLabelFwd",A="FL:::/Compiler/OptLib.CPP.Z,1",BI=186$
$LK,"ICOrOr",A="FL:::/Compiler/BackB.CPP.Z,63",BI=188$ $LK,"ICOrOr",A="FL:::/Compiler/BackB.CPP.Z,63",BI=187$
$LK,"LexExcept",A="FL:::/Compiler/CExcept.CPP.Z,81",BI=189$ $LK,"LexExcept",A="FL:::/Compiler/CExcept.CPP.Z,81",BI=188$
$LK,"cmp_templates",A="FL:::/Compiler/CExts.CPP.Z,42"$ $LK,"cmp_templates",A="FL:::/Compiler/CExts.CPP.Z,42"$
$LK,"CmpF2PushPop",A="FL:::/Compiler/OptLib.CPP.Z,536",BI=190$ $LK,"CmpF2PushPop",A="FL:::/Compiler/OptLib.CPP.Z,536",BI=189$
$LK,"MDR_D32_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,135"$ $LK,"MDR_D32_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,135"$
$LK,"CmpJoin",A="FL:::/Compiler/CMain.CPP.Z,35",BI=191$ $LK,"CmpJoin",A="FL:::/Compiler/CMain.CPP.Z,35",BI=190$
$LK,"MDR_SIB_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,136"$ $LK,"MDR_SIB_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,136"$
$LK,"PrsPop2",A="FL:::/Compiler/PrsLib.CPP.Z,16",BI=192$ $LK,"PrsPop2",A="FL:::/Compiler/PrsLib.CPP.Z,16",BI=191$
$LK,"CMP_TEMPLATES",A="FL:::/Compiler/Templates.CPP.Z,4"$ $LK,"CMP_TEMPLATES",A="FL:::/Compiler/Templates.CPP.Z,4"$
$LK,"PrsAsmBlk",A="FL:::/Compiler/Asm.CPP.Z,901",BI=193$ $LK,"PrsAsmBlk",A="FL:::/Compiler/Asm.CPP.Z,901",BI=192$
$LK,"PrsAsmArg",A="FL:::/Compiler/Asm.CPP.Z,35",BI=194$ $LK,"PrsAsmArg",A="FL:::/Compiler/Asm.CPP.Z,35",BI=193$
$LK,"LexFirstRem",A="FL:::/Compiler/Lex.CPP.Z,276",BI=195$ $LK,"LexFirstRem",A="FL:::/Compiler/Lex.CPP.Z,276",BI=194$
$LK,"MemberClassBaseFind",A="FL:::/Compiler/LexLib.CPP.Z,87",BI=196$ $LK,"MemberClassBaseFind",A="FL:::/Compiler/LexLib.CPP.Z,87",BI=195$
$LK,"MemberFind",A="FL:::/Compiler/LexLib.CPP.Z,67",BI=197$ $LK,"MemberFind",A="FL:::/Compiler/LexLib.CPP.Z,67",BI=196$
$LK,"cmp",A="FL:::/Compiler/Compiler.PRJ.Z,16"$ $LK,"cmp",A="FL:::/Compiler/Compiler.PRJ.Z,16"$
$LK,"OptLag",A="FL:::/Compiler/OptLib.CPP.Z,40",BI=198$ $LK,"OptLag",A="FL:::/Compiler/OptLib.CPP.Z,40",BI=197$
$LK,"ICPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,434",BI=199$ $LK,"ICPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,434",BI=198$
$LK,"ICDivEqual",A="FL:::/Compiler/BackA.CPP.Z,452",BI=200$ $LK,"ICFPostIncDec",A="FL:::/Compiler/BackFB.CPP.Z,677",BI=199$
$LK,"ICFPostIncDec",A="FL:::/Compiler/BackFB.CPP.Z,677",BI=201$ $LK,"ICTest",A="FL:::/Compiler/BackLib.CPP.Z,403",BI=200$
$LK,"ICTest",A="FL:::/Compiler/BackLib.CPP.Z,403",BI=202$ $LK,"ICModU64",A="FL:::/Compiler/BackC.CPP.Z,588",BI=201$
$LK,"ICModU64",A="FL:::/Compiler/BackC.CPP.Z,588",BI=203$ $LK,"ICLastIns",A="FL:::/Compiler/BackLib.CPP.Z,59",BI=202$
$LK,"ICLastIns",A="FL:::/Compiler/BackLib.CPP.Z,59",BI=204$ $LK,"PrsAsmImm",A="FL:::/Compiler/Asm.CPP.Z,1",BI=203$
$LK,"PrsAsmImm",A="FL:::/Compiler/Asm.CPP.Z,1",BI=205$ $LK,"LexExtStr",A="FL:::/Compiler/LexLib.CPP.Z,218",BI=204$
$LK,"LexExtStr",A="FL:::/Compiler/LexLib.CPP.Z,218",BI=206$ $LK,"ICAddSubEctEqu",A="FL:::/Compiler/BackA.CPP.Z,545",BI=205$
$LK,"ICAddSubEctImm",A="FL:::/Compiler/BackA.CPP.Z,57",BI=207$ $LK,"ICAddSubEctImm",A="FL:::/Compiler/BackA.CPP.Z,57",BI=206$
$LK,"ICPush",A="FL:::/Compiler/BackLib.CPP.Z,303",BI=208$ $LK,"ICPush",A="FL:::/Compiler/BackLib.CPP.Z,303",BI=207$
$LK,"ICSwap",A="FL:::/Compiler/BackC.CPP.Z,632",BI=209$ $LK,"ICSwap",A="FL:::/Compiler/BackC.CPP.Z,632",BI=208$
$LK,"CMP_TEMPLATES_DONT_PUSH",A="FL:::/Compiler/Templates.CPP.Z,267"$ $LK,"CMP_TEMPLATES_DONT_PUSH",A="FL:::/Compiler/Templates.CPP.Z,267"$
$LK,"intermediate_code_table",A="FL:::/Compiler/CInit.CPP.Z,16"$ $LK,"intermediate_code_table",A="FL:::/Compiler/CInit.CPP.Z,16"$
$LK,"ICZero",A="FL:::/Compiler/BackLib.CPP.Z,394",BI=210$ $LK,"ICZero",A="FL:::/Compiler/BackLib.CPP.Z,394",BI=209$
$LK,"CmpCtrlDel",A="FL:::/Compiler/Lex.CPP.Z,58",BI=211$ $LK,"CmpCtrlDel",A="FL:::/Compiler/Lex.CPP.Z,58",BI=210$
$LK,"ICClassPut",A="FL:::/Compiler/CExcept.CPP.Z,117",BI=212$ $LK,"ICClassPut",A="FL:::/Compiler/CExcept.CPP.Z,117",BI=211$
$LK,"ICAssign",A="FL:::/Compiler/BackC.CPP.Z,159",BI=213$ $LK,"ICAssign",A="FL:::/Compiler/BackC.CPP.Z,159",BI=212$
$LK,"ICFTemplateFun",A="FL:::/Compiler/BackFB.CPP.Z,701",BI=214$ $LK,"ICFTemplateFun",A="FL:::/Compiler/BackFB.CPP.Z,701",BI=213$
$LK,"MemberAdd",A="FL:::/Compiler/LexLib.CPP.Z,103",BI=215$ $LK,"MemberAdd",A="FL:::/Compiler/LexLib.CPP.Z,103",BI=214$
$LK,"PrsPush",A="FL:::/Compiler/PrsLib.CPP.Z,1",BI=216$ $LK,"PrsPush",A="FL:::/Compiler/PrsLib.CPP.Z,1",BI=215$
$LK,"SLASH_OP_FDIVR",A="FL:::/Compiler/BackLib.CPP.Z,269"$ $LK,"SLASH_OP_FDIVR",A="FL:::/Compiler/BackLib.CPP.Z,269"$
$LK,"SLASH_OP_FISTTP",A="FL:::/Compiler/BackLib.CPP.Z,272"$ $LK,"SLASH_OP_FISTTP",A="FL:::/Compiler/BackLib.CPP.Z,272"$
$LK,"CmpCtrlSize",A="FL:::/Compiler/Lex.CPP.Z,70",BI=217$ $LK,"CmpCtrlSize",A="FL:::/Compiler/Lex.CPP.Z,70",BI=216$
$LK,"ICLocalVarInit",A="FL:::/Compiler/BackC.CPP.Z,923",BI=218$ $LK,"ICLocalVarInit",A="FL:::/Compiler/BackC.CPP.Z,923",BI=217$
$LK,"PrsFor",A="FL:::/Compiler/PrsStmt.CPP.Z,526",BI=219$ $LK,"PrsFor",A="FL:::/Compiler/PrsStmt.CPP.Z,526",BI=218$
$LK,"PassTrace",A="FL:::/Compiler/CMisc.CPP.Z,11",BI=220$ $LK,"PassTrace",A="FL:::/Compiler/CMisc.CPP.Z,11",BI=219$
$LK,"PrsPopDeref",A="FL:::/Compiler/PrsLib.CPP.Z,21",BI=221$ $LK,"PrsPopDeref",A="FL:::/Compiler/PrsLib.CPP.Z,21",BI=220$
$LK,"ICCopyTemplate",A="FL:::/Compiler/BackFA.CPP.Z,75",BI=222$ $LK,"ICCopyTemplate",A="FL:::/Compiler/BackFA.CPP.Z,75",BI=221$
$LK,"PrsStmt",A="FL:::/Compiler/PrsStmt.CPP.Z,893",BI=222$
$LK,"PrsFun",A="FL:::/Compiler/PrsStmt.CPP.Z,132",BI=223$ $LK,"PrsFun",A="FL:::/Compiler/PrsStmt.CPP.Z,132",BI=223$
$LK,"LexIncludeStr",A="FL:::/Compiler/Lex.CPP.Z,298",BI=224$ $LK,"LexIncludeStr",A="FL:::/Compiler/Lex.CPP.Z,298",BI=224$
$LK,"PrsType",A="FL:::/Compiler/PrsVar.CPP.Z,287",BI=225$ $LK,"PrsType",A="FL:::/Compiler/PrsVar.CPP.Z,287",BI=225$
$LK,"CmpCtrlNew",A="FL:::/Compiler/Lex.CPP.Z,28",BI=226$ $LK,"CmpCtrlNew",A="FL:::/Compiler/Lex.CPP.Z,28",BI=226$
$LK,"cmp_type_flags_src_code",A="FL:::/Compiler/Lex.CPP.Z,328"$ $LK,"cmp_type_flags_src_code",A="FL:::/Compiler/Lex.CPP.Z,327"$
$LK,"PrsVarInit2",A="FL:::/Compiler/PrsVar.CPP.Z,123",BI=227$ $LK,"PrsVarInit2",A="FL:::/Compiler/PrsVar.CPP.Z,123",BI=227$
$LK,"PrsPop",A="FL:::/Compiler/PrsLib.CPP.Z,6",BI=228$ $LK,"PrsPop",A="FL:::/Compiler/PrsLib.CPP.Z,6",BI=228$
$LK,"asm_seg_prefixes",A="FL:::/Compiler/Asm.CPP.Z,388"$ $LK,"asm_seg_prefixes",A="FL:::/Compiler/Asm.CPP.Z,388"$
@@ -294,157 +294,142 @@ $LK,"CmpLoadDefines",A="FL:::/Compiler/CInit.CPP.Z,205",BI=230$
$LK,"PrsIf",A="FL:::/Compiler/PrsStmt.CPP.Z,456",BI=231$ $LK,"PrsIf",A="FL:::/Compiler/PrsStmt.CPP.Z,456",BI=231$
$LK,"ICBuiltInFloatConst",A="FL:::/Compiler/BackLib.CPP.Z,413",BI=232$ $LK,"ICBuiltInFloatConst",A="FL:::/Compiler/BackLib.CPP.Z,413",BI=232$
$LK,"ICFUnaryMinus",A="FL:::/Compiler/BackFA.CPP.Z,198",BI=233$ $LK,"ICFUnaryMinus",A="FL:::/Compiler/BackFA.CPP.Z,198",BI=233$
$LK,"ICOrEqual",A="FL:::/Compiler/BackC.CPP.Z,715",BI=234$ $LK,"LexDocRead",A="FL:::/Compiler/Lex.CPP.Z,310",BI=234$
$LK,"LexDocRead",A="FL:::/Compiler/Lex.CPP.Z,310",BI=235$ $LK,"CmpFixUpJITAsm",A="FL:::/Compiler/CMain.CPP.Z,174",BI=235$
$LK,"CmpFixUpJITAsm",A="FL:::/Compiler/CMain.CPP.Z,174",BI=236$ $LK,"COCPopNoFree",A="FL:::/Compiler/PrsLib.CPP.Z,114",BI=236$
$LK,"COCPopNoFree",A="FL:::/Compiler/PrsLib.CPP.Z,114",BI=237$ $LK,"ParenWarning",A="FL:::/Compiler/CExcept.CPP.Z,110",BI=237$
$LK,"ParenWarning",A="FL:::/Compiler/CExcept.CPP.Z,110",BI=238$ $LK,"PrsFunCall",A="FL:::/Compiler/PrsExp.CPP.Z,378",BI=238$
$LK,"PrsFunCall",A="FL:::/Compiler/PrsExp.CPP.Z,378",BI=239$ $LK,"ICDerefPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,473",BI=239$
$LK,"ICDerefPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,473",BI=240$ $LK,"Option",A="FL:::/Compiler/CMisc.CPP.Z,1",BI=240$
$LK,"Option",A="FL:::/Compiler/CMisc.CPP.Z,1",BI=241$ $LK,"ExeFile2",A="FL:::/Compiler/CMain.CPP.Z,655",BI=241$
$LK,"ExeFile2",A="FL:::/Compiler/CMain.CPP.Z,655",BI=242$
$LK,"COptMemberVar",A="FL:::/Compiler/OptLib.CPP.Z,550"$ $LK,"COptMemberVar",A="FL:::/Compiler/OptLib.CPP.Z,550"$
$LK,"PE_CHECK_BINARY_OPS1",A="FL:::/Compiler/PrsExp.CPP.Z,6"$ $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,"PE_CHECK_BINARY_OPS2",A="FL:::/Compiler/PrsExp.CPP.Z,7"$
$LK,"LexBackupLastChar",A="FL:::/Compiler/LexLib.CPP.Z,1",BI=243$ $LK,"LexBackupLastChar",A="FL:::/Compiler/LexLib.CPP.Z,1",BI=242$
$LK,"Trace",A="FL:::/Compiler/CMisc.CPP.Z,19",BI=244$ $LK,"Trace",A="FL:::/Compiler/CMisc.CPP.Z,19",BI=243$
$LK,"ICBrBitOps",A="FL:::/Compiler/BackC.CPP.Z,211",BI=245$ $LK,"ICBrBitOps",A="FL:::/Compiler/BackC.CPP.Z,211",BI=244$
$LK,"LexGetChar",A="FL:::/Compiler/Lex.CPP.Z,107",BI=246$ $LK,"LexGetChar",A="FL:::/Compiler/Lex.CPP.Z,107",BI=245$
$LK,"LexSkipEol",A="FL:::/Compiler/Lex.CPP.Z,269",BI=247$ $LK,"LexSkipEol",A="FL:::/Compiler/Lex.CPP.Z,269",BI=246$
$LK,"ICFlagBranch",A="FL:::/Compiler/BackB.CPP.Z,785",BI=248$ $LK,"ICFlagBranch",A="FL:::/Compiler/BackB.CPP.Z,785",BI=247$
$LK,"SLASH_OP_FSUBR",A="FL:::/Compiler/BackLib.CPP.Z,266"$ $LK,"SLASH_OP_FSUBR",A="FL:::/Compiler/BackLib.CPP.Z,266"$
$LK,"ICFPreIncDec",A="FL:::/Compiler/BackFB.CPP.Z,657",BI=249$ $LK,"ICFPreIncDec",A="FL:::/Compiler/BackFB.CPP.Z,657",BI=248$
$LK,"ExeFile",A="FL:::/Compiler/CMain.CPP.Z,616",BI=250$ $LK,"ExeFile",A="FL:::/Compiler/CMain.CPP.Z,616",BI=249$
$LK,"COCMiscNew",A="FL:::/Compiler/PrsLib.CPP.Z,143",BI=251$ $LK,"COCMiscNew",A="FL:::/Compiler/PrsLib.CPP.Z,143",BI=250$
$LK,"cmp_templates_dont_pop",A="FL:::/Compiler/CExts.CPP.Z,43"$ $LK,"cmp_templates_dont_pop",A="FL:::/Compiler/CExts.CPP.Z,43"$
$LK,"CmpOffset2Reg",A="FL:::/Compiler/OptLib.CPP.Z,83",BI=252$ $LK,"CmpOffset2Reg",A="FL:::/Compiler/OptLib.CPP.Z,83",BI=251$
$LK,"PrsFunNew",A="FL:::/Compiler/PrsLib.CPP.Z,62",BI=253$ $LK,"PrsFunNew",A="FL:::/Compiler/PrsLib.CPP.Z,62",BI=252$
$LK,"StreamExePrint",A="FL:::/Compiler/CMain.CPP.Z,666",BI=254$ $LK,"StreamExePrint",A="FL:::/Compiler/CMain.CPP.Z,666",BI=253$
$LK,"COCGoToLabelFind",A="FL:::/Compiler/PrsLib.CPP.Z,152",BI=255$ $LK,"COCGoToLabelFind",A="FL:::/Compiler/PrsLib.CPP.Z,152",BI=254$
$LK,"OptMVCompare",A="FL:::/Compiler/OptLib.CPP.Z,556",BI=256$ $LK,"OptMVCompare",A="FL:::/Compiler/OptLib.CPP.Z,556",BI=255$
$LK,"ICToBool",A="FL:::/Compiler/BackB.CPP.Z,378",BI=257$ $LK,"ICToBool",A="FL:::/Compiler/BackB.CPP.Z,378",BI=256$
$LK,"PrsFunJoin",A="FL:::/Compiler/PrsStmt.CPP.Z,68",BI=258$ $LK,"PrsFunJoin",A="FL:::/Compiler/PrsStmt.CPP.Z,68",BI=257$
$LK,"PrsNoUnusedWarn",A="FL:::/Compiler/PrsStmt.CPP.Z,780",BI=259$ $LK,"PrsNoUnusedWarn",A="FL:::/Compiler/PrsStmt.CPP.Z,780",BI=258$
$LK,"OptFixSizeOf",A="FL:::/Compiler/OptLib.CPP.Z,485",BI=260$ $LK,"OptFixSizeOf",A="FL:::/Compiler/OptLib.CPP.Z,485",BI=259$
$LK,"cmp_templates_dont_push",A="FL:::/Compiler/CExts.CPP.Z,45"$ $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,"cmp_templates_dont_push_pop",A="FL:::/Compiler/CExts.CPP.Z,46"$
$LK,"LexAttachDoc",A="FL:::/Compiler/Lex.CPP.Z,331",BI=261$ $LK,"LexAttachDoc",A="FL:::/Compiler/Lex.CPP.Z,330",BI=260$
$LK,"PrsStreamBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,794",BI=262$ $LK,"PrsStreamBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,794",BI=261$
$LK,"cmp_templates_dont_push2",A="FL:::/Compiler/CExts.CPP.Z,44"$ $LK,"cmp_templates_dont_push2",A="FL:::/Compiler/CExts.CPP.Z,44"$
$LK,"InstEntryFind",A="FL:::/Compiler/UAsm.CPP.Z,66",BI=263$ $LK,"InstEntryFind",A="FL:::/Compiler/UAsm.CPP.Z,66",BI=262$
$LK,"PrsDotDotDot",A="FL:::/Compiler/PrsVar.CPP.Z,381",BI=264$ $LK,"PrsDotDotDot",A="FL:::/Compiler/PrsVar.CPP.Z,381",BI=263$
$LK,"ICMulEqu",A="FL:::/Compiler/BackA.CPP.Z,344",BI=264$
$LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CPP.Z,1",BI=265$ $LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CPP.Z,1",BI=265$
H2@¡#¡#ª#°#Ë#Ğ#û#ı#0$$@$G$X$k$¨+ÆjÆjÜjäjïjûjk%kk1k7k7k^kkk–k¯k¯kÙkûkll lEl2lYlfl‘l‘l˜llÉlÉlÉlÓlH<J�õ�õ¸õÂõÆõÊõÏõÑõíõ ö öö|ªÅùùàùâùéùïùõù÷ùıùú H2@o#o#x#~#™#�#É#Ë#ş#è#$$&$9$¨+†j†jœj¤j¯j»jÆjåjÈjñj÷j÷jk+kVkokok™k»kÓkÀkßklòkl&lQlQlXlvl‰l‰l‰l“lH<J^õ^õxõ‚õ†õŠõ�õ‘õ­õÉõÉõÓõ|ªÅvùvù ù¢ù©ù¯ùµù·ù½ùÃùÊù×ùäù÷ùúúúú ú*ú:úMú]ú{ú�ú8~ß~߇ߌߗߠߧߩ߮ßd`µnÓnÓŒÓ�Ó�ÓŸÓ¬Ó®ÓºÓºÓÇÓÉÓÖÓØÓäÓäÓúÓÔÔÔÔ$Ô/Ô5Ô:Ô<ÔHÔOÔ^ÔiÔoÔtÔvÔ‚Ô²ÔØÔèÔøÔÕ
úú$ú7úEúTúYú[ú`újúzú�ú�ú»úÍú8¶ß¶ß¿ßÄßÏߨßßßáßæßd`µ¦Ó¦ÓÄÓÈÓÕÓ×ÓäÓæÓòÓòÓÿÓÔÔÔÔÔ2Ô;Ô;ÔFÔMÔ\ÔgÔmÔrÔtÔ€Ô‡Ô–Ô¡Ô§Ô¬Ô®ÔºÔêÔÕ Õ0Õ@ÕBÕRÕbÕrÕrÕwÕ‘Õ˜ÕŸÕŸÕŸÕŸÕ¦Õ¼ÕÈÕÎÕÔÕÚÕŞÕŞÕŞÕ ÖÖ(Ö4Ö:Ö@ÖFÖHÖHÖVÖDÃVÖVÖlÖoÖrÖÖ…Ö’Ö•Ö˜Ö�Ö ÖªÖ,cjX‡X‡f‡p‡{‡†‡Œ‡’‡ jn��œ±· ÕÕ*Õ:Õ:Õ?ÕYÕ`ÕgÕgÕgÕgÕnÕ„Õ�Ֆ՜բզզզÕÓÕÚÕğÕüÕÖÖÖÖÖÖDÃÖÖ4Ö7Ö:ÖGÖMÖZÖ]Ö`ÖfÖhÖrÖ,cj(‡(‡6‡@‡K‡V‡\‡b‡ jnVVdy
P 66'666N6T6f6f6q6z6€6‡6�6 œ;^®E®EEºEÓEæEùEF7F@FQFxF�F�F±FÀFÉFÖFİFGG G(G(G;GKGOGSG Œ×öşş&*8>DDq‡›©ÀÆÒ×å  &&,,< |1### #+#D#D#G#V#\#e#g#m#v#x#~#ˆ#�#’#’#œ#0 ' … …®…Î…Ô…Ú…Ú…à…„•²øœøœ ����B�U�\�m�’���¨�ª�µ�Ú�å�ğ�ò�ù�����@�("NÜNÜ]Üp܈܈Ü�Ü öÛöÛÜÜ܃H¯H¯m¯t¯‹¯—¯¢¯´¯Å¯¶¯´¯å¯° °°°%°/°6°=°A°C°I°U°_°f°m°q°q°{°€°‹°�°®°Ÿ°�°Î°ï°û°±±±±%±,±0±2±8±D±N±U±\±`±`±m±{±‹±�±®±Ÿ±�±Î±ï±û±²²²²%²,²0²2²8²D²N²U²\²`²`²j²z²Œ²�²�²Œ²½²Ä²Ê²Ö²à²ç²î²ò²ô²ú²³³³³"³"³,³:³C³\³h³l³l³o³x³î³ìN{N{k{ ¡s{…{¡{¬{¾{Å{Ö{Ş{æ{é{÷{#|#|8|:|:|F|N|R|_|_|k|s|w|„|„|„| |«|¼|¼|Á|Ù|è|í|ó|ş|}}} }/}4}:}E}J}J}X}a}m}u}}}…}ˆ}�}“}œ}®}·}È}Ø}Ø}İ}å}í}ğ}ö}ö}û}û}û}~~ ~~+~P~g~t~|~„~�~œ~¢~©~²~¶~¹~Å~Ë~Ò~×~×~å~õ~õ~ P ç5ç5õ566"64646?6H6N6U6[6 œ;^vEvE~E‚E›E®EÁEŞEÿEFF@FWFWFyFˆF‘F�F¥F×FäFèFğFğFGGGG Œ×öÆÆæîò  9Ocqˆ�šŸ­ÌÕåçîîôô |1Ï"Ï"å"î"ù"###$#*#3#5#;#D#F#L#V#]#`#`#j#0 'p…p…~…�…¤…ª…ª…°…„•²ÀœÀœÔœÛœâœæœ
*//6AGOU`eet‘—Ÿ¥ªµÇÍÕÛààôú€ € €€#€#€E€l€q€q€…€‹€¡€²€¸€½€Ö€Ü€ì€ô€ü€����!�7�H�N�S�l�r�‚�Š�’�˜�����³�¹�Ï�à�æ�ë�ú�‚‚‚!‚'‚.‚3‚3‚I‚O‚e‚v‚|‚~‚�‚“‚�‚¥‚­‚³‚º‚º‚º‚̂Ղæ‚ö‚ö‚û‚û‚ ƒƒ"ƒ5ƒ<ƒBƒJƒPƒ`ƒfƒnƒtƒtƒtƒyƒyƒyƒyƒyƒ˜ƒ¤ƒ©ƒ©ƒ¿ƒȃÓƒ܃çƒòƒ÷ƒ÷ƒ „„)„:„@„E„W„]„b„{„™„™„�„�„ª„²„µ„»„Á„ƄƄê„ò„ú„ ��$�5�Z�e�p�r�}�¢�­�¸�º�Á�Ê�Ì�×�Ş��("ÜÜÜ0ÜHÜHÜNÜ ¶Û¶ÛÅÛØÛŞÛƒ¯¯5¯<¯S¯_¯j¯|¯�¯~¯|¯­¯È¯Ô¯Û¯á¯í¯÷¯ş¯° ° °°°'°.°5°9°9°C°H°S°e°v°g°e°–°·°Ã°Ê°Ğ°Ü°æ°í°ô°ø°ú°± ±±±$±(±(±5±C±S±e±v±g±e±–±·±Ã±Ê±Ğ±Ü±æ±í±ô±ø±ú±² ²²²$²(²(²2²B²T²e²V²T²…²Œ²’²�²¨²¯²¶²º²¼²Â²Î²Ø²ß²æ²ê²ê²ô²³ ³$³0³4³4³7³@³¶³ì{{+{É 3{E{a{l{~{…{–{�{¦{©{·{ã{ã{ø{ú{ú{||| | |+|3|7|D|D|D|`|k|||||�|™|¨|­|³|¾|Ã|Ã|È|à|ï|ô|ú|}
…………'…E…E…J…J…V…^…a…h…n…s…s…“…›…«…±…¸…Ö…å…í…† ††††5†=†U†]†`†g†m†m†m†Œ†œ†¨†°†³†º†À†І߆놇‡‡‡‡6‡B‡]‡e‡h‡o‡u‡u‡u‡u‡z‡z‡ƒ‡“‡©‡¯‡LJÚ‡à‡å‡÷‡ı‡ˆˆ$ˆ0ˆ8ˆ;ˆBˆHˆqˆyˆ‰ˆ�ˆ–ˆ–ˆ–ˆ›ˆ›ˆ¤ˆ¼ˆÒˆ؈ğˆ‰ ‰‰9‰?‰R‰‰‰›‰·‰¿‰ʼnʉʉä‰ğ‰ü‰ŠŠ Š Š&Š2Š>ŠIŠIŠNŠNŠhŠtЀЋЋŠ�Š�ЦЬЏоŠÊÕŠÛŠàŠïŠûŠ‹ ‹‹‹-‹8‹A‹M‹U‹X‹^‹d‹i‹}‹Œ‹”‹¬‹´‹·‹½‹Ëۋ㋌Œ%Œ(Œ.Œ4Œ4ŒEŒNŒZŒbŒeŒlŒrŒwŒ‰Œ˜Œ Œ¸ŒÀŒÃŒÊŒĞŒèŒğŒ�)�1�4�;�A�A�Q�Z�f�n�q�w�}�‚�–�¥�­�Ç�Ï�Ò�Ø�Ş�ö�ş� �<�D�G�M�S�S�d�m�y���„�‹�‘�–�¨�·�¿�Ú�â�å�ì�ò� }
��4�Q�Y�\�c�i�i�i�i�i�n�n�„�Š�–�œ�¡�³�¹�¾�Ì�Ø�á�í�õ�ø�ÿ�� }}!}-}5}=}E}H}N}S}\}n}w}ˆ}˜}˜}�}¥}­}°}¶}¶}»}»}»}Á}Ä}Ë}Ö}ë}~'~4~<~D~P~\~b~i~r~v~y~…~‹~’~—~—~¥~µ~µ~Â~Â~Ê~Ò~Û~ê~ï~ï~ö~ %%4?QW_eju‡�•›  ´ºÅËÍİãã€,€1€1€E€K€a€r€x€}€–€œ€¬€´€¼€€Ç€Ç€Û€á€÷€���,�2�B�J�R�X�]�]�s�y��� �¦�«�º�À�Ñ�Ù�á�ç�î�ó�ó� ‚‚%‚6‚<‚>‚M‚S‚]‚e‚m‚s‚z‚z‚z‚Œ‚•‚¦‚¶‚¶‚»‚»‚ɂтâ‚õ‚ü‚ƒ
��+�3�K�S�V�]�c�{�ƒ�¢�¼�Ä�Ç�Î�Ô�Ô�Ô�å�î�ú�‘‘ ‘‘‘)‘8‘D‘_‘g‘j‘q‘w‘�‘›‘½‘Ú‘â‘å‘ì‘ò‘ò‘ò‘ò‘ò‘÷‘÷‘ ƒƒ ƒ&ƒ.ƒ4ƒ4ƒ4ƒ9ƒ9ƒ9ƒ9ƒ9ƒXƒdƒiƒiƒƒˆƒ“ƒœƒ§ƒ²ƒ·ƒ·ƒ̓Óƒéƒúƒ„„„„"„;„Y„Y„^„^„j„r„u„{„�„†„†„ª„²„º„ʄЄքք焅…
’%’+’6’;’;’N’d’j’u’w’w’Š’­’³’¾’¾’Ğ’Ù’ê’ï’“““““)“?“E“S“b“g“g“z“�“–“¤“³“¸“¸“ΓÔ“ñ“ ” ”3”9”>”J”S”b”b”g”g”}”ƒ” ”¸”¸”â”è”í”ù”•••••,•2•O•g•g•‘•—•œ•¨•±•À•À•Å•Å•Û•á•ş•––@–F–H–T–]–h–h–h–h–m–{–„–•–—–©–¶–¶–¶–Æ–Ö–Û–ÿ– — ——&—C—S—w—‡—�—�—�—’———¬—¿—ı— ˜˜˜˜+˜:˜l˜t˜z˜|˜�˜ˆ˜ˆ˜‘˜£˜¶˜¿˜ΘΘÓ˜ؘç˜ğ˜û˜ı˜™™™2™9™?™G™R™X™h™n™v™�™‡™‡™Œ™‘™˜™Ÿ™¦™­™¶™Å™Å™Å™Ê™Ê™Ê™Ü™á™á™ó™ş™ššššššš$š5š8šDšMšYš`šfškškšvš‡šŠš–šŸš«š²š¸š½š½š½š½ššÇšÇšΚҚҚޚçšêšêšõš÷š ›››%›0›;›A›J›N›N›Z›c›f›f›q›s›…›Œ›’›š›¥›°›¶›À›ÛǛǛϛ֛ٛۛæ›ê›ó›ö›ö›œœœ"œ-œ8œ;œAœFœFœMœQœQœ]œfœiœiœtœvœˆœ�œ•œ¤œ¯œºœÀœÉœÍœÍœÙœâœåœåœğœòœ� ���$�/�5�?�B�F�F�N�U�X�Z�e�i�r�u�u�€�‚�š�¡�¬�·�º�À�Å�Å�×�Û�Û�ç�ğ�ó�ó�ş���� �1�<�G�M�R�R�]�b�b�m�r�r�}�€�„�‹���•�š�š�®�³�³�À�Ä�Õ�İ�á�õ�ü�ŸŸ ŸŸ!Ÿ'Ÿ7Ÿ;ŸLŸ^ŸiŸmŸmŸzŸ‚ŸŠŸ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ’Ÿ’Ÿ Ÿ§Ÿ´ŸÀŸΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟĞŸĞŸçŸïŸûŸûŸ * B D P ] ] € � ˜ ¡ ª µ ¼ ¼ Æ Æ É Û ù ¡¡4£x¿Ù 4 444!4*464B4W4W4ƒ4‡4Œ4˜4«4µ4¸4Ã4Æ4Î4Ø4°›ÃFŒFŒ\ŒcŒtŒyŒ�Œ{ŒšŒ Œ Œ¬ŒÄŒ±ŒĞŒÓŒÕŒãŒèŒıŒêŒ � � ��-��9�?�?�R�e�x�‹���¨�„�æwæwxxx#x*x,x/x6x=x=xYx]xcxcx{x�x x x¨xÌxìx yy3y8yDyOyTyaydy›y¬y±y·y¹y¿yÂyÓyØyÛyãyìyz'z>zQzVzZz|z�z”z«z¾zÃzÇzéz{${7{<{M{R{U{W{]{c{t{y{{‡{‡{‘{š{±{Ä{É{Í{ï{ …
|*|=|B|]|}|”|§|¬|°|Ò|å|å|}}}}&}(}(}(}6}N}P}P}^}v}v}ˆ}ˆ}‘}�}´}Ô}î}õ}ÿ}~~~~~#~=~D~N~f~h~n~ˆ~�~™~§~²~²~Ì~H‰—ø‚ø‚ƒ%ƒ5ƒ<ƒSƒnƒ€ƒ„ƒÇƒLíü��*�6�L�8�X�Z�m�€�‹�–���`ÊÆ–Æ–Ü–ş– ——$—=—A—G—Z—w—y—y—ª—˜—y—É—Ó—4IR.Ó.Ó7Ó7Ó:ÓHÓVÓYÓ^Óä;�ó�ó¶ó¹ó×óîóÿóÿóô ô%ô%ô@ôFôKôKôTôbônôuô{ô€ôÃôÍôÔôÚôÜôÜôïôõôõôõôõúôõ%õ7õ<õ<õ<õCõJõQõfõmõ‰õ‰õ›õĞL¼°¡°¡Ê¡Õ¡à¡é¡ñ¡ô¡û¡ÿ¡¢¢¢#¢1¢N¢[¢j¢o¢{¢€¢‡¢“¢˜¢›¢¥¢�¢µ¢¾¢Ï¢Í¢Å¢İ¢æ¢ì¢ì¢ú¢ı¢££#£*£.£3£J£b£k£y£•£¡£¡£¹£Ê£Ê£Ñ£í£ù£¤¤¤/¤8¤?¤C¤N¤S¤Z¤w¤¤¤«¤¯¤±¤¼¤È¤Ì¤á¤ã¤ô¤ş¤ ¥¥"¥1¥M¥M¥P¥X¥]¥ß¥Xs…&H&HCHTHaHkH‚HŸH½HÃHÌHÚHàHãHïHŒ ˆ_ˆ_˜_¹_¹_Ç_Ç_Ç_Ç_Ğ_Ğ_×_ñ_` ………!…(….…3…3…S…[…k…q…x…–…¥…­…Å…Í…Ğ…×…İ…õ…ı…†† †'†-†-†-†L†\†h†p†s†z†€†�†Ÿ†«†ƆΆц؆ކö†‡‡%‡(‡/‡5‡5‡5‡5‡:‡:‡C‡S‡i‡o‡‡‡š‡ ‡¥‡·‡½‡‡އä‡ğ‡ø‡û‡ˆˆ1ˆ9ˆIˆOˆVˆVˆVˆ[ˆ[ˆdˆ|ˆ’ˆ˜ˆ°ˆÈɈΈùˆÿˆ‰I‰[‰w‰‰…‰ЉЉ¤‰°‰¼‰ljlj̉̉æ‰ò‰ş‰ Š ŠŠŠ(Š4Š@ŠKŠKŠPŠPŠfŠlŠxŠ~ŠƒŠ•Š›Š Š¯Š»ŠÇŠÍŠÓŠÚŠíŠøŠ‹ ‹‹‹‹$‹)‹=‹L‹T‹l‹t‹w‹}‹ƒ‹›‹£‹Ëİ‹å‹è‹î‹ô‹ô‹ŒŒŒ"Œ%Œ,Œ2Œ7ŒIŒXŒ`ŒxŒ€ŒƒŒŠŒ�Œ¨Œ°ŒÏŒéŒñŒôŒûŒ����&�.�1�7�=�B�V�e�m�‡���’�˜����¾�à�ü��� ���$�-�9�A�D�K�Q�V�h�w��š�¢�¥�¬�²�Ê�Ò�ô����#�)�)�)�)�)�.�.�D�J�V�\�a�s�y�~�Œ�˜�¡�­�µ�¸�¿�Å�Ê�Ü�ë�ó� ����#�;�C�b�|�„�‡���”�”�”�¥�®�º�Â�Å�Ì�Ò�×�é�ø�‘ ‘'‘*‘1‘7‘O‘[‘}‘𑢑¥‘¬‘²‘²‘²‘²‘²‘·‘·‘Ê‘å‘ë‘ö‘û‘û‘’$’*’5’7’7’J’m’s’~’~’�’™’ª’¯’Á’Ñ’Ñ’Ö’Ö’é’ÿ’““"“'“'“:“P“V“d“s“x“x“�“”“±“ɓɓó“ù“ş“
` ””"”"”'”'”=”C”`”x”x”¢”¨”­”¹””єє֔֔ì”ò”•'•'•Q•W•\•h•q•€•€•…•…•›•¡•¾•Ö•Ö•–––––(–(–(–(–-–;–D–U–W–i–v–v–v–†–––›–¿–Ë–Ì–Ñ–æ–——7—G—M—M—M—R—W—l——½—Í—Ó—Õ—Ú—ë—ú—,˜4˜:˜<˜A˜H˜H˜Q˜c˜v˜˜�˜�˜“˜˜˜§˜°˜»˜½˜Ƙјјò˜ù˜ÿ˜™™™(™.™6™A™G™G™L™Q™X™_™f™m™v™…™…™…™Š™Š™Š™œ™¡™¡™³™¾™Æ™ΙÔ™Ô™Ô™Ù™Ù™ä™õ™ø™š šš š&š+š+š6šGšJšVš_škšršxš}š}š}š}š‚š‡š‡š�š’š’š�š§šªšªšµš·šÉšĞšÖšåšğšûš›
```#`3`3`A`G`G`_`_`e`‹` (kq˜‡˜‡¦‡²‡Â‡É‡Ï‡ @Uafæfætæ|æƒæ¢æ¯æ¯æ²æ´æºæ!$/4æÜæÜóÜİİ İ"$).¾Ü¾ÜËÜÙÜŞÜäÜ#$#(�Ü�Ü�ܬܱܷÜ$8ìv  %;CMejz�˜¢º¿Ïßõı + 3 = M R h r | † � š ¤ ® ¸ Â Ì Ö à ê ››››#›&›&›1›3›E›L›R›Z›e›p›v›€›ƒ›‡›‡›�›–›™›››¦›ª›³›¶›¶›Á›ÛÛ›â›í›ø›û›œœœ œœœœ&œ)œ)œ4œ6œHœOœUœdœoœzœ€œ‰œ�œ�œ™œ¢œ¥œ¥œ°œ²œÄœËœÑœÙœäœïœõœÿœ�������%�)�2�5�5�@�B�Z�a�l�w�z�€�…�…�—�›�›�§�°�³�³�¾�À�Ò�Ù�ß�ñ�ü�� ����"�"�-�2�2�=�@�D�K�P�U�Z�Z�n�s�s�€�„�•���¡�µ�¼�À�À�Í�Ù�á�ç�÷�û� ŸŸ)Ÿ-Ÿ-Ÿ:ŸBŸJŸPŸPŸPŸPŸPŸRŸRŸ`ŸgŸtŸ€Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ�Ÿ§Ÿ¯Ÿ»Ÿ»ŸÜŸêŸ     @ M X a j u | | † † ‰ › ¹ Å Å ô¢x¿Ù×3×3é3ë3ï3ø344%4%4Q4U4Z4f4y4ƒ4†4‘4”4œ4¦4°›ÃŒŒŒ#Œ4Œ9ŒNŒ;ŒZŒ`Œ`ŒlŒ„ŒqŒ�Œ“Œ•Œ£Œ¨Œ½ŒªŒÉŒÌŒÌŒØŒíŒÚŒùŒÿŒÿŒ�%�8�K�^�h�„�¦w¦wÄwÖwÜwãwêwìwïwöwıwıwxx#x#x;xOx`x`xhxŒx¬xÍxÒxóxøxyyy!y$y[ylyqywyyyy‚y“y˜y›y£y¬yÇyçyşyzzz<zOzTzkz~zƒz‡z©zÄzäz÷züz {{{{{#{4{9{?{G{G{Q{Z{q{„{‰{�{¯{Ê{ê{ı{||=|T|g|l|p|’|¥|¥|À|À|À|Î|æ|è|è|è|ö|}}}}6}6}H}H}Q}^}t}”}®}µ}¿}Ò}Ö}Ö}Ö}İ}ã}ı}~~&~(~.~H~O~Y~g~r~r~Œ~H‰—ȂȂ߂õ‚ƒ ƒ#ƒ>ƒPƒTƒ—ƒLíüÖ�Ö�ê�ö� �ø���-�@�K�V�^�4IRöÒöÒÿÒÿÒÓÓÓ!Ó&Óä;NóNóvóyó—ó®ó¿ó¿óÚóàóåóåóôô ô ôô"ô.ô5ô;ô@ôƒô�ô”ôšôœôœô¯ôµôµôµôÅôºôÖôåô÷ôüôüôüôõ
  ( 2 < F P f p z � š ¤ ® ¸ Â Ì Ö à ê ô ş !!!&!0!:!D!N!X!b!l!v!€!Š!”!�!¨!²!¼!Ì!%¨Dø˜ø˜™™™*™;™M™O™V™\™l™w™�™Œ™£™¦™¨™º™À™Ğ™Ú™ä™ë™ö™ ššš)š)š)š=š&Ğ1öö"-5NNb{{†Š•½œÉßí F]bjnsš°´´Äà **ITZp�†˜À×Üäèê'+Gow|€…–¬ºÎÓìı4tS€�¨®ÄÕÚö&+/4EWey{”¥©©»ãúÿ  4JN[[[[nt~…˜¯¯ËÛééÿ4GLRhwpŒœ£±ÏÇô*chsy„£ºªÆÜê,Kwgƒ ¿ÊĞæ÷ü(,Hpx}�†—­»ÏÔíş5Tƒs�¬·½Óäé-5:>CTftˆŠ£´¸¸×í'-7>Qhhh„”¢¢¸ÈİÖñ %4-IYg„„  ­ÍÍÍí'$5:İİİ+İ0İ6İ(¨Ek@š@šVš]šdšršƒš•š—š�š¤š´š¿šÉšÔšëšîšğš› ››#›-›4›?›S›[›[›q›q›q›†›)(&,±/±/¿/Æ/Ğ/Ö/Ü/*0_gVGVGlGG�G”G—GŸG+  ßN N p x ~ ‹ ’ ® ´ ´ ´ Á à Î Ø ß ë ö ü     ) 3 3 E K [ a f m m � ” £ ¼ ¿ Å Å Ç Í Ó Õ Õ Õ æ ğ õ õ  õõ&õ-õIõIõ[õĞL¼x¡x¡’¡�¡¨¡±¡¹¡¼¡Ã¡Ç¡Ğ¡á¡å¡ë¡ù¡¢#¢2¢7¢C¢H¢O¢[¢`¢c¢m¢e¢}¢†¢—¢•¢�¢¥¢®¢´¢´¢Â¢Å¢Ù¢â¢ë¢ò¢ö¢û¢£*£3£A£]£i£i£�£’£’£™£µ£Á£É£Ü£ã£÷£¤¤ ¤¤¤"¤?¤l¤s¤w¤y¤„¤�¤”¤©¤«¤¼¤Æ¤Ñ¤Û¤ê¤ù¤¥¥¥ ¥%¥§¥Xs…îGîG HH)H3HJHgH…H‹H”H¢H¨H«H·HŒ X_X_h_‰_‰_—_—_—_—_ _ _§_Á_Ò_Ú_Ú_å_å_ó_`````/`/`5`[`(kqh‡h‡v‡‚‡’‡™‡Ÿ‡ @Ua&æ&æ4æ<æCæbæoæoærætæzæ $/4¦Ü¦Ü³ÜÁÜÆÜÌÜ!$).~Ü~܋ܙÜ�ܤÜ"$#(NÜNÜ]ÜlÜqÜwÜ#4ìu××ãó 38H^fpˆ��­ÃËÕíù  6 @ J T ^ h r | † � š ¤ ® ¸ Î Ø â ì ö
!!!(!1!7!=!S!X!_!r!v!v!~!„!Š!”!›!¢!«!½!½!â!æ!ì!ò!""""$"*"0"0"2"6"<"B"H"M"M"M"M"x"‰"‰" "­"±"¹"Î"î"î"ô"÷"û"###$#9#M#U#f#j#{##…#�# #¦#³#µ#Á#ß#å#ğ#$$$$*$0$9$?$T$b$j$n$$ƒ$‰$¢$¤$ª$·$¹$Å$ã$é$ï$õ$ş$%!%%;%D%J%J%_%d%d%k%r%„%‰%‰%‰%£%¥%¿%Á%Û%á%é%í%ô%&&#&/&F&M&S&^&c&c&j&n&u&ƒ&…&�&’&š&¥&«&·&¼&Â&Ç&Ï&Ô&ã&ş&''*'F'H'd'd'k'€'…'�'›' '¦'«'«'²'¶'½'Ë'Í'Õ'Ù'İ'ç'ó'ú'ş'(((%(3(8(D(D(L(L(o(o(}(ƒ(ˆ(Œ(‘(‘(‘(‘(—(™(™(¼(Â(È(Ï(å(ç(ç(ç(ò(ò(ò(÷( *,4+töÄöÄÅÅ,Å4Å<ÅFÅJÅQÅWÅkÅsÅxÅ{ņőřŤůűÅÇÅÎÅÕÅàÅëÅíÅøÅÆÆÆÆÆ0Æ:ÆQÆWÆ]ÆnÆtÆ}Æ�ƕƕÆ�ơƬƱÆÃÆÎÆÒÆàÆâÆæÆõÆõÆõÆÇÇ ÇÇ#Ç‘Ç-Ô@æàæàüàáá*á*áGáZámá€á…á…á£á±áÄá×áßáßáááááááôáöáöáöáıáâ#â#â#â6âAâTâjâoâsâzâ�â¢â©â©â¬âÑâ.LAPq$q$$�$œ$·$¼$Ü$Ş$ù$%%%#%J%/P~� ˆ ˆ.ˆ;ˆIˆ[ˆfˆtˆ�ˆ�ˆ¡ˆ¬ˆºˆÀˆÆˆ04   4 > H ^ h r | † � š ¤ ® ¸ Â Ì Ö à ê ô ş !!!&!0!:!D!N!X!b!l!v!€!Š!š!$¨DÀ˜À˜Ö˜İ˜ä˜ò˜™™™™$™4™?™I™T™k™n™p™‚™ˆ™˜™¢™¬™³™¾™Ó™Û™Û™ñ™ñ™ñ™š%$5:ÎÜÎÜÜÜëÜğÜöÜ&¨Ekššš%š,š:šKš]š_šfšlš|š‡š‘šœš³š¶š¸šÊšÑšášëšõšüš››#›#›9›9›9›N›'(&,//�/”/�/¤/ª/(0_gGG4GGGVG\G_GgG)  ß  8 @ F S Z v | | | ‰ ‹ –   § ³ ¾ Ä Î Õ æ æ ñ û û   # ) . 5 5 V \ k ~ „ ‡ � � � • › � � � ® ¸ ½ ½ Ò Ü Ü ğ ù ÿ !! !'!:!>!>!F!L!R!\!c!j!s!…!…!ª!®!´!º!É!Ü!â!æ!ì!ò!ø!ø!ú!ş!"
Á5Á5Ï5Û5ì5ş56661|¼W��ÀÇÖá@GGVe�ŒŒ˜Ÿ¯µÓŞàùÿ """"""@"Q"Q"h"u"y"�"–"¶"¶"¼"¿"Ã"É"É"Û"ì"###.#2#C#G#M#f#h#n#{#}#‰#§#­#¸#Û#æ#ì#ò#ø#$$$*$2$6$G$K$Q$j$l$r$$�$�$«$±$·$½$Æ$Ì$é$Ü$% %%%'%,%,%3%:%L%Q%Q%Q%k%m%‡%‰%£%©%±%µ%¼%ß%å%ë%÷%&&&&&+&+&2&6&=&K&M&U&Z&b&m&s&&„&Š&�&—&œ&«&Æ&Ö&ã&ò&'',','3'H'M'V'c'h'n's's'z'~'…'“'•'�'¡'¥'¯'»'Â'Æ'Î'Ö'Ş'í'û'( ( (((7(7(E(K(P(T(Y(Y(Y(Y(_(a(a(„(Š(�(—(­(¯(¯(¯(º(º(º(¿(è)*4+t¾Ä¾ÄØÄÜÄôÄüÄÅÅÅÅ Å3Å;Å@ÅCÅNÅYÅaÅlÅwÅyÅ�Å–Å�ŨųŵÅÀÅËÅÍÅÙÅâÅâÅøÅÆÆ Æ%Æ6Æ<ÆEÆWÆ]Æ]ÆeÆiÆtÆyƋƖƚƨƪƮƽƽƽÆÎÆÎÆÓÆåÆëÆYÇ+Ô@®à®àÄàËàÎàòàòàá"á5áHáMáMákáyáŒáŸá§á§á©á©á©á¼á¾á¾á¾áÅáØáëáëáëáşá ââ2â7â;âBâWâjâqâqâtâ™â,LAP?$?$M$^$j$…$Š$ª$¬$Ç$â$â$ê$ñ$%-P~�ğ‡ğ‡ş‡ ˆˆ+ˆ6ˆDˆQˆ_ˆqˆ|ˆŠˆ�ˆ–ˆ.4
,5@EKRw|Š““š©ÀÀÏÕéğ÷ü ;DKP[gvŠ�—£µµÌÓÛëı    ! 5 > N ] o x ˆ › £ · Ø ï ó ÿ  �5�5�5©5º5Ì5Õ5ß5å5/|¼Wffˆ��©ÏÏØÚÚá-ITT`gw}›¦¨ÁÇÒâôı ?DR[[bqˆˆ—�±¸¿ÄÏÕİ #/>RW_k}}”›£³ÅËÔÔãéı  % 7 @ P c k    · » Ç Ş ú 
2 
D 
J )
U 9
a I
q N
� W
† W
� i
� m
¡ y
¥ �
± ¬
È ¾
ä Ä
ö Ï
ü Û
  # 3 E K K P R R W W f l r r v ï 2�Ää®Ö®ÖÊÖÖÖÚÖŞÖåÖìÖûÖ× ××× ×&×.×4×:×>×>×M×T×\×b×h×j×j×v×38 é.é.÷.ı. //%///6/</4@}‰®ç®ç¼çÇçÎçíçúçúçıçÿçè5ğh îî'/6=CELSVVhh{†¢ÊÒÛãèù 16Phllq�²Îöş%7GY[u�‘‘­Õİæîó*<A[swŠŠŠ¢�¯ÏÛáù+Gow€ˆ��°ÀÒÔî ë
 û
&NV_gl}“£µºÔìğ(HTZrŠŠŠ–œ§²ÄÔë00D```�‘ŸŸ¨³ÁÜëò           . 4 : : > · 0�ÄävÖvÖ’Ö�Ö¢Ö¦Ö­Ö´ÖÃÖÎÖÔÖÙÖÛÖçÖîÖöÖüÖ×××××$×*×0×2×2×>×18 ·.·.Å.Ë.×.â.ó.ı./
! 0 ) F W r r ‹ 6D}Š&:CI[[_bj7\Ob°†°†Ğ†ß†è†ñ†õ†ù†‡ /2@}‰nçnç|ç‡ç�ç­çºçºç½ç¿çÅç3ğh ®®Ôçïöı ((;FbŠ’›£¨¹Ïßñö(,,1]r�¾ÇÏÔå÷5MQQm•�¦®³ÄÚêü37JJJbO‚o�›¡¹ÑÖë/7@HM^p€’”®ÆÊÊæ ',=Scuz”¬°ÃÃÃÈè2JJJV\gr„”«ÂÙğğ   AQ__hs�œ«²ÂÄÊáğé  2 2 K 4D}ŠŞŞî ##'*25\Ob€†€† †¯†¸†Á†Å†É†Õ†Ú†ß†ß†ğ†ô†û†‡‡"‡60ıVßVß_ßdßmßtßvß{ß7Ğ1ÔÛâíõ";;FJU}\‰Ÿ­ÃÇÌŞ"*.3Zptt„Á Íêê 0AFX€—œ¤¨ªÑçë/7<@EVlz�“¬½ÁÓÓÓÓØô4@]hn„•šŞæëïô%9;Teii{£º¿ÇËÍô
‡‡‡ ‡$‡+‡C‡F‡R‡80ı�ß�ߗߜߥ߬߮߳ß9Do|¾¾Îâëñ .4>EXoo‹›©©¿Ïİô (70L\cq�‡´İİİê#(39Dczj†œªÂØÜì 7'C`Š�¦·¼Òèì08=AFWm{�”­¾ÂÔÔÔÔÙõC3Olw}“¤©Åíõúş&4HJctxx—­ÃÇÔÔÔçí÷ş(((DTbbxˆ�–±ÄÉÏåôí 'DD``m���­8Do|††–ª³¹ËËÏÒÚ9°Äìn�n�„�‹�œ�¡��£�Â�È�È�Ô�ì�Ù�ø�û�ı� ��%��1�4�4�@�U�B�a�g�g�z��� �³�Æ�Ğ�:<‹–66FW`fju;”)^é^éféjévé‡é‰é™é¤é¶éÁéÌéÛéìéóé êêêê'ê.êAêJêXêlêˆê�êªê<d(=°…°…¼…Ğ…Ó…ç…ï…ó…ı…††††=$t¹8E8E\E_EcEpEyE„E�E˜E¢EÊEÊEÖEØEØEäEéEéEõEúEúEF F FFFF(F-F-F9F>F>FJFOFOFOFRFRFkFyF�F�F�FŸFŸF«F±F¶F¶F¼FÈFÈFÓFßFìFG GGG G G)G,G“G>è wö¢ö¢£££,£:£O£X£p£†£˜£££´£¸£Ê£Í£Ø£á£í£¤1¤&¤ ¤A¤U¤f¤r¤€¤�¤°¤Ô¤å¤ç¤¥î¤#¥#¥&¥+¥.¥.¥5¥L¥S¥`¥e¥t¥�¥”¥”¥¨¥¬¥Ù¥Ù¥ñ¥ö¥ö¥¦¦¦(¦8¦B¦R¦^¦c¦c¦s¦{¦‹¦•¦¥¦¯¦¿¦˦ЦЦЦò¦§
:°Äì®�®�Ä�Ë�Ü�á�ö�ã�����,��8�;�=�K�P�e�R�q�t�t�€�•�‚�¡�§�§�º�Í�à�ó���;<‹–nn~�˜�¢­<\!´şHşH0I;IpIaIHIvI¥IªIªI®I¸IÄIßIæIôIöIşIJ4JFJSJkJJ„J‹J°J·JÀJÂJÇJÛJøJ §§§1§1§6§@§O§T§Z§_§_§d§n§}§‚§ˆ§�§�§“§™§�§�§­§À§̧Ù§å§ø§¨¨¨&¨:¨K¨X¨]¨u¨ˆ¨Ÿ¨¬¨´¨ǨϨÕ¨ިç¨ç¨ì¨ì¨ì¨ì¨ì¨ø¨ø¨ø¨©©/©7©R©c©p©r©†©‹©‹©‹©–©¤©©©©©°©¾©éÛ©ç©ù©ª ªªª'ª0ªMªYª_ªeªxª€ªˆªµªƪÓªÕªãªãªèªèªïªıª««!«-«3«7«@«E«E«E«E«E«]«b«b«b«b«b«s«s«s«s«s«s«s«s«s«s«|«•«ª«²«Í«Ş«ë«í«¬ ¬¬¬¬¬5¬A¬F¬h¬t¬t¬y¬y¬y¬y¬y¬y¬y¬y¬�¬“¬“¬“¬¤¬¯¬´¬´¬¿¬Ѭé¬û¬­<­G­X­]­]­]­f­ˆ­‘­¢­¦­¾­έÖ­Ş­é­®® ®8®H®H®H®H®H®j®£®¬®°®¶®»®Ä®Í®Ò®Ò®Ò®Ò®á®õ®¯¯#¯)¯.¯.¯A¯U¯{¯†¯�¯”¯”¯™¯™¯¨¯¼¯Ú¯å¯ê¯ğ¯õ¯õ¯°°B°M°U°[°[°`°`°`°i°‚°—°Ÿ°º°˰ذÚ°é°ë°ë°ë°ë°ë°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°±±(±*±*±3±5±5±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±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±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±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±I±I±K±K±b±j±v±v±z±±�±ª±¿±αÚ±ğ±
KK/KLKEKaKeKeKpKwK‰KŒK�K¤K“K°KÈKÊKâKôK÷KùKLşKLLL-L-L;LELmLfL‚L‚L‡L‹L§L³LÎLìLöLúL ² ²²#²I²i²‰²­²¯²²ğ²Ȳ ³ ³³³&³A³R³U³o³}³‰³¡³¡³̳ϳ޳ò³´$´@´,´\´n´Œ´¿´½´²´§´˜´Í´Í´Í´Ğ´Õ´Ø´ò´µ.µPµPµ{µ~µ�µ¡µµÓµïµÛµ  )¶\¶Z¶O¶D¶5¶j¶j¶j¶m¶r¶r¶y¶‰¶ª¶¶¶ º?°«Ó޿޿ô¿ø¿À
M)MM5M7MIM]MnMgM}M�M—M¶M«MÂMÄMÖMàMôMşMNN(N*N>NHNHN^NbNbNbNmNtNˆN N¢NºNÎNåNêNüNO%O;O;O;O`O`OrO=”)–é–é�é¢é®é¿éÁéÑéÜéîéùéêê$ê+êDêHêUêUê_êfêyê‚ê�ê¤êÀêÅêâê>d(=à…à…ì…††† †#†-†7†?†B†H†?$uºhEhEŒE�E“E E©E´EÀEÈEÒEúEúEFFFFFF%F*F*F6F;F;FGFLFLFXF]F]FiFnFnFzFFFF‚F‚F›F©F½FÍFÍFÏFÏFÛFáFæFæFìFøFøFGGG1G9G?G?GPGPGYG\GÃG@è w6£6£S£[£^£l£z£�£˜£°£Æ£Ø£ã£ô£ø£ ÀÀ)À)À4ÀEÀLÀYÀeÀrÀzÀ‹À‹À”À™À¡À±À¿ÀÎÀÙÀìÀìÀÿÀÿÀÁAÁAÁUÁWÁWÁaÁiÁiÁsÁ{Á{Á{ÁŒÁŒÁŒÁ�Á˜Á�Á£Á£Á§Á¯Á³Á¹Á¾Á¾ÁÊÁßÁïÁùÁ ÂÂÂÂÂÂ%Â1ÂFÂVÂ`ÂhÂnÂ�†Â�””™ «ÂÓÂŞÂíÂ÷ÂÿÂÃÃÃ"Ã"Ã"Ã"Ã"Ã"Ã"Ã"Ã"Ã-Ã9ÃFÃVÃ\ÃdÃwÃ|ÄÉÑÖÖÖÃ�æï÷üÃÄÃÉÃĞÃÛÃÄÄÄ%Ä/ÄAÄFÄLÄQÄQÄXÄjÄrÄ…Ä�ĕĪĬķĿÄÔÄÔÄÜÄğÄøÄÿÄÅ Å ÅÅ!Å-ÅCÅOÅWÅlÅxÅ}ʼnŔřřřźÅÔÅÙÅáÅğÅøÅÆÆÆ%Æ-ÆBÆGÆGÆSÆiÆuÆ}Æ’Æ�ƣƯƺƿƿƿƿƿƿÆÊÆÊÆÊÆÊÆÊÆÊÆÊÆÊÆÊÆÊÆÊÆÊÆÕÆõÆÇ"Ç(Ç0ÇCÇHÇPÇXÇZÇbÇuÇ{ǃNjÇ�Ç­ÇµÇ¾ÇÆÇÎÇÓÇØÇßÇêÇÈÈ%È4È>ÈWÈ\ÈdÈiÈiÈiÈrÈ{È~ȈȖȨȪȼÈÎÈÎÈÎÈÙÈŞÈûÈÉÉ ÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉ%É1ÉQÉdÉlÉŒÉ‘É™É É­ÉµÉ¾ÉÆÉÍÉÒÉÒÉÚÉâÉşÉÊ Ê ÊÊ%Ê%Ê%Ê'Ê:ÊKÊNÊQÊYÊ^Ê^ÊgÊlÊtÊ{ʈʡʨʭÊÅÊÏÊêÊË ËË1Ë8Ë8Ë=Ë=Ë=Ë=Ë=Ë=Ë=ËEËPË[ËjËoËoËwËˌˑˑˑ˕˚˚˪˯˯˯˻ËÂËÈËØËéËÌÌÌ&Ì;ÌBÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌLÌLÌgÌqÌÌÌ„Ì�̖̲̿̿̿ÌÃÌÎÌìÌúÌòÎ@ü|öÎöÎ ÏÏÏ)Ï4ÏKÏVÏ]ÏmπϊϊϦÏÀÏÇÏĞÏ×ÏÚÏæÏïÏöÏùÏşÏĞĞ0Ğ6ĞBĞWĞ^ĞfĞrЇĞ�Ğ�Ğ�МЪдзĞÅĞÏĞÒĞäĞéĞîĞşĞÑÑÑÑÑ&Ñ.Ñ@ÑHÑHÑHÑ^ÑhÑzрьѡѨѰÑÂÑÈÑ×ÑèÑèÑïÑïÑïÑıÑ ÒÒÒ&Ò0Ò3ÒEÒJÒOÒ_ÒbÒgÒwÒzÒ~Ò‡Ò�Ò¡Ò©Ò©ÒµÒÂÒÊÒÊÒÍÒØÒöÒÓMÓAhoÅ®×®×È×Û×â×é×ôר
¤ ¤¤!¤-¤@¤q¤f¤L¤�¤•¤¦¤²¤À¤ޤğ¤¥%¥'¥H¥.¥c¥c¥f¥k¥n¥n¥u¥Œ¥“¥ ¥¥¥´¥Á¥Ô¥Ô¥è¥ì¥¦¦1¦6¦6¦F¦N¦^¦h¦x¦‚¦’¦�¦£¦£¦³¦»¦˦Õ¦å¦ï¦ÿ¦ §§§§2§@§J§O§\§q§q§v§€§�§”§š§Ÿ§Ÿ§¤§®§½§§ȧͧͧÓ§Ù§ާާí§¨ ¨¨%¨8¨@¨F¨O¨f¨z¨‹¨˜¨�¨µ¨Ȩߨì¨ô¨©©©©'©'©,©,©,©,©,©8©8©8©A©Z©o©w©’©£©°©²©Æ©Ë©Ë©Ë©Ö©ä©é©é©ğ©ş©ªª'ª9ªEªKªZª^ªgªpª�ª™ªŸª¥ª¸ªÀªȪõª«««#«#«(«(«/«=«B«U«a«m«s«w«€«…«…«…«…«…«�«¢«¢«¢«¢«¢«³«³«³«³«³«³«³«³«³«³«¼«Õ«ê«ò« ¬¬+¬-¬A¬M¬R¬R¬R¬[¬u¬�¬†¬¨¬´¬´¬¹¬¹¬¹¬¹¬¹¬¹¬¹¬¹¬άÓ¬Ó¬Ó¬ä¬ï¬ô¬ô¬ÿ¬­)­;­\­|­‡­˜­�­�­�­¦­È­Ñ­â­æ­ş­®®®)®S®\®`®x®ˆ®ˆ®ˆ®ˆ®ˆ®ª®ã®ì®ğ®ö®û®¯ ¯¯¯¯¯!¯5¯S¯^¯c¯i¯n¯n¯�¯•¯»¯Ưίԯԯٯٯè¯ü¯°%°*°0°5°5°H°\°‚°�°•°›°›° ° ° °©°°×°ß°ú° ±±±)±+±+±+±+±+±?±?±?±?±?±?±?±?±?±?±?±?±?±?±?±?±N±]±h±j±j±s±u±u±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‰±‹±‹±¢±ª±¶±¶±º±¿±ϱê±ÿ±²²0²J²M²W²c²‰²©²ɲí²ï²³0³³K³K³N³^³f³�³’³•³¯³½³ɳá³á³ ´´´2´S´d´€´l´œ´®´Ì´ÿ´ı´ò´ç´Ø´ µ µ µµµµ2µ@µnµ�µ�µ»µ¾µ͵áµ/¶K¶K¶i¶œ¶š¶�„¶u¶ª¶ªª¶­¶²¶²¶¹¶ɶêö¶KºA°«ÓÀÀ4À8ÀCÀJÀUÀiÀiÀtÀ…ÀŒÀ™À¥À²ÀºÀËÀËÀÔÀÙÀáÀñÀÿÀÁÁ,Á,Á?Á?ÁUÁ�Á�Á•Á—Á—Á¡Á©Á©Á³Á»Á»Á»ÁÌÁÌÁÌÁĞÁØÁŞÁãÁãÁçÁïÁóÁùÁşÁşÁ ØØØØ-Ø;ØFØQØTØjØv؋ؖءجطØÂØÙØåØüØÙ ÙÙ"Ù=Ù@ÙFÙKÙ^ÙdÙlÙÙ…Ù�Ù�ٛ٭ٺÙÍÙÓÙÛÙîÙôÙüÙüÙ%Ú*ÚIÚLÚLÚSÚ`ÚdÚoÚ‰Ú•Ú¥ÚÅÚáÚõÚıÚÛ&Û:Û:Û°ÛB ¶*¶*À*È*Í*CÉÇæRæRSS!SS;SISISYSbSiSmSvSvS~S‚S S¬S¸S¾SÉSëSëSşS TTTTT.T9TDTKTST`T`TrTwTwT‡TŒTŒTŒTŸT¤T·T½TÄTÙTíTíTòTòTUUU UUU"U$U,U3U3UBUHUUU\U_U�U�U‰U˜U£UªU¬UÀUÏUÔUÙUÙUÙUìUñUVVV#V7V7V<V<VDVZV_VsVzVVV‹VšV¬V»VÎVÒVáVïVıV W)W4W9WHW\WcWjWzW|WŠWšWœWªW·WÇWÎWãWêWöWXX X,X7X9X9XDXXXeXmXoXƒX•XœX¬X¸XÙXàXìX
 Â/Â9ÂLÂQÂYÂYÂ^Â^ÂeÂq†– ¨®ÂÁÂÆÂÎÂÔÂÔÂÙÂàÂëÂÃÃ-Ã7Ã?ÃEÃWÃ]ÃbÃbÃbÃbÃbÃbÃbÃbÃbÃmÃyÆÖÜä÷üÃÄÃÉÃÑÃÖÃÖÃÖÃŞÃæÃïÃ÷ÃüÃÄ ÄÄÄCÄNÄVÄeÄoÄ�ĆČđđĘĪIJÄÅÄÍÄÕÄêÄìÄ÷ÄÿÄÅÅÅ0Å8Å?ÅEÅIÅMÅ\ÅaÅmŃÅ�ŗŬŸŽÅÉÅÔÅÙÅÙÅÙÅúÅÆÆ!Æ0Æ8Æ@ÆUÆZÆeÆmƂƇƇƓƩƵƽÆÒÆŞÆãÆïÆúÆÿÆÿÆÿÆÿÆÿÆÿÆ Y
Ç Y
Ç YYY!Y)Y-Y5Y<YLYWYqYvY}YˆY‘Y™Y�Y�Y­YºYÈYÓYŞYìYòYøYşYZ ZZ)Z1Z=ZKZbZdZmZxZzZ†Z¤ZªZ°Z¶Z¿ZĞZ÷ZÿZ [[.[5[A[P[e[e[r[w[‰[�[�[�[�[K\DD�š–‹–‹ª‹¶‹Ì‹¸‹Ø‹Ú‹ì‹ş‹ŒEìˆÿnYnY�YšYÍYÜYòYZZ Z'Z0Z?ZFZOZTZiZzZ™Z¡Z£ZÂZÊZÙZàZìZñZøZ[[[$[)[?[+[K[Q[Q[Y[b[q[�[—[™[¸[¿[¿[¿[Ó[ç[ë[ù[ \\$\)\4\;\C\I\K\g\l\‚\n\�\”\”\°\µ\Î\º\Ú\à\å\]]]](].]5]=]C]E]a]f]|]h]ˆ]�]�]�]–]Ÿ]Ÿ]©]©]Á]ñ]^ ^^*^"^B^B^T^FüE€6İ6İUİqİvݗݵİÄİâİöİŞŞŞ;ŞYŞhޅޖޭޱޱ޵޺޿ŞÉŞÌŞÖŞÜŞùŞüŞüŞüŞßß#ß1ß=ßFßZßbßk߇ߒß�ߧ߻߻ßÊßÏßÏßİßGl¬ÃîCîCüCDD5D"DADVDCDuDbD�D�D—D¢D¤D¯DºDºDÙDßDHP‡—�ò�ò¢ò¯ò¾òÊòĞòúòóüò'óó?óGóIŒg†ññPñsñsñ†ñŠñ©ñ½ñÂñÂñÏñ×ñßñôñòòò'ò;ò@òBòBòBò[òsòsò�òJP�­®6®6×6Ù6ç6í6 77)787F7Q7T7d7Kì8¶/¶/à/ã/æ/ì/ñ/0 060H0n0•0˜0±0È0Ú0ç0ú0 111$1,1,131<1<1G1o1‰1�1¨1Á1Ã1İ1ã1ü122(2(22222D2‚2—2©2L$tyşcşc)dd3d;dMLu„^Ç^ÇpÇ…Ç–Ç§Ç®Ç¶ÇÆÇÎÇßÇåÇÈNTHYbbbb%b.b<bAbJbMbRb`bjbmbwbO¨!G````p`y`Œ`™`¥`±`½`É`à`à`ï`ú`a
Ç aa*a=aBaTacaoa�a�aŠaªaªa¬a¿aÁaÛaçaêabPxl¨lÁlÌlÜl%m,m@mGmOmWm`mhmpmrmzm‚m‰m�m¯mÇmĞmĞmn/n8nZntn‘n»nÇnénënònùnùno5o\ouoœoµoÜoõop5p\pupœpœp«p¸p½p½pÌpÙpŞpŞpåpğpqq4qMqOqOqOqVqVqcqhqhqhqyq‡qšq¯qéqğqğqğqøqr#rArJrSr`rnrˆr¤r¤r¤r·rÅrárÿrÿrÿr
Ç s s:s<sSsYsjsssus‚s„s‘s“s s sÄsÆsÍsŞsçsés÷sùst ttt7t7t7t7tDtWtjt‹t˜t±t¹t½tÅtÉt×tåtçtïtót÷tÿt uuu5u@uVuhuˆuŸuªu´u»uÔuàuçuvvvvv v0vAvPvWvhvqvsv�vƒv‘v“v¡v¡v¡vÅvÅvâvévğvóvÿvwww"w&w4w8w8wQwXw]wkw|wƒw™w¹wÌwÛwİwìwîwıwxxxx4x;x`xex�x¾xÃxÑxÓxáxêxyyyy y)y+y9y;yIyKyYyYyyyyyyyyyyy˜y˜y˜y£y¿yäyıyzzz$z)z)z)zIzNzNzNzmzrzrzyz{z{zƒz…z…zŒzŒz�z”z³zÉzîz
Ç {{#{#{>{K{M{\{e{{�{�{†{�{§{©{©{±{¬{ê{ê{ê{ | | |*|/|/|/|Q|V|V|V|v|{|{|{|š|Ÿ|Ÿ|º|È|Ê|Ù|â|ü|ş|ş|}ş|$}&}&}.})}g}g}g}r}r}œ}œ}Æ}Ş}ö}~~'~<~T~h~‚~„~•~¯~Æ~Í~Å‚Q|.†ã†ãªã¾ãÉãŞãüãä%ä%ä%ä2äJäLäLäLäYäqäsäsä�ä�ä¦ä¦ä·äËäRçe>×>×X×a×�×�ׇ×�חןק׭׺׺×××Ü×Ü×â×ç×ç×í×ò×ò×ø×ı×ıר(Ø.Ø3Ø3Ø<Ø\Ø\Ø\ØcØeØeØlØnØnØtØtØ{Ø}Ø}؃؃؊،،ؙؙؒؒءاحصصصصØÁØÉØÑØÙØáØéØñØ÷ØÙÙ(Ù+Ù+Ù5Ù;ÙAÙAÙEÙMÙTÙXÙ`ÙhÙnÙvÙ}Ù…Ù�ّٗ٢٨ٵÙÁÙÇÙÏÙÓÙÚÙâÙêÙîÙôÙüÙÚ ÚÚÚÚ(Ú-ÚCÚTÚYÚ\ÚÛSL˜§˜ƒ˜ƒ±ƒ³ƒºƒĞƒàƒæƒşƒ„„+„s„TÔ*[®ê®êÂê×êæêêêøêşê ë ëë'ë2ë=ëDëTëkë~ë„ë‰ë�ë�ë�ë³ëµë¿ëàëëëíëì
Ç ìììì$ì0ì8ìKìµìU$ns¾c¾cécÒcócûcVl  ÆGÆGÔGîGÛG HúGH.HHMH:HYHgHoHzH|H‡H’H’H±H·HW,¶Ñ¶Ñ¿ÑÅÑÍÑÜÑëÑğÑXTÒ¡¡7¡I¡T¡]¡¡‰¡—¡±¡¾¡¾¡È¡È¡Ï¡â¡à¡ğ¡ğ¡û¡¢ ¢¢¢"¢)¢A¢H¢K¢]¢b¢m¢x¢’¢­¢Á¢Ş¢££ £££)£G£/£P£T£Z£b£g£‡£o£�£”£š£¢£§£§£´£º£Õ£Á£á£å£ë£ó£ø£ø£¤¤#¤+¤:¤U¤A¤a¤e¤k¤s¤x¤x¤™¤�¤£¤«¤«¤°¤½¤Û¤ää¤è¤î¤ö¤¥ş¤ ¥#¥)¥1¥1¥>¥\¥D¥e¥i¥o¥w¥—¥¥ ¥¤¥ª¥²¥²¥²¥È¥È¥È¥È¥Ó¥İ¥æ¥¦¦ ¦%¦3¦G¦L¦L¦W¦_¦g¦p¦|¦�¦�¦¬¦»¦Õ¦Ú¦Ú¦å¦í¦ú¦§§§7§I§[§f§k§k§v§Œ§™§¡§­§»§À§Χâ§â§ê§â§¨¨¨¨¨¨*¨/¨/¨@¨E¨E¨V¨[¨[¨n¨}¨‚¨‚¨•¨¤¨©¨·¨©¨˨ШިШò¨÷¨©÷¨©©,©©@©E©E©b©g©‰©�©œ©�©°©µ©µ©Ò©שù©ş© ªş© ª%ª%ªBªGªiªnª|ªnª�ª•ª•ª²ª·ªÙªުìªު««« «%«%«@«E«E«`«e«e«€«…«…« «¥«¥«À«Å«Å«à«å«å«¬¬¬¬¬¬,¬1¬1¬=¬H¬]¬b¬b¬n¬‡¬Œ¬¯¬¶¬À¬ŬÖ¬à¬õ¬­­­!­)­.­.­2­6­=­G­Q­Q­d­i­i­i­m­ƒ­Œ­Œ­¯­´­´­¼­Ğ­Ù­ó­® ®®!®3®?®H®M®M®M®^®{®†®�®›® ®«®³®¸®¸®îˮԮ߮ﮯ ¯3¯8¯8¯C¯V¯`¯k¯Œ¯˜¯¦¯«¯¹¯½¯¯¯Ò¯ݯå¯ê¯õ¯° °'°9°K°V°[°f°n°s°~°‹°–°°°°Ô°Ô°Ô°Ô°Ù°ްްê°û°û°!±#±?±?±I±]±g±i±u±}±š±«±µ±À±ã±ô±²²!²9²I²N²N²Y²^²^²f²q²v²v²~²‰²�²�²–²´²�²̲ѲѲÙ²÷²á²³³(³³@³E³E³R³W³W³_³d³d³p³�³“³˜³˜³¬³˜³ijɳɳѳÖ³Ö³é³î³î³´´´ ´0´5´5´O´_´d´d´~´�´“´“´­´½´´Ù´´ñ´ö´ö´µµBµ0µµµZµ_µ›µ‰µwµ_µ³µ¸µ¸µǵ×µܵܵëµûµ"¶J¶8¶"¶b¶g¶�}¶g¶§¶¬¶Ô¶¶¬¶ì¶ñ¶ñ¶·ø¶8·H·M·M·h·T·’·¢·§·§·³·¸·¸·Ä·É·É·Ü·ì·ñ·ñ·¸¸¸¸,¸<¸A¸A¸T¸d¸i¸i¸q¸v¸v¸~¸ƒ¸ƒ¸‹¸�¸�¸˜¸�¸�¸°¸µ¸µ¸ȸ͸¹ ¹÷¸å¸͸(¹-¹{¹i¹W¹E¹-¹ˆ¹�¹�¹œ¹·¹¼¹¼¹͹è¹í¹í¹ş¹ ºººººº&º+º+º3º8º8ºpº^ºLº?º�ºªº¯º¯ºçºÕºú¶º»!»&»X»F»>»&»p»u»§»•»�»u»¿»Ä»Ş»È»Ä»ö»û»¼¼û»0¼5¼5¼A¼Z¼j¼{¼{¼¡¼£¼¹¼¿¼¿¼Û¼è¼½[½J½8½g½o½o½o½{½€½€½“½�½¨½­½¸½½ǽǽá½æ½æ½î½ó½¾ó½¾¾#¾7¾#¾C¾N¾S¾S¾^¾l¾q¾q¾|¾‡¾Œ¾Œ¾�¾¢¾¢¾³¾¸¾¸¾Ò¾ݾâ¾ê¾â¾ö¾û¾¿û¾¿ ¿(¿ ¿4¿9¿M¿9¿Y¿^¿^¿r¿^¿~¿~¿~¿ƒ¿�¿ƒ¿¢¿§¿§¿³¿§¿Æ¿Ë¿Ë¿׿Ë¿ê¿ï¿ï¿û¿ï¿ÀÀ'ÀÀ3À?ÀJÀUÀZÀnÀZÀzÀ†À‘ÀœÀ¡ÀµÀ¡ÀÉÀÁÀÒÀ×À×ÀßÀäÀäÀíÀòÀòÀûÀÁÁ ÁÁÁÁÁÁ)Á.Á.Á9Á>Á>ÁIÁNÁNÁYÁ^Á^ÁiÁnÁnÁyÁ~Á’Á~Á�Á©Á´Á¿ÁÄÁÄÁÎÁÓÁÓÁİÁâÁâÁìÁñÁñÁûÁ  Â  Â,Â1Â1Â1Â1Â1Â9Â>Â>ÂFÂKÂKÂSÂXÂXÂ`ÂeÂeÂmÂr†Âr’£¨¨ºÂÅÂåÂêÂà Ã$ÃÃ0Ã;ÃFÃKÃKÃ]ÃhÈÃ�ãîÃÇóÃÓÃŞÃéÃîÃîÃÄ Ä+Ä0ÄFÄQÄjÄVÄvÄ�ČđđķģÄÃÄãÄèÄşÄ ÅÅ)ÅÅIÅ5ÅUÅkÅWÅ‹ÅwŗŢŧŧÅÍŹÅÙÅùÅşÅÆ Æ$Æ?Æ+Æ_ÆKÆkÆ�ÆmÆ¡Æ�ƭƸƽƽÆãÆÏÆïÆÇÇ*Ç5Ç:ÇUÇAÇuÇaÇ�ǗǃǷǣÇÃÇÎÇÓÇÓÇâÇçÇçÇöÇûÇûÇûÇÈÈÈÈÈÈÈÈ)ÈIÈKÈKÈUÈUÈUÈUÈUÈWÈWÈnÈuȀȀÈ�È“ÈšÈ¥È°È»ÈÆÈÑÈËÈôÈìÈ ÉÉÉ=É5ÉUÉUÉUÉ^ÉfÉyÉÉ�ɠɠɸÉÂÉÖÉğÉğÉğÉÊ!Ê6ÊHÊXÊXʀʇʖʨʨÊLine truncated
Ç ÒÒÒ,Ò2ÒZ`àô¦˜¦˜¼˜ޘë˜ï˜ş˜™™!™4™Q™S™S™„™r™S™£™­™[8cmNcNcoc\c{c†c‘cœc§c³c¹c\\�”œœœœ#œ+œ6œAœLœNœdœdœvœ‚œ‹œ�œ½œ]ܳf6é6éhéqéé¡é¡é²é¿éİéåéêê@ê]êyêêƒê¦êÌêÑêúêë:ëQëWë[ëtë|ë�ë’ëšë¹ë¿ëÃëÜëäëììì!ì@ìEìMìSìWì[ìmìuì�ì—ìœì®ì³ìÄìÉìÛìäìøìí(íXí}í‚í‚í‚í’í™í§í´íÖíÖíííòíòí î î î î!î!î8î:î:îQîSîSîjîjî{î€î€î�îµîÇîÌîÌîÌîÌîäîïï8ï8ï8ïEï\ï^ï^ï^ïkï‚ï„ï„ï‘ï¨ï¨ï¿ïÁïÛïùïùïùïıïÿïÿïÿïğğğ ğ ğğğğ8ğ8ğ8ğ@ğBğBğBğJğLğLğTğTğVğ]ğ{ğ}ğ�ğ¦ğ¦ğ¦ğ¦ğ¦ğ¹ğÑğÙğÙğñ^`
Ç ^T^TpT|TšT¶TÃTÚTíTøT UúTU!U,U?U8UWU]U_ôW.=.=L=O=a=h=o=t=v=}=„=ˆ=š=Ì=æ=Ó=ş=>$>$>0>8>G>�>†>³>»>À>É>Ô>Ü>ã>??'?)?H?S?j?‰?�?–?–?œ?Ÿ?£?´?Ô?æ?`$ŞÛŞÛíÛÜÜ Üaxb|~æ~æ�æÀæÀæÊæÏæÏæîæûæıæıæıæıæ
Ç çç%ç9ç;ç;çCçVçVçhçb”"ş.ş. /*/6/;/K/Q/f/z/‰/—/¥/¼/Ä/Î/İ/å/ò/ú/ı/ı/ı/ÿ/00!0)0,0>0cHÏ6969^9k9n9w9}9”9«9Â9Ô9::8:=:B:M:d:v:ƒ:–:¬:À:Å:Ğ:ğ:õ:ø:;,;4;<;A;[;u;};…;Š;¤;¬;±;Ñ;Ö;Ù;ó; <<< <9<S<[<c<e<<‡<‡<Œ<‘<œ<œ<§<§<³<³<Å<===+=dd¤¹H‰H‰X‰_‰k‰q‰y‰‡‰š‰¦‰½‰Ê‰Ê‰Í‰Û‰ë‰ŠŠŠeºû�*�*¥*ª*¾*í*ù*++ + +7+>+U+\+e+|+|+’+’+¨+¨+¾+¾+Ô+Ô+ê+ê+,,,,,,,,C,C,Z,Z,q,q,ˆ,ˆ,Ÿ,Ÿ,¶,¶,Í,Í,å,å,ı,--!-,-=-@-B-Y-`-l.f¬÷ &-5=@K]]qx{}†——𢏻ÉÌÏÖÚâğdg(EK’’5’"’A’P’X’hCÆJÆJéJşJK KKK(K.K7K=KBKJKfKlKnKpK}K}KŠKK›K¡K£K¥K²K²K²K·KÀKÈKÑKÙKÛKãKëKóKLLLL(L3L?L]LdLoLuL†LŠL’L’L¦L¶L¾LÁL'Mi8-7¯/¯/Ã/Ç/Ì/×/â/å/é/ñ/j¤õš®™®™Ì™ğ™ö™ı™ı™š$š)š?š[šGšgšzšŒš•š�š§šÅšךàšèšòš ›÷š›)›3›;›@›[›G›{›g›‡›�›‰›½›©›É›Û›å›í›í›ö›ş›œ-œ?œNœRœRœYœ^œ|œ~œƒœ�œ¤œ¤œ¤œ¨œ´œÕœãœíœúœ�)�3�5�5�O�b�p�s�“�—��º�İ�á�����
Ç ��"�;�A�L�X�Z�b�h���Œ�š�¤�½�À�È�Ô�Ö�Ş�á�ú�ü�Ÿ
Ç ŸŸŸ1ŸIŸUŸjŸoŸ�Ÿ�Ÿ©ŸºŸºŸÅŸĞŸèŸôŸ     / H Y Y _ j r € ‡ ™ kfäÛÛ Û)ÛIÛIÛOÛWÛ_ÛgÛoÛuÛ‚Û‚Û�Û•Û•Û›Û Û Û¦Û«Û«Û±Û¶Û¶ÛÎÛáÛçÛìÛìÛõÛÜÜÜÜÜÜ%Ü'Ü'Ü-Ü-Ü4Ü6Ü6Ü<Ü<ÜCÜEÜEÜKÜKÜRÜRÜZÜ`ÜfÜnÜnÜnÜnÜz܂܊ܒܚܢܪܰÜÈÜ×ÜáÜäÜäÜîÜôÜúÜúÜşÜİ İİİ!İ'İ/İ6İ>İFİJİPİ[İaİnİz݈݀݌ݓݛݣݧݭݵݼİÄİÌİĞİÖİáİæİüİ ŞŞŞ»Şl`Ÿ!Ÿ!¨!¯!Ã!×!Ü!ú!ÿ!" "="?"V"j"s"u"‰"™"Ê"m|2ÍP‘P‘f‘w‘ˆ‘™‘ª‘»‘Α֑ä‘’ ’’ ’5’5’H’Y’_’t’�’�’¤’©’±’¹’¿’×’ê’õ’ù’“““ “-“/“A“A“H“P“b“b“q““’“–“ “¤“°“´“À“ēГԓԓç“ú“””””!”%”4”8”K”O”O”O”O”T”f”u”„”’”­”½”͔ҔҔҔޔæ”î”ô” •• •)•7•=•?•?•?•?•?•?•?•?•?•K•S•[•a•v•~•‚•Š•˜•�•�•�•°•¶••ȕՕ𕖠–– –1–?–^–¸—nÔ¼íÈjÈjÚjëjöjkk)kAkFkOkVkckjkxkk�k„k‰k‹k‘k«kÅkÛkókøklll)lDlKlMlPlUlxl–l¢lo$hmO&O&]&q&x&’&p¤b‡XX*X1XWXCXcXhXoXoX�X¥X‘X±X×XÃXãXèXïXïX÷XşX YYY$Y/Y:YMYEYeYmYq?|ll:lAlYlql{l†l†l‹l–l¢l­l»lËlÛlâlèlılmm&m.m>mKmZmgmxm‰m—m¥m¬m²mÇmÜmÜmğmımnn$n5n5n;nInZngnwnÙnr8¬vJvJzJJ„J•J£J¬J±J¶J¸Js88B÷/÷/ 000 0)0,00080t0†�¾H¾HÔHçHôHúHıHIuÜtvv˜£®·ÇÙßåëğ"%-?EJm€„Š¡§·½É×Üê*,38@_my“²¹ÃÒØŞäê!5AXcr�›«¹ĞÜáï 7@FQV\s~‹’’ ¯±¿Îààè Jv`Ëß–—–—¬—ΗÛ—ß—î— ˜˜˜*˜G˜I˜I˜z˜h˜I˜™˜£˜wT�ŞŞßŞßößşß à+à=àDàNàTàZà^àbà„à„à‹à�à“à¢à¦àÓà×àÜàÜàãàæàëà÷àá áá)á-á/á>áBádáhámámá�á„á�ášá¡áÇáÒáÖáÛáâ(â3â7âHâSâWâYâdâhâhâ‚â†âˆâˆâ“â—â±âµâµâµâ¹âÜâxˆßıŞâŞâòâããã
ÇÇ5ÇRÇbÇhÇpǃLjÇ�ǘǚǢǵǻÇÃÇËÇÍÇíÇõÇşÇÈÈÈÈ È*ÈRÈ]ÈeÈtÈ~ȗȜȤȩȩȩȲȻȾÈÈÈÖÈèÈêÈüÈÉÉÉÉÉ;É@É@ÉIÉNÉNÉNÉNÉNÉNÉNÉNÉNÉNÉNÉNÉNÉNÉNÉNÉYÉeÉqɑɤɬÉÌÉÑÉÙÉàÉíÉõÉşÉÊ ÊÊÊÊ"Ê>ÊFÊIÊKÊ[ÊeÊeÊeÊgÊzÊ‹Ê�ʑʙÊ�Ê�ʧʬʴʻÊÈÊáÊèÊíÊËË*ËCËKËXËqËxËxË}Ë}Ë}Ë}Ë}Ë}Ë}Ë…Ë�˛˪˯˯˷˿ËÌËÑËÑËÑËÕËÚËÚËêËïËïËïËûËÌÌÌ)ÌEÌXÌ^ÌfÌ{̧̱̂̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̊̌̌̿̿ÌÄÌÏÌÖÌòÌÿÌÿÌÿÌÍÍ,Í:Í2ÏBü|6Ï6ÏLÏWÏ^ÏiÏtϋϖÏ�Ï­ÏÀÏÊÏÊÏæÏĞĞĞĞĞ&Ğ/Ğ6Ğ9Ğ>ĞTĞ^ĞpĞvЂЗĞ�ЦвĞÇĞÎĞÎĞÎĞÜĞêĞôĞ÷ĞÑÑÑ$Ñ)Ñ.Ñ>ÑAÑFÑVÑYÑ]ÑfÑnршшшÑ�ѨѺÑÀÑÌÑáÑèÑğÑÒÒÒ(Ò(Ò/Ò/Ò/Ò=ÒKÒUÒXÒfÒpÒsÒ…ÒŠÒ�ÒŸÒ¢Ò§Ò·ÒºÒ¾ÒÇÒÏÒáÒéÒéÒõÒÓ ã
Ó ããããããã)ã+ã+ã8ã?ãAãAãNãUãWãWãoãtãtã„ãy°‰±¶d¶dÎdÖdád;e&eeeïdAeSeCenene‡e{e´e¹eÅeĞeåeÒeñe÷eşe fff3f5fNfNf[f‚f‚f‚f�fz †*¾³¾³Û³â³ê³õ³ ´´´-´7´R´h´v´z´š´®´Â´É´Í´æ´ğ´µµµµµ!µ&µ+µ2µ9µSµZµjµnµnµxµ�µ’µ’µ£µ¶µÉµÉµÏµÚµáµéµôµûµ>¶B¶Z¶K¶u¶u¶{¶‚¶‘¶™¶§¶®¶²¶´¶Æ¶Æ¶Æ¶Ø¶à¶····-·5·E·P·e·j·x·‡·�·�·¨·¬·±·¹·½·Ì·Î·İ·ß·î·ğ·ÿ·¸
Ó ÓÓ6ÓDÓ�ÓChoÅî×îרØ"Ø)Ø4ØGØJØSØZØ]ØmØ{؆ؑؔتضØËØÖØáØìØ÷ØÙÙ%Ù<ÙDÙMÙUÙbÙ}ـنًÙ�٤٬ٿÙÅÙÍÙÍÙÛÙíÙúÙ ÚÚÚ.Ú4Ú<Ú<ÚeÚjډڌڌړڠڤگÚÉÚÕÚåÚÛ!Û5Û=ÛGÛfÛzÛzÛğÛD î*î*ø*++EÉÇSS;SFSYSFSsS�S�S‘SšS¡S¥S®S®S¶SºSØSäSğSöST#T#T6TATGTNTSTSTfTqT|TƒT‹T˜T˜TªT¯T¯T¿TÄTÄTÄT×TÜTïTõTüTU%U%U*U*U:U?U?UDUKUSUZU\UdUkUkUzU€U�U”U—U¹U¹UÁUĞUÛUâUäUøUV VVVV$V)V8V?VFV[VoVoVtVtV|V’V—V«V²V·V·VÃVÒVäVóVW ¸¸&¸4¸;¸?¸O¸Z¸_¸}¸…¸“¸š¸�¸¦¸´¸»¸¿¸Ç¸Û¸ã¸î¸ò¸ò¸ò¸ı¸¹¹$¹:¹B¹M¹\¹d¹o¹t¹|¹‡¹“¹—¹¢¹§¹¹¹Á¹Ì¹Ì¹Ì¹Ì¹Ú¹é¹ººº*º:ºXº\º‹º€ºqº›º›º¥º¬º»ºÊºÒºàºçºëºíºüº»»»»» »1»1»C»C»C»I»U»g»o»‡»³»Á»Å»ã»ê»ñ»ü»¼¼¼.¼6¼D¼K¼O¼Q¼d¼l¼z¼�¼…¼…¼…¼…¼“¼�¼­¼µ¼Ã¼Î¼Ò¼Ò¼×¼ß¼ã¼ò¼ô¼½½½½%½,½0½D½L½Z½a½e½u½€½…½£½«½¹½À½Ä½Ì½Ú½á½å½í½¾ ¾¾¾¾¾#¾*¾8¾R¾b¾m¾‚¾‡¾’¾¢¾®¾Ä¾Ì¾×¾æ¾î¾ù¾ş¾¿¿¿!¿,¿1¿C¿K¿V¿V¿V¿V¿j¿z¿�¿œ¿ ¿´¿Å¿Ú¿ç¿ë¿ù¿ÀÀ5ÀNÀgÀiÀtÀ|À|À…À¢À³ÀÊÀãÀñÀüÀÁÁÁÁ%Á%Á%Á?ÁMÁ[ÁpÁ‡Á–Á£ÁÁÁÈÁÈÁØÁìÁÂÂ
WW'W5WDWaWlWqW€W”W›W¢W²W´WÂWÒWÔWâWïWÿWXX"X.X?XVXXXdXoXqXqX|X�X�X¥X§X»XÍXÔXäXğXYY$YBYBYBYJYUYYYaYeYmYtY„Y�Y©Y®YµYÀYÉYÑYÖYÖYåYòYZ ZZ$Z*Z0Z6Z?ZEZTZaZiZuZƒZšZœZ¥Z°Z²Z¾ZÜZâZèZîZ÷Z[/[7[A[N[f[m[y[ˆ[�[�[ª[¯[Á[Ç[Ç[Ç[Ç[ƒ\FD�šÖ‹Ö‹ê‹ö‹ Œø‹ŒŒ,Œ>ŒFŒGìˆÿ®Y®YĞYÚY ZZ2ZVZ[Z_ZgZpZZ†Z�Z”Z©ZºZÙZáZãZ[  Â/ÂJÂUÂlÂtÂt––©ÂÄÂÍÂâÂü ÃÃ6ÃDÃZÃsÃÛÛóóÿÃ×ÃïÃøÃøÃøÃÄÄ-Ä6Ä6Ä=ÄFÄLÄXľÄ{ÌL».ö.öLöWöböˆöˆöŠö—ö¢ö¨ö¹öÈö×öäöäöêöïöôö÷÷%÷)÷;÷H÷P÷[÷W÷r÷€÷€÷€÷‹÷¦÷‘÷·÷®÷Á÷Ã÷ß÷Ë÷ç÷õ÷õ÷÷÷øøø ø)ø0ø3øUøiø\øqøwø€ø€ø€ø“ø˜ø˜ø ø ø«øÀøÉøÉøÉøÉøåøüøùùùù"ù'ù'ù3ùPùpùuùzùzù†ù£ù²ùÁùÉùÎùÔùÙùÙùàùçù
[[ [,[1[8[@[F[H[d[i[[k[‹[‘[‘[™[¢[±[Ğ[×[Ù[ø[ÿ[ÿ[ÿ[\'\+\9\L\D\d\i\t\{\ƒ\‰\‹\§\¬\Â\®\Î\Ô\Ô\ğ\õ\]ú\] ]%]A]F]\]H]h]n]u]}]ƒ]…]¡]¦]¼]¨]È]Î]Î]Î]Ö]ß]ß]é]é]^1^E^I^W^j^b^‚^‚^”^HüE€vİvݕݱݶİ×İõİŞ"Ş6ŞNŞUŞZŞ{ޙިŞÅŞÖŞíŞñŞñŞõŞúŞÿŞ ß ßßß9ß<ß<ß<ßAßGßcßqß}߆ߚߢ߫ßÇßÒߪßçßûßûß ú'ú)úFú[ú[úaúaúnúwúwú’ú¤ú¯ú´úÁúÌúÔúÜúìúûûûû%û+ûSû\û\û^ûeûjûjûwû‚ûˆû‘û‘û¤û±ûÃûÎûÜûåûêûüü%ü*ü1ü9üLüaüfümüzü�ü“ü¨ü¯üµü¾ü¾üÇüáüèüíüûü ııı ı&ı/ı/ıBıTıWıWıhıpıxı„ı¡ı¨ıµı·ı¾ıÒıáıáıáışşşşş*ş5şGşTş_şmşxş‡ş�ş�ş¨ş»ş½şÌşáşãşñşÿÿ ÿÿÿ"ÿ(ÿ:ÿ:ÿGÿJÿUÿgÿnÿyÿ~ÿ†ÿ�ÿ˜ÿ�ÿ²ÿ´ÿÎÿãÿãÿãÿåÿìÿòÿ##)09>_hhnww––£¦¬µ½ÈÚàëëøû
ààààIl¬Ã.D.D<DVDCDuDbD�D–DƒDµD¢DÁDÏD×DâDäDïDúDúDE EJP‡—ÎòÎòâòïòşò /5@@MPV_aƒ–«±¼ÎÔÜÜÜÜçb|”�¾ß2ß2ó2÷233 33'3'3P3T3Y3\3e3u3|33‡3Š3—3Ÿ3§3¯3¶3Æ3Æ3Ò3}Œ >^U^UrUyU©U•UµUºUÁUÁUáU÷UãUV3V V?VDVKVKVSVZVeVmVxV‹VƒV£V«V~À-�d�d®d¾dÈdÈdÒdÒdÜdîdûdşde eee$e8e8e\eieieye†e†e©e¶e¶eÌeïef(f1f>f>fafkfkf�fÑf×f×f×féf¸ºäŠŠ(Š*Š6Š:ŠGŠJŠdŠdŠdŠjŠnŠvŠ�ЕСУУЬЮЮзййŠÂŠÄŠÄŠÍŠÍŠÖŠÜŠßŠéŠúŠ‹ ‹ ‹t‹€œWzv)v)”)¥)È)Ï)è)à)* * *,*=*B*c*O*{*£*ª*Ã*»*Û*û*ç*++.++F+S+S+k+k+u+�œX{N-N-Z-j-u-Ÿ-Ï-Ü-í-ÿ-. .!.(.6.N.].j.m.†.‰.�.¥.±.½.Á.È.ş.‚x¬è«è«ş«¬ ¬+¬:¬I¬X¬g¬v¬€¬€¬…¬Œ¬Ÿ¬®¬³¬Î¬è¬è¬ş¬­­"­)­.­.­5­G­P­R­`­r­r­r­„­�­¡­¬­¹­¾­Î­Ó­ã­ï­ô­®®®®+®-®=®?®O®Q®b®k®k®m®}®„®”®”®¯®Á®Ó®å®õ®õ®õ®ø® ¯ƒ\åøx‹x‹“‹š‹Ÿ‹­‹Â‹É‹Ó‹á‹ä‹æ‹ğ‹ŒŒ Œ?Œ„0ÎÖNNf¨œpn¼Ä…`ʆ–†–œ–¾–Ë–Õ–ä–ı–———7—9—9—j—X—9—‰—“—†L4CÆ+Æ+Ô+æ+ì+ô+, ,,',-,0,l,‡(–œ¯2¯2½2Ì2Ğ2Ó2Ù2ˆ\DWn,n,|,�,”,œ,®,´,½,Ï,Õ,Ş,ğ,ö,ù,G-‰, �Ñ�ќѣѫѰѶъ¬!HN N l ~ … Œ ›   ¿ ¿ Ä ã è ï ş 
óó:óPó<ógó\óó‡óKŒg†^ñ^ñ�ñ³ñ³ñÆñÊñéñıñòòòò ò4ò@òQòVògò{ò€ò‚ò‚ò‚ò›ò³ò³òÍòLP�­æ6æ677 7%7C7R7a7p7~7‰7Œ7œ7Mì8ö/ö/ 0#0&0,010H0_0v0ˆ0®0Õ0Ø0ñ011'1:1M1R1Z1d1l1l1s1|1|1‡1¯1É1Ï1è1222#2<2U2]2h2h2r2r2„2Â2×2é2N$ty>d>didRdsd{dOLu„–ǖǨǽÇÎÇßÇæÇîÇşÇÈÈÈOÈPTHY8b8bJbLbUb^blbqbzb}b‚b�bšb�b§bQ¨!G�`�` `©`¼`É`Õ`á`í`ù`aa a*a3a:aCaZamara„a“aŸa±a±aºaÚaÚaÜaïaña bbb1bRxîˆØlØlñlül mUm\mpmwmm‡m�m˜m m¢mªm²m¹mÀmßm÷mnn5n_nhnŠn¤nÁnën÷noo"o)o)oLoeoŒo¥oÌoåo p%pLpepŒp¥pÌpÌpÛpèpípípüp qqqq q2qKqdq}qqqq†q†q“q˜q˜q˜q©q·qÊqßqr r r r(rErSrqrzrƒr�r�r¸rÔrÔrÔrçrõrs/s/s/s:s=sjslsƒs‰sšs£s¥s²s´sÁsÃsĞsĞsôsösısttt't)t7t9tGtGtgtgtgtgttt‡tšt»tÈtátétítõtùtuuu u#u'u/u=uKuKueupu†u˜u¸uÏuÚuäuëuvvv0v0vBvGvIvOv`vqv€v‡v˜v¡v£v±v³vÁvÃvÑvÑvÑvõvõvww w#w/w2w@wDwRwVwdwhwhw�wˆw�w›w¬w³wÉwéwüw x xxx-x7x7xExNxdxkx�x•x¾xîxóxyyyy4y6y8y?yPyYy[yiykyyy{y‰y‰y©y©y©y©y©yÈyÈyÈyÓyïyz-z2z2z2zTzYzYzYzyz~z~z~z�z¢z¢z©z«z«z³zµzµz¼z¼z¿zÄzãzùz{:{N{S{S{n{{{}{Œ{•{¯{±{±{¶{±{×{Ù{Ù{á{Ü{|||9|9|9|Z|_|_|_|�|†|†|†|¦|«|«|«|Ê|Ï|Ï|ê|ø|ú| }},}.}.}3}.}T}V}V}^}Y}—}—}—}¢}¢}Ì}Ì}ö}~&~1~G~W~l~„~˜~²~´~Å~ß~ö~ı~õ‚S|.ÆãÆãêãşã ää<äGäeäeäeäräŠäŒäŒäŒä™ä±ä³ä³äÁäÎäæäæä÷ä åTçev×v×�י׹׹׿×Ç×Ï×××ß×å×ò×ò×ØØØØ Ø Ø%Ø*Ø*Ø0Ø5Ø5ØMØ`ØfØkØkØtؔؔؔ؛Ø�Ø�ؤئئججسصصػػØÂØÄØÄØÊØÊØÑØÑØÙØßØåØíØíØíØíØùØÙ ÙÙÙ!Ù)Ù/ÙGÙVÙ`ÙcÙcÙmÙsÙyÙyÙ}Ù…ÙŒÙ�٘٠٦ٮٵٽÙÅÙÉÙÏÙÚÙàÙíÙùÙÿÙÚ ÚÚÚ"Ú&Ú,Ú4Ú;ÚCÚKÚOÚUÚ`ÚeÚ{ڌڑڔÚ:ÛUL˜§ȃȃáƒãƒêƒ„„„.„F„I„[„£„VÔ*[æêæêúêëë"ë0ë6ëEëEëTë_ëjëuë|ëŒë£ë¶ë¼ëÁëÅëÕëÕëëëíë÷ëì#ì%ì>ìBìPìUìUì\ìhìpìƒìíìW\X«&@&@>@E@W@Š@•@¡@¯@£@Ğ@Ğ@Ü@ä@ó@-A/A\AdAdA‘A©A–AÄAµAĞAÖAåAúAüABBB*B/B8BCBKBVB~BiB]B�BŠB©B¾B«BëBÖBÊB÷BCÿB,C1CKC8CjCWCvC‹CxCªC—C¶C¶CÑCàCÙCôCôCôC D D,DX$nsşcşc)dd3d;dYl  HHH.HHMH:HYHnH[H�HzH™H§H¯HºH¼HÇHÒHÒHñH÷HZ,îÑîÑ÷ÑıÑÒÒ#Ò(Ò[TÒV¡V¡w¡‰¡”¡�¡¿¡É¡סñ¡ş¡ş¡¢¢¢"¢ ¢0¢0¢;¢E¢K¢Q¢T¢b¢i¢�¢ˆ¢‹¢�¢¢¢­¢¸¢Ò¢í¢££@£E£K£Q£\£i£‡£o£�£”£š£¢£§£Ç£¯£Ğ£Ô£Ú£â£ç£ç£ô£ú£¤¤!¤%¤+¤3¤8¤8¤Y¤]¤c¤k¤z¤•¤�¤¡¤¥¤«¤³¤¸¤¸¤Ù¤ݤã¤ë¤ë¤ğ¤ı¤¥¥$¥(¥.¥6¥V¥>¥_¥c¥i¥q¥q¥~¥œ¥„¥¥¥©¥¯¥·¥×¥¿¥à¥ä¥ê¥ò¥ò¥ò¥¦¦¦¦¦¦&¦F¦R¦`¦e¦s¦‡¦Œ¦Œ¦—¦Ÿ¦§¦°¦¼¦Цݦì¦û¦§§§%§-§:§E§Line truncated 
�T�T°T¼TÚTöTUU-U8UMU:UYUaUlUUxU—U�UaôWn=n=Œ=�=¡=¨=¯=´=¶=½=Ä=È=Ú= >&>>>>C>d>d>p>x>‡>Á>Æ>ó>û>? ???#?B?H?g?i?ˆ?“?ª?É?Ï?Ö?Ö?Ü?ß?ã?ô?@&@b$ÜÜ-ÜEÜEÜKÜcxb|¾æ¾æŞæçç 
ççç.ç;ç=ç=ç=ç=çJçRçeçyç{ç{çƒç–ç–ç¨çdHÏv9v9�9«9®9·9½9Ô9ë9::B:^:x:}:‚:�:¤:¶:Ã:Ö:ì:;;;0;5;8;R;l;t;|;�;›;µ;½;Å;Ê;ä;ì;ñ;<<<3<M<U<]<_<y<“<›<£<¥<¿<Ç<Ç<Ì<Ñ<Ü<Ü<ç<ç<ó<ó<=E=[=[=k=ed¤¹x‰x‰ˆ‰�‰›‰¡‰©‰·‰Ê‰Ö‰í‰ú‰ú‰ı‰ ŠŠ2Š6Š>ŠfºûÁ*Á*×*Ü*ğ* +++8+B+R+R+i+p+‡+�+—+®+®+Ä+Ä+Ú+Ú+ğ+ğ+,,,,2,2,H,H,^,^,u,u,Œ,Œ,£,£,º,º,Ñ,Ñ,è,è,ÿ,ÿ,--/-7-B-S-^-o-r-t-‹-’-�.g¬÷>>X^emuxƒ••©°³µ¾ÏÏÒÚğó(:JMœh(EKN’N’u’b’�’�’˜’iCşJşJ!K6K;KCKKKSK`KfKoKuKzK‚K�K¤K¦K¨KµKµKÂK·KÓKÙKÛKİKêKêKêKïKøKL LLLL#L+L8L>LILPL`LkLwL•LœL§L­L¾LÂLÊLÊLŞLîLöLùL_Mj8-7á/á/õ/ù/ş/ 0000#0k¤õšî™î™ š0š6š=š=šDšdšišš›š‡š§šºšÌšÕšİšçš›› ›(›2›K›7›W›i›s›{›€›››‡›»›§›Ç›İ›É›ı›é› œœ%œ-œ-œ6œ>œTœmœœ�œ’œ’œ™œ�œ¼œ¾œÜΜäœäœäœèœôœ�#�-�:�[�i�s�u�u���¢�°�³�Ó�×�ö�ú��!�@�D�D�D�J�X�b�{���Œ�˜�š�¢�¨�Á�Ì�Ú�ä�ı�ŸŸŸŸŸ!Ÿ:Ÿ<ŸHŸJŸRŸXŸqŸ‰Ÿ•ŸªŸ¯ŸÁŸĞŸéŸúŸúŸ  ( 4 I N ` o ˆ ™ ™ Ÿ ª ² À Ç Ù lfä>Û>ÛXÛaÛ�Û�Û‡Û�Û—ÛŸÛ§Û­ÛºÛºÛÈÛÍÛÍÛÓÛØÛØÛŞÛãÛãÛéÛîÛîÛÜÜ Ü$Ü$Ü-ÜMÜMÜMÜTÜVÜVÜ]Ü_Ü_ÜeÜeÜlÜnÜnÜtÜtÜ{Ü}Ü}܃܃܊܊ܒܘÜ�ܦܦܦܦܲܺÜÂÜÊÜÒÜÚÜâÜèÜİİİİİ&İ,İ2İ2İ6İ>İEİMİUİYİ_İgİnİvİ~݂݈ݓݙݦݲݸİÀİÄİËİÓİÛİßİåİíİôİüİŞŞŞŞŞ4ŞEŞJŞMŞóŞmÖQQPQdQlQwQ~Q…Q�Q�Q“Q±Q¸QÓQÕQÜQ÷QşQR R R*R*R*R8RBRORoRqR‹R“R“R¯RÍRÒRÙRíRôRSSS3SGSbSeSmSzSšSœS¶S¾S¾SÚSõSõST-Tn`Ñ!Ñ!Ú!á!õ! "","1"O"Q"o"q"ˆ"œ"¥"§"»"Ë"ü"o|2Í€‘€‘–‘§‘¸‘ɑڑ둺‘’’2’=’C’P’e’e’x’‰’�’¤’¿’¿’Ô’Ù’á’é’ï’““%“)“3“H“N“P“]“_“q“q“x“€“’“’“¡“¯““ƓГԓà“ä“ğ“ô“””””*”0”4”>”B”Q”U”d”h”{”””””„”–”¥”´””ݔí”ı”••••••$•9•A•O•Y•g•m•o•o•o•o•o•o•o•o•o•{•ƒ•‹•‘•¦•®•²•º•È•Î•Î•Î•à•æ•ò•ø•– –0–<–B–O–a–o–�–í—pÔ¼íøjøj >
kk&k1kGkYkqkvkk†k“kšk¨k¯k±k´k¹k»kÁkÛkõk l#l(l1l8lElYltl{l}l€l…l¨lÆlÒlq$hm�&�&�&£&ª&Ä&r¤b‡VXVXjXqX—XƒX£X¨X¯X¯XÏXåXÑXñXYY#Y(Y/Y/Y7Y>YIYTY\YdYoYzY�Y…Y¥Y­Ys?|^l^lzl�l™l±l»lÆlÆlËlÖlâlílûl mm"m(m=mRmRmfmnm~m‹mšm§m¸mÉm×måmìmòmnnn0n=nNn^ndnunun{n‰nšn§n·not8¬®J®J²J·J¼JÍJÛJäJéJîJğJu88B)0)0=0A0F0Q0[0^0b0j0v0†�öHöH I I,I2I5I=IwÜt®®ĞÛæïÿ#9(MZ]ew}‚¥¸¼ÂÙßïõ";IRbdkpx—¥±Ëêñû S
"8Ymy�›ª·ÆÓãñ'FXox~‰�”«ÃÊÊØçé÷ CN‚xT�Şàà6à>àKàkà}à„à�à”àšà�à¢àÄàÄàËàÎàÓàâàæàáááá#á&á+á7áEáIáZáiámáoá~á‚á¤á¨á­á­áÁáÄáĞáÚáááââââQâhâsâwâˆâ“â—â™â¤â¨â¨âÂâÆâÈâÈâÓâ×âñâõâõâõâùâãyˆßıãã2ãHãHãHãJãJãQãSãSãZã\ã\ãiãkãkãxãã�ã�ã�ã•ã—ã—ã¯ã´ã´ãÄãz°‰±ödödee!e{efe[eFe/e�e“eƒe®e®eÇe»eôeùeff%ff1f7f>f_fQfEfsfuf�f�f›fÂfÂfÂfÎf{ †*ö³ö³´´"´-´D´N´N´e´o´Š´ ´®´²´Ò´æ´ú´µµµ(µ9µFµFµMµTµYµ^µcµjµqµ‹µ’µ¢µ¦µ¦µ°µÆµÊµÊµÛµîµ!¶,¶3¶;¶F¶M¶M¶X¶v¶z¶’¶ƒ¶­¶­¶³¶º¶É¶Ñ¶ß¶æ¶ê¶ì¶ş¶ş¶ş¶··>·L·L·P·e·m·}·ˆ·�·¢·°·¿·Ç·Õ·à·ä·é·ñ·õ·¸¸¸¸&¸(¸7¸>¸B¸V¸^¸l¸s¸w¸‡¸’¸—¸µ¸½¸Ë¸Ò¸Ö¸Ş¸ì¸ó¸÷¸ÿ¸¹¹&¹*¹*¹*¹5¹@¹P¹\¹r¹z¹…¹”¹œ¹§¹¬¹´¹¿¹Ë¹Ï¹Ú¹ß¹ñ¹ù¹ººººº!º>ºJºRºbºrº�º”ºÃº¸º©ºÓºÓºİºäºóº»
»» »#»%»4»<»J»Q»U»U»W»i»i»{»{»{»�»�»Ÿ»§»¿»ë»ù»ı»¼"¼)¼4¼J¼L¼S¼f¼n¼|¼ƒ¼‡¼‰¼œ¼¤¼²¼¹¼½¼½¼½¼½¼Ë¼Ö¼å¼í¼û¼½
½
½½½½*½,½;½=½L½N½]½d½h½|½„½’½™½�½­½¸½½½Û½ã½ñ½ø½ü½¾¾¾¾%¾9¾A¾L¾P¾P¾P¾[¾b¾p¾Š¾š¾¥¾º¾¿¾Ê¾Ú¾æ¾ü¾¿¿¿&¿1¿6¿>¿I¿U¿Y¿d¿i¿{¿ƒ¿�¿�¿�¿�¿¢¿²¿Ç¿Ô¿Ø¿ì¿ı¿À À#À1ÀFÀVÀmÀ†ÀŸÀ¡À¬À´À´À½ÀÚÀëÀÁÁ)Á4Á@ÁHÁJÁUÁ]Á]Á]ÁwÁ…Á“Á¨Á¿ÁÎÁÛÁùÁÂÂÂ$Â>Â>ÂBÂXÂg‚Â�¤¬¬ÂÎÂÎÂáÂüÂÃÃ4ÃCÃPÃnÃ|ÒëûÃÓÃÓÃëÃëÃ÷ÃÄ'Ä0Ä0Ä0Ä<ÄMÄeÄnÄnÄuÄ~Ä„Ä�ÄöÄ|ÌL»föfö„ö�öšöÀöÀöÂöÏöÚöàöñö÷÷÷÷"÷'÷,÷?÷R÷]÷a÷s÷€÷ˆ÷“÷�÷ª÷¸÷¸÷¸÷Ã÷Ş÷É÷ï÷æ÷ù÷û÷øø ø-ø-ø/øKøKøRøXøaøhøkø�ø¡ø”ø©ø¯ø¸ø¸ø¸øËøĞøĞøØøØøãøøøùùùùù4ù:ù?ù?ùTùZù_ù_ùkùˆù¨ù­ù²ù²ù¾ùÛùêùùùúú úúúú úBú_úaú~ú“ú“ú™ú™ú¦ú¯ú¯úÊúÜúçúìúùúû ûû$û;û;ûKûKû]ûcû‹û”û”û–û�û¢û¢û¯ûºûÀûÉûÉûÜûéûûûüüü"üIüRü]übüiüqü„ü™ü�ü¥ü²ü¹üËüàüçüíüöüöüÿüı ı%ı3ıCıQıQıWı^ıgıgızıŒı�ı�ı ı¨ı°ı¼ıÙıàıíıïıöı
şşşş@ş@ş@şMşMşbşmşşŒş—ş¥ş°ş¿şÆşÆşàşóşõşÿÿÿ)ÿ>ÿ>ÿDÿMÿMÿZÿ`ÿrÿrÿÿ‚ÿ�ÿŸÿ¦ÿ±ÿ¶ÿ¾ÿÅÿĞÿÕÿêÿìÿ$*;I[[ahqv—  ¦¯¯ÎÎÛŞäíõ##039BJUgmxx…ˆ�—™»Îãéô  š}@I•  6 H S { f Z ‡ ¥ Ò ½ ± Ş ø ø  ,  Y D 8 e    ‘ « « Ø ñ å  # 6 * X I d ‚ š � À ­ Û Ì ç 2&TE`zzzŒ¦¦ÁÎííõ~”�¾33%3)32353>3G3Y3Y3‚3†3‹3�3—3§3®3±3¹3¼3É3Ñ3Ù3á3è3ø3ø34Œ >�U�U²U¹UéUÕUõUúUVV!V7V#VCVsV_VV„V‹V‹V“VšV¥V­V¸VËVÃVãVëV€À-ÀdÀdŞdîdødødee ee+e.e0e9eFeFeTeheheŒe™e™e©e¶e¶eÙeæeæeüe f5fXfafnfnf‘f›f›fÎfggggg�¸ºä@Š@ŠXŠZŠfŠjŠwŠzŠ”Š”Š”ŠšŠ�ЦбŠÅŠÑŠÓŠÓŠÜŠŞŠŞŠçŠéŠéŠòŠôŠôŠıŠıŠ‹ ‹‹‹*‹0‹<‹<‹¤‹‚œWz¶)¶)Ô)å)**(* *@*`*L*l*}*‚*£*�*»*ã*ê*+û*+;+'+G+X+n+Z+†+“+“+«+«+µ+ƒœX{†-†-’-¢-­-×-..%.7.>.E.Y.`.n.†.•.¢.¥.¾.Á.Æ.İ.é.õ.ù./6/„x¬ ¬ ¬6¬=¬D¬c¬r¬�¬�¬Ÿ¬®¬¸¬¸¬½¬Ä¬×¬æ¬ë¬­ ­ ­6­H­L­Z­a­f­f­m­­ˆ­Š­˜­ª­ª­ª­¼­Ç­Ù­ä­ñ­ö­® ®®'®,®9®>®N®S®c®e®u®w®‡®‰®š®£®£®¥®µ®¼®Ì®Ì®ç®ù® ¯¯-¯-¯-¯0¯C¯…\åø¨‹¨‹Ã‹Ê‹Ï‹İ‹ò‹ù‹ŒŒŒŒ Œ2Œ2Œ9ŒoŒ†0ÎÖ††�àÔ¨¦ôü‡L4Cş+ş+ ,,$,,,>,D,M,_,e,h,¤,ˆ(–œá2á2ï2ş233 3‰\DW¦,¦,´,Æ,Ì,Ô,æ,ì,õ,- --(-.-1--Š, ÆÑÆÑÔÑÛÑãÑèÑîÑ‹¬!H� � ¬ ¾ Å Ì Û à ÿ ÿ 
#
(
/
>
@ @
_ _
_ n
~ p
“ �
€ �
Ÿ �
® �
�
·
° °
Ï Ï
Ï Ù
Ï ‹@? aa+a3a:a_aqawa‚a™a¨a³a·aÂaÎaÙaåaüab&b=bRbbbbbtbzb‹b‘b¡b¡b¹b¹bŞbŞbãbãbébõbcc#c:cIcTcfcrc‰c¡cÂcÂcËcĞcĞcĞcĞcàcécñcöcdd"d'd'd5d5d:d:dDdOdadgdsdƒd�d˜dœd¥d¾dÁdÑdØdödÿdÿdee.e5e;eGeOeZeaeeexe~e‹e–eœe¬e¼e¼eée ff f*f1f<f>fIfIfYf^f^fhfsf…f‹f™f¦f³f½fÁfÊfãfæföfıfggggg g/g8gJgPgRgRg`gfglg}gƒg�gŸgŸgŸg¤g¼g¼gËgÎgâgh h4hFhQhchghlhsh…h•h­h´h¸h¾hÆhÑhÔiŒ<KVÆ(Æ(à(ì(ş()5)")M)e)e)o)�`l€P›P›p›w››Š›”›Ÿ›§›¶›À›Ã›ç›é›ù›ù›œ�XnvÔvԜԮԳÔÊÔÜÔæÔğÔşÔÕÕ+Õ-Õ6ÕLÕZÕbÕjÕlÕwՂՂՊՒ՜դծշտÕÂÕËÕæÕ÷Õ Ö ÖÖ$Ö<ÖPÖXÖXÖjÖmÖrÖ…Ö�Ö±Ö¹Ö¹ÖÚÖİÖâÖõÖûÖ×&×(×=×S×[×[×fׅ׌ח׮×�83=�Ò�Ò—Ò—Ò¥Ò©Ò·ÒºÒ¿Ò�8>HÆÒÆÒÏÒÏÒİÒáÒèÒëÒğÒ‘D*Î*Î*è*û*+ ++0+9+=+O+U+t+’Ğy©ö÷ö÷ ø#ø*ø0ø6ø8ø>øDøDøVøaøhøuø‚ø•ø¤ø¸ø¾øÀøÇøÍø×ø×øèøêøñø÷øùùùù*ù1ù@ùBùTùcùcùuù“0+3v+v++¥+¶+¼+¼+Ä+”„\y¶ì¶ìÈìİìçìğìòìùì ííí í í&í7í:í:í[ífíhí�íˆíŒí˜í«íşí• 
Ï **'*E*J*–h÷ n^n^„^�^š^¨^³^¹^Ê^Ğ^á^ç^ó^
_
__-_:_@_Q_W_¥_—�µÕ6O6OdOiO}O…O“O—O O O¥O²OÈOòO÷OP#P(P/PEP[P]PsP‰P­PÇPÙP˜ˆùnünü†ü˜üŸü¦üÅüÊüéüîüıõü'ıı3ıHı5ıgıTısısısı…ıŒı«ı«ı³ı™ y}ЇЇهå‡ê‡š(A�â�âÀâÈâÎâÖâØâØâéâéâéâñâùâ ãã ã/ã1ã1ãKãMãMãXã]ãwã|ã|ã|ã‘ã“ã ã¢ã¯ã±ã¾ãÆãÎãÕãäãñãóãäääää,ä?äEäMäOä\ä\äqäqäqä|ä†ä�ä£ä£ä£ä±ä·ä¼äÄäÏäáäìäñäñäøäüä
åååå<åIåPåYåuåzåzåzåzå‚å�å›å›å»å»å»åÂåĞåßåòåææææææ!æ(æ-æ3æEæOæjæ“æ™æ™æ­æ²æÖæİæéæçç%ç,ç0ç0ç0ç0ç;çEçSçuç€ç�ç§ç§çµçÓçèè'è>èQèVèVèVè^èiè{è†è‹è‹è‹è�èÊèĞèĞèĞèÛèåèñèüèşèşèşèéééYé›H%///$///=/H/P/P/h/r/x/~/œ0 îSîSTT!T7T0TOTWT�T9J¦'¦'À'Ì'Ş'ô'((-(>(P(f(‡(t(Ÿ(·(·(Á(�ÖŞPŞPQ$Q,Q7Q>QEQNQPQSQqQxQ“Q•QœQ·Q¾QÇQÉQÌQêQêQêQøQRR/R1RKRSRSRoR�R’R™R­R´RÏRÑRØRóRS"S%S-S:SZS\SvS~S~SšSµSµSÛSíSŸTXi¾ ¾ Ô â è î ÿ  -17EHR Lg¶ı¶ıåıÚıòı şùı-şş9şOş;şoş[ş{ş‡şŒş˜ş¨ş¯ş¼şÇşÓşŞşæşëş÷şüşÿÿÿ&ÿ+ÿ6ÿOÿXÿdÿiÿ}ÿ„ÿˆÿˆÿ�ÿ¦ÿ«ÿÄÿÙÿëÿğÿûÿ3>HSU`hhum�­¡àZ�xbxb’b b¥b²bÀbÉbäbòbcc-cGcRcbcdcfcpc|c€c�c™c«c³cËcÏcÏcÏcÏcÔcòc d dddd*d3d‰d¢d{�v+v+”+·+È+Ï+è+à+, , ,,,=,S,?,k,x,x,�,�,š,£@I•Ş
Þ Þ
÷ ö
ğ   ; &  G e ’ } q � ¸ ¸ × ì Ù   ø % ? ? ? Q k k ˜ ± ¥ Ş ã ö ê   $ B Z N € m › Œ § Å Ú Ç ò æ  :::Lff��­­µ¤(®ß®ß¼ßßßåßêßêßğߥ(!'6Ò6Ò?ÒMÒSÒUÒZÒ¦D]j|8|8–8�8¦8²8Ç8Ï8Õ8Û8İ8İ8ì8§„½Ú¨¥¨¥Û¥ç¥ë¥ó¥û¥ÿ¥
  Œ@? FaFacakara—a©a¯aºaÑaàaëaïaúabbb4bKb^bubŠbšbšb¬b²bÃbÉbÙbÙbñbñbcccc!c-c:cFc[crc�cŒc�cªcÁcÙcúcúcdddddd!d)d.d<dJdZd_d_dwdwd|d|d†d‘d£d©dµdÅdĞdÚdŞdçdeeee8eAeAePe`epewe}e‰e‘eœe£e§eºeÀeÍeØeŞeîeşeşe+fMfYfaflfsf~f€f‹f‹f›f f fªfµfÇfÍfÛfèfõfÿfg g%g(g8g?gDgDgXgXg]gagqgzgŒg’g”g”g¢g¨g®g¿gÅgÑgágágágægşgşg hh$hBhMhvhˆh“h¥h©h®hµhÇh×hïhöhúhiiij�<KV)) ),)>)T)u)b)�)¥)¥)¯)�`l€ˆ›ˆ›¨›¯›·›Â›Ì›×›ß›î›ø›û› œ!œ1œ1œ?œ�`àôæ˜æ˜ü˜™+™/™>™W™[™a™t™‘™“™“™Ä™²™“™ã™í™�Xn¶Ô¶ÔÜÔîÔóÔ ¦¦¦¦¦#¦'¦8¦I¦K¦O¦`¦q¦~¦‘¦˜¦¢¦¢¦¢¦´¦¨€¸—¸—Ñ—Ø—ß—æ—ì—ü—˜˜˜3˜6˜8˜S˜]˜g˜n˜y˜‹˜“˜“˜©˜©˜»˜©˜bV^V^|^œ^¤^¯^¾^Ç^Ë^Ö^ö^û^_4_:_?_R__ˆ_�_¤_¬_¯_´_Ç_ì_ñ_` ```8`=`Z`y``‡`‡`Œ`’`•` `À`Å`ß`ş`a a)a2a7aVa^acaƒaŒa�a­aµaÕaÚaôabbbbbb+b<bGb_bjb}bŠb¢b¶bÇbÑbÓbçbøbıbcc5c5c5cGcª°)��+�8�=�A�J�W�c�n�y���Œ�”�—�£�«�Å�ë�å�û�Ÿ9Ÿ%ŸIŸIŸaŸlŸˆŸ�Ÿ³ŸìŸìŸìŸìŸM «0ùA@Œ@ŒeŒqŒ|Œ†ŒŒŒ–ŒœŒ¦Œ´Œ¾ŒĞŒÚŒàŒêŒğŒúŒ� ���G�V�Y�[�e�w���“���²�²�µ�¿�Ô�Ù�é�ô�ù� � �*�?�M�V�^�l�}�����«�«�¸�¸�À�Î��¬l£:æ?æ?ÿ?@'@G@Y@q@Œ@Œ@¶@¾@Â@Å@É@Î@Ø@Û@â@è@ï@õ@ù@ş@AA A'A)A-A6A@ACANAZA]AnAyAA†A�A¨A¹AÂAËAÓAŞAéAõABB#B1B3B:BABFBJBWB^B�B�B™B£B¬BÅBÖBßBèBğBùBÿBCC CC C.C8CMCWC`CyCŠC“CœC¤C­C³C·C¼CÂCÌCÖCòCDD DDD#D0D8DWDJDiDrD�D¡D´D»DÄDÍDÔDİDæDïDEøDEEvE­  ȄȄքõ„û„®À�¹·'·'À'ç'Õ'Ç'((
ÕÕ&Õ0Õ>ÕFÕUÕkÕmÕvՌ՚բժլշÕÂÕÂÕÊÕÒÕÜÕäÕîÕ÷ÕÿÕÖ Ö&Ö7ÖIÖLÖQÖdÖ|Ö�Ö˜Ö˜ÖªÖ­Ö²ÖÅÖİÖñÖùÖùÖ××"×5×;×P×f×h×}דככצ×Å×Ì×××îב83=ÆÒÆÒÏÒÏÒİÒáÒïÒòÒ÷Ò’8>HşÒşÒÓÓÓÓ Ó#Ó(Ó“D*++ +3+=+D+P+h+q+u+‡+�+¬+”Ğy©6ø6ø`øcøjøpøvøxø~ø„ø„ø–ø¡ø¨øµøÂøÕøäøøøşøùù ùùù(ù*ù1ù7ùAùAùAùXùjùqù€ù‚ù”ù£ù£ùµù•0+3®+®+·+İ+î+ô+ô+ü+–„\yîìîìíí í(í*í1íAíLíNíXíXí^íoírírí“í�í í¹íÀíÄíĞíãí6î—  (9(\(\(l(q(q(…(Š(Š(¦(«(«(Ë(Ğ(Ğ(ä(é(é()))8)^)~)�)¢)´)Ä)Ä)Ä)Ä)Ä)�*¯$bg&& &#&5&O&°´ªºº(º7º7º:ºCºOºOº[ºpº‘º£ºµº¹ºɺéºûº»»»!»'»0»0»Q»U»e»r»�»¢»¨»»»Í»Ù»Û»ç»ï»ó»ù»¼¼¼¼¼*¼0¼<¼Q¼X¼`¼l¼�¼ˆ¼ˆ¼ˆ¼–¼¤¼®¼±¼¿¼ɼ̼޼ã¼è¼ø¼û¼½½½½ ½(½:½B½K½a½g½s½ˆ½�½—½©½¯½¾½ϽϽÖ½Ö½Ö½ä½ò½ü½ÿ½ ¾¾¾,¾1¾6¾F¾I¾N¾^¾a¾e¾n¾v¾ˆ¾�¾™¾™¾¤¾»¾Ó¾×¾ã¾û¾¿ ¿¿¿"¿*¿3¿3¿3¿L¿T¿Z¿q¿z¿‚¿ˆ¿�¿�¿�¿•¿§¿³¿»¿Á¿Ç¿Ç¿É¿Û¿±xNÓNÓ\ÓqÓxÓƒÓ¥ÓÙÓõÓÔÔ!Ô-Ô6Ô>ÔFÔHÔNÔTÔ`ÔhÔnÔpÔvÔ²Ü,ß–l–l´l¼lÌlÔlmmm$m,m2mFmNmNmVm�mÙm´mümnn"n$nNnTn]ndnlntn€nˆn�n£n«n°nºnÚnânänînıno%o'oGoOoOoOoZoaoto|o…o…oŠo�o–oŸo¨o°oÌoçop+p.pEpRpfp}p�p²pÌpŞpqqq:q=q=qTqaquqŒq—q›q¦q±qÃqÒqÔqşqrr"r'rQrWr\rnr}rr©r¬r¾rÍrÏrùrÿrÿrÿr s ssEsPsPsPsPsYses{s”s§s®sºsÁsÁsÔsØsØsØsßsäs÷sşs
V*V*_*}*‚*˜h÷ ¦^¦^¼^Ç^Ò^à^ë^ñ^___ _+_B_B_T_e_r_x_‰_�_İ_™”"6/6/X/b/n/s/ƒ/‰/�/²/Á/Ï/İ/ô/ü/000*02050505070F0P0Y0a0d0v0š�µÕvOvO¤O©O½OÅOÓO×OàOàOåOòOP2P7P[PcPhPoP…P›P�P³PÉPíPQQ›ˆù®ü®üÆüØüßüæüı ttt(t*t/tBtItUt\t\titststzt›t›t­t³ ÄæDæDûDE.EE EME:EYEnE[E›E†EzE§EµE½EÈEÊEÕEàEàEåEFFDFIFcFPF‚FoF�F™F®F›FÍFºFÙFŞFÙFôFG
ı)ı.ıHı5ıgıTısıˆıuı§ı”ı³ı³ı³ıÅıÌıëıëıóıœ y}ˆˆ ˆˆˆ�(AÖâÖâøâããããã!ã!ã!ã)ã1ãCãRãCãgãiãiãƒã…ã…ã�ã•ã¯ã´ã´ã´ãÉãËãØãÚãçãéãöãşãä ää)ä+ä<äIäIäIäRädäwä}ä…ä‡ä”ä”ä©ä©ä©ä´ä¾äÖäÛäÛäÛäéäïäôäüäåå$å)å)å0å4åBåFåOåVåtå�åˆå‘å­å²å²å²å²åºåÅåÓåÓåóåóåóåúåææ*æ=æ?æ?æ?æRæRæYæ`æeækæ}æ‡æ¢æËæÑæÑæåæêæçç!ç?çRç]çdçhçhçhçhçsç}ç‹ç­ç¸çÕçßçßçíç è;èNè_èvè‰è�è�è�è–è¡è³è¾èÃèÃèÃèÕèéééééé)é4é6é6é6é;éGéGé‘é�H%A/A/O/V/a/o/z/‚/‚/š/¤/ª/°/Ÿ0 .T.TUTBTaTwTpT�T—T T9Jæ'æ'( ((4(U(B(m(~(�(¦(Ç(´(ß(÷(÷()¡TXiö ö   &7ESeio}€Š¢Lgöıöı%şş2şMş9şmşYşyş�ş{ş¯ş›ş»şÇşÌşØşèşïşüşÿÿÿ&ÿ+ÿ7ÿ<ÿPÿWÿ[ÿfÿkÿvÿ�ÿ˜ÿ¤ÿ©ÿ½ÿÄÿÈÿÈÿÍÿæÿëÿ+0;CCCE^s~ˆ“• ¨¨µ­Íí£àZ�¨b¨bÂbĞbÕbâbğbùbc"cDcMc]cwc‚c’c”c–c c¬c°c½cÉcÛcãcûcÿcÿcÿcÿcd"d<d<dCdFdNdZdcd¹d¤d{�¶+¶+Ô+÷+,,(, ,@,`,L,l,},“,,«,¸,¸,Ğ,Ğ,Ú,¥(æßæßôßàà"à"à(à¦(!'nÒnÒwÒ…Ò‹Ò�Ò’Ò§D]j°8°8Ê8Ñ8Ú8æ8û89 9999 9¨„½Úà¥à¥¦ ¦#¦+¦3¦7¦B¦F¦J¦N¦V¦[¦_¦p¦�¦ƒ¦‡¦˜¦©¦¶¦É¦Ğ¦Ú¦Ú¦Ú¦ì¦©€ğ—ğ— ˜˜˜˜$˜4˜?˜I˜T˜k˜n˜p˜‹˜•˜Ÿ˜¦˜±˜Ã˜Ë˜Ë˜á˜á˜ó˜ª˜b–^–^¼^Ü^ä^ï^ş^_ __6_;_U_t_z__’_¿_È_Ş_ä_ì_ï_ô_`,`1`G`M`U`X`x`}`š`¹`¿`Ç`Ç`Ì`Ò`Õ`à`aa a>aDaIaiarawa–a�a£aÃaÌaÎaíaõabb4bSbYb^b^b^b^bkb|b‡bŸbªb½bÊbâböbccc'c8c=cHcUcucucuc‡c«°)@�@�c�p�u�y�‚���›�¦�±�¹�Ä�Ì�Ï�Û�ã�ı�#ŸŸ3Ÿ<ŸqŸ]Ÿ�Ÿ�Ÿ™Ÿ¤ŸÀŸÇŸëŸ$ $ $ $ … ¬0ùApŒpŒ•Œ¡Œ¬Œ¶Œ¼ŒÆŒÌŒÖŒäŒîŒ� GGG"G-G-G2GMGOGjGjGwG|G›G�G¼G¼G¼GÄG´\ãö~]~]”]¦]¬]·]Å]Ñ]è]è]ú]^ ^^&^4^A^m^µ(28®®Ìßæíôøú  -77KVduy~šÂÆÏÓØé   ( - F W [ [ [ ` � £ ª ½ Á Æ â 
��� �*�1�=�C�L�w�†�‰�‹�•�§�±�Ã�Í�â�â�å�ï�� ��$�)�=�P�Z�o�}�†���œ�­�½�Î�Û�Û�è�è�ğ�ş�E�­l£:@@7@O@_@@‘@©@Ä@Ä@î@ö@ú@ı@AAAAA A'A-A1A6A@AQAXA_AaAeAnAxA{A†A’A•A¦A±A·A¾AÇAàAñAúAB BB!B-B>BOB[BiBkBrByB~B‚B�B–B¹BÇBÑBÛBäBıBCC C(C1C7C;C@CDCQCXCfCpC…C�C˜C±CÂCËCÔCÜCåCëCïCôCúCDD*D8D>DCDKDSD[DhDpD�D‚D¡DªDÅDÙDìDóDüDE EEE'E@E0EPETE®E®  ø„ø„…%…+…¯À�¹é'é'ò'((ù':(J(<(k(�(�(�(£(£(·(¼(¼(Ø(İ(İ(ı()))))8)8)F)j)�)°)Â)Ô)æ)ö)ö)ö)ö)ö)¿*°$bg9&9&=&U&g&�&±´ªNºNºhºwºwºzºƒº�º�º›º°ºѺãºõºùº »)»;»A»T»]»a»g»p»p»‘»•»¥»²»Ğ»â»è»û» ¼¼¼'¼/¼3¼9¼B¼B¼B¼B¼T¼j¼p¼|¼‘¼˜¼ ¼¬¼Á¼ȼȼȼÖ¼ä¼î¼ñ¼ÿ¼ ½ ½½#½(½8½;½@½P½S½W½`½h½z½‚½‹½¡½§½³½ȽϽ×½é½ï½ş½¾¾¾¾¾$¾2¾<¾?¾M¾W¾Z¾l¾q¾v¾†¾‰¾�¾�¾¡¾¥¾®¾¶¾Ⱦоپپä¾û¾¿¿#¿;¿C¿I¿U¿^¿b¿j¿s¿s¿s¿Œ¿”¿š¿±¿º¿¿È¿οοοÕ¿ç¿ó¿û¿ÀÀÀ ÀÀ²x�Ó�ӜӱӸÓÃÓåÓÔ5ÔGÔ[ÔaÔmÔvÔ~Ô†ÔˆÔ�Ô”Ô Ô¨Ô®Ô°Ô¶Ô³Ü,ßÖlÖlôlül mmAmXm\mdmlmrm†m�m�m–mÏmnôm<nAnSnbndn�n”n�n¤n¬n´nÀnÈnĞnãnënğnúno"o$o.o=o]oeogo‡o�o�o�ošo¡o´o¼oÅoÅoÊoÎoÖoßoèoğo p'pApkpnp…p’p¦p½pÁpòp qqHqNqPqzq}q}q”q¡qµqÌq×qÛqæqñqrrr>rArSrbrgr‘r—rœr®r½r¿rérìrşr ss9s?s?s?sIsIsTs…s�s�s�s�s™s¥s»sÔsçsîsústttttt t$t7t>tJtQtQthtjtot‚t‰t•tœtœt©t³t³tºtÛtÛtít´}¾oo<o?oEoYoaoroo…oŠoŠo—o o¦o¶oÄoÆoåoöoıo ppp'p:pEpIpZpZpZp_p_pkpzp�p“p˜p¬p²pºpÌpÒpÔpãpğpöpüpqq qq q'q)q.q6q8q=qIqKqPqXqZq_qgqiqnqvqxq}q‡q‰q�q˜q˜q˜q¨q¨q¨q¿qÅqËqÖqÛqãqüqr rrr"r;rFrQrWrdrirnrnrƒr‹r“r±r¼rÇrÓrÍrÜrårêrïrs ss s&s2s6s;s@sKsVsascsisvs{s€s™s¤s¯s¯sµsÂsÄsÉsÒsësösttttttt.t0t0tCtEtEtXtZtZtmtotot‚t„t„t–t–tœt¡t¡t¸tÌtÁtÙtátètîtöt uu u$u$u&u>uAuCuOuauqu}u”u®u³uÇu×uêuïuïuõu vv&v.v6v:vHvNvSvSvYvmv}v‚v‚vˆv�v“v“v“v™v¨v»vÈvÌvÑvÑvÕvÚvÚvßvêvövw&w2w2w8wEwGwTw`wow‚w‚w�w›w›w›w›wŸw¤wµwÇwÒwÚwâwäwöwûw xxx(x(x?xOxOxcxoxqxzx†x�x�x£x°x²xÄxÄxÏxÏxÏxÏxÏxK{µ\ãö¶]¶]Ì]Ş]ä]ï]ı] ^ ^ ^2^8^C^S^^^l^y^¥^(28îî  &-48:AHLLTmww‹–¤µ¹¾Ú     ) F F T h m † — › › ›   Î ã ê ı   " J R [ _ d u ‡ — « ­ Æ Ù İ İ İ ù !!%!.!2!7!H!e!e!s!‡!Œ!¥!¶!º!Ì!Ì!Ì!Ñ!à!" "+"1"G"X"]"r"�"¶"º"Ã"Ç"Ì"İ"ö"ö"###3#D#H#H#O#b#f#x#}#™#Á#É#Ò#Ö#Û#ì#$$&$+$D$W$[$m$m$m$m$r$‘$ $Á$Ì$Ò$è$ù$ù$ù$%%,%,%,%;%;%N%e%p%�%†%Œ%–%˜%¤%¤%«%¶%Ë%Í%Ø%í%ù%Line truncated    $ 5 G W k m † ™ � � � ¹ á å î ò ÷ !%!%!3!G!L!e!v!z!Œ!Œ!Œ!‘! !Á!à!ë!ñ!"""2"N"v"z"ƒ"‡"Œ"�"¶"¶"Ä"Ø"Ú"ó"####"#&#8#=#Y#�#‰#’#–#›#¬#Â#Ò#æ#ë#$$$-$-$-$-$2$Q$`$�$Œ$’$¨$¹$¹$¹$À$Ó$ì$ì$ì$û$û$%%%0%A%F%L%V%X%d%d%k%v%‹%�%˜%­%¹%»%Æ%Ò%â%é%ğ%ú%&&
PPP.P8PAPOPVPXPaPaPgPuP�P”P§P»PÁPÃPÖPÛPÛPøPøP & &&&&/&1&6&>&B&D&D&M&Z&p&�&ª&¶&Â&É&É&Ü&à&à&à&ç&ì&'''%'%'<'>'C']'i'u'|'|'‰'“'“'¥'˜ ºœ˜G˜GµGÄGÄGÄGŞGŞGíGíGóGõGõGûGıGıGHHH HHHHHHHHH2H2HGHRH\HiH~H€H›H�H¸H½HØHİHãHãHøHûH"I/IGIgIgIpIuI“I�I™I¨I­I´I½IĞIØIàIåIåIåIîIJ J J&J4JNJdJfJnJtJ|J�J�J‡J‡J�J¡J£J¸JºJÂJÈJĞJÕJÕJÕJÕJãJ÷JùJ K KKK#K(K1K9KBKHKNKPKPKPKXKXKfKzK~K€KŒK�K©K¯K·K¼KÅKĞKÓKÙKßKèKëKëKùKL L,LILOLWL\LeLgLgLlLnLvLvL‘L£L¨L´LºL½LÔLÖLÙLéLíLôLıL MM M(M-M5M:M:MBMOMgMlMvM�M©M´M¿MÊMÕMàMëMöMöMöMşMşMN%N?NUNUNWNWN`NfNhNhNnNtNtN|N…N‹N—N—N�N¡NÀNËNÓNÛNàNàNçNëNğNÿNOOOO%OLOLORO`OqO}O„O’O¡O·O½OÂOÂOÇOÚOæOîOşOPP P&P(P1P1P7PEPQPdPwP‹P‘P“P¦P«P«PÈPÈPÚPàPéPïPøPQ Q QQ$Q&Q1QCQVQVQjQvQˆQ�Q™QŸQ¢Q¹Q»Q¾QÎQØQÛQÛQêQıQRR R&R)R@RBRERURYRaRoRtRyRyRR‡RŒRŒR’R’R R¦R¬R¶RÀRÎRãRæRèRòRòRôRüRSS S SSSSS#S.S3S8SCSHSnSpSuSzSS„S‰S�S“S“S˜S�S¹SÃS×SëSñSùSùST TTT'T5TJTMTOTYThTmTmTmTuTzTƒTƒTˆTˆT�T–T›T›T T«T°TµTºTÉTÉTÚTàTàTîTôTúTUUU1U4U6U@UOUTUTUTU\UaUjUoUoUuU}U‚U‚U‡U’U—UœU¡U°U°UÁUÇUÇUÕUÛUáUëUõUVVVV'V6V;V;V;VCVHVQVVVVV\VdViViVvV|V|VŠV�V–V VªV¸VÍVĞVÒVÜVëVğVğVğVøVıVW W WWWWW+W1W1W?WEWKWUW_WmW‚W…W‡W‘W W¥W¥W¥W­W²W»WÀWÀWÊWÒW×W×W×WİWçWíWXXX XXX!X!X'X5X>XLXQXQXWXeXqX‚X�X–X�X¨X¶X¶X»X»XÆXÆXÆXÊXÏXÏXÕXÙXŞXæXìXîX÷XYYYYY!Y'Y5Y@YEYKYSYXYXYXYXYXYXYXYXYXYXYqYwY€Y†Y�Y“Y˜Y¡Y¬YµY½YÂYÂYÂYÈYĞYÕYÕYÙYŞYŞYçYõYZZZZZ1Z1Z7Z@ZTZTZ]Z_ZeZnZ‚Z‚Z‹Z‹Z‹Z�Z•Z•Z�Z¢Z¢Z¿ZÍZÙZâZèZòZúZÿZÿZÿZ[["[4[>[>[F[F[N[P[P[i[s[|[~[~[~[„[ˆ[Š[Š[Š[Š[�[•[›[Ÿ[_·Ğà®t®tĞtætòtu,u9uPucunu„upu�u˜u˜u§u§u¯u»uÑuæuõuvvvvvv#v2v=vTvVv[vjvuv‚vŒvŒvšv¸”*KP P h o v y ‚ … ˆ Œ ‘ ± � Á É Ñ Ô Ö æ ï ø ş ¡¡)¡:¡E¡w¡¹à.¢ö;ö;< <0<3<7<@<G<U<d<z<‹<œ<®<À<Ï<Ş<ï<ş<ş< =====*=1=?=S=\=b=p=‰=‹=�=™=™=�=�=�=£=£=²=»=Ã=Ù=Ù=Ù=Ş=Ş=ó=ÿ=
QQQ Q(Q6Q;Q;QNQTQVQaQsQ†Q†QšQ¦Q¸Q½QÉQÏQÒQéQëQîQşQR R RR-R?RDRPRVRYRpRrRuR…R‰R‘RŸR¤R©R©R¯R·R¼R¼RÂRÂRĞRÖRÜRæRğRşRSSS"S"S$S,S1S6S;S;SASISNSNSSS^ScShSsSxS�S S¥SªS¯S´S¹S¾SÃSÃSÈSÍSéSóSTT!T)T)T7T=TCTMTWTeTzT}TT‰T˜T�T�T�T¥TªT³T³T¸T¸T¾TÆTËTËTĞTÛTàTåTêTùTùT >>>>>>3>?>L>N>N>R>T>T>p>|>ˆ>Š>Š>�>�>�>œ>�>�>¡>¡>ª>°>µ>Ñ>Ñ>Ñ>Ñ>Ñ>Ñ>Ñ>Ñ>Ñ>Ñ>Ñ>Ñ>Ó>ä>ö>????? ?<?@?E?à?º,fÑfÑtÑ{ушÑ�Ñ»˜?a®V®VÄVÊVÑVWíV WWWW9WOW;W[W‹WwW—WœW£W£W£W©W¬W°W¸WĞWÛWîWæWXX¼PQa % %-%;%B%R%c%h%…%‹%’%™%§%³%Å%&½D%ößöß
UUUU$U*U4U>ULUaUdUfUpUU„U„U„UŒU‘UšUŸUŸU¥U­U²U²U·UÂUÇUÌUÑUàUàUñU÷U÷UV VVV%V3VHVKVMVWVfVkVkVkVsVxV�V†V†VŒV”V™V™V¦V¬V¬VºVÀVÆVĞVÚVèVıVWW WW W W W(W-W6W;W;WAWIWNWNW[WaWaWoWuW{W…W�W�W²WµW·WÁWĞWÕWÕWÕWİWâWëWğWğWúWXXXX XXX1X6X6X<XFXLXQXQXWXeXnX|X�X�X‡X•X¡X²X¿XÆXÎXØXæXæXëXëXöXöXöXúXÿXÿXY YYYYY'Y6Y>YCYIYIYQYWYeYpYuY{YƒYˆYˆYˆYˆYˆYˆYˆYˆYˆYˆY¡Y§Y°Y¶Y¾YÃYÈYÑYÜYåYíYòYòYòYøYZZZ ZZZZ%Z1Z>ZDZDZMZaZaZgZpZ„Z„Z�Z�Z•Z�Z²Z²Z»Z»Z»ZÀZÅZÅZÍZÒZÒZïZıZ [[["[*[/[/[/[C[L[R[d[n[n[v[v[~[€[€[™[£[¬[®[®[®[´[¸[º[º[º[º[¿[Å[Ë[Ï[J_¸Ğàîtîtu&u2uPuluyu�u£u®uÄu°uĞuØuØuçuçuïuûuv&v5v@vSvYvYvYv^vcvrv}v”v–v›vªvµvÂvÌvÌvÚv¹”*Kˆ ˆ   § ® ± º ½ À Ä É é Ö ù ¡ ¡ ¡¡¡'¡0¡6¡9¡J¡a¡r¡}¡¯¡ºà.¢.<.<L<W<h<k<o<x<<�<œ<²<Ã<Ô<æ<ø<=='=6=6=D=H=L=Q=U=b=i=w=‹=”=š=¨=Á=Ã=Ç=Ñ=Ñ=Ö=Ö=Ö=Û=Û=ê=ó=û=>>>>>+>7>B>G>G>J>O>O>k>w>„>†>†>Š>Œ>Œ>¨>´>À>Â>Â>Å>Ç>Ç>Ô>Ö>Ö>Ù>Ù>â>è>í> ? ? ? ? ? ? ? ? ? ? ? ? ??.?=?L?L?P?P?X?t?x?}?@»,�Ñ�ѬѳѻÑÀÑÆÑ¼˜?aîVîVW àààAàGàMàràxà~à„à„àŒà¾ô#œ>0>0F0U0Y0f0s0‡0–0¶0Ã0Õ0÷01%1A1S1k1‚1�1®1Ì1Û1ö1225252P2y2“2®2À2Ï2Ş2Ş2é2ü2 3 303=3H3W3w3w3ƒ3ƒ3ƒ3”3¡3¨3Ç3Ğ3İ3á3é3ô3 4$4-4=4E4J4n4~4�4™4­4²4º4à4â4í4 5:5:5R5a5i5x5�5‰5›5º5Â5Ê5Õ5×5ç5ÿ56/6G6Y6p6y6‚6”6¢6¦6ª6¿ …… …(…-…À\…XÈÈ8È?ÈLÈWÈ\ÈbÈtÈzȒȘȶÈÊÈÕÈÛÈıÈıÈ É"É$É'É3É;ÉCÉKÉYÉ_ÉeÉqÉqÉsÉ…É‹É�É�ɧɧÉÅÉÅÉØÉåÉêÉêÉÊ
WWAW-WMWRWYWYWyW�W{W›WËW·W×WÜWãWãWãWéWìWğWøWXX.X&XFXPX½PQaQ%Q%_%m%t%„%•%š%·%½%Ä%Ë%Ù%å%÷%3&¾D%.à.àBàPàVàyàà…àªà°à¶à¼à¼àÄà¿ô#œv0v0~0�0‘0�0«0¿0Î0î0û0 1/1O1]1y1‹1£1º1Å1æ122.292T2m2m2ˆ2±2Ë2æ2ø2333!343E3X3h3u3€3�3¯3¯3»3»3»3Ì3Ù3à3ÿ3444!4,4D4\4e4u4}4‚4¦4¶4Æ4Ñ4å4ê4ò455%5X5r5r5Š5™5¡5°5¹5Á5Ó5ò5ú56 66 676O6g66‘6¨6±6º6Ì6Ú6Ş6â6À 0…0…9…X…]…Á\…XVÈVÈpÈwÈ„È�ȔȚȬȲÈÊÈĞÈîÈÉ ÉÉ5É5ÉEÉZÉ\É_ÉkÉsÉ{ɃɑɗÉ�ɩɩɫɽÉÃÉÈÉÈÉßÉßÉıÉıÉÊÊ"Ê"Ê9ÊBÊQÊgÊrʀʋʛʨʺÊÀÊÊÊÖÊãÊåÊåÊíÊòÊòÊúÊÿÊÿÊË Ë ËËËË Ë$Ë$Ë+Ë0Ë0Ë7Ë<Ë<ËGËLËLËWË\Ë\ËgËlËlËwËwË�Ë—Ë�ˠ˫ˮËÂËÏËŞËåËèËúËüËÌÌ#Ì2Ì2Ì2Ì2Ì<ÌTÌiÌyÌŠÌ�̡̧̬ÌÌÇÌØÌçÌíÌşÌ ÍÍ"Í1Í7ÍBÍHÍ]ÍcÍtÍ͕͕ͥͅ͸ÍÄÍÌÍÜÍãÍéÍúÍÎ ÊÊ/Ê:ÊHÊSÊcÊpʂʈʒÊ�ʫʭʭʵʺʺÊÂÊÇÊÇÊÏÊÔÊÔÊÜÊáÊáÊçÊìÊìÊóÊøÊøÊÿÊËËËËË Ë$Ë$Ë/Ë4Ë4Ë?Ë?ËXË_ËeËhËsËvˊ˗˦˭˰ËÂËÄËÊËŞËëËúËúËúËúËÌÌ1ÌAÌRÌXÌiÌoÌtÌ~Ì�Ì Ì¯ÌµÌÆÌÑÌÛÌêÌùÌÿÌ
Î'Î<ÎJÎZÎfÎx΃ΒΔΦήγκξÎÌÎÖÎÜÎæÎìÎ÷ÎıÎÿÎ ÏÏ#Ï<ÏJÏJÏPÏWÏ—ÑÂ0#« ¨ ¨?¨i¨q¨q¨¨’¨«¨®¨Ê¨Ê¨Ê¨Ò¨Ô¨Ô¨Ü¨Ş¨Ş¨æ¨è¨è¨ğ¨ğ¨ù¨ÿ¨©© ©©©"©(©-©-©5©>©D©I©I©N©Z©r©‘©”©©©È©È©È©Ğ©Ò©Ò©Ò©Ú©Ü©Ü©Ü©ä©æ©æ©æ©î©ğ©ğ©û©û©ªªªªª ªª*ª8ªFªPªPªPª`ª`ªgªkªqª‰ª—ªªªªßªâªéªûª« «««"«(«-«-«-«4«:«O«W«]««‹«‘«–«–«�«¨«¨«­«¿«Å«Å«Å«Å«¬Ãd)PBPBrB|BBB‰BœB�B«B­B¸BÌBÔBäBéBïB÷BúB CÄLWfÙ0Ù0í0ñ0ö011 11111Å\CVq0q0‡0‡0‹0�0£0¦0«0«0µ0»0»0É0Ë0Õ0Æ8(2–Ò–ÒŸÒŸÒ­Ò±Ò¸Ò»ÒÀÒǨ²ØÎfÎfæfîfùfgg?g™g„gygdgMgŸg´g¤gÏgÔgàgh h!hh-h3h3h@hgh�huh£h¾h¾h¾hÊhÈ Ä&E&E;EFEnEYEME�EzE™E®E›EÛEÆEºEçEõEıEF ÍÍ%Í+Í<ÍGÍMÍ]Í]Ím͔̀͌ͤͫͱÍÂÍÍÍÒÍïÍÎÎ"Î.Î@ÎKÎZÎ\ÎnÎvÎ{΂ΆΔÎ�ΤήδοÎÅÎÇÎÔÎáÎëÎÏÏÏÏ Ï_ÑÁ0#«è§è§¨1¨9¨9¨G¨Z¨s¨v¨’¨’¨’¨š¨œ¨œ¨¤¨¦¨¦¨®¨°¨°¨¸¨¸¨Á¨Ç¨Ì¨Ì¨Õ¨á¨å¨ê¨ğ¨õ¨õ¨ı¨© ©©©©"©:©Y©\©q©�©�©�©˜©š©š©š©¢©¤©¤©¤©¬©®©®©®©©¸©¸©Ã©Ã©É©Î©Î©Î©Î©Õ©à©ò©ªªªªª(ª(ª/ª3ª9ªQª_ªrª~ª§ªªª±ªÃªËªÔªßªßªêªğªõªõªõªüª«« «%«G«S«Y«^«^«e«p«p«u«‡«�«�«�«�«æ«Âd)BB>BHBKBKBUBhBjBwByB„B˜B B°BµB»BÃBÆBØBÃLWf§0§0»0¿0Ä0Ï0Ï0Ù0ß0ß0ã0ë0Ä\CV?0?0U0U0Y0^0q0t0y0y0ƒ0‰0‰0—0™0£0Å8(2^Ò^ÒgÒgÒuÒyÒ€ÒƒÒˆÒÆ¨²Ø�f�f¦f®f¹fÒfÆfÿfYgDg9g$g g_gtgdg�g”g gÇgÌgágÎgígógógh'hOh5hch~h~h~hŠhÇl¥¼®-®-È-ğ-Ó-ü-.5...M.e.R.q.„.¤.¶.É.É.Ö.õ.õ.ÿ.È4“œ&è&è:è?èEèIèMèlètèɼLw^’^’v’�’‹’¤’¼’Á’Æ’Ê’Ì’Ò’Ø’î’Û’ú’ú’“1““=“G“`“x“}“‚“†“ˆ“�“”“ª“—“¶“¶“ɓѓã“ı“ö“ ””Ê4;DöÜöÜÿÜ İ*İ/İ1İ1İ6İË”"¸¦¸¦Æ¦Ø¦Ü¦ä¦ì¦÷¦§
FF F F%FRFWF„F‰F£F�FÂF¯FÎFÙFîFÛF GúFGGG4GBGJGUGWGbGmGmGrG�G�GªGªG·G¼GÛGİGüGüGüGHÉl¥¼î-î-.0..<.\.u.n.�.¥.’.±.Ä.ä.ö. / //5/5/?/Ê4“œfèfèzèè…è‰è�è¬è´è˼Lw�’�’¶’Á’Ë’ä’ü’““ §§ §%§;§B§I§T§_§a§l§w§y§…§�§›§¤§¬§¬§°§ç§Ì€Úö§4§4Å4É4Í4Õ4ã4æ4é4ü455555#5+575L5]5d5k5k5x5�5Í\!´¾H¾HğHûH0I!II6IeIjIjInIxI„IŸI¦I´I¶I¾IØIôIJJ+J?JDJKJpJwJ€J‚J‡J›J¸JÊJ×JïJ KK!K%K%K0K7KIKLKNKdKSKpKˆKŠK¢K´K·K¹KÏK¾KÛKÛKÛKíKíKûKL-L&LBLBLGLKLgLsL�L¬L¶LºLÊLéLŞLõL÷L MM.M'M=MAMWMvMkM‚M„M–M M´M¾MÇMŞMèMêMşMNNN"N"N"N-N4NHN`NbNzN�N¥NªN¼NÄNåNûNûNûN O O2OÎd9ή2®2ä2ë2ó2ü2 33/3235393B3P3Z3_3‡3Œ3™3Å3Ê3×3÷3ü3 474?4D4Y4…4�4’4’4¥4¸4È4Ì4ë4ü455#5#5#5#5#535H5K5N5R5R5W55„5�5š5¢5½5Ï5Ü5ç56666)6+6+6+686O6Q6Q6^6u6u6†6‹6«6½6Ï6í6í6í6ú67777 7779797F7]7]7n7v7{7¡7³7Å7ã7ã7ã7ğ78 8 88-8-8B8D8K8m8‹8�8—8¥8¯8±8±8±8Í8Õ8×8×8ù839Ϥ/TÎäÎäîäåå/å?åDåDåSåeåå‡å�å�å£å«å«å«å­å­å­å­åËåËåËåËåİåßåßåßåßåòåıå æĞxµ””,”8”C”H”T”_”d”k”p”{”€”€”€”²”Ÿ”¾”À”ŔДՔՔՔ•ô”•:•:•M•`•s•†•‹•‹•�•±•Ä•וܕܕ–(–*–*–=–P–c–v–v–v–„–Ñ0Š’ÆçÆçÔçÚçŞçıçèè$èÒ<:E77ˆ7“7¡7­7¹7Â7Ë7Ô7Ú7ß7ÓluŒç&ç&õ&ÿ&'''"'$'0':'H'e'g'w'w'|'~'…'·'ÔÜŸÒ�~�~¢~Ì~Á~­~ç~ô~@EqqvŒ�´Êı €D€0€_€l€˜€�€¥€Ä€Ì€ñ€æ€Ò€���:�&�N�[�‡�‡�‡�‡���ÕL½Ì//$/6/=/\/\/n/�/�/‡/¦/°/ÖÈg•ï0ï01161X1d1k1v1�1�1—1—1œ1¦1¾1É1Ù1å1ì1÷12
“ “““.““:“:“Y“q“^“}“‡“ “¸“½““ƓȓΓÔ“ê“דö“ö“ ””#”=”6”I”U”Ì4;D6İ6İ?İKİjİoİqİqİvİÍ”"ğ¦ğ¦ş¦§§§$§/§:§B§M§X§]§s§z§�§Œ§—§™§¤§¯§±§½§È§Ó§Ü§ä§ä§è§ ¨Î€ÚöÙ4Ù4÷4û4ÿ45555.54565E5I5M5U5]5i5~5�5–5�5�5ª5¿5Ïd9Îî2î2$3+333<3M3Z3o3r3u3y3‚3�3š3Ÿ3Ç3Ì3Ù34 222 2 2 2'2'2121292A2I2Q2U2_2«2× x„x„†„š„ „Ø`FZß7ß7ï7ö7ø7ı7 88'8'85858A8J8M8[8e8h8p8Ù<›¦� � § ² ½ È Ó İ û ¡¡Ú 2¦_¦_¾_Ğ_Ö_â_í_û_``)`9`K`Q`W`]`p`v``…`—`�`¨`°`¾`Ë`aÛ, N*N*\*m*ƒ*”*—*�*Ü40…0…>…H…Q…X…_…i…i…o…İÄKxÖõÖõöö
4474<4K4w44„4™4Å4Í4Ò4Ò4å4ø45 5+5<5A5A5c5c5c5c5c5s5ˆ5‹5�5’5’5—5¿5Ä5Í5Ú5â5ı566'6E6E6E6R6i6k6k6k6x6�6‘6‘6�6µ6µ6Æ6Ë6ë6ı67-7-7-7:7Q7S7S7S7`7w7y7y7†7�7�7®7¶7»7á7ó78#8#8#808G8I8I8V8m8m8‚8„8‹8­8Ë8Ğ8×8å8ï8ñ8ñ8ñ8 999999s9Ф/Tåå.åPåPåoåå„å„å“å¥å¿åÇåÎåĞåãåëåëåëåíåíåíåíå æ æ æ ææ æ æ æ æ2æ=æ`æÑxµV”V”l”x”ƒ”ˆ”””Ÿ”¤”«”°”»”À”À”À”ò”ß”ş”••••••G•4•S•z•z•�• •³•ƕ˕˕ޕñ•––––/–B–U–h–j–j–}–�–£–¶–¶–¶–Ä–Ò0Š’èèèèè=è^è^èdèÓ<:E±7±7º7Å7Ó7ß7ë7ô7ı78 88ÔluŒ''''1'8'O'O'T'V'b'l'z'—'™'©'©'®'°'·'é'ÕÜŸÒÎ~Î~â~ í~'4@SF€…±±ÌŞô ööö.ö0ö4ö8ö;öNögö‰ö’ö�ö¤ö½ößöäöıö ÷$÷+÷D÷f÷h÷�÷£÷£÷£÷¸÷Ò÷á÷ó÷Ş}¾ŞnŞnünÿnoo!o2o?oEoJoJoWo`ofovo„o†o¥o¶o½oÉoÙoÙoçoúop pppp p p+p:pMpSpXplprpzpŒp’p”p£p°p¶p¼pÁpÇpÍpÔpàpçpépîpöpøpıp q qqqq q'q)q.q6q8q=qGqIqNqXqXqXqhqhqhqq…q‹q–q›q£q¼qÂqÍqÑq×qâqûqrrr$r)r.r.rCrKrSrqr|r‡r“r�rœr¥rªr¯rÄrËrÔràræròrörûrs ss!s#s)s6s;s@sYsdsososus‚s„s‰s’s«s¶sÁsÇsÔsÔsØsİsİsîsğsğstttttt-t/t/tBtDtDtVtVt\tatatxtŒt�t™t¡t¨t®t¶tÉtÔtËtätätætştuuu!u1u=uTunusu‡u—uªu¯u¯uµuÉuÛuæuîuöuúuvvvvv-v=vBvBvHvNvSvSvSvYvhv{vˆvŒv‘v‘v•všvšvŸvªv¶vĞvævòvòvøvwww w/wBwBwOw[w[w[w[w_wdwuw‡w’wšw¢w¤w¶w»wÉwÕwÛwèwèwÿwxx#x/x1x:xFx]x]xcxpxrx„x„x�x�x�x�x�x {ß „ÈOO4OBOUOZOxO~OƒO‰O—O�O­O²O¾OĞOĞOîOùO PP-PJPVPqP‰P¥P®P½PÅPÒPÛPàPñPÿP Q$Q,QEQWQgQmQxQ�Q‡QÍQ·Q¨QİQRRóQ(R+RKRßRà<*5ÜBÜBıBC CC7C?CUCaCá„ |ffˆ“𢥥µÀÀÃÊÑ×İãêğ DHK[chhou†Œ’�®®·¼ÆÍÔÜâäò  '4444:LRc„•­´¾ÆÍÍÖİéù,<?úâ„9_6_6{6Š6‘6«6Ñ6ç6ø677!7:7:7L7b7j7m7y7ãX{ÍNNyƒ–¡³ÁÇØßçı-=GIYirx}„Š�–¡¬¯ĞØò #5DOWn‡‹”›­µ¼ÀÉËİô 4::Lä 
€=€L€„€p€Ÿ€¬€Ø€İ€å€� �1�&��A�Z�F�z�f���›�Ç�Ç�Ç�Ç�Ï�ÖL½ÌF/F/d/v/}/œ/œ/®/Á/Î/Ç/æ/ğ/×Èg•!1!1E1I1h1Š1–1�1¨1³1À1É1É1Î1Ø1ğ1û1 222)2:2<2M2O2Q2Q2Q2Y2Y2c2c2k2s2{2ƒ2‡2‘2İ2Ø ¨„¨„¶„ʄЄÙ`FZ88!8(8*8/8>8D8Y8Y8g8g8s8|88�8—8š8¢8Ú<›¦Ş Ş ç ò ı ¡¡¡;¡F¡V¡Û 2Ş_Ş_ö_```%`3`?`V`a`q`ƒ`‰`�`•`¨`®`·`½`Ï`Õ`à`è`ö`a@aÜ, †*†*”*¥*»*Ì*Ï*Õ*İ4`…`…n…x…�…ˆ…�…™…™…Ÿ…ŞÄKxööBöEöJöWö\önöpötöxö{ö�ö§öÉöÒöİöäöıö ÷$÷=÷_÷d÷k÷„÷¦÷¨÷Á÷ã÷ã÷ã÷ø÷ø!ø3øß „ÈNONOlOzO�O’O°O¶O»OÁOÏOÖOåOêOöOPP&P1PDPKPeP‚P�P©PÁPİPæPõPıP  „ „©„½„„å,ıD^�^�z�€�‹�œ�¡�§�ª�®�®�Î�Ó� �õ��.��:�S�?�_�f�k�u�x�|���š�†�¦�¦�¦�«�¼�Á�Ç�Ê�Î�Î�î�ó�)‘‘5‘N‘:‘Z‘p‘\‘|‘ƒ‘ˆ‘�‘‘‘•‘—‘°‘œ‘¼‘¼‘¼‘¼‘Ô‘ı‘ ’æˆÍë  (##2AAPP__nn}}Œ ›ªª¹È×ÔçxÈâN\N\l\~\„\�\§\§\¹\¿\Ê\Ú\æ\ï\õ\û\]]!]-];]J]J]z]èd�²vèvèzè�è�è§è®èºèºèÑèÑèèèèèÿèÿèéé-é/é/é3é騯ø�ú�ú°ú·úÂúØúØúêúõúûû"û9û=ûBûFûHûYûkûwû‰û‹û¤û³û·û·û·ûÊûßûßûëûñûûûüüü*ü,üBü\ü\ünüêP6FdCdCzC†C�C’C£C±C·CÃCËCÖCÜCßCéCë ®-f7f7€7‹7�7˜7Ÿ7¦7¼7Í7Ş7ğ788 818@8@8G8K8T8a8h8q8x8|8œ8œ8œ8œ8œ8¨8¬8¯8·8Å8Í8Ú8â8ê8û89 9 999-9D9F9Q9^9m9p9v9r9Š9¡9£9±9³9¾9Ä9Ä9Ì9Ì9Ş9å9û9û9û9:::#:.:3:3:6:;:;:W:e:r:t:t:x:z:z:–:¤:°:²:²:µ:·:·:Ä:Æ:Æ:É:É:É:É:É:Ò:Ø:Ü:è:;;#;*;ò;ì(rx ‡ ‡®‡µ‡Å‡È‡Î‡í(nt—&—& &ª&º&Å&Å&ã&îTzKşíşíî"î%î.î8îPî`îiîoîrîvîxî�î î­î³î·î½î¿îÂîÆîÆîéîíîóîóîúîï1ïDïWï]ïdïoïyï}ï€ï‡ï�ï‘ï—ï¨ï®ï³ï¸ïÅïÇïÙïÛïâïïïñïğğğğğ'ğ2ğ>ğUğUğjğvğ“ğ·ğÑğÖğíğòğñññ"ñ3ñHñNñ^ñkñƒñŠñ–ñ®ñºñºñºñÀñÃñÆñßñåñùñÿñòòòò!ò.ò.ò4òBòYò_òbòeòlòuò|ò|ò�ò�ò›ò›ò¡ò¯òÆòÌòÏòÒòÙòÙòêòñòşò ó óóó#ó)ó0ó;óOóOóiónóuó}ó„ó“ó—ó ó¸ó½óÄóæóñó÷óÿóô,ô,ôGôGôaôoôvô}ôŸô²ôÖôØôâôõõõõ)õ:õRõVõ+öï¼Ù�h�h¦hªh¸hÇhÒhŞhéh iëhiii<iliPiCi�i“i»iÀiÌi×i÷iÙijjj"j?jRjRjujuj�jğ î)î)ı)**ñ8�™II I.IBIOIUI[I^IIò8 o.o.}.„.�.—.�.¤.ª.ª.°.ó �*�*¨*°*µ*ôôÓŒ–�–�´�Ä�Ï�Ú�ó� ‚8‚d‚�‚”‚š‚¢‚¤‚¬‚ǂʂՂá‚ú‚&ƒ?ƒkƒ•ƒ›ƒ¡ƒ©ƒ®ƒ¶ƒуÔƒ߃ëƒğƒ „5„N„z„¤„ª„°„¸„º„„İ„à„ë„÷„…<…U…�…«…±…·…¿…Ä…Ì…ç…ê…õ…††† †††"†-†?†N†i†}†§†­†²†ĆÓ†ñ†‡/‡5‡=‡B‡T‡c‡~‡’‡¼‡‡LJه臈ˆAˆGˆLˆLˆLˆ]ˆhˆsˆ™ˆ±ˆ¼ˆĈшшֈ鈉‰+‰C‰N‰V‰c‰c‰h‰{‰ˆ‰’‰¦‰½‰Ö‰è‰õ‰ Š4ŠKŠYŠ[ŠoІІŠ�ЛбŠÊŠİŠéŠüŠ‹‹‹‹ ‹ ‹+‹B‹D‹I‹\‹h‹u‹‹‹‘‹õ”k ì8ì8999$9/919M9M9M9T9^9b9f9i9i9r9v9Œ9Œ9Â9Î9Ù9é9ù9ş9:::::":/:6:>:C:C:X:d:l:q:q:†:“:›: : :µ:Á:Ê:Ò:Ú:æ:ü:;*;.;<;D;I;I;^;x;‚;�;–;›;›;º;Æ;Ñ;Ö;ë;÷;< <<'<,<,<,</<4<4<4<S<_<j<l<o<t<t<t<~<†<�<•<�<©<¯<½<Ë<Ë<Õ<Ş<æ<=!=(=7=M=R=R=e=m=m=o=o=o=t=t={=�=…=Œ=�=�=�=�=Ÿ=Ÿ=Ä=Í=Í=Ñ=ìAö( ìAìAúABBB÷�1�v�v¼vÄvĞvævûv ww#w)w)w)w.w3wAwLwbwdwiwww‚w�w–w¤wø\‘¤�,�,¸,Ü,¿,è,-ú,-.--:-M-_-r-r--�-�-¨-ù8hrnGnG‡G–GªG¹G¿GÅGÈGéGú0�—˜ˆ˜ˆ¬ˆ¸ˆÆˆÉˆáˆäˆìˆû0S[&Ó&Ó:ÓBÓOÓYÓLine truncated
QQQ)Q7QWQ\QdQ}Q�QŸQ¥Q°Q¹Q¿QRïQàQRPR:R+R`RcRƒRSà<*5CC1C7C@CRCkCsC‰C•Cá„ |��ÀËÒÚİİíøøû "(99;DPV|€ƒ“›  §­¾ÄÊÕææïôş *ADS_llllr„Š›¼Íåìöş!1<<<Pdtw2â„9‘6‘6­6¼6Ã6İ677*737A7S7l7l7~7”7œ7Ÿ7«7ãX{͆†±»ÎÙëùÿ 5=Peu�‘¡ª°µ¼ÂÈÎÙäçî*?LOW[m|‡�¦¿ÃÌÓåíôø,:@DFSSSUlrr„ä  g gg g.g0g;gJgJgWgeghgjgjgogtg}gˆg�g—gªg¯gÄgÏgÙgÙgïgïgh0hEhKhPhWh]hdhihihohuhzhzh�h›h³h¹h¾hÒhÜhãhãhãhèhèhiii?ifikikikiniui{i‚i‡i‡i�i“i˜i˜i¯i¹iÃiÉiìiòijjj"j)j+j?jEjLjLjNjNjNjSjYj^jbjdjgjrj~j�jƒj‡j‡jŒjŒjšjÄj˜}Ÿşş &06AQYafq{�Œœ¤´»ÃËÓÛàëùù \X«æ?æ?ş?@@J@U@a@o@c@�@�@œ@¤@³@í@ï@A$A$AQAiAVA„AuA�A–A¥AºA¼AÇAÏAÏAêAïAøAB BB>B)BB]BJBiB~BkB«B–BŠB·BÑB¿BìBñB CøB*CC6CKC8CjCWCvCvC‘C C™C´C´C´CàCàCìC Ğ1��,�,�R�R�o�s�x�x�x�„�‰�™�������£�£�¹�À�Ï�İ�æ�ö�ÿ���������$�+�2�9�9�;�;�A�F�M‘
ЄЄلí„ò„å,ıD����º�À�Ë�Ü�á�ç�ê�î�î���I�5�U�n�Z�z�“��Ÿ�¦�«�µ�¸�¼�Á�Ú�Æ�æ�æ�æ�ë�ü�‘‘
‘‘‘.‘3‘i‘U‘u‘�‘z‘š‘°‘œ‘¼‘ÑÈ‘ΑёՑבğ‘Ü‘ü‘ü‘ü‘ü‘’=’I’æˆÍëQQZUUdss‚‚‘‘  ¯¯¾ÒÍÜÜëú çxÈâ†\†\¤\¶\¼\È\ß\ß\ñ\÷\]]]']-]3]>]L]Y]e]s]‚]‚]²]èd�²¶è¶èºèÍèÍèçèîèúèúèéé(é(é?é?éVéVéméoéoésé騯øÎúÎúğú÷úûûû*û5û@ûQûbûyû}û‚û†ûˆû™û«û·ûÉûËûäûóû÷û÷û÷û
ü ü ü+ü1ü;üFüTü[üjülü‚üœüœü®üê`ËßÖ—Ö—ì—˜˜ ˜.˜M˜Q˜W˜j˜‡˜‰˜‰˜º˜¨˜‰˜Ù˜ã˜ëP6F˜C˜C®CºCÂCÆC×CåCëC÷CÿC
DDDDì ®-�7�7¸7Ã7Ç7Ğ7×7Ş7ô788(8:8I8X8i8x8x88ƒ8Œ8™8 8©8°8´8Ô8Ô8Ô8Ô8Ô8à8ä8ç8ï8ı8999"939>9C9C9P9V9e9|9~9‰9–9¥9¨9®9ª9Â9Ù9Û9é9ë9ö9ü9ü9::::3:3:3:8:8:M:[:f:k:k:n:s:s:�:�:ª:¬:¬:°:²:²:Î:Ü:è:ê:ê:í:ï:ï:ü:ş:ş:;;;;;
;;; ;@;M;[;b;*<í(rxЇЇއå‡õ‡ø‡ş‡î(ntÉ&É&Ò&Ü&ì&÷&÷&'ïTzK6î6îTîZî]îfîpîˆî˜î¡î§îªî®î°îÈîØîåîëîïîõî÷îúîşîşî!ï%ï+ï+ï2ïTïiï|ï�ï•ïœï§ï±ïµï¸ï¿ïÅïÉïÏïàïæïëïğïıïÿïğğğ'ğ)ğ;ğ;ğ;ğ;ğ;ğ_ğjğvğ�ğ�ğ¢ğ®ğËğïğ ññ%ñ*ñ8ñOñTñZñkñ€ñ†ñ–ñ£ñ»ñÂñÎñæñòñòñòñøñûñşñòò1ò7ò<òGòGòLòYòfòfòlòzò‘ò—òšò�ò¤ò­ò´ò´ò¹òÆòÓòÓòÙòçòşòóó
óóó"ó)ó6óCóCóJóTó[óaóhósó‡ó‡ó¡ó¦ó­óµó¼óËóÏóØóğóõóüóô)ô/ô7ôPôdôdôôô™ô§ô®ôµô×ôêôõõõ<õ<õ<õUõaõrõŠõ�õcöğ¼ÙÎhÎhæhêhøhiii)iIi+iUiZiZi|i¬i�iƒiÎiÓiûij jj7jjCjHj[jbjj’j’jµjµjÁjñ &*&*5*N*T*ò8�™>I>IWIfIzI‡I�I“I–I·Ió8 ¡.¡.¯.¶.Á.É.Ğ.Ö.Ü.Ü.â.ô Ö*Ö*à*è*í*õôÓŒÖ�Ö�ô�‚‚‚3‚_‚x‚¤‚΂Ô‚Ú‚â‚ä‚삃
ƒƒ!ƒ:ƒfƒƒ«ƒÕƒÛƒáƒéƒîƒöƒ„„ „+„0„I„u„�„º„ä„ê„ğ„ø„ú„…… …+…7…P…|…•…Á…ë…ñ…÷…ÿ…† †'†*†5†A†A†F†L†R†Z†b†m††�†©†½†ç†í†ò†‡‡1‡E‡o‡u‡}‡‚‡”‡£‡¾‡Ò‡ü‡ˆˆˆ(ˆCˆWˆ�ˆ‡ˆŒˆŒˆŒˆ�ˆ¨ˆ³ˆÙˆñˆüˆ‰‰‰‰)‰@‰E‰k‰ƒ‰�‰–‰£‰£‰¨‰»‰ȉÒ‰æ‰ı‰Š(Š5Š`ŠtЋЙЛНЯЯŠÏŠÛŠñŠ
‹‹)‹<‹@‹@‹@‹G‹L‹_‹k‹‚‹„‹‰‹œ‹¨‹µ‹¿‹¿‹Ñ‹ö”k  9 969B9B9X9c9e9�9�9�9ˆ9’9–9š9�9�9¦9ª9À9À9ö9: ::-:2:5:::::::O:V:c:j:r:w:w:Œ:˜: :¥:¥:º:Ç:Ï:Ô:Ô:é:õ:ş:;;;0;;;^;b;p;x;};};’;¬;¶;Â;Ê;Ï;Ï;î;ú;<
< <+<:<?<N<[<`<`<`<c<h<h<h<‡<“<�< <£<¨<¨<¨<²<º<Á<É<Ò<İ<ã<ñ<ÿ<ÿ< ===O=U=\=k=�=†=†=™=¡=¡=£=£=£=¨=¨=¯=µ=¹=À=Ä=Ä=Ä=Ä=Ó=Ó=ø=>>> B÷(  B B.B7BEBKBø�1ŞvŞvüvww&w;wIwTwcwiwiwiwnwsw�wŒw¢w¤w©w·wÂwÏwÖwäwù\‘¤Ş,Ş,ø,-ÿ,(-A-:-Y-n-[-z-�-Ÿ-²-²-¿-Ş-Ş-è-ú8hr¦G¦G¿GÎGâGñG÷GıGH!Hû0�—ȈȈ܈èˆöˆùˆ‰‰‰ü0S[^Ó^ÓrÓzÓ‡Ó‘Ó¤ÓıP>NH†H†T†h†k††‡†‹†•†Ÿ†§†ª†°†şTš«¾I¾IØIëIîIøIJJJ.J8JLJLJRJUJ©Jÿ<˜£ ‰ ‰4‰;‰G‰S‰c‰h‰k‰o‰w‰ ,0ÆàÆàÔàààHzˆ~d~d’d�d©d¿d«dËdÍdÔdßdëdód DƒfMfMŠM‘M–M�M¸MÁMÃMĞMĞMÒMìMòMôMöMNNNNNN N'N0N8N?NENGNcNgNyNŒN’N¦N«N¸N¸NÌNÓNÚNãNñNúNO O$O)O.O1O;O>ONOD jj$j.j8jHjMjSj_jajsjsjuj¥jlåüöŞöŞ
ß ß-ß8ß<ßCßGßPß_ßaßaßußw߀߆߆߆߆ß�ß´Kt(D(DND_DdDkDuDuD}D�D”D™D®D°D³D·D¾DÒDÖDŞDêDñDõDıDÿDEEE E"E7E?EGEUEYEgE >¦j¦j¶jÂjÎjŞjöjüj
kk#k*k@kfk€k�kškªk°k²kÃkåkìkòklll)l/l5lXlôB» g g:g=gDgOg^g`gkgzgzg‡g•g˜gšgšgŸg¤g­g¸g¾gÇgÚgßgôgÿg h h h hLh`huh{h€h‡h�h”h™h™hŸh¥hªhªh½hËhãhéhîhi iiiiiiAiFiFioi–i›i›i›i�i¥i«i²i·i·i½iÃiÈiÈißiéióiùij"j2j>jDjRjYj[jojuj|j|j~j~j~jƒj‰j�j’j”j—j¢j®j±j³j·j·j¼j¼jÊjôj˜}Ÿ66RW^hny‰‘™�©³¹ÄÔÜìóû    # 1 1 G  Ğ1H�H�\�\�‚�‚�Ÿ�£�¨�¨�¨�´�¹�É�Î�Î�Î�Ó�Ó�é�ğ�ÿ� ��&�/�1�1�1�1�8�?�F�M�T�[�b�i�i�k�k�q�v�}‘
+24 -24
View File
@@ -85,12 +85,12 @@ class CIntermediateStruct
#define IC_ADD_CONST 0x38 #define IC_ADD_CONST 0x38
#define IC_SUB_CONST 0x39 #define IC_SUB_CONST 0x39
#define IC_EQUAL_EQUAL 0x3A #define IC_EQU_EQU 0x3A
#define IC_NOT_EQUAL 0x3B #define IC_NOT_EQU 0x3B
#define IC_LESS 0x3C #define IC_LESS 0x3C
#define IC_GREATER_EQUAL 0x3D #define IC_GREATER_EQU 0x3D
#define IC_GREATER 0x3E #define IC_GREATER 0x3E
#define IC_LESS_EQUAL 0x3F #define IC_LESS_EQU 0x3F
#define IC_PUSH_CMP 0x40 #define IC_PUSH_CMP 0x40
#define IC_AND_AND 0x41 #define IC_AND_AND 0x41
@@ -102,16 +102,16 @@ class CIntermediateStruct
#define IC_ASSIGN_PP 0x45 #define IC_ASSIGN_PP 0x45
#define IC_ASSIGN_MM 0x46 #define IC_ASSIGN_MM 0x46
#define IC_SHL_EQUAL 0x47 #define IC_SHL_EQU 0x47
#define IC_SHR_EQUAL 0x48 #define IC_SHR_EQU 0x48
#define IC_MUL_EQUAL 0x49 #define IC_MUL_EQU 0x49
#define IC_DIV_EQUAL 0x4A #define IC_DIV_EQU 0x4A
#define IC_MOD_EQUAL 0x4B #define IC_MOD_EQU 0x4B
#define IC_AND_EQUAL 0x4C #define IC_AND_EQU 0x4C
#define IC_OR_EQUAL 0x4D #define IC_OR_EQU 0x4D
#define IC_XOR_EQUAL 0x4E #define IC_XOR_EQU 0x4E
#define IC_ADD_EQUAL 0x4F #define IC_ADD_EQU 0x4F
#define IC_SUB_EQUAL 0x50 #define IC_SUB_EQU 0x50
#define IC_JMP 0x51 #define IC_JMP 0x51
#define IC_SUB_CALL 0x52 #define IC_SUB_CALL 0x52
@@ -182,19 +182,19 @@ class CIntermediateStruct
#define IC_BR_CARRY 0x88 #define IC_BR_CARRY 0x88
#define IC_BR_NOT_CARRY 0x89 #define IC_BR_NOT_CARRY 0x89
#define IC_BR_EQUAL_EQUAL 0x8A #define IC_BR_EQU_EQU 0x8A
#define IC_BR_NOT_EQUAL 0x8B #define IC_BR_NOT_EQU 0x8B
#define IC_BR_LESS 0x8C #define IC_BR_LESS 0x8C
#define IC_BR_GREATER_EQUAL 0x8D #define IC_BR_GREATER_EQU 0x8D
#define IC_BR_GREATER 0x8E #define IC_BR_GREATER 0x8E
#define IC_BR_LESS_EQUAL 0x8F #define IC_BR_LESS_EQU 0x8F
#define IC_BR_EQUAL_EQUAL2 0x90 #define IC_BR_EQU_EQU2 0x90
#define IC_BR_NOT_EQUAL2 0x91 #define IC_BR_NOT_EQU2 0x91
#define IC_BR_LESS2 0x92 #define IC_BR_LESS2 0x92
#define IC_BR_GREATER_EQUAL2 0x93 #define IC_BR_GREATER_EQU2 0x93
#define IC_BR_GREATER2 0x94 #define IC_BR_GREATER2 0x94
#define IC_BR_LESS_EQUAL2 0x95 #define IC_BR_LESS_EQU2 0x95
#define IC_BR_AND_ZERO 0x96 #define IC_BR_AND_ZERO 0x96
#define IC_BR_AND_NOT_ZERO 0x97 #define IC_BR_AND_NOT_ZERO 0x97
@@ -319,8 +319,8 @@ class CIntermediateStruct
#define CMP_TEMPLATE_MOD 0x02 #define CMP_TEMPLATE_MOD 0x02
#define CMP_TEMPLATE_LESS 0x03 #define CMP_TEMPLATE_LESS 0x03
#define CMP_TEMPLATE_GREATER 0x04 #define CMP_TEMPLATE_GREATER 0x04
#define CMP_TEMPLATE_LESS_EQUAL 0x05 #define CMP_TEMPLATE_LESS_EQU 0x05
#define CMP_TEMPLATE_GREATER_EQUAL 0x06 #define CMP_TEMPLATE_GREATER_EQU 0x06
#define CMP_TEMPLATE_STRLEN 0x07 #define CMP_TEMPLATE_STRLEN 0x07
#define CMP_TEMPLATE_RDTSC 0x08 #define CMP_TEMPLATE_RDTSC 0x08
#define CMP_TEMPLATE_SIGN_I64 0x09 #define CMP_TEMPLATE_SIGN_I64 0x09
+1 -2
View File
@@ -46,7 +46,7 @@ public extern U0 LexPutLine(CCmpCtrl *cc,U8 *start);
public extern U0 LexPutPos(CCmpCtrl *cc); public extern U0 LexPutPos(CCmpCtrl *cc);
public extern U0 LexPutToken(CCmpCtrl *cc); public extern U0 LexPutToken(CCmpCtrl *cc);
public extern U0 LexSkipEol(CCmpCtrl *cc); public extern U0 LexSkipEol(CCmpCtrl *cc);
public extern U8 *LexStatement2Bin( public extern U8 *LexStmt2Bin(
CCmpCtrl *cc,I64 *_type,I64 cmp_flags=CMPF_PRS_SEMICOLON); CCmpCtrl *cc,I64 *_type,I64 cmp_flags=CMPF_PRS_SEMICOLON);
public extern U0 LexWarn(CCmpCtrl *cc,U8 *str=NULL); public extern U0 LexWarn(CCmpCtrl *cc,U8 *str=NULL);
extern CMemberLst *MemberClassBaseFind( extern CMemberLst *MemberClassBaseFind(
@@ -57,7 +57,6 @@ public extern I64 MemberMetaData(U8 *st,CMemberLst *ml);
public extern CMemberLstMeta *MemberMetaFind(U8 *st,CMemberLst *ml); public extern CMemberLstMeta *MemberMetaFind(U8 *st,CMemberLst *ml);
public extern CHashClass *OptClassFwd(CHashClass *tempc); public extern CHashClass *OptClassFwd(CHashClass *tempc);
public extern I64 PrsKeyWord(CCmpCtrl *cc); public extern I64 PrsKeyWord(CCmpCtrl *cc);
#help_index "Compiler;Cmd Line (Typically)" #help_index "Compiler;Cmd Line (Typically)"
extern I64 Cmp(U8 *filename, extern I64 Cmp(U8 *filename,
U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv_let=0); U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv_let=0);
+9 -10
View File
@@ -160,7 +160,7 @@ lgc_start2:
tempf->line_num=doc_e->y+2; //TODO: should be a page down tempf->line_num=doc_e->y+2; //TODO: should be a page down
cc->last_U16=CH_FORM_FEED; cc->last_U16=CH_FORM_FEED;
goto lgc_done; goto lgc_done;
case DOCT_INS_BINARY: case DOCT_INS_BIN:
tempf->buf_ptr=cc->cur_buf_ptr=&lex_zeros; tempf->buf_ptr=cc->cur_buf_ptr=&lex_zeros;
tempf->line_num=doc_e->y+1; tempf->line_num=doc_e->y+1;
Free(cc->cur_str); Free(cc->cur_str);
@@ -173,16 +173,16 @@ lgc_start2:
cc->cur_str=ptr; cc->cur_str=ptr;
cc->cur_str_len=doc_e->bin_data->size; cc->cur_str_len=doc_e->bin_data->size;
} }
cc->last_U16=TK_INS_BINARY; cc->last_U16=TK_INS_BIN;
goto lgc_done; goto lgc_done;
case DOCT_INS_BINARY_SIZE: case DOCT_INS_BIN_SIZE:
tempf->buf_ptr=cc->cur_buf_ptr=&lex_zeros; tempf->buf_ptr=cc->cur_buf_ptr=&lex_zeros;
if (doc_e->bin_data) if (doc_e->bin_data)
cc->cur_i64=doc_e->bin_data->size; cc->cur_i64=doc_e->bin_data->size;
else else
cc->cur_i64=0; cc->cur_i64=0;
tempf->line_num=doc_e->y+1; tempf->line_num=doc_e->y+1;
cc->last_U16=TK_INS_BINARY_SIZE; cc->last_U16=TK_INS_BIN_SIZE;
goto lgc_done; goto lgc_done;
case DOCT_SHIFTED_Y: case DOCT_SHIFTED_Y:
if (LexDollar(cc,doc,doc_e) && *(src=cc->dollar_buf)) { if (LexDollar(cc,doc,doc_e) && *(src=cc->dollar_buf)) {
@@ -324,9 +324,8 @@ CDoc *LexDocRead(U8 *abs_filename,I64 flags)
return doc; return doc;
} }
I64 cmp_type_flags_src_code[(DOCT_NUM_TYPES+63)/64]={ I64 cmp_type_flags_src_code[(DOCT_NUM_TYPES+63)/64]={
1<<DOCT_TEXT|1<<DOCT_TAB|1<<DOCT_INS_BINARY|1<<DOCT_INS_BINARY_SIZE}; 1<<DOCT_TEXT|1<<DOCT_TAB|1<<DOCT_INS_BIN|1<<DOCT_INS_BIN_SIZE};
U0 LexAttachDoc(CCmpCtrl *cc,CLexFile *tempf=NULL, U0 LexAttachDoc(CCmpCtrl *cc,CLexFile *tempf=NULL,
CDoc *doc=NULL,U8 *abs_filename=NULL,CDocEntry *doc_e=NULL,I64 col=0) CDoc *doc=NULL,U8 *abs_filename=NULL,CDocEntry *doc_e=NULL,I64 col=0)
@@ -1039,8 +1038,8 @@ lex_ifjit:
case '\n': case '\n':
if (!(cc->flags&CCF_KEEP_NEW_LINES)) if (!(cc->flags&CCF_KEEP_NEW_LINES))
break; //else fall through break; //else fall through
case TK_INS_BINARY: case TK_INS_BIN:
case TK_INS_BINARY_SIZE: case TK_INS_BIN_SIZE:
cc->token=ch; cc->token=ch;
goto lex_end; goto lex_end;
case '.': case '.':
@@ -1147,9 +1146,9 @@ lex_check_comment:
j=LexGetChar(cc); j=LexGetChar(cc);
if (j=='=') { if (j=='=') {
if (i==TK_SHL) if (i==TK_SHL)
i=TK_SHL_EQUAL; i=TK_SHL_EQU;
else else
i=TK_SHR_EQUAL; i=TK_SHR_EQU;
} else } else
cc->flags|=CCF_USE_LAST_U16; cc->flags|=CCF_USE_LAST_U16;
} }
+1
View File
@@ -18,6 +18,7 @@ The assembler will not report certain invalid
forms. Get an Intel datasheet and learn forms. Get an Intel datasheet and learn
which forms are valid. which forms are valid.
{Lock|Rep}{Seg|2E=NotBr|3E=Br}{OP}{ADD}{REX}
*/ */
R8 AL 0; R8 AL 0;
+9 -9
View File
@@ -138,7 +138,7 @@ Bool OptFixupBinaryOp1(CIntermediateCode *tempi,
} else } else
if (tempc2->raw_type!=RT_F64) if (tempc2->raw_type!=RT_F64)
tempi2->ic_flags|=ICF_R_TO_F64; tempi2->ic_flags|=ICF_R_TO_F64;
if (IC_LESS<=tempi->ic_code<=IC_GREATER_EQUAL && (tempii=OptLead1(tempi)) && if (IC_LESS<=tempi->ic_code<=IC_GREATER_EQU && (tempii=OptLead1(tempi)) &&
tempii->ic_code!=IC_PUSH_CMP && tempii->ic_code!=IC_AND_AND) { tempii->ic_code!=IC_PUSH_CMP && tempii->ic_code!=IC_AND_AND) {
//We are looking for float comparisons to zero to convert to int. //We are looking for float comparisons to zero to convert to int.
if (tempi1->ic_code==IC_IMM_F64 && !tempi1->ic_data && if (tempi1->ic_code==IC_IMM_F64 && !tempi1->ic_data &&
@@ -241,8 +241,8 @@ CIntermediateCode *OptBrZero(CCmpCtrl *cc,CIntermediateCode *tempi)
tempi->t.a1t=tempii->t.a1t; tempi->t.a1t=tempii->t.a1t;
OptFree(tempii); OptFree(tempii);
return OptBrNotZero(cc,tempi); return OptBrNotZero(cc,tempi);
case IC_EQUAL_EQUAL...IC_LESS_EQUAL: case IC_EQU_EQU...IC_LESS_EQU:
tempi->ic_code=(tempii->ic_code-IC_EQUAL_EQUAL)^1+IC_BR_EQUAL_EQUAL; tempi->ic_code=(tempii->ic_code-IC_EQU_EQU)^1+IC_BR_EQU_EQU;
break; break;
case IC_OR_OR: case IC_OR_OR:
tempi->ic_code=IC_BR_OR_OR_ZERO; tempi->ic_code=IC_BR_OR_OR_ZERO;
@@ -301,9 +301,9 @@ CIntermediateCode *OptBrZero(CCmpCtrl *cc,CIntermediateCode *tempi)
OptFree(tempii); OptFree(tempii);
if (tempi->ic_flags&ICF_PUSH_CMP && if (tempi->ic_flags&ICF_PUSH_CMP &&
IC_BR_NOT_EQUAL<=tempi->ic_code<=IC_BR_LESS_EQUAL && IC_BR_NOT_EQU<=tempi->ic_code<=IC_BR_LESS_EQU &&
!(tempi->ic_flags&ICF_USE_F64)) { !(tempi->ic_flags&ICF_USE_F64)) {
tempi->ic_code+=IC_BR_EQUAL_EQUAL2-IC_BR_EQUAL_EQUAL; tempi->ic_code+=IC_BR_EQU_EQU2-IC_BR_EQU_EQU;
tempi->ic_flags&=~ICF_PUSH_CMP; tempi->ic_flags&=~ICF_PUSH_CMP;
tempii=tempi->next; //IC_PUSH_CMP instruction tempii=tempi->next; //IC_PUSH_CMP instruction
while (tempii->ic_code!=IC_PUSH_CMP) while (tempii->ic_code!=IC_PUSH_CMP)
@@ -368,8 +368,8 @@ CIntermediateCode *OptBrNotZero(CCmpCtrl *cc,CIntermediateCode *tempi)
tempi->t.a1t=tempii->t.a1t; tempi->t.a1t=tempii->t.a1t;
OptFree(tempii); OptFree(tempii);
return OptBrZero(cc,tempi); return OptBrZero(cc,tempi);
case IC_EQUAL_EQUAL...IC_LESS_EQUAL: case IC_EQU_EQU...IC_LESS_EQU:
tempi->ic_code=tempii->ic_code+IC_BR_EQUAL_EQUAL-IC_EQUAL_EQUAL; tempi->ic_code=tempii->ic_code+IC_BR_EQU_EQU-IC_EQU_EQU;
break; break;
case IC_OR_OR: case IC_OR_OR:
tempi->ic_code=IC_BR_OR_OR_NOT_ZERO; tempi->ic_code=IC_BR_OR_OR_NOT_ZERO;
@@ -428,9 +428,9 @@ CIntermediateCode *OptBrNotZero(CCmpCtrl *cc,CIntermediateCode *tempi)
OptFree(tempii); OptFree(tempii);
if (tempi->ic_flags&ICF_PUSH_CMP && if (tempi->ic_flags&ICF_PUSH_CMP &&
IC_BR_NOT_EQUAL<=tempi->ic_code<=IC_BR_LESS_EQUAL && IC_BR_NOT_EQU<=tempi->ic_code<=IC_BR_LESS_EQU &&
!(tempi->ic_flags&ICF_USE_F64)) { !(tempi->ic_flags&ICF_USE_F64)) {
tempi->ic_code+=IC_BR_EQUAL_EQUAL2-IC_BR_EQUAL_EQUAL; tempi->ic_code+=IC_BR_EQU_EQU2-IC_BR_EQU_EQU;
tempi->ic_flags&=~ICF_PUSH_CMP; tempi->ic_flags&=~ICF_PUSH_CMP;
tempii=tempi->next; //IC_PUSH_CMP instruction tempii=tempi->next; //IC_PUSH_CMP instruction
while (tempii->ic_code!=IC_PUSH_CMP) while (tempii->ic_code!=IC_PUSH_CMP)
+19 -19
View File
@@ -722,7 +722,7 @@ args.
} }
break; break;
sub_switch_start: sub_switch_start:
case IC_EQUAL_EQUAL: case IC_EQU_EQU:
if (OptFixupBinaryOp1(tempi,tempi1,tempi2,&is_unsigned)) { if (OptFixupBinaryOp1(tempi,tempi1,tempi2,&is_unsigned)) {
tempi->ic_data=tempi1->ic_data==tempi2->ic_data; tempi->ic_data=tempi1->ic_data==tempi2->ic_data;
tempi->ic_code=IC_IMM_I64; tempi->ic_code=IC_IMM_I64;
@@ -730,7 +730,7 @@ args.
if (tempi->ic_class->raw_type==RT_F64) if (tempi->ic_class->raw_type==RT_F64)
tempi->ic_flags|=ICF_USE_F64; tempi->ic_flags|=ICF_USE_F64;
break; break;
case IC_NOT_EQUAL: case IC_NOT_EQU:
if (OptFixupBinaryOp1(tempi,tempi1,tempi2,&is_unsigned)) { if (OptFixupBinaryOp1(tempi,tempi1,tempi2,&is_unsigned)) {
tempi->ic_data=tempi1->ic_data!=tempi2->ic_data; tempi->ic_data=tempi1->ic_data!=tempi2->ic_data;
tempi->ic_code=IC_IMM_I64; tempi->ic_code=IC_IMM_I64;
@@ -755,7 +755,7 @@ args.
tempi->ic_flags|=ICF_USE_F64; tempi->ic_flags|=ICF_USE_F64;
} }
break; break;
case IC_GREATER_EQUAL: case IC_GREATER_EQU:
if (i=OptFixupBinaryOp1(tempi,tempi1,tempi2,&is_unsigned)) { if (i=OptFixupBinaryOp1(tempi,tempi1,tempi2,&is_unsigned)) {
if (i==FBO1_INT) { if (i==FBO1_INT) {
if (is_unsigned) if (is_unsigned)
@@ -789,7 +789,7 @@ args.
tempi->ic_flags|=ICF_USE_F64; tempi->ic_flags|=ICF_USE_F64;
} }
break; break;
case IC_LESS_EQUAL: case IC_LESS_EQU:
if (i=OptFixupBinaryOp1(tempi,tempi1,tempi2,&is_unsigned)) { if (i=OptFixupBinaryOp1(tempi,tempi1,tempi2,&is_unsigned)) {
if (i==FBO1_INT) { if (i==FBO1_INT) {
if (is_unsigned) if (is_unsigned)
@@ -825,38 +825,38 @@ args.
if (cc->pass==2 && (!tempc->size||!tempc2->size)) if (cc->pass==2 && (!tempc->size||!tempc2->size))
LexWarn(cc,"Assign U0 "); LexWarn(cc,"Assign U0 ");
sub_switch_start: sub_switch_start:
case IC_MUL_EQUAL: case IC_MUL_EQU:
if (tempi2->ic_code==IC_IMM_I64 && if (tempi2->ic_code==IC_IMM_I64 &&
tempc->raw_type!=RT_F64 && tempc->raw_type!=RT_F64 &&
tempc2->raw_type!=RT_F64) { tempc2->raw_type!=RT_F64) {
if (i=tempi2->ic_data) { if (i=tempi2->ic_data) {
if (Bsf(i)==Bsr(i)) { if (Bsf(i)==Bsr(i)) {
tempi2->ic_data=Bsf(i); tempi2->ic_data=Bsf(i);
tempi->ic_code=IC_SHL_EQUAL; tempi->ic_code=IC_SHL_EQU;
} }
} }
} }
break; break;
case IC_DIV_EQUAL: case IC_DIV_EQU:
if (tempi2->ic_code==IC_IMM_I64 && if (tempi2->ic_code==IC_IMM_I64 &&
tempc->raw_type!=RT_F64 && tempc->raw_type!=RT_F64 &&
tempc2->raw_type!=RT_F64 && tempc2->raw_type!=RT_F64 &&
(i=tempi2->ic_data) && Bsf(i)==Bsr(i)) { (i=tempi2->ic_data) && Bsf(i)==Bsr(i)) {
tempi2->ic_data=Bsf(i); tempi2->ic_data=Bsf(i);
tempi->ic_code=IC_SHR_EQUAL; tempi->ic_code=IC_SHR_EQU;
} }
break; break;
case IC_MOD_EQUAL: case IC_MOD_EQU:
if (tempi2->ic_code==IC_IMM_I64 && if (tempi2->ic_code==IC_IMM_I64 &&
tempc->raw_type!=RT_F64 && tempc->raw_type!=RT_F64 &&
tempc2->raw_type!=RT_F64 && tempc2->raw_type!=RT_F64 &&
(i=tempi2->ic_data) && Bsf(i)==Bsr(i)) { (i=tempi2->ic_data) && Bsf(i)==Bsr(i)) {
tempi2->ic_data=i-1; tempi2->ic_data=i-1;
tempi->ic_code=IC_AND_EQUAL; tempi->ic_code=IC_AND_EQU;
} }
break; break;
case IC_ADD_EQUAL: case IC_ADD_EQU:
case IC_SUB_EQUAL: case IC_SUB_EQU:
break; break;
sub_switch_end: sub_switch_end:
if (tempi2->ic_class->raw_type==RT_F64) if (tempi2->ic_class->raw_type==RT_F64)
@@ -888,11 +888,11 @@ args.
} }
} }
break; break;
case IC_SHL_EQUAL: case IC_SHL_EQU:
case IC_SHR_EQUAL: case IC_SHR_EQU:
case IC_AND_EQUAL: case IC_AND_EQU:
case IC_OR_EQUAL: case IC_OR_EQU:
case IC_XOR_EQUAL: case IC_XOR_EQU:
if (tempc2->raw_type==RT_F64) if (tempc2->raw_type==RT_F64)
tempi2->ic_flags|=ICF_R_TO_INT; tempi2->ic_flags|=ICF_R_TO_INT;
break; break;
@@ -1167,8 +1167,8 @@ args.
case IC_ATAN: case IC_ATAN:
case IC_BR_CARRY: case IC_BR_CARRY:
case IC_BR_NOT_CARRY: case IC_BR_NOT_CARRY:
case IC_BR_EQUAL_EQUAL ...IC_BR_LESS_EQUAL: case IC_BR_EQU_EQU ...IC_BR_LESS_EQU:
case IC_BR_EQUAL_EQUAL2...IC_BR_LESS_EQUAL2: case IC_BR_EQU_EQU2...IC_BR_LESS_EQU2:
case IC_BR_OR_OR_NOT_ZERO: case IC_BR_OR_OR_NOT_ZERO:
case IC_BR_OR_OR_ZERO: case IC_BR_OR_OR_ZERO:
case IC_BR_AND_AND_NOT_ZERO: case IC_BR_AND_AND_NOT_ZERO:
+21 -21
View File
@@ -220,27 +220,27 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets)
} }
break; break;
case IC_LESS: case IC_LESS:
case IC_GREATER_EQUAL: case IC_GREATER_EQU:
case IC_GREATER: case IC_GREATER:
case IC_LESS_EQUAL: case IC_LESS_EQU:
if (tempi->ic_flags&ICF_USE_F64) if (tempi->ic_flags&ICF_USE_F64)
CmpF2PushPop(tempi,tempi1,tempi2); CmpF2PushPop(tempi,tempi1,tempi2);
break; break;
case IC_MUL_EQUAL: case IC_MUL_EQU:
case IC_DIV_EQUAL: case IC_DIV_EQU:
case IC_ADD_EQUAL: case IC_ADD_EQU:
case IC_SUB_EQUAL: case IC_SUB_EQU:
if (tempc->raw_type==RT_F64) if (tempc->raw_type==RT_F64)
CmpF1PushPop(tempi,tempi2); CmpF1PushPop(tempi,tempi2);
case IC_ASSIGN_PP: case IC_ASSIGN_PP:
case IC_ASSIGN_MM: case IC_ASSIGN_MM:
case IC_ASSIGN: case IC_ASSIGN:
case IC_SHL_EQUAL: case IC_SHL_EQU:
case IC_SHR_EQUAL: case IC_SHR_EQU:
case IC_MOD_EQUAL: case IC_MOD_EQU:
case IC_AND_EQUAL: case IC_AND_EQU:
case IC_OR_EQUAL: case IC_OR_EQU:
case IC_XOR_EQUAL: case IC_XOR_EQU:
if (tempi1->ic_code==IC_LEA && if (tempi1->ic_code==IC_LEA &&
tempi1->a1.type&TY_MASK==TY_DISP && tempi1->a1.type&TY_MASK==TY_DISP &&
tempi1->a1.reg==REG_RBP) tempi1->a1.reg==REG_RBP)
@@ -289,14 +289,14 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets)
tempie=tempie->next; tempie=tempie->next;
} }
break; break;
case IC_BR_NOT_EQUAL: case IC_BR_NOT_EQU:
case IC_BR_EQUAL_EQUAL: case IC_BR_EQU_EQU:
if ((tempi1->ic_code==IC_IMM_I64 || if ((tempi1->ic_code==IC_IMM_I64 ||
tempi1->ic_code==IC_IMM_F64) && !tempi1->ic_data) { tempi1->ic_code==IC_IMM_F64) && !tempi1->ic_data) {
OptFree(tempi1); OptFree(tempi1);
MemCpy(&tempi->a1,&tempi->a2,sizeof(CICArg)); MemCpy(&tempi->a1,&tempi->a2,sizeof(CICArg));
tempi->a2.type=TY_NULL; tempi->a2.type=TY_NULL;
if (code==IC_BR_EQUAL_EQUAL) if (code==IC_BR_EQU_EQU)
code=tempi->ic_code=IC_BR_ZERO; code=tempi->ic_code=IC_BR_ZERO;
else else
code=tempi->ic_code=IC_BR_NOT_ZERO; code=tempi->ic_code=IC_BR_NOT_ZERO;
@@ -306,7 +306,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets)
tempi2->ic_code==IC_IMM_F64) && !tempi2->ic_data) { tempi2->ic_code==IC_IMM_F64) && !tempi2->ic_data) {
OptFree(tempi2); OptFree(tempi2);
tempi->a2.type=TY_NULL; tempi->a2.type=TY_NULL;
if (code==IC_BR_EQUAL_EQUAL) if (code==IC_BR_EQU_EQU)
code=tempi->ic_code=IC_BR_ZERO; code=tempi->ic_code=IC_BR_ZERO;
else else
code=tempi->ic_code=IC_BR_NOT_ZERO; code=tempi->ic_code=IC_BR_NOT_ZERO;
@@ -378,12 +378,12 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets)
tempi->a1.type_pointed=CmpRawType(tempc); tempi->a1.type_pointed=CmpRawType(tempc);
goto here1; goto here1;
case IC_BR_LESS: case IC_BR_LESS:
case IC_BR_GREATER_EQUAL: case IC_BR_GREATER_EQU:
case IC_BR_GREATER: case IC_BR_GREATER:
case IC_BR_LESS_EQUAL: case IC_BR_LESS_EQU:
if (tempi->ic_flags&ICF_USE_F64) if (tempi->ic_flags&ICF_USE_F64)
CmpF2PushPop(tempi,tempi1,tempi2); CmpF2PushPop(tempi,tempi1,tempi2);
case IC_BR_EQUAL_EQUAL2...IC_BR_LESS_EQUAL2: case IC_BR_EQU_EQU2...IC_BR_LESS_EQU2:
case IC_BR_CARRY: case IC_BR_CARRY:
case IC_BR_NOT_CARRY: case IC_BR_NOT_CARRY:
case IC_GET_LABEL: case IC_GET_LABEL:
@@ -495,8 +495,8 @@ here1:
case IC_AND: case IC_AND:
case IC_OR: case IC_OR:
case IC_XOR: case IC_XOR:
case IC_EQUAL_EQUAL: case IC_EQU_EQU:
case IC_NOT_EQUAL: case IC_NOT_EQU:
case IC_AND_AND: case IC_AND_AND:
case IC_OR_OR: case IC_OR_OR:
case IC_XOR_XOR: case IC_XOR_XOR:
+13 -13
View File
@@ -396,16 +396,16 @@ p4_sib:
//this val was stashed during pass012 for pointer arithmetic //this val was stashed during pass012 for pointer arithmetic
tempi->ic_class2=tempi->t.class2; //See $LK,"ic_class2",A="FF:::/Compiler/BackB.CPP,ic_class2"$ tempi->ic_class2=tempi->t.class2; //See $LK,"ic_class2",A="FF:::/Compiler/BackB.CPP,ic_class2"$
case IC_ASSIGN: case IC_ASSIGN:
case IC_SHL_EQUAL: case IC_SHL_EQU:
case IC_SHR_EQUAL: case IC_SHR_EQU:
case IC_MUL_EQUAL: case IC_MUL_EQU:
case IC_DIV_EQUAL: case IC_DIV_EQU:
case IC_MOD_EQUAL: case IC_MOD_EQU:
case IC_AND_EQUAL: case IC_AND_EQU:
case IC_OR_EQUAL: case IC_OR_EQU:
case IC_XOR_EQUAL: case IC_XOR_EQU:
case IC_ADD_EQUAL: case IC_ADD_EQU:
case IC_SUB_EQUAL: case IC_SUB_EQU:
if (tempi1->ic_code==IC_LEA) { if (tempi1->ic_code==IC_LEA) {
if (TY_DISP<=tempi1->a1.type&TY_MASK<=TY_SIB) { if (TY_DISP<=tempi1->a1.type&TY_MASK<=TY_SIB) {
if (tempi1->a1.type&TY_MASK==TY_DISP && tempi1->a1.reg==REG_RBP) { if (tempi1->a1.type&TY_MASK==TY_DISP && tempi1->a1.reg==REG_RBP) {
@@ -550,8 +550,8 @@ p4_sib:
} }
} }
break; break;
case IC_BR_EQUAL_EQUAL ...IC_BR_LESS_EQUAL: case IC_BR_EQU_EQU ...IC_BR_LESS_EQU:
case IC_BR_EQUAL_EQUAL2...IC_BR_LESS_EQUAL2: case IC_BR_EQU_EQU2...IC_BR_LESS_EQU2:
case IC_BR_CARRY: case IC_BR_CARRY:
case IC_BR_NOT_CARRY: case IC_BR_NOT_CARRY:
case IC_BR_ZERO: case IC_BR_ZERO:
@@ -642,7 +642,7 @@ p4_sib:
case IC_OR: case IC_OR:
case IC_XOR: case IC_XOR:
case IC_SUB: case IC_SUB:
case IC_EQUAL_EQUAL...IC_LESS_EQUAL: case IC_EQU_EQU...IC_LESS_EQU:
case IC_AND_AND: case IC_AND_AND:
case IC_OR_OR: case IC_OR_OR:
case IC_XOR_XOR: case IC_XOR_XOR:
+39 -39
View File
@@ -224,19 +224,19 @@ cc->pass==10 is final pass, code is placed into buf.
ICPreIncDec(tempi,SLASH_OP_DEC,ip2); ICPreIncDec(tempi,SLASH_OP_DEC,ip2);
ICFlagBranch(tempi,ip,0x75850F,buf); ICFlagBranch(tempi,ip,0x75850F,buf);
break; break;
case IC_BR_EQUAL_EQUAL: case IC_BR_EQU_EQU:
ICCmpAndBranch(tempi,FALSE,ip,0x74840F,0x74840F, ICCmpAndBranch(tempi,FALSE,ip,0x74840F,0x74840F,
0x74840F,0x74840F,buf,ip2); 0x74840F,0x74840F,buf,ip2);
break; break;
case IC_BR_EQUAL_EQUAL2: case IC_BR_EQU_EQU2:
ICCmpAndBranch(tempi,TRUE,ip,0x74840F,0x74840F, ICCmpAndBranch(tempi,TRUE,ip,0x74840F,0x74840F,
0x74840F,0x74840F,buf,ip2); 0x74840F,0x74840F,buf,ip2);
break; break;
case IC_BR_NOT_EQUAL: case IC_BR_NOT_EQU:
ICCmpAndBranch(tempi,FALSE,ip,0x75850F,0x75850F, ICCmpAndBranch(tempi,FALSE,ip,0x75850F,0x75850F,
0x75850F,0x75850F,buf,ip2); 0x75850F,0x75850F,buf,ip2);
break; break;
case IC_BR_NOT_EQUAL2: case IC_BR_NOT_EQU2:
ICCmpAndBranch(tempi,TRUE,ip,0x75850F,0x75850F, ICCmpAndBranch(tempi,TRUE,ip,0x75850F,0x75850F,
0x75850F,0x75850F,buf,ip2); 0x75850F,0x75850F,buf,ip2);
break; break;
@@ -251,14 +251,14 @@ cc->pass==10 is final pass, code is placed into buf.
ICCmpAndBranch(tempi,TRUE,ip,0x72820F,0x7C8C0F, ICCmpAndBranch(tempi,TRUE,ip,0x72820F,0x7C8C0F,
0x77870F,0x7F8F0F,buf,ip2); 0x77870F,0x7F8F0F,buf,ip2);
break; break;
case IC_BR_GREATER_EQUAL: case IC_BR_GREATER_EQU:
if (tempi->ic_flags&ICF_USE_F64) if (tempi->ic_flags&ICF_USE_F64)
ICFCmpAndBranch(cc,tempi, ip,0x73830F,0x76860F,buf,ip2); ICFCmpAndBranch(cc,tempi, ip,0x73830F,0x76860F,buf,ip2);
else else
ICCmpAndBranch(tempi,FALSE,ip,0x73830F,0x7D8D0F, ICCmpAndBranch(tempi,FALSE,ip,0x73830F,0x7D8D0F,
0x76860F,0x7E8E0F,buf,ip2); 0x76860F,0x7E8E0F,buf,ip2);
break; break;
case IC_BR_GREATER_EQUAL2: case IC_BR_GREATER_EQU2:
ICCmpAndBranch(tempi,TRUE,ip,0x73830F,0x7D8D0F, ICCmpAndBranch(tempi,TRUE,ip,0x73830F,0x7D8D0F,
0x76860F,0x7E8E0F,buf,ip2); 0x76860F,0x7E8E0F,buf,ip2);
break; break;
@@ -273,14 +273,14 @@ cc->pass==10 is final pass, code is placed into buf.
ICCmpAndBranch(tempi,TRUE,ip,0x77870F,0x7F8F0F, ICCmpAndBranch(tempi,TRUE,ip,0x77870F,0x7F8F0F,
0x72820F,0x7C8C0F,buf,ip2); 0x72820F,0x7C8C0F,buf,ip2);
break; break;
case IC_BR_LESS_EQUAL: case IC_BR_LESS_EQU:
if (tempi->ic_flags&ICF_USE_F64) if (tempi->ic_flags&ICF_USE_F64)
ICFCmpAndBranch(cc,tempi, ip,0x76860F,0x73830F,buf,ip2); ICFCmpAndBranch(cc,tempi, ip,0x76860F,0x73830F,buf,ip2);
else else
ICCmpAndBranch(tempi,FALSE,ip,0x76860F,0x7E8E0F, ICCmpAndBranch(tempi,FALSE,ip,0x76860F,0x7E8E0F,
0x73830F,0x7D8D0F,buf,ip2); 0x73830F,0x7D8D0F,buf,ip2);
break; break;
case IC_BR_LESS_EQUAL2: case IC_BR_LESS_EQU2:
ICCmpAndBranch(tempi,TRUE,ip,0x76860F,0x7E8E0F, ICCmpAndBranch(tempi,TRUE,ip,0x76860F,0x7E8E0F,
0x73830F,0x7D8D0F,buf,ip2); 0x73830F,0x7D8D0F,buf,ip2);
break; break;
@@ -618,10 +618,10 @@ cc->pass==10 is final pass, code is placed into buf.
else else
ICFSub(cc,tempi,buf,ip2); ICFSub(cc,tempi,buf,ip2);
break; break;
case IC_EQUAL_EQUAL: case IC_EQU_EQU:
ICCmp(tempi,0x75,0x75,ip2); ICCmp(tempi,0x75,0x75,ip2);
break; break;
case IC_NOT_EQUAL: case IC_NOT_EQU:
ICCmp(tempi,0x74,0x74,ip2); ICCmp(tempi,0x74,0x74,ip2);
break; break;
case IC_LESS: case IC_LESS:
@@ -630,11 +630,11 @@ cc->pass==10 is final pass, code is placed into buf.
else else
ICFCmp(cc,tempi,CMP_TEMPLATE_LESS,ip2); ICFCmp(cc,tempi,CMP_TEMPLATE_LESS,ip2);
break; break;
case IC_GREATER_EQUAL: case IC_GREATER_EQU:
if (tempi->ic_flags&ICF_USE_INT) if (tempi->ic_flags&ICF_USE_INT)
ICCmp(tempi,0x72,0x7C,ip2); ICCmp(tempi,0x72,0x7C,ip2);
else else
ICFCmp(cc,tempi,CMP_TEMPLATE_GREATER_EQUAL,ip2); ICFCmp(cc,tempi,CMP_TEMPLATE_GREATER_EQU,ip2);
break; break;
case IC_GREATER: case IC_GREATER:
if (tempi->ic_flags&ICF_USE_INT) if (tempi->ic_flags&ICF_USE_INT)
@@ -642,11 +642,11 @@ cc->pass==10 is final pass, code is placed into buf.
else else
ICFCmp(cc,tempi,CMP_TEMPLATE_GREATER,ip2); ICFCmp(cc,tempi,CMP_TEMPLATE_GREATER,ip2);
break; break;
case IC_LESS_EQUAL: case IC_LESS_EQU:
if (tempi->ic_flags&ICF_USE_INT) if (tempi->ic_flags&ICF_USE_INT)
ICCmp(tempi,0x77,0x7F,ip2); ICCmp(tempi,0x77,0x7F,ip2);
else else
ICFCmp(cc,tempi,CMP_TEMPLATE_LESS_EQUAL,ip2); ICFCmp(cc,tempi,CMP_TEMPLATE_LESS_EQU,ip2);
break; break;
case IC_AND_AND: case IC_AND_AND:
ICAndAnd(tempi,ip2); ICAndAnd(tempi,ip2);
@@ -666,66 +666,66 @@ cc->pass==10 is final pass, code is placed into buf.
case IC_ASSIGN_MM: case IC_ASSIGN_MM:
ICAssignPostIncDec(tempi,SLASH_OP_DEC,ip2); ICAssignPostIncDec(tempi,SLASH_OP_DEC,ip2);
break; break;
case IC_SHL_EQUAL: case IC_SHL_EQU:
ICShiftEqual(tempi,tempi->a1.type_pointed, ICShiftEqu(tempi,tempi->a1.type_pointed,
tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->r.type,tempi->r.reg,tempi->r.disp,
tempi->a1.type,tempi->a1.reg,tempi->a1.disp, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,
0xE0D1E0D3E0C1,0xE0D1E0D3E0C1,ip2); 0xE0D1E0D3E0C1,0xE0D1E0D3E0C1,ip2);
break; break;
case IC_SHR_EQUAL: case IC_SHR_EQU:
ICShiftEqual(tempi,tempi->a1.type_pointed, ICShiftEqu(tempi,tempi->a1.type_pointed,
tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->r.type,tempi->r.reg,tempi->r.disp,
tempi->a1.type,tempi->a1.reg,tempi->a1.disp, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,
0xE8D1E8D3E8C1,0xF8D1F8D3F8C1,ip2); 0xE8D1E8D3E8C1,0xF8D1F8D3F8C1,ip2);
break; break;
case IC_MUL_EQUAL: case IC_MUL_EQU:
if (tempi->ic_flags&ICF_USE_INT) if (tempi->ic_flags&ICF_USE_INT)
ICMulEqual(tempi,ip2); ICMulEqu(tempi,ip2);
else else
ICFOpEqual(cc,tempi,SLASH_OP_FMUL,buf,ip2); ICFOpEqu(cc,tempi,SLASH_OP_FMUL,buf,ip2);
break; break;
case IC_DIV_EQUAL: case IC_DIV_EQU:
if (tempi->ic_flags&ICF_USE_INT) if (tempi->ic_flags&ICF_USE_INT)
ICDivEqual(tempi,FALSE,ip2); ICDivEqu(tempi,FALSE,ip2);
else else
ICFOpEqual(cc,tempi,SLASH_OP_FDIV,buf,ip2); ICFOpEqu(cc,tempi,SLASH_OP_FDIV,buf,ip2);
break; break;
case IC_MOD_EQUAL: case IC_MOD_EQU:
if (tempi->ic_flags&ICF_USE_INT) if (tempi->ic_flags&ICF_USE_INT)
ICDivEqual(tempi,TRUE,ip2); ICDivEqu(tempi,TRUE,ip2);
else else
ICFModEqual(cc,tempi,ip2); ICFModEqu(cc,tempi,ip2);
break; break;
case IC_AND_EQUAL: case IC_AND_EQU:
ICAndEqual(tempi,ip2); ICAndEqu(tempi,ip2);
break; break;
case IC_OR_EQUAL: case IC_OR_EQU:
ICOrEqual(tempi,ip2); ICOrEqu(tempi,ip2);
break; break;
case IC_XOR_EQUAL: case IC_XOR_EQU:
ICXorEqual(tempi,ip2); ICXorEqu(tempi,ip2);
break; break;
case IC_ADD_EQUAL: case IC_ADD_EQU:
if (tempi->ic_flags&ICF_USE_INT) if (tempi->ic_flags&ICF_USE_INT)
ICAddSubEctEqual(tempi,tempi->a1.type_pointed, ICAddSubEctEqu(tempi,tempi->a1.type_pointed,
tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->r.type,tempi->r.reg,tempi->r.disp,
tempi->a1.type,tempi->a1.reg,tempi->a1.disp, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,
0x010000000003,ip2); 0x010000000003,ip2);
else else
ICFOpEqual(cc,tempi,SLASH_OP_FADD,buf,ip2); ICFOpEqu(cc,tempi,SLASH_OP_FADD,buf,ip2);
break; break;
case IC_SUB_EQUAL: case IC_SUB_EQU:
if (tempi->ic_flags&ICF_USE_INT) if (tempi->ic_flags&ICF_USE_INT)
ICAddSubEctEqual(tempi,tempi->a1.type_pointed, ICAddSubEctEqu(tempi,tempi->a1.type_pointed,
tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->r.type,tempi->r.reg,tempi->r.disp,
tempi->a1.type,tempi->a1.reg,tempi->a1.disp, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,
0x29000000052B,ip2); 0x29000000052B,ip2);
else else
ICFOpEqual(cc,tempi,SLASH_OP_FSUB,buf,ip2); ICFOpEqu(cc,tempi,SLASH_OP_FSUB,buf,ip2);
break; break;
case IC_SHL_CONST: case IC_SHL_CONST:
ICShift(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICShift(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
+4 -4
View File
@@ -37,8 +37,8 @@ CIntermediateCode *PrsAddOp(CCmpCtrl *cc,I64 stk_op,CHashClass *tempc)
case IC_OR_OR: case IC_OR_OR:
ICAdd(cc,IC_NOP1,0,cmp.internal_types[RT_I64]); ICAdd(cc,IC_NOP1,0,cmp.internal_types[RT_I64]);
break; break;
case IC_ADD_EQUAL: case IC_ADD_EQU:
case IC_SUB_EQUAL: case IC_SUB_EQU:
if (tempc->ptr_stars_cnt) { if (tempc->ptr_stars_cnt) {
ICAdd(cc,IC_SIZEOF,1,cmp.internal_types[RT_I64]); ICAdd(cc,IC_SIZEOF,1,cmp.internal_types[RT_I64]);
ICAdd(cc,IC_MUL,0,cmp.internal_types[RT_I64]); ICAdd(cc,IC_MUL,0,cmp.internal_types[RT_I64]);
@@ -675,7 +675,7 @@ I64 PrsUnaryTerm(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,
sub_switch_start: sub_switch_start:
case TK_INTEGER: case TK_INTEGER:
case TK_CHAR_CONST: case TK_CHAR_CONST:
case TK_INS_BINARY_SIZE: case TK_INS_BIN_SIZE:
if (cc->cur_i64<0) if (cc->cur_i64<0)
ICAdd(cc,IC_IMM_I64,cc->cur_i64,cmp.internal_types[RT_U64]); ICAdd(cc,IC_IMM_I64,cc->cur_i64,cmp.internal_types[RT_U64]);
else else
@@ -692,7 +692,7 @@ I64 PrsUnaryTerm(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,
cm->str=LexExtStr(cc,&cm->st_len); cm->str=LexExtStr(cc,&cm->st_len);
cc->flags|=CCF_HAS_MISC_DATA; cc->flags|=CCF_HAS_MISC_DATA;
break; break;
case TK_INS_BINARY: case TK_INS_BIN:
cm=COCMiscNew(cc,CMT_STR_CONST); cm=COCMiscNew(cc,CMT_STR_CONST);
ICAdd(cc,IC_STR_CONST,cm,cmp.internal_types[RT_U8]+1); ICAdd(cc,IC_STR_CONST,cm,cmp.internal_types[RT_U8]+1);
cm->str=cc->cur_str; cm->str=cc->cur_str;
+15 -15
View File
@@ -149,7 +149,7 @@ U0 PrsFun(CCmpCtrl *cc,CHashClass *temp_return,U8 *name,I64 fsp_flags)
saved_leave_label=cc->lb_leave; saved_leave_label=cc->lb_leave;
cc->lb_leave=COCMiscNew(cc,CMT_LABEL); cc->lb_leave=COCMiscNew(cc,CMT_LABEL);
cc->flags&=~CCF_HAS_RETURN; cc->flags&=~CCF_HAS_RETURN;
PrsStatement(cc,,,0); PrsStmt(cc,,,0);
if (cc->max_line<cc->min_line) if (cc->max_line<cc->min_line)
cc->max_line=cc->min_line; cc->max_line=cc->min_line;
@@ -467,14 +467,14 @@ U0 PrsIf(CCmpCtrl *cc,I64 try_cnt,CCodeMisc *lb_break)
Lex(cc); Lex(cc);
lb=COCMiscNew(cc,CMT_LABEL); lb=COCMiscNew(cc,CMT_LABEL);
ICAdd(cc,IC_BR_ZERO,lb,0); ICAdd(cc,IC_BR_ZERO,lb,0);
PrsStatement(cc,try_cnt,lb_break); PrsStmt(cc,try_cnt,lb_break);
k=PrsKeyWord(cc); k=PrsKeyWord(cc);
if (k==KW_ELSE) { if (k==KW_ELSE) {
Lex(cc); Lex(cc);
lb1=COCMiscNew(cc,CMT_LABEL); lb1=COCMiscNew(cc,CMT_LABEL);
ICAdd(cc,IC_JMP,lb1,0); ICAdd(cc,IC_JMP,lb1,0);
ICAdd(cc,IC_LABEL,lb,0); ICAdd(cc,IC_LABEL,lb,0);
PrsStatement(cc,try_cnt,lb_break); PrsStmt(cc,try_cnt,lb_break);
ICAdd(cc,IC_LABEL,lb1,0); ICAdd(cc,IC_LABEL,lb1,0);
} else } else
ICAdd(cc,IC_LABEL,lb,0); ICAdd(cc,IC_LABEL,lb,0);
@@ -495,7 +495,7 @@ U0 PrsWhile(CCmpCtrl *cc,I64 try_cnt)
Lex(cc); Lex(cc);
lb_done=COCMiscNew(cc,CMT_LABEL); lb_done=COCMiscNew(cc,CMT_LABEL);
ICAdd(cc,IC_BR_ZERO,lb_done,0); ICAdd(cc,IC_BR_ZERO,lb_done,0);
PrsStatement(cc,try_cnt,lb_done); PrsStmt(cc,try_cnt,lb_done);
ICAdd(cc,IC_JMP,lb,0); ICAdd(cc,IC_JMP,lb,0);
ICAdd(cc,IC_LABEL,lb_done,0); ICAdd(cc,IC_LABEL,lb_done,0);
} }
@@ -506,7 +506,7 @@ U0 PrsDoWhile(CCmpCtrl *cc,I64 try_cnt)
lb=COCMiscNew(cc,CMT_LABEL); lb=COCMiscNew(cc,CMT_LABEL);
lb_done=COCMiscNew(cc,CMT_LABEL); lb_done=COCMiscNew(cc,CMT_LABEL);
ICAdd(cc,IC_LABEL,lb,0); ICAdd(cc,IC_LABEL,lb,0);
PrsStatement(cc,try_cnt,lb_done); PrsStmt(cc,try_cnt,lb_done);
if (PrsKeyWord(cc)!=KW_WHILE) if (PrsKeyWord(cc)!=KW_WHILE)
LexExcept(cc,"missing 'while' at"); LexExcept(cc,"missing 'while' at");
if (Lex(cc)!='(') if (Lex(cc)!='(')
@@ -531,7 +531,7 @@ U0 PrsFor(CCmpCtrl *cc,I64 try_cnt)
if (cc->token!='(') if (cc->token!='(')
LexExcept(cc,"expecting '(' at "); LexExcept(cc,"expecting '(' at ");
Lex(cc); Lex(cc);
PrsStatement(cc,try_cnt); PrsStmt(cc,try_cnt);
lb=COCMiscNew(cc,CMT_LABEL); lb=COCMiscNew(cc,CMT_LABEL);
ICAdd(cc,IC_LABEL,lb,0); ICAdd(cc,IC_LABEL,lb,0);
@@ -546,7 +546,7 @@ U0 PrsFor(CCmpCtrl *cc,I64 try_cnt)
COCPush(cc); COCPush(cc);
COCInit(cc); COCInit(cc);
if (cc->token!=')') if (cc->token!=')')
PrsStatement(cc,try_cnt,NULL,0); PrsStmt(cc,try_cnt,NULL,0);
COCPush(cc); COCPush(cc);
tempcbh=COCPopNoFree(cc); tempcbh=COCPopNoFree(cc);
COCPop(cc); COCPop(cc);
@@ -554,7 +554,7 @@ U0 PrsFor(CCmpCtrl *cc,I64 try_cnt)
LexExcept(cc,"missing ')' at "); LexExcept(cc,"missing ')' at ");
Lex(cc); Lex(cc);
PrsStatement(cc,try_cnt,lb_done); PrsStmt(cc,try_cnt,lb_done);
COCAppend(cc,tempcbh); COCAppend(cc,tempcbh);
ICAdd(cc,IC_JMP,lb,0); ICAdd(cc,IC_JMP,lb,0);
ICAdd(cc,IC_LABEL,lb_done,0); ICAdd(cc,IC_LABEL,lb_done,0);
@@ -646,7 +646,7 @@ sw_cont:
} }
goto sw_cont; goto sw_cont;
default: default:
PrsStatement(cc,try_cnt,root.last->last->lb_break); PrsStmt(cc,try_cnt);
} }
} }
break; break;
@@ -728,7 +728,7 @@ sw_cont:
dft_found=TRUE; dft_found=TRUE;
break; break;
default: default:
PrsStatement(cc,try_cnt,root.last->lb_break); PrsStmt(cc,try_cnt,root.last->lb_break);
} }
} }
sw_sub_end: sw_sub_end:
@@ -863,7 +863,7 @@ U0 PrsTryBlk(CCmpCtrl *cc,I64 try_cnt)
ICAdd(cc,IC_CALL_END,0,tempc); ICAdd(cc,IC_CALL_END,0,tempc);
ICAdd(cc,IC_END_EXP,0,0,ICF_NO_DEPEND_RESULT); ICAdd(cc,IC_END_EXP,0,0,ICF_NO_DEPEND_RESULT);
PrsStatement(cc,try_cnt+1); PrsStmt(cc,try_cnt+1);
ICAdd(cc,IC_LABEL,lb_untry,0); ICAdd(cc,IC_LABEL,lb_untry,0);
ICAdd(cc,IC_CALL_START,0,0); ICAdd(cc,IC_CALL_START,0,0);
@@ -885,12 +885,12 @@ U0 PrsTryBlk(CCmpCtrl *cc,I64 try_cnt)
Lex(cc); Lex(cc);
ICAdd(cc,IC_LABEL,lb_catch,0); ICAdd(cc,IC_LABEL,lb_catch,0);
PrsStatement(cc,try_cnt+1); PrsStmt(cc,try_cnt+1);
ICAdd(cc,IC_RET,0,tempc); ICAdd(cc,IC_RET,0,tempc);
ICAdd(cc,IC_LABEL,lb_done,0); ICAdd(cc,IC_LABEL,lb_done,0);
} }
Bool PrsStatement(CCmpCtrl *cc,I64 try_cnt=0, Bool PrsStmt(CCmpCtrl *cc,I64 try_cnt=0,
CCodeMisc *lb_break=NULL,I64 cmp_flags=CMPF_PRS_SEMICOLON) CCodeMisc *lb_break=NULL,I64 cmp_flags=CMPF_PRS_SEMICOLON)
{ {
I64 i,fsp_flags=0; I64 i,fsp_flags=0;
@@ -912,7 +912,7 @@ Bool PrsStatement(CCmpCtrl *cc,I64 try_cnt=0,
if (cc->token=='{') { if (cc->token=='{') {
Lex(cc); Lex(cc);
while (cc->token!='}' && cc->token!=TK_EOF) while (cc->token!='}' && cc->token!=TK_EOF)
PrsStatement(cc,try_cnt,lb_break); PrsStmt(cc,try_cnt,lb_break);
if (cc->lex_include_stk==cc->fun_lex_file) if (cc->lex_include_stk==cc->fun_lex_file)
cc->max_line=cc->lex_include_stk->line_num; cc->max_line=cc->lex_include_stk->line_num;
if (Lex(cc)!=',') goto sm_done; if (Lex(cc)!=',') goto sm_done;
@@ -953,7 +953,7 @@ Bool PrsStatement(CCmpCtrl *cc,I64 try_cnt=0,
Lex(cc); Lex(cc);
case KW_LOCK: case KW_LOCK:
cc->lock_cnt++; cc->lock_cnt++;
PrsStatement(cc,try_cnt); PrsStmt(cc,try_cnt);
cc->lock_cnt--; cc->lock_cnt--;
break; break;
case KW_TRY: case KW_TRY:
+6 -6
View File
@@ -61,7 +61,7 @@ CMP_TEMPLATES::
FINCSTP FINCSTP
ADD RSP,16 ADD RSP,16
@@35: //LESS_EQUAL @@35: //LESS_EQU
PUSH RDX PUSH RDX
PUSH RAX PUSH RAX
FLD U64 8[RSP] FLD U64 8[RSP]
@@ -73,7 +73,7 @@ CMP_TEMPLATES::
FINCSTP FINCSTP
ADD RSP,16 ADD RSP,16
@@40: //GREATER_EQUAL @@40: //GREATER_EQU
PUSH RDX PUSH RDX
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
@@ -307,7 +307,7 @@ CMP_TEMPLATES_DONT_PUSH::
FINCSTP FINCSTP
ADD RSP,8 ADD RSP,8
@@35: //LESS_EQUAL @@35: //LESS_EQU
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
FCOMIP ST0,ST1 FCOMIP ST0,ST1
@@ -317,7 +317,7 @@ CMP_TEMPLATES_DONT_PUSH::
FINCSTP FINCSTP
ADD RSP,8 ADD RSP,8
@@40: //GREATER_EQUAL @@40: //GREATER_EQU
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
FCOMIP ST0,ST1 FCOMIP ST0,ST1
@@ -487,7 +487,7 @@ CMP_TEMPLATES_DONT_PUSH2::
FINCSTP FINCSTP
ADD RSP,8 ADD RSP,8
@@35: //LESS_EQUAL @@35: //LESS_EQU
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
FCOMIP ST0,ST1 FCOMIP ST0,ST1
@@ -499,7 +499,7 @@ CMP_TEMPLATES_DONT_PUSH2::
FINCSTP FINCSTP
ADD RSP,8 ADD RSP,8
@@45: //GREATER_EQUAL @@45: //GREATER_EQU
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
FCOMIP ST0,ST1 FCOMIP ST0,ST1
+14 -2
View File
@@ -165,7 +165,7 @@ Bool MyPutKey(I64 ch,I64 sc)
else { else {
FifoU8Flush(god.fifo); FifoU8Flush(god.fifo);
GodBitsIns(GOD_GOOD_BITS,KbdMouseEvtTime>>GOD_BAD_BITS); GodBitsIns(GOD_GOOD_BITS,KbdMouseEvtTime>>GOD_BAD_BITS);
GodBooksPassage("C:/Home/Wb2/Files/Text/*"); GodBooksPassage("C:/Home/Downloads/Text/*");
} }
} else { } else {
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
@@ -293,6 +293,18 @@ Bool MyPutKey(I64 ch,I64 sc)
else else
'ê'; 'ê';
return TRUE; return TRUE;
case '9':
if (sc&SCF_KEY_DESC)
KeyDescSet("Dol /---->");
else
"$$ID,5$$";
return TRUE;
case '0':
if (sc&SCF_KEY_DESC)
KeyDescSet("Dol /<----");
else
"$$ID,-5$$";
return TRUE;
case 'b': case 'b':
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Cmd /Jump to Bad Code"); KeyDescSet("Cmd /Jump to Bad Code");
@@ -309,7 +321,7 @@ Bool MyPutKey(I64 ch,I64 sc)
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Cmd /JukeBox(TAD)"); KeyDescSet("Cmd /JukeBox(TAD)");
else else
JukeBox("::/Home/Wb2/Files/Psalmody"); JukeBox("::/Home/Downloads/Psalmody");
return TRUE; return TRUE;
case 'P': case 'P':
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
-1
View File
@@ -5,7 +5,6 @@
#include "::/Apps/Psalmody/Load" #include "::/Apps/Psalmody/Load"
#include "::/Demo/WebLogExample/WebLogRep" #include "::/Demo/WebLogExample/WebLogRep"
Cd("::/Home");; Cd("::/Home");;
#include "::/Home/TOSIDComputer"
#include "::/Home/TOSCfg" #include "::/Home/TOSCfg"
#include "::/Home/TOSMisc" #include "::/Home/TOSMisc"
#include "::/Home/TOSDistro" #include "::/Home/TOSDistro"
+4 -7
View File
@@ -9,12 +9,7 @@ U0 UserStartUp()
WinToTop; WinToTop;
WinZBufUpdate; WinZBufUpdate;
Dir; Dir;
switch (tos_cid) { "$TX,"80,916",D="DD_TEMPLEOS_LOC_OFFICIAL"$LOC:";
case CID_DFT:
"$$PURPLE$$DFT$$FG$$:";
break;
}
"$TX,"80,729",D="DD_TEMPLEOS_LOC_OFFICIAL"$LOC:";
CPURep; CPURep;
} }
@@ -37,13 +32,15 @@ U0 StartUpTasks()
"Boot Time:%7.3fs\n",tS; "Boot Time:%7.3fs\n",tS;
XTalk(user1,"Cd(\"::/Home\");#include \"DoOnce\";\n"); XTalk(user1,"Cd(\"::/Home\");#include \"DoOnce\";\n");
Silent; Silent;
ACInit("/*;~*Bible.TXT*;~*.TXT*"); //No Bible, no uncompressed TXT. ACInit("/*;~*/Bible.TXT*;~*.TXT*"); //No Bible, no uncompressed TXT.
Silent(OFF); Silent(OFF);
"AutoComplete Time:%7.3fs\n",tS; "AutoComplete Time:%7.3fs\n",tS;
} }
if (DrvIsWritable(':')) {
DelTree("::/Temp/ScreenShots"); DelTree("::/Temp/ScreenShots");
MkDir("::/Temp/ScreenShots"); MkDir("::/Temp/ScreenShots");
}
StartUpTasks; StartUpTasks;
+35
View File
@@ -0,0 +1,35 @@
#help_index "Cmd Line (Typically)"
#define FILEMASK_OFF_LIMITS "~*/Misc/PCIDevices.TXT*;~*/Misc/Bible.TXT*;"\
"~*/Downloads/Text/*;~*/Downloads/Words/*;~*/Downloads/Bin/*;"\
"~*/God/Vocab.TXT*"
public I64 F(U8 *needle_str,U8 *fu_flags=NULL)
{//Find text in all text files.
return Find(needle_str,"/*",fu_flags);
}
public I64 F2(U8 *needle_str,U8 *fu_flags=NULL)
{//Find text in most text files.
return Find(needle_str,"/*;" FILEMASK_OFF_LIMITS,fu_flags);
}
public I64 R(U8 *needle_str,U8 *replace_text=NULL,U8 *fu_flags="+l-i")
{//Find text and replace in most text files.
return Find(needle_str,"/*;" FILEMASK_OFF_LIMITS,fu_flags,replace_text);
}
public I64 FD(U8 *needle_str,U8 *fu_flags=NULL)
{//Find text in cur dir text files.
return Find(needle_str,"*",fu_flags);
}
public I64 FD2(U8 *needle_str,U8 *fu_flags=NULL)
{//Find text in most cur dir text files.
return Find(needle_str,"*;" FILEMASK_OFF_LIMITS,fu_flags);
}
public I64 RD(U8 *needle_str,U8 *replace_text=NULL,U8 *fu_flags="+l-i")
{//Find text and replace in most cur dir text files.
return Find(needle_str,"*;" FILEMASK_OFF_LIMITS,fu_flags,replace_text);
}
Binary file not shown.
+346 -334
View File
@@ -1,428 +1,440 @@
$WW,1$* Redo videos, make more professional.
* Nontimer $LK,"Rand",A="MN:Rand"$() is really bad!
$WW,1$$FG,5$$TX+CX,"TODO"$$FG$
* Investigate why packet loss $LK,"Training Sleep(1)",A="FF:::/Adam/Training.CPP,Sleep(1)"$. * Investigate why packet loss $LK,"Training Sleep(1)",A="FF:::/Adam/Training.CPP,Sleep(1)"$.
* Add AVL binary tree support or red/black whatever that is. We have fixed-size stack. Auto-balancing binary tree is very needed. I've done everything myself. I don't want to ruin a perfect record. I'm in no hurry. * Add AVL or red/black binary tree library support. We have fixed-size stack. Auto-balancing binary tree is very needed. I've done everything myself. I don't want to ruin a perfect record. I'm in no hurry.
* 1/12/16 $LK,"ATARepEntry",A="MN:ATARepEntry"$ shows corrupted buttons. * In <CTRL-r> menu, transform individual elements.
* 8/20/2015 TAD8, Tour TestSuite was missing #include "TestSuite". * $LK,"SpriteEd",A="FI:::/Adam/Gr/SpriteEd.CPP"$ shift pts, Ctrl pt for ellipse/polygon w,h is off when rotated.
* 1/03/2016 TAD8 Repeated
* Bug introduced around 11/1/15. Changed $LK,"::/Kernel/Sched.CPP"$ and now $LK,"WinToTop",A="MN:WinToTop"$ is called on Adam task at start-up, sometimes. * $LK,"SpriteMesh",A="FI:::/Adam/Gr/SpriteMesh.CPP"$: $LK,"R",A="MN:R"$("Mesh",...);?
* $LK,"SpriteMesh",A="FI:::/Adam/Gr/SpriteMesh.CPP"$: Add change triangle color.
* 1/12/16 make RAM drive 2288 blks, copy /Home. * $LK,"SpriteMesh",A="FI:::/Adam/Gr/SpriteMesh.CPP"$: Add make-prism.
* Clean-up $LK,"FileNameAbs",A="MN:FileNameAbs"$().
* $LK,"Mount",A="MN:Mount"$() crashes on bad drive.
* $$DA fixed width string: <Del> or <BACKSPACE> permanently shortens
* 12/25/2015 Copy-Paste index.html glitch if source window 40 columns.
* 01/10/16 find-replace editor hung on $LK,"CounterRenaissance",A="FI:::/Home/Wb2/CounterRenaissance.TXT"$ "Rennaisance"
* 01/06/2016 Editor filter "str" applied to output from LineRep looks broken.
* Get rid of having two terms and pick one, "Disk" and "BlkDev"? I don't think so. (Probably not.)
* God said this is bad. $LK,"FL:::/Adam/DolDoc/DocFind.CPP,41"$ * God said this is bad. $LK,"FL:::/Adam/DolDoc/DocFind.CPP,41"$
* Backward <SHIFT-F3> is broken?
* $LK,"ChkDsk",A="MN:ChkDsk"$ alloc unalloced. * Cannot entering a '$$' in $$TX command's tag.
* Should we switch to having just C and D drives (and RAM and CD/DVD)? * $$DA fixed width string: <Del> or <BACKSPACE> permanently shortens.
* Entering a '$$' in $$TX command's tag * Editor overstrike mode at cmd line with menu macro? Probably, many other overstrike issues.
* Should these be moved into $LK,"CHashClass",A="MN:CHashClass"$ from $LK,"CMemberLst",A="MN:CMemberLst"$ and $LK,"CHashGlblVar",A="MN:CHashGlblVar"$? * $LK,"DOCT_HEX_ED",A="MN:DOCT_HEX_ED"$ with odd size, ASCII cannot be edited.
CArrayDim dim;
CHashFun *fun_ptr;
* Might want to warn switch() dup case numbers
* Add cyrillic 8-bit Russian font on aux_font? <CTRL-ALT-f> will toggle fonts.
Move 12 border chars to screen font codes 0-26? $LK,"TextBorder",A="MN:TextBorder"$() $LK,"RawDr",A="MN:RawDr"$().
Add aux_font option with $LK,"chars_bmp_alpha",A="MN:chars_bmp_alpha"$ configured for any aux_font?
* Should we rename chars_bmp_ to set_
* Use standard terminology from "the literature".
* Clean-up ASCII #127 delete char? (No. Maybe, we want a new usage for 127 in future centuries.)
* $LK,"StrPrintJoin",A="MN:StrPrintJoin"$(,st); With st="\n\\"; (I forgot what this is talking about.)
* 8/2/2015 VMware start-up. Probably multicore.
* $LK,"CtrlAltDel",A="FF:::/Kernel/SerialDev/Keyboard.CPP,CtrlAltDel"$ on <CTRL-ALT-INS> Probably, VMware bug.
* 1/1/2015 Bug messing-up keyboard, like no CTRL key. Was working on Sprites.
* 1/?/2015,8/10/2015 Macro select in Menu did not go to shell. No: I think CTRL-M twice. (Probably, fixed or not a bug.)
* $LK,"BMPRLE4To",A="MN:BMPRLE4To"$() has files_size too big by 108. Did I fix it?
* $LK,"FL:::/Adam/Gr/SpriteEd.CPP,789"$ Resize bitmap? * $LK,"FL:::/Adam/Gr/SpriteEd.CPP,789"$ Resize bitmap?
* More $LK,"CCtrl",A="MN:CCtrl"$.
* Add Redo to editor.
* Perhaps, links to self document if empty file name? $LK,"Document Links",A="FF:::/Adam/DolDoc/DocLink.CPP,AD"$
* Change $LK,"Document Links",A="FF:::/Adam/DolDoc/DocLink.CPP,AD"$ "DF:word" to "DN:word"
* Cannot include ':' in $LK,"Document Links",A="FF:::/Adam/DolDoc/DocLink.CPP,AD"$ search string. * Cannot include ':' in $LK,"Document Links",A="FF:::/Adam/DolDoc/DocLink.CPP,AD"$ search string.
* PSect does not scan all task tables. * No way to clear $LK,"DOCEf_HOLD",A="MN:DOCEf_HOLD"$ entries.
* $LK,"R",A="MN:R"$("PSect","Fun-something"); ?
* Maybe let committee decide if we want intern to make binary tree look-up using PSECT symbol addresses, so we can eliminate psect cache and wall-paper kludge. All HolyC functions and glbl vars would have left-right for address search. * $LK,"DOCF_DBL_DOLLARS",A="MN:DOCF_DBL_DOLLARS"$ in $LK,"Reindention",A="MN:EdCodeTools2"$.
* Compiler: Warn unnecessary typecast.
* Compiler Optimization: Local array vars --> reg. Might exist.
* Compiler Optimization: heap_glbls with added offset. Might exist.
* AfterEgypt: $LK,"Numbers,13:33",A="BF:Numbers,13:33"$ scouts? $LK,"Numbers,21:8",A="BF:Numbers,21:8"$ snakes?
* Find-and-replace text on $$PT$$ line before it.
* 12/25/2015 Copy-Paste index.html glitch if source window 40 columns.
* 01/10/2016 find-replace editor hung on $LK,"CounterRenaissance",A="FI:::/Home/Web/TAD/CounterRenaissance.TXT"$ "Rennaisance"
* 01/06/2016 Editor filter "str" applied to output from LineRep looks broken.
* Document $$DA zero terminator. Explain str or not.
* Document, perhaps with video, $LK,"GetStr",A="MN:GetStr"$() all the way down into $LK,"PutKey",A="MN:PutKey"$() code.
* Better dictionary.
* Good $LK,"spell checker",A="MN:ACMisspelledFind"$.
* Good Bible search.
* Bible ranges in $LK,"BibleVerse",A="MN:BibleVerse"$().
* $LK,"::/Demo/Games/FlatTops.CPP"$ is torpedo, not bombs.
* $LK,"::/Demo/Games/EagleDive.CPP"$ doesn't make sense or look real. Bad.
* Reset MPs with $LK,"Core0StartMP",A="MN:Core0StartMP"$() after boot. Free old task memory?
* Use pen_width and pen_height when clipping with pen_width>1.
* Asm LIST NOLIST bugs.
* Review writing to same cache-line from multicore. Do $LK,"CTask",A="MN:CTask"$->task_flags and others need to be in separate cache lines?
* Fix $LK,"KbdLEDsSet",A="MN:KbdLEDsSet"$().
* NumLock comes on with break key.
* I think subswitch_start with a break in the preface fails. $FG,5$$TX+CX,"TODO? Meh"$$FG$
* Compiler: lock{} needs warn on invalid modes or something.
* Do $LK,"CTask",A="MN:CTask"$->task_flags need to be in separate cache lines? * Compiler: Warn recurse class define?
* Add DeleteHidden checkbox to <CTRL-F> Filter. * Asm could support R4u8 by adding 0x40 byte.
* Add change-triangle-color to mesh editor. * $LK,"Mem32DevAlloc",A="MN:Mem32DevAlloc"$() is broken. Devices should be in free spot of E820 report.
* Add 3D-Mesh Editor make-prism.
* DCF_TRANSFORMATION|DCF_SYMMETRY|DCF_JUST_MIRROR -- maybe not both needed at once. * $LK,"SpriteEd",A="FI:::/Adam/Gr/SpriteEd.CPP"$: Strip $LK,"SPT_SHIFT",A="MN:SPT_SHIFT"$ origin cmds?
* DiskCache during FileRead. <CTRL-ALT-C>, $LK,"Kill",A="MN:Kill"$(). * Clean-up ASCII #127 delete char? (No. Maybe, we want a new usage for 127 in future centuries.)
* Get rid of BYTE WORD DWORD in opcode and replace with U8 U16 U32. * $LK,"DocSave",A="MN:DocSave"$() $LK,"*result==CH_CURSOR",A="FF:::/Adam/DolDoc/DocFile.CPP,*result==CH_CURSOR"$ is ugly.
* 5/7/14:Something like AFSetIP.CPP caused hang, then reboot in TestSuite. * Compiler: Exceptions don't free $LK,"CCmpCtrl",A="MN:CCmpCtrl"$ stuff.
* Unhandled exception msgs from MP's get overwritten by WinMgr.
* $LK,"Diff",A="MN:Diff"$("C:/Misc/Bible.TXT","D:/Misc/Bible.TXT"); Takes too long.
* Finish Pilgrim game.
* Compiler: PtrArith MUL SIZE -->QueIns(MUL)?
* Compiler: QueRem(IC_NOP)?
* Fix Chess game so not isometric view.
$FG,5$$TX+CX,"TODO: Too Hard, or Not Worth Doing."$$FG$
* AutoComplete/$LK,"Man",A="MN:Man"$() Jmp for user code.
* $LK,"Bible sized nodes",A="FF:::/Adam/DolDoc/DocRecalc.CPP,->tag+i"$
* $LK,"FileMgr",A="MN:FileMgr"$() is bad with lots of files.
* Would be nice to have a routine telling how much free memory, so apps can plan a big alloc. This is doable, depending on how.
* Log-to-file is inefficient because we load and save whole file.
* Short FAT32 ~ names.
* Compiler: Inline functions?
* Compiler: FunPtr local vars? I forgot if this was hard or not.
$ID,5$$HL,1$U0 Main()
{
U0 (*fp_old_draw_input_ptr)(CDC *dc,I64 x,I64 y)=gr.fp_draw_input_ptr;
}
$ID,-5$$HL,0$
* Compiler: Get rid of $LK,"0x20000",A="FF:::/Compiler/CMain.CPP,0x20000"$ limit.
* $LK,"GrFloodFillRay",A="MN:GrFloodFillRay"$: Get rid of $LK,"0x80000",A="FF:::/Adam/Gr/GrPrimatives.CPP,0x80000"$ limit.
$FG,5$$TX+CX,"Bugs"$$FG$
* 1/12/16 make RAM drive 2288 blks, $FG,2$CopyTree("C:/Home","B:/Home"); $FG$ Disk runs-out of space and hangs instead of reporting errors.
* Bug introduced around 11/1/15. Changed $LK,"::/Kernel/Sched.CPP"$ and now $LK,"WinToTop",A="MN:WinToTop"$ is called on Adam task at start-up, sometimes. Might be user's fault because of bad keys pressed during VMware power-on init. Might be fixed by $LK,"ACf_INIT_IN_PROGRESS",A="MN:ACf_INIT_IN_PROGRESS"$.
* 1/12/16 $LK,"ATARepEntry",A="MN:ATARepEntry"$ shows corrupted buttons. Weird. Perhaps, my imagination.
$FG,5$$TX+CX,"3rd Party Bugs"$$FG$
* VMware: Stretch to full screen
* VMware: PC speaker sound distorted.
* VMware: 8/2/2015 start-up. Probably multicore.
* VMware: $LK,"CtrlAltDel",A="FF:::/Kernel/SerialDev/Keyboard.CPP,CtrlAltDel"$ on <CTRL-ALT-INS>
* VMware: Size zero files don't copy out of mounted disk? (Might be fixed.)
$FG,5$$TX+CX,"Bugs? Not really sure."$$FG$
* $LK,"Mount",A="MN:Mount"$() crashes on bad drive.
* Graphics clipping: screen y+top<0 for top<0?
* 1/1/2015 Bug messing-up keyboard, like no CTRL key. Was working on Sprites.
* 4/13/14 Strut or RawHide crashed when $LK,"sys_var_init_flag",A="MN:sys_var_init_flag"$ was set during testsuite. Perhaps, floodfill?
* 3/19/14: RESET during RawHide.
* $LK,"ChkDsk",A="MN:ChkDsk"$ alloc unalloced. I don't know if I fixed this.
* 1/?/2015,8/10/2015 Macro select in Menu did not go to shell? No, I think just <CTRL-m> twice. Not a bug.
* 5/7/14:Something like $LK,"AFSetIP",A="MN:AFSetIP"$ caused hang, then reboot in TestSuite.
* 5/7/14:#63 Maybe, $LK,"::/Demo/Graphics/Pick3D.CPP"$ crashed in TestSuite. * 5/7/14:#63 Maybe, $LK,"::/Demo/Graphics/Pick3D.CPP"$ crashed in TestSuite.
* 6/8/14:After or in PageEntries2 in TestSuite crash. * 6/8/14:After or in $LK,"PageTableEntries2",A="FF:::/Misc/OSTestSuite.CPP,PageTableEntries2"$ in TestSuite crash.
* $LK,"StrPrintJoin",A="MN:StrPrintJoin"$(,st); With st="\n\\"; (Forgot what this is talking about.)
* $LK,"BMPRLE4To",A="MN:BMPRLE4To"$() has files_size too big by 108. Fixed?
$FG,5$$TX+CX,"TODO? Not really, just angst."$$FG$
* Nontimer $LK,"Rand",A="MN:Rand"$() is really bad!
* Should these be moved into $LK,"CHashClass",A="MN:CHashClass"$ from $LK,"CMemberLst",A="MN:CMemberLst"$ and $LK,"CHashGlblVar",A="MN:CHashGlblVar"$?
$ID,5$CArrayDim dim;
CHashFun *fun_ptr;
$ID,-5$
* extern of fun with dft arg of str?
* Might want to warn switch() dup case numbers.
* Make $LK,"Clamp",A="MN:Clamp"$(), $LK,"Min",A="MN:Min"$(), $LK,"Max",A="MN:Max"$() into asm routines?
* Add local vars to sym table in $LK,"Dbg",A="MN:Dbg"$()?
* Compiler: Prints two error messages for expressions in stmts.
* $LK,"U",A="MN:U"$() negative byte displacement, neg 32-bit disp.
* Race condition in $LK,"::/Demo/Games/FlatTops.CPP"$ torpedo.
* Links to self document if empty file name? $LK,"Document Links",A="FF:::/Adam/DolDoc/DocLink.CPP,AD"$
* $LK,"FUF_RECURSE",A="MN:FUF_RECURSE"$ would be nice if capital "+R".
* Sprites in cmd line code.
* 16-Bit Assembly and Unassembly and is bad.
* Compiler: Cmd to enable/disable warnings.
* Compiler: Type for either F64 or I64, like Print -- no conversion.
* Compiler: Arg type ... that did do conversion, if we have one that doesn't.
* $LK,"R",A="MN:R"$("chars_bmp_","set_");
* Clean-up code $LK,"FileNameAbs",A="MN:FileNameAbs"$(), does it need so many local var names? I guess no choice.
$FG,5$$TX+CX,"Committee Needed"$$FG$
* Make binary tree look-up using FUN_SEG symbol addresses, so we can eliminate fun_seg cache and wall-paper kludge? All HolyC functions and glbl vars would have left-right for address search.
* FunSeg does not scan all task tables.
* Improve editor undo, add redo.
* Compiler: F32?
* International Date output: $LK,"MPrintDate",A="MN:MPrintDate"$(). Every country make own version?
* International Date input: $LK,"Str2Date",A="MN:Str2Date"$().
* Might want to move kernel code out of low 2Meg. Might be faster.
* $LK,"DCF_SYMMETRY",A="MN:DCF_SYMMETRY"$ before transformation? (Currently, it's after.)
* $LK,"TRANSPARENT",A="MN:TRANSPARENT"$ does not work with $LK,"ROPF_DITHER",A="MN:ROPF_DITHER"$.
* $LK,"ROP_XOR",A="MN:ROP_XOR"$ with pen_width>1 is broken.
* $LK,"GrPutChar3",A="MN:GrPutChar3"$() with depth buf?
* Eliminate? $LK,"::/Adam/Ctrls/CtrlsA.CPP"$?
* Eliminate? $LK,"::/Adam/AMathODE.CPP"$?
* Eliminate? $LK,"Complex",A="MN:Complex"$?
* Eliminate? $LK,"CDC",A="MN:CDC"$.brush?
* Eliminate? $LK,"Mat4x4MulXYZ",A="MN:Mat4x4MulXYZ"$() change to 3x3?
* Eliminate? $LK,"ROP_XOR",A="MN:ROP_XOR"$?
* $LK,"WinMgrTask",A="MN:WinMgrTask"$ needs to do doc operations on $LK,"PostMsg",A="MN:PostMsg"$() msgs for mouse. Already works for $LK,"IPSet",A="MN:IPSet"$()?
* Should Msgs in PopUp queue get fwded to parent when task dies?
* Import Intel datasheets so we can use links in $LK,"Code",A="FI:::/Kernel/Mem/PageTables.CPP"$ for documentation. I tried a PDF-to-text convertor and it wasn't acceptible.
* Why are BMP file $LK,"CBGR24",A="MN:CBGR24"$'s wrong? $LK,"::/Adam/Opt/Utils/FileBMP.CPP"$.
* Switch stmt with sparse cases? Maybe, ban sparse switch stmts.
* Compiler Optimization: Postpone LocalVar init until last possible moment in case of return.
* Compiler: Local var array/struct initialization.
* Compiler Optimization: Bools use r,rm in $LK,"ICCmp",A="MN:ICCmp"$() like in $LK,"ICCmpAndBranch",A="MN:ICCmpAndBranch"$()?
* Compiler: !F64 ~F64
* Compiler: &=, |= can overflow with Bts Btr on small data types?
* Since no true preprocessor, $LK,"R",A="MN:R"$("#define","StrMap"); $LK,"R",A="MN:R"$("#include",...); also?
* Compiler: $LK,"sys_var_init_flag",A="MN:sys_var_init_flag"$ for local vars?
* Implement $LK,"RS_ATTR_FIXED",A="MN:RS_ATTR_FIXED"$ fixed pos files?
* Editor page formatting is FUBAR.
* SIMD in $LK,"Mat4x4MulXYZ",A="MN:Mat4x4MulXYZ"$?
* I use fixed-point in $LK,"Circle",A="MN:Circle"$(), $LK,"Ellipse",A="MN:Ellipse"$(), $LK,"Mat4x4MulXYZ",A="MN:Mat4x4MulXYZ"$(), $LK,"Mat4x4MulMat4x4New",A="MN:Mat4x4MulMat4x4New"$() and others. God says I might want to change to float. $LK,"::/Demo/Lectures/FixedPoint.CPP"$ $LK,"::/Demo/Lectures/FixedPointAdvanced.CPP"$.
* Note: We will never put multiple $LK,"Keyboard Tables",A="FI:::/Kernel/SerialDev/Keyboard.CPP"$. Each country must make their own version of TempleOS. The $LK,"Intel Factory ROM",A="FF:::/Doc/Demands.TXT,English"$ will have just English. Our $LK,"Charter",A="FI:::/Doc/Charter.TXT"$ bans multiple country or architectures in the same version.
* We are not doing UTF, but we will add cyrillic 8-bit Russian font on aux_font. <CTRL-ALT-f> will toggle fonts. Or, we will redefine upper 128-255 ASCII characters and move 12 border chars to screen font codes 0-26? $LK,"TextBorder",A="MN:TextBorder"$() $LK,"RawDr",A="MN:RawDr"$(). Add aux_font option with $LK,"chars_bmp_alpha",A="MN:chars_bmp_alpha"$ configured for any aux_font?
$FG,5$$TX+CX,"Inspirational Ideas"$$FG$
* Redo videos, make more professional.
* Use standard terminology from "the literature".
* Get rid of BYTE, WORD, DWORD in opcode and replace with U8, U16, U32.
* Get rid of "Char".
* Get rid of having two terms and pick one, "Disk" and "BlkDev"? (Probably, not that one.)
* Could switch to having just C and D drives and RAMDrive and CD/DVD?
* New editor widgets.
* Make use of flag potential in $LK,"FilesFind",A="MN:FilesFind"$() and possibly $LK,"DirContextNew",A="MN:DirContextNew"$().
* Sort options for $LK,"FilesFind",A="MN:FilesFind"$()?
* New $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$ language features?
* Better $LK,"Debugging",A="HI:Debugging"$?
* Look for mem leaks?
* Std local var names.
* Ticketmaster format stmts? Overflow "t='*'" and padding character?
* Move stuff out of $LK,"Kernel",A="FI:::/Kernel/Kernel.PRJ"$ module.
* $$LK,L="FL:D:/Kernel/File.CPP"$$ instead of A= * $$LK,L="FL:D:/Kernel/File.CPP"$$ instead of A=
* $$SP,B=1$$ instead of $$SP,BI=1$$ * $$SP,B=1$$ instead of $$SP,BI=1$$
* $$CM+LE+RE is nasty * $$CM+LE+RE is nasty
* FlatTop is torpedo, not bombs. * DCF_TRANSFORMATION|DCF_SYMMETRY|DCF_JUST_MIRROR -- maybe not both needed at once.
* Maybe, 3x3 instead of 4x4 matrices. <sigh> * More $LK,"Controls",A="MN:CCtrl"$?
* Get rid of text background color. * Compiler: More use of more floating-point stk?
* Make a game, S.E.T.I., with radio telescope array. Put God on air. * Compiler: More aggressive in $LK,"CmpF2PushPop",A="MN:CmpF2PushPop"$() with types besides MOV and F64.
* $LK,"Diff",A="MN:Diff"$() flags. * Playing with $LK,"::/Demo/Lectures/NegDisp.CPP"$ on $LK,"CTask",A="MN:CTask"$?
$ID,5$$$=-CTASK_NEG_OFFSET
* Backward SHIFT-F3 is broken
* Since no true preprocessor, maybe change nomeclature and get rid of #?
* Rename #define to strmap.
* Review writing to same cache-line from multicore.
* MOV U8 [RSP+RCX],DL
* UAsm negative byte displacement, neg 32-bit disp.
* Might want HeapLog x Cnt
* Find-and-replace text on $$PT$$ line before it.
* Compiler: Warn recurse class define?
* <CTRL-r> Text "$$" has no extents and deletes
* Exception msgs in Adam look bad
* Nice song "3sGCGCqCCe2G3EE2G3qDetDEFsDBDB"
* Nice song? "3qDe2G3AetGD2G3sBDBDqCeDFetABDeFB3qDe2G3AetGD2G3sBDBDqCeDFetABDeFB3e2G3GDGqDeEADDqACB3e2G3GDGqDeEADDqACB"
* $LK,"Mem32DevAlloc",A="MN:Mem32DevAlloc"$() is broken. Devices should be in free spot of E820 report.
* SPRITES in CMD Line code.
* Might want to move kernel code out of low 2Meg. Might be faster.
* Add F2 Macro on TestSuite
* 4/13/14 Strut or RawHide crashed when sys_var_init_flag etc
was set during testsuite.
* PSect search all tables if not found very well.
* asm LIST NOLIST bug
* Bible ranges.
* No way to clear +Hold entries
---------------------
$$=-CTASK_NEG_OFFSET
offset(CTask.addr)==0 offset(CTask.addr)==0
Spawn(): CAlloc() Spawn(): CAlloc()
TaskFinishOff(): Free() TaskFinishOff(): Free()
CSysFixedArea.adam CSysFixedArea.adam
Looks like task_flags,locked_flags cause problems with neg offset. Looks like task_flags,locked_flags cause problems with neg offset.
--------------------- $ID,-5$
* Make a game, S.E.T.I., with radio telescope array. Put God on air.
* 3/19/14: RESET during RawHide
* FAQ frontloaded $FG,5$$TX+CX,"Test"$$FG$
* $LK,"SpriteBitMap",A="FI:::/Adam/Gr/SpriteBitMap.CPP"$: Grabscroll?
COMPILER * Return results for $LK,"GrBlot",A="MN:GrBlot"$, $LK,"GrRect",A="MN:GrRect"$, $LK,"GrPutChar",A="MN:GrPutChar"$?
* Postpone LocalVar Init until last possible moment. (in case RETURN) * Collision cnts for $LK,"GrBlot",A="MN:GrBlot"$, $LK,"GrRect",A="MN:GrRect"$, $LK,"GrPutChar",A="MN:GrPutChar"$?
* PtrArith MUL SIZE -->QueIns(MUL)?
* QueRem(IC_NOP)?
* Fix return result for GrBlot, ect. * $LK,"GetStr",A="MN:GetStr"$() or $LK,"GetChar",A="MN:GetChar"$() in $LK,"OSInstall",A="FI:::/Misc/OSInstall.CPP"$ didn't like focus change.
* CTRL-r transform individual elements * Test on Dad's computer or other people's?
* Size zero files don't copy out from VMware. * $LK,"ICDivEqu",A="MN:ICDivEqu"$() assumes RBX. Is it okay?
* FileMgr header (scrolled out of window?) * Autofile PopUp of PopUp?
* ATA/ATAPI ID in VMware, when not booted to CD? I forgot. * $LK,"FileMgr",A="MN:FileMgr"$() help link scrolls out of window.
* I use fixed-point in $LK,"Circle",A="MN:Circle"$(), $LK,"Ellipse",A="MN:Ellipse"$(), $LK,"Mat4x4MulXYZ",A="MN:Mat4x4MulXYZ"$(), $LK,"Mat4x4MulMat4x4New",A="MN:Mat4x4MulMat4x4New"$() and others. * $LK,"MouseDriverInstall",A="MN:MouseDriverInstall"$() throws exceptions? Doesn't work? Why mouse $LK,"0x9FC30",A="FF:::/Kernel/SerialDev/Mouse.CPP,9FC"$?
God says I might want to change to float.
$LK,"::/Demo/Lectures/FixedPoint.CPP"$.
$LK,"::/Demo/Lectures/FixedPointAdvanced.CPP"$.
* DOCF_DBL_DOLLARS in reindention * VirtualBox MP reboot?
* HexEdit with odd size, ASCII cannot be edited. * Compiler: Err/Warn line nums?
* Asm branch-out-of-range warn by one line?
* clean-up addDev pmt * Make sure queue links safe in one direction. Task $LK,"QueIns",A="MN:QueIns"$ and $LK,"QueRem",A="MN:QueRem"$ for multicore cycling fwd through tasks.
* $LK,"Plain",A="MN:Plain"$() might be better not saving $LK,"CH_CURSOR",A="MN:CH_CURSOR"$. * Test removable media id and $LK,"RS_ATTR_RESIDENT",A="MN:RS_ATTR_RESIDENT"$. $LK,"Touch",A="MN:Touch"$("","+T");
* TRANSPARENT might not work with line ROPF_DITHER
* It would be nice if $LK,"U",A="MN:U"$() NOP were better. $FG,5$$TX+CX,"Uncategorized"$$FG$
* DiskCache during FileRead. <CTRL-ALT-c>, $LK,"Kill",A="MN:Kill"$().
* unhandled exception on MP message gets overwritten by WinMgr * MOV U8 [RSP+RCX],DL
* Cmd to enable/disable compiler warnings
* What if we had a type for either F64 or I64, like Print -- no conversion.
* What if we had a ... that did do conversion, if we have one that doesn't.
* fix documentation problem -- remembering 0 terminator in str or not for $$DA
* GetS, crazy putkey code
* editor page formatting is FUBAR
* $LK,"gr.screen_image",A="MN:CGrGlbls"$ * $LK,"gr.screen_image",A="MN:CGrGlbls"$
>Might want to do ZOOM in U8 graphics and convert screen capture to U8 >Might want to do ZOOM in U8 graphics and convert screen capture to U8
>Might want to reverse bit order >Might want to reverse bit order
* return vals for grrect, grblot, grputchar?
* collisions for grrect, grblot, grputchar?
* Race condition in FlatTops.CPP.Z torpedo
* {Lock|Rep}{Seg|2E=NotBr|3E=Br}{OP}{ADD}{REX}
* Virtual Box MP reboot
* Std local var names
//After Egypt possible future ideas
//$LK,"Numbers,13:33",A="BF:Numbers,13:33"$ scouts
//$LK,"Numbers,21:8",A="BF:Numbers,21:8"$ snakes
* GrEdit: Move sidebar selected elems.
- Be careful of multipt elems.
* GrEdit: Strip origin shift cmds.
* GrEditBitMap, grabscroll?
* extern of fun with dft arg of str?
* We kinda need a routine to return how much free memory,
so that applications can plan a big alloc.
* FileMgr bad with lots of files.
* This $LK,"Fs->catch_except=TRUE",A="FF:::/Kernel/SrvCmd.CPP,Fs->catch_except=TRUE"$ causes problems because it * This $LK,"Fs->catch_except=TRUE",A="FF:::/Kernel/SrvCmd.CPP,Fs->catch_except=TRUE"$ causes problems because it
catches divide and out-of-mem. Not sure what to do, yet. catches divide and out-of-mem. Not sure what to do, yet.
* Make $LK,"Core0StartMP",A="MN:Core0StartMP"$() start work after boot to reset multicores. Bonus for * Release semaphores or break lock sema,usb_td
freeing old task memory. (Prolly never gonna do anything about this.)
* $LK,"sys_var_init_flag",A="MN:sys_var_init_flag"$ local vars.
* sprite shift pts, ctrl pt for ellipse/polygon w,h is off when rotated.
* Window mgr needs to do DOC operations on posted messages from mouse.
Works for $LK,"IPSet",A="MN:IPSet"$(), though.
* Add local vars to sym table in $LK,"Dbg",A="MN:Dbg"$()? (maybe)
* $LK,"Bible sized nodes",A="FF:::/Adam/DolDoc/DocRecalc.CPP,->tag+i"$
* Mouseinstall throws exceptions, doesn't work, investigate Mouse $LK,"0x9FC30",A="FF:::/Kernel/SerialDev/Mouse.CPP,9FC"$
* get kbd lights working.
* Might have issue with compiler exceptions and restoring lex.hash tables.
* Generates two compiler error messages for expressions in statements.
* release semaphores or break lock sema,usb_td
* Fix Mom's secondary CD/DVD, dad's primary
* pmtstr in install didn't like focus change
*$FG,2$U0 Main()
{
U0 (*fp_old_draw_input_ptr)(CDC *dc,I64 x,I64 y)=gr.fp_draw_input_ptr;
}$FG$
* What about local variable array/struct initialization.
* Demo $LK,"ToHtml",A="MN:ToHtml"$().
* Del short name in FAT32--currently I do not check to see if I have generated
a unique short name and one can delete multiple files accidentally.
Generating unique short names is a pain in the ass because you have to scan
the whole directory. I think I just truncate the name instead of
"Program~1" or whatever. S081130-0001.BMP crashed windows--two identical
short names.
* OVERSTRIKE at cmd line with menu macro.
* $FG,2$lock{}$FG$ warning on invalid modes.
* Local array vars-->reg.
* $LK,"DCF_SYMMETRY",A="MN:DCF_SYMMETRY"$, before transformation? (Currently it's after)
* all graphics clipping -- screen y+top<0 for top<0
* Maybe convert graphics to float
* Warn unnecessary typecast
* compiler F32
* compiler optimization heap_glbls with added offset
* Might make FAT32 read in contiguous chunks.
* make Clamp(),Min(),Max() asm routines.
* Might make CSprite flood fill operate on a separate bitmap * Might make CSprite flood fill operate on a separate bitmap
and blotted at the end. and blotted at the end.
* autofile popup of popup
* <CTRL-r> delete subsprite in menu near others * <CTRL-r> delete subsprite in menu near others
* consider changing domenu so a real <ESC> on menu item doesn't select * make better heapwalk, do something with $LK,"_CFG_HEAP_DBG",A="FF:::/Kernel/KernelA.HPP,_CFG_HEAP_DBG"$.
(<SPACE> sends <ESC> followed by <SPACE> or something)
* puts3 with depth buf? might not do this
* make task queins and querem safe for multicore cycling through tasks (fwd).
* make better heapwalk, do something with _CFG_HEAP_DBG.
* log to file--would be inefficient--load-in whole file, modify and write out.
Useful, but not very efficient (TempleOS file system has no grow-file ability.
Created when FAT patent was an issue and wanted absly nothing people could sue
me for.)
* APIC2
* import intel datasheets, somehow?
* Get better dictionary, good spell checker.
* AutoComplete/Man Jmp for user code.
* Might make DskView show drive colors.
* Might do utility to set drive colors, making a tree entry in Adam 3 using
registry-like routines... or registry I guess.
* New Editor widgets
* Make use of flag potential in $LK,"FilesFind",A="MN:FilesFind"$() and possibly $LK,"DirContextNew",A="MN:DirContextNew"$()
* implement fixed pos files
* new HolyC language features
* better debugging
* Look for mem leaks.
* Move stuff out of Kernel module.
* $LK,"ROP_XOR",A="MN:ROP_XOR"$ with pen_width>1 is broken.
* BGR wrong in BMP files.
* use width and height in line clipping for pen_width>1 or blot.
* SIMD transformation
* test removable media id (critical for resident files)
* add field overflow U8 "t='*'"
* Implement fmt codes into Get
* Date Input
* Default date fmt
* 16 bit Unassembly is bad--very low priority
* more signed int disassembly
* support r4u8 by adding 0x40 byte
* static var off of data heap. * static var off of data heap.
* Might want to use U32*U32 multiplication.
* could add "const" to not set CCF_NOT_CONST flag for trig, etc. * could add "const" to not set CCF_NOT_CONST flag for trig, etc.
* do r,rm ICCmp like ICBrCmp
* could make glblvar imports use TY_RIP_DISP32. * could make glblvar imports use TY_RIP_DISP32.
* PUSH_CMP allocs reg R9 or whatever * PUSH_CMP allocs reg R9 or whatever
* Might be problem with NOP in OPT pass1 for NO_PUSH in expressions besides * Might be problem with NOP in OPT pass1 for NO_PUSH in expressions besides
assignments. Is ShiftNoPush fully implemented? assignments. Is ShiftNoPush fully implemented?
* NOP1 might need to have diff ic_data's
* in divequal, it assumes about ebx
* error/warning line nums
* ASM branch out warning of range off by 1 line--use cc->last_line_num
* $LK,"Who",A="MN:Who"$("-r"); Capital r is strongly desired.
* Switch statement with sparse cases (low priority) $FG,5$$TX+CX,"Bible Passages"$$FG$
* maybe inline functions? It is love I desire $TX,"Hosea 6:6",HTML="http://www.biblegateway.com/verse/en/Hosea%206:6"$
* Use of more floating-point stk? Males appear three times, not empty $TX,"Deuteronomy 16:16",HTML="http://www.biblegateway.com/verse/en/Deuteronomy%2016:16"$
Offer a sacrifice of praise $TX,"Hebrews 13:15",HTML="http://www.biblegateway.com/verse/en/Hebrews%2013:15"$
Do I drink blood of goats? Offer praise $TX,"Psalms 50:14",HTML="http://www.biblegateway.com/verse/en/Psalms%2050:14"$
When a servant becomes king... $TX,"Proverb 30:22",HTML="http://www.biblegateway.com/verse/en/Proverb%2030:22"$
Runner's stride $TX,"Psalms 147:10",HTML="http://www.biblegateway.com/verse/en/Psalms%20147:10"$
Buckling armor $TX,"1 Kings 20:11",HTML="http://www.biblegateway.com/verse/en/1%20Kings%2020:11"$
Lot cast in the lap $TX,"Proverbs 16:33",HTML="http://www.biblegateway.com/verse/en/Proverbs%2016:33"$
Lord does not repeat $TX,"Job 33:14",HTML="http://www.biblegateway.com/verse/en/Job%2033:14"$
Offer only in approved place $TX,"Deuteronomy 12:13-18",HTML="http://www.biblegateway.com/passage/?search=Deuteronomy%2012:13-18&version=NIV"$
Jesus' zeal for the Temple $TX,"John 2:14-19",HTML="http://www.biblegateway.com/passage/?search=John%202:14-19&version=NIV"$
Famine not for bread $TX,"Amos 8:11-12",HTML="http://www.biblegateway.com/passage/?search=Amos%208:11-12&version=NIV"$
Meek and humble of heart $TX,"Matthew 11:29",HTML="http://www.biblegateway.com/verse/en/Matthew%2011:29"$
* More aggressive in this routine $LK,"CmpF2PushPop",A="MN:CmpF2PushPop"$() with types besides MOV and F64.
* !dbl ~dbl
* &=, |= can overflow with Bts Btr on small data types
* num lock comes on with break key $FG,5$$TX+CX,"Misc Notes"$$FG$
* sort options for findfiles Intel CEO's name: Brian Krzanich
* Maybe, get rid of $LK,"0x20000",A="FF:::/Compiler/CMain.CPP,0x20000"$ in compiler. >$FG,2$lspci -v$FG$
Size:$TX,"17344 KB",D="DD_TEMPLEOSCD_K_SIZE"$
============================ Possible Things to Eliminate ===================== $FG,5$$TX+CX,"My Web Bookmarks"$$FG$$WW,0$
* $LK,"::/Adam/Ctrls/CtrlsA.CPP"$? $TX,"My FireFox Bookmarks",HTML="http://www.templeos.org/Wb/Home/Downloads/Blog/Bookmarks"$
* $LK,"::/Adam/AMathODE.CPP"$? Machine $HC,"<img src=\"http://www.templeos.org/images/Machine.jpg\" width=\"600\" height=\"400\" alt=\"\">"$
* $LK,"Complex",A="MN:Complex"$? Frosting $HC,"<img src=\"http://www.templeos.org/images/Frosting.jpg\" width=\"600\" height=\"400\" alt=\"\">"$
* $LK,"CDC",A="MN:CDC"$.brush? Soap Carvings $HC,"<img src=\"http://www.templeos.org/images/SoapCarvings.jpg\" width=\"640\" height=\"480\" alt=\"\">"$
* $LK,"Mat4x4MulXYZ",A="MN:Mat4x4MulXYZ"$() change to 3x3? CottonTail $HC,"<img src=\"http://www.templeos.org/images/CttnTail.jpg\" width=\"644\" height=\"1113\" alt=\"\">"$
* $LK,"ROP_XOR",A="MN:ROP_XOR"$? TempleOS Logo $HC,"<img src=\"http://www.templeos.org/images/Logo128x152.jpg\" width=\"640\" height=\"760\" alt=\"\">"$
================================================================================ $TX,"SimStructure",HTML="http://www.templeos.org/files/SimStrSetUp.zip"$
>lspci -v
Size:$TX,"17328 KB",D="DD_TEMPLEOSCD_K_SIZE"$
It is love I desire: $TX,"Hosea 6:6",HTML="http://www.biblegateway.com/verse/en/Hosea%206:6"$
Males Appear Three Times: $TX,"Deuteronomy 16:16",HTML="http://www.biblegateway.com/verse/en/Deuteronomy%2016:16"$
Offer a sacrifice of praise: $TX,"Hebrews 13:15",HTML="http://www.biblegateway.com/verse/en/Hebrews%2013:15"$
Do I drink blood of goats? Offer praise: $TX,"Psalms 50:14",HTML="http://www.biblegateway.com/verse/en/Psalms%2050:14"$
When a servant becomes king. $TX,"Proverb 30:22",HTML="http://www.biblegateway.com/verse/en/Proverb%2030:22"$
Runner's Stride: $TX,"Psalms 147:10",HTML="http://www.biblegateway.com/verse/en/Psalms%20147:10"$
Buckling Armor: $TX,"1 Kings 20:11",HTML="http://www.biblegateway.com/verse/en/1%20Kings%2020:11"$
Lot cast in the lap: $TX,"Proverbs 16:33",HTML="http://www.biblegateway.com/verse/en/Proverbs%2016:33"$
Lord does not repeat: $TX,"Job 33:14",HTML="http://www.biblegateway.com/verse/en/Job%2033:14"$
Offer only in approved place: $TX,"Deuteronomy 12:13-18",HTML="http://www.biblegateway.com/passage/?search=Deuteronomy%2012:13-18&version=NIV"$
Jesus' zeal for the Temple: $TX,"John 2:14-19",HTML="http://www.biblegateway.com/passage/?search=John%202:14-19&version=NIV"$
Famine not for bread: $TX,"Amos 8:11-12",HTML="http://www.biblegateway.com/passage/?search=Amos%208:11-12&version=NIV"$
Meek and HUmble of Heart: $TX,"Matthew 11:29",HTML="http://www.biblegateway.com/verse/en/Matthew%2011:29"$
TempleOS Logo
$HC,"<img src=\"http://www.templeos.org/images/Logo128x152.jpg\" width=\"640\" height=\"760\" alt=\"\">"$
Cop tying shoe
$HC,"<img src=\"https://goodtimestories.files.wordpress.com/2013/04/cop-tying-shoe-cambridge-county-pd.jpg\" width=\"480\" height=\"376\" alt=\"\">"$
Dragon Scale
$HC,"<img src=\"http://i.imgur.com/zUdfEqy.jpg\" width=\"800\" height=\"640\" alt=\"\">"$
$WW,1$
$TX,"Good Time Bad Times Lyrics",HTML="https://www.google.com/#q=led+zep+good+times+bad+times+lyrics"$
Intel CEO: Brian Krzanich
$TX,"WWW.OSDEV.ORG",HTML="http://www.osdev.org"$
$TX,"Unikernels",HTML="https://ma.ttias.be/what-is-a-unikernel"$
$TX,"Look at PCI interrupt routing.",HTML="http://forum.osdev.org/viewtopic.php?f=1&t=29558"$
$TX,"The Sins of Newton",HTML="https://www.brainpickings.org/2012/01/04/isaac-newton-list-of-sins"$
$TX,"Lamp Shades",HTML="http://www.lampsplus.com/products/lamp-shades"$
$TX,"My Bookmarks",HTML="http://www.templeos.org/Wb/Home/Wb2/Files/Bookmarks"$
$TX,"Perfect Coin Toss",HTML="http://hackaday.com/2014/12/19/nist-randomness-beacon/"$
$TX,"Top 100 Movies",HTML="http://www.afi.com/100years/movies10.aspx"$
$TX,"ASU_Transcripts",HTML="http://www.templeos.org/files/ASU_Transcripts.pdf"$ $TX,"ASU Course Catalog (See page 261)",HTML="https://catalog.asu.edu/files/shared/archives/1994-1996/general/UG1994-1996.pdf/1994-1996-UG-241-267.pdf"$ $TX,"ASU_Transcripts",HTML="http://www.templeos.org/files/ASU_Transcripts.pdf"$ $TX,"ASU Course Catalog (See page 261)",HTML="https://catalog.asu.edu/files/shared/archives/1994-1996/general/UG1994-1996.pdf/1994-1996-UG-241-267.pdf"$
$TX,"Dr. David Pheanis",HTML="https://webapp4.asu.edu/directory/person/77201"$ $TX,"Dr. Konstantinos S. Tsakalis",HTML="http://ecee.engineering.asu.edu/directory/tenured-and-tenure-track-faculty/kostantinos-s-tsakalis"$ $TX,"Dr. Walter Higgins",HTML="https://webapp4.asu.edu/directory/directorysearch?cn=Walter+Higgins"$ $TX,"Dr. David Pheanis",HTML="https://webapp4.asu.edu/directory/person/77201"$ $TX,"Dr. Konstantinos S. Tsakalis",HTML="http://ecee.engineering.asu.edu/directory/tenured-and-tenure-track-faculty/kostantinos-s-tsakalis"$ $TX,"Dr. Walter Higgins",HTML="https://webapp4.asu.edu/directory/directorysearch?cn=Walter+Higgins"$
$TX,"Peter Gadwa",HTML="http://www.wired.com/magazine/2010/11/mf_ticketmaster/all/1"$ $TX,"Peter Gadwa",HTML="http://www.wired.com/magazine/2010/11/mf_ticketmaster/all/1"$
$TX,"Tom Foley",HTML="http://web.gccaz.edu/~tfoley/perspage.html"$ $TX,"Tom Foley",HTML="http://web.gccaz.edu/~tfoley/perspage.html"$
$TX,"Bible with LineNums",HTML="http://www.templeos.org/files/NumBible.TXT"$
$TX,"Security at NIST",HTML="http://csrc.nist.gov/publications/nistpubs/800-30-rev1/sp800_30_r1.pdf"$
$FG,5$$TX+CX,"Web Bookmarks"$$FG$
Cop tying shoe $HC,"<img src=\"https://goodtimestories.files.wordpress.com/2013/04/cop-tying-shoe-cambridge-county-pd.jpg\" width=\"480\" height=\"376\" alt=\"\">"$
$TX,"Good Time Bad Times Lyrics",HTML="https://www.google.com/#q=led+zep+good+times+bad+times+lyrics"$
$TX,"Unikernels",HTML="https://ma.ttias.be/what-is-a-unikernel"$
$TX,"Handford school",HTML="https:/pinterest.com/pin/255368241346360278"$
$TX,"Look at PCI interrupt routing.",HTML="http://forum.osdev.org/viewtopic.php?f=1&t=29558"$
$TX,"The sins of Newton",HTML="https://www.brainpickings.org/2012/01/04/isaac-newton-list-of-sins"$
$TX,"Stalin's Tanks",HTML="https://boardgamegeek.com/boardgame/5198/stalins-tanks"$
$TX,"Lamp shades",HTML="http://www.lampsplus.com/products/lamp-shades"$
$TX,"KingJamesBible with LineNums",HTML="http://www.templeos.org/files/NumBible.TXT"$
$TX,"Higgs 5-Sigma Proof",HTML="http://understandinguncertainty.org/explaining-5-sigma-higgs-how-well-did-they-do"$ $TX,"Higgs 5-Sigma Proof",HTML="http://understandinguncertainty.org/explaining-5-sigma-higgs-how-well-did-they-do"$
$TX,"Dwight:NerdTorture",HTML="http://www.noob.us/humor/the-office-dwight-faces-nerd-torture-of-the-highest-form"$ $TX,"Dwight: Nerd torture",HTML="http://www.noob.us/humor/the-office-dwight-faces-nerd-torture-of-the-highest-form"$
$TX,"ATA/ATAPI Spec",HTML="http://www.t13.org/Documents/UploadedDocuments/docs2007/D1532v1r4b-AT_Attachment_with_Packet_Interface_-_7_Volume_1.pdf"$ $TX,"ATA/ATAPI spec",HTML="http://www.t13.org/Documents/UploadedDocuments/docs2007/D1532v1r4b-AT_Attachment_with_Packet_Interface_-_7_Volume_1.pdf"$
$TX,"WWW.OSDEV.ORG",HTML="http://www.osdev.org"$
$TX,"BBC",HTML="http://www.knpr.org"$ $TX,"BBC",HTML="http://www.knpr.org"$
$TX,"KNPR",HTML="http://www.knpr.org"$
$TX,"BBC_News_24",HTML="http://www.wherever.tv/tv-channels/BBC-News-24.jsf"$ $TX,"BBC_News_24",HTML="http://www.wherever.tv/tv-channels/BBC-News-24.jsf"$
$TX,"BBC_Five_Live",HTML="http://www.bbc.co.uk/radio/player/bbc_radio_five_live"$ $TX,"BBC_Five_Live",HTML="http://www.bbc.co.uk/radio/player/bbc_radio_five_live"$
$TX,"KNPR",HTML="http://www.knpr.org"$
$TX,"CBS News",HTML="http://www.cbsnews.com/live/?ftag= NM14632fc"$ $TX,"CBS News",HTML="http://www.cbsnews.com/live/?ftag= NM14632fc"$
$TX,"Mapping the Commodore 64",HTML="http://unusedino.de/ec64/technical/project64/mapping_c64.html"$
$TX,"C64 Users Guide",HTML="http://www.commodore.ca/manuals/c64_users_guide/c64-users_guide.htm"$ $TX,"C64 Users Guide",HTML="http://www.commodore.ca/manuals/c64_users_guide/c64-users_guide.htm"$
$TX,"Mapping the Commodore 64",HTML="http://unusedino.de/ec64/technical/project64/mapping_c64.html"$
$TX,"C64 Programmers Reference Guide",HTML="http://www.commodore.ca/manuals/c64_programmers_reference/c64-programmers_reference.htm"$ $TX,"C64 Programmers Reference Guide",HTML="http://www.commodore.ca/manuals/c64_programmers_reference/c64-programmers_reference.htm"$
$TX,"8-Bit Pixel Art",HTML="http://8bitdecals.com/8-bit-image-gallery"$ $TX,"8-Bit Pixel Art",HTML="http://8bitdecals.com/8-bit-image-gallery"$
$TX,"8-Bit Japanese Pixel Art",HTML="http://designmadeinjapan.com/magazine/illustration-icon/tumblr-gifs-of-japanese-life"$ $TX,"8-Bit Japanese Pixel Art",HTML="http://designmadeinjapan.com/magazine/illustration-icon/tumblr-gifs-of-japanese-life"$
$TX,"Risperdal Shortens Life",HTML="http://factmed.com/study-RISPERDAL-causing-LIFE EXPECTANCY SHORTENED.php"$
+13 -13
View File
@@ -2,7 +2,7 @@ $TR-UL,"Adam"$
$ID,2$$TR,"SysMsgFlags"$ $ID,2$$TR,"SysMsgFlags"$
$ID,2$sys_msg_flags[0]=0xFF; $ID,2$sys_msg_flags[0]=0xFF;
$ID,-2$$TR,"SysRegVer"$ $ID,-2$$TR,"SysRegVer"$
$ID,2$registry_version=4.010; $ID,2$registry_version=4.020;
$ID,-2$$ID,-2$$TR-UL,"TempleOS"$ $ID,-2$$ID,-2$$TR-UL,"TempleOS"$
$ID,2$$TR,"TOS"$ $ID,2$$TR,"TOS"$
$ID,2$I64 tos_code_walk_thru=105,tos_after_egypt_in_action=46; $ID,2$I64 tos_code_walk_thru=105,tos_after_egypt_in_action=46;
@@ -10,10 +10,18 @@ $ID,-2$$TR,"CircleTrace"$
$ID,2$F64 best_score=4.9425; $ID,2$F64 best_score=4.9425;
$ID,-2$$TR,"DiningStars"$ $ID,-2$$TR,"DiningStars"$
$ID,2$F64 best_score=9999.0000; $ID,2$F64 best_score=9999.0000;
$ID,-2$$TR,"BlackDiamond"$
$ID,2$I64 best_score=9;
$ID,-2$$TR,"EagleDive"$
$ID,2$I64 best_score=4;
$ID,-2$$TR,"DunGen"$ $ID,-2$$TR,"DunGen"$
$ID,2$F64 best_score=20.5295; $ID,2$F64 best_score=20.5295;
$ID,-2$$TR,"CastleFrankenstein"$
$ID,2$F64 best_score=33.8405;
$ID,-2$$TR,"ZoneOut"$ $ID,-2$$TR,"ZoneOut"$
$ID,2$F64 best_score=8.1373; $ID,2$F64 best_score=8.1373;
$ID,-2$$TR,"Varoom"$
$ID,2$F64 best_score=46.2643;
$ID,-2$$TR,"FlapBat"$ $ID,-2$$TR,"FlapBat"$
$ID,2$F64 best_score=16.4090; $ID,2$F64 best_score=16.4090;
$ID,-2$$TR,"TimeOut"$ $ID,-2$$TR,"TimeOut"$
@@ -22,24 +30,16 @@ $ID,-2$$TR,"RawHide"$
$ID,2$F64 best_score=96.1279; $ID,2$F64 best_score=96.1279;
$ID,-2$$TR,"KeepAway"$ $ID,-2$$TR,"KeepAway"$
$ID,2$I64 best_score0=0,best_score1=9999; $ID,2$I64 best_score0=0,best_score1=9999;
$ID,-2$$TR,"Wenceslas"$
$ID,2$F64 best_score=49.8074;
$ID,-2$$TR,"XCaliber"$ $ID,-2$$TR,"XCaliber"$
$ID,2$I64 best_score=248; $ID,2$I64 best_score=248;
I64 msg_flags=1; I64 msg_flags=1;
$ID,-2$$TR,"EagleDive"$ $ID,-2$$TR,"Wenceslas"$
$ID,2$I64 best_score=4; $ID,2$F64 best_score=49.8074;
$ID,-2$$TR,"BomberGolf"$ $ID,-2$$TR,"BomberGolf"$
$ID,2$I64 best_score=175; $ID,2$I64 best_score=175;
$ID,-2$$TR,"Varoom"$
$ID,2$F64 best_score=46.2643;
$ID,-2$$TR,"BlackDiamond"$
$ID,2$I64 best_score=9;
$ID,-2$$TR,"CastleFrankenstein"$
$ID,2$F64 best_score=33.8405;
$ID,-2$$ID,-2$$TR,"DemoCompany"$ $ID,-2$$ID,-2$$TR,"DemoCompany"$
$ID,2$$TR,"Game1"$ $ID,2$$TR,"Game1"$
$ID,2$F64 best_score=169.44508; $ID,2$F64 best_score=197.26500;
$TR,"SimpleVal"$ $TR,"SimpleVal"$
$ID,2$1274; $ID,2$1279;
$ID,-2$$ID,-2$$ID,-2$ $ID,-2$$ID,-2$$ID,-2$
+1 -45
View File
@@ -13,66 +13,22 @@ U0 TOSBootRescueDrv1()
U0 TOSBootRescueDrv2() U0 TOSBootRescueDrv2()
{ {
DefinePrint("CFG_BOOT_RESCUE_DRV","\"a10x%X\n0x%X\n\"",TOS_BOOT_RESCUE_DRV, DefinePrint("CFG_BOOT_RESCUE_DRV","\"a0x%X\n0x%X\n\"",TOS_BOOT_RESCUE_DRV,
(TOS_BOOT_RESCUE_DRV_END-TOS_BOOT_RESCUE_DRV)/BLK_SIZE); (TOS_BOOT_RESCUE_DRV_END-TOS_BOOT_RESCUE_DRV)/BLK_SIZE);
DefinePrint("CFG_BOOT_RESCUE_DRV_START","\"0x%X\"",TOS_BOOT_RESCUE_DRV); DefinePrint("CFG_BOOT_RESCUE_DRV_START","\"0x%X\"",TOS_BOOT_RESCUE_DRV);
} TOSBootRescueDrv2; } TOSBootRescueDrv2;
U0 TOSInit() U0 TOSInit()
{ {
CATARep *root=NULL,*ata_drv=NULL,*atapi_drv=NULL;
CBlkDev *bd;
switch (tos_cid) {
case CID_DFT:
DefinePrint("CFG_RAM_DRVS", DefinePrint("CFG_RAM_DRVS",
"\"b\nScale2Mem(2048,0x100000,4*1024*1024*1024)\n\""); "\"b\nScale2Mem(2048,0x100000,4*1024*1024*1024)\n\"");
if (blkdev.auto_mount_ide_cnt) {
//If AutoMount was successful, No need to manually mount in next compile
DefinePrint("CFG_HARD_DRVS","\"\""); DefinePrint("CFG_HARD_DRVS","\"\"");
DefinePrint("CFG_DVD_DRVS","\"\""); DefinePrint("CFG_DVD_DRVS","\"\"");
} else {
//These two are a crazy guess. ATA:IDE Primary ATAPI:IDE Secondary
DefinePrint("CFG_HARD_DRVS","\"cs0x1F0\n0x3F4\n0\"");
DefinePrint("CFG_DVD_DRVS","\"ts0x170\n0\"");
bd=Let2BlkDev(':');
if (bd->type==BDT_ATAPI) {
ATARep(FALSE,,&root);
ATAIDDrvs(root,blkdev.boot_drv_let,&ata_drv,&atapi_drv);
if (ata_drv)
DefinePrint("CFG_HARD_DRVS","\"cp%d\n\"",ata_drv->num);
if (atapi_drv)
DefinePrint("CFG_DVD_DRVS","\"tp%d\n\"",atapi_drv->num);
} else {
try {
bd=Let2BlkDev('C');
DefinePrint("CFG_HARD_DRVS","\"cs0x%X\n0x%X\n%d\"",
bd->base0,bd->base1,bd->unit);
} catch
Fs->catch_except=TRUE;
try {
bd=Let2BlkDev('T');
DefinePrint("CFG_DVD_DRVS","\"ts0x%X\n%d\"",bd->base0,bd->unit);
} catch
Fs->catch_except=TRUE;
}
}
DefinePrint("CFG_DSK_CACHE","\"Scale2Mem(0x80000,0x8000000)\n\""); DefinePrint("CFG_DSK_CACHE","\"Scale2Mem(0x80000,0x8000000)\n\"");
DefinePrint("TOS_HDS","\"CD\""); DefinePrint("TOS_HDS","\"CD\"");
DefinePrint("TOS_MASTER_BOOT_DRVS","\"C\""); DefinePrint("TOS_MASTER_BOOT_DRVS","\"C\"");
}
} TOSInit; } TOSInit;
U0 TOSDrvTextAttrSet()
{
DrvTextAttrSet('C', WHITE <<4|BLUE); //Main
DrvTextAttrSet('D', WHITE <<4|RED); //Back-up
DrvTextAttrSet('A', BLUE <<4|BROWN); //Rescue
DrvTextAttrSet('B', BLUE <<4|YELLOW);//RAM
DrvTextAttrSet('T', LTGRAY<<4|BLUE); //CD/DVD
} TOSDrvTextAttrSet;
#define TOS_ISO_NAME "B:/TempleOSCD.ISO" #define TOS_ISO_NAME "B:/TempleOSCD.ISO"
#define TOS_DISTRO_DIR "B:/Distro" #define TOS_DISTRO_DIR "B:/Distro"
#define CFG_OPTS "AutoMountIDE\nCT\n" #define CFG_OPTS "AutoMountIDE\nCT\n"
+53 -51
View File
@@ -15,7 +15,7 @@ U0 TOSMakeOSDrvBootInstall(U8 drv_let)
Auto(TOS_CFG); Auto(TOS_CFG);
MakeOSDrvBootInstall(drv_let); MakeOSDrvBootInstall(drv_let);
if (StrOcc(TOS_MASTER_BOOT_DRVS,drv_let)) if (StrOcc(TOS_MASTER_BOOT_DRVS,drv_let))
MasterBootIntall(drv_let); MasterBootInstall(drv_let);
} }
U0 TOSCopyDrv(U8 src,U8 dst) U0 TOSCopyDrv(U8 src,U8 dst)
@@ -24,7 +24,7 @@ U0 TOSCopyDrv(U8 src,U8 dst)
src=ToUpper(src); src=ToUpper(src);
dst=ToUpper(dst); dst=ToUpper(dst);
Fmt(dst,,FALSE,DVT_FAT32); Fmt(dst,,FALSE,FSt_FAT32);
StrPrint(buf_s,"%c:/",src); StrPrint(buf_s,"%c:/",src);
StrPrint(buf_d,"%c:/",dst); StrPrint(buf_d,"%c:/",dst);
@@ -90,7 +90,7 @@ public U0 CopySongs(U8 threshold='7')
{ {
CDoc *s; CDoc *s;
CDocEntry *doc_e; CDocEntry *doc_e;
CDirEntry *tempde=FilesFind("::/Home/Wb2/Files/Psalmody/*.CPP*", CDirEntry *tempde=FilesFind("/Home/Downloads/Psalmody/*.CPP*",
FUF_CLUSTER_ORDER), FUF_CLUSTER_ORDER),
*tempde1=tempde; *tempde1=tempde;
DelTree("/Apps/Psalmody/Examples"); DelTree("/Apps/Psalmody/Examples");
@@ -109,9 +109,10 @@ U0 DistroPrep()
{ {
Del("/Demo/WebLogExample/WebLogRep.TXT*"); Del("/Demo/WebLogExample/WebLogRep.TXT*");
Del("/Demo/ReverseFileExample/PoemForeward.TXT*"); Del("/Demo/ReverseFileExample/PoemForeward.TXT*");
Del("/Demo/ToHtmlToTXTExample/Out*");
Del("/Home/NumBible.TXT.Z"); Del("/Home/NumBible.TXT.Z");
DelTree("/Home/*Temp.TXT.Z"); DelTree("/Home/*Temp.TXT.Z");
if (FileFind("::/Home/Wb2/Files/Psalmody")) if (FileFind("/Home/Downloads/Psalmody"))
CopySongs; CopySongs;
DelTree("/Temp"); DelTree("/Temp");
@@ -123,19 +124,19 @@ U0 DistroPrep()
DelTree("/Demo/AcctExample"); DelTree("/Demo/AcctExample");
CopyTree("/Home","/Demo/AcctExample"); CopyTree("/Home","/Demo/AcctExample");
DelTree("/Demo/AcctExample/Archive");
DelTree("/Demo/AcctExample/Blog");
DelTree("/Demo/AcctExample/Budget"); DelTree("/Demo/AcctExample/Budget");
DelTree("/Demo/AcctExample/Code"); DelTree("/Demo/AcctExample/Private");
DelTree("/Demo/AcctExample/Misc"); DelTree("/Demo/AcctExample/Downloads");
DelTree("/Demo/AcctExample/Psalmody"); DelTree("/Demo/AcctExample/Web");
DelTree("/Demo/AcctExample/Videos");
DelTree("/Demo/AcctExample/Wb2");
Del("/Demo/AcctExample/Test*"); Del("/Demo/AcctExample/Test*");
//Once in a while, do these: if (FileFind("/Home/Downloads/Utils/SortHeaders.CPP.Z"))
// SortHeaders; ExeFile("/Home/Downloads/Utils/SortHeaders.CPP.Z");
// DblSpaceScan("/*");
if (FileFind("/Home/Downloads/Blog/YouTube.TXT.Z"))
Sort("/Home/Downloads/Blog/YouTube.TXT.Z",,2);
//Once in a while, do $LK,"::/Home/Downloads/Utils/DblSpaceScan.CPP"$.
CursorRem("/*"); CursorRem("/*");
DelTree("/Demo/*.BI*"); DelTree("/Demo/*.BI*");
@@ -146,15 +147,13 @@ U0 DistroPrep()
U0 MakeBootRescueDrvFile() U0 MakeBootRescueDrvFile()
{ {
try CBlkDev *bd;
Let2Drv('A'); if (!Let2Drv('A',FALSE)) {
catch {
Fs->catch_except=TRUE;
Auto(CFG_BOOT_RESCUE_DRV "\n"); Auto(CFG_BOOT_RESCUE_DRV "\n");
Mount; Mount;
} }
CBlkDev *bd=Let2BlkDev('A'); bd=Let2BlkDev('A');
Fmt('A',,FALSE,DVT_REDSEA); Fmt('A',,FALSE,FSt_REDSEA);
MkDir("A:/Compiler"); MkDir("A:/Compiler");
Copy("C:/Compiler/Compiler.BIN.Z", "A:/Compiler"); Copy("C:/Compiler/Compiler.BIN.Z", "A:/Compiler");
@@ -166,11 +165,12 @@ U0 MakeBootRescueDrvFile()
Copy("C:/Kernel/*.HPP*", "A:/Kernel"); Copy("C:/Kernel/*.HPP*", "A:/Kernel");
CopyTree("C:/Kernel/BlkDev", "A:/Kernel/BlkDev"); CopyTree("C:/Kernel/BlkDev", "A:/Kernel/BlkDev");
Copy("C:/Home/Wb2/Files/DbgStartOS.CPP.Z","A:/StartOS.CPP.Z"); Copy("C:/Home/Downloads/Distro/DbgStartOS.CPP.Z","A:/StartOS.CPP.Z");
MkDir("A:/Adam"); MkDir("A:/Adam");
Copy("C:/Home/Wb2/Files/DbgMakeAdam.CPP.Z","A:/Adam/MakeAdam.CPP.Z"); Copy("C:/Home/Downloads/Distro/DbgMakeAdam.CPP.Z","A:/Adam/MakeAdam.CPP.Z");
Copy("C:/Adam/AExts.HPP.Z", "A:/Adam"); Copy("C:/Home/Downloads/Distro/DbgMount.CPP.Z","A:/Adam");
Copy("C:/Adam/AExts.CPP.Z", "A:/Adam");
Copy("C:/Adam/AMath.CPP.Z", "A:/Adam"); Copy("C:/Adam/AMath.CPP.Z", "A:/Adam");
Copy("C:/Adam/Training.CPP.Z","A:/Adam"); Copy("C:/Adam/Training.CPP.Z","A:/Adam");
Copy("C:/Adam/AMem.CPP.Z", "A:/Adam"); Copy("C:/Adam/AMem.CPP.Z", "A:/Adam");
@@ -192,7 +192,7 @@ U0 MakeSymFiles()
Who; Who;
if (doc=DocPut) { if (doc=DocPut) {
st=StrNew(doc->filename.name); st=StrNew(doc->filename.name);
StrCpy(doc->filename.name,"D:/Wb/Home/Wb2/SymsAlpha.TXT.Z"); StrCpy(doc->filename.name,"D:/Wb/Home/Web/SymsAlpha.TXT.Z");
DocWrite(doc); DocWrite(doc);
StrCpy(doc->filename.name,st); StrCpy(doc->filename.name,st);
Free(st); Free(st);
@@ -202,7 +202,7 @@ U0 MakeSymFiles()
Who("+m"); Who("+m");
if (doc=DocPut) { if (doc=DocPut) {
st=StrNew(doc->filename.name); st=StrNew(doc->filename.name);
StrCpy(doc->filename.name,"D:/Wb/Home/Wb2/SymsAddress.TXT.Z"); StrCpy(doc->filename.name,"D:/Wb/Home/Web/SymsAddress.TXT.Z");
DocWrite(doc); DocWrite(doc);
StrCpy(doc->filename.name,st); StrCpy(doc->filename.name,st);
Free(st); Free(st);
@@ -231,7 +231,7 @@ I64 MakeLineRepFile()
result=LineRep; result=LineRep;
if (doc=DocPut) { if (doc=DocPut) {
st=StrNew(doc->filename.name); st=StrNew(doc->filename.name);
StrCpy(doc->filename.name,"B:/TOS/Wb2/LineRep.TXT.Z"); StrCpy(doc->filename.name,"B:/TOS/Web/LineRep.TXT.Z");
DocWrite(doc); DocWrite(doc);
StrCpy(doc->filename.name,st); StrCpy(doc->filename.name,st);
Free(st); Free(st);
@@ -288,12 +288,11 @@ U0 MakeTOSDistro()
ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",,
TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSTS_SIZE", DefinePrint("DD_TEMPLEOSTS_SIZE",
"Download $TX,"TempleOS V3.12",D="DD_OS_NAME_VERSION"$ - T.S. Company Internal Distro (%0.1f MB)", "Download $TX,"TempleOS V4.01",D="DD_OS_NAME_VERSION"$ - T.S. Company Internal Distro (%0.1f MB)",
0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024));
Drv('C'); Drv('C');
} }
U0 DbgDistroPrep() U0 DbgDistroPrep()
{/*This is a debug distro. The CD/DVD bootloader uses BIOS INT 0x13 0x42 to {/*This is a debug distro. The CD/DVD bootloader uses BIOS INT 0x13 0x42 to
load Kernel.BIN.C which has been modified to also hold a small RAM drive load Kernel.BIN.C which has been modified to also hold a small RAM drive
@@ -324,7 +323,7 @@ U0 MakeDbgDistro()
ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",,
TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSDBG_SIZE", DefinePrint("DD_TEMPLEOSDBG_SIZE",
"Download $TX,"TempleOS V3.12",D="DD_OS_NAME_VERSION"$ - Debug Distro (%0.1f MB)", "Download $TX,"TempleOS V4.01",D="DD_OS_NAME_VERSION"$ - Debug Distro (%0.1f MB)",
0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024));
Drv('C'); Drv('C');
} }
@@ -372,7 +371,7 @@ U0 MakeLiteDistro()
ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",,
TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSLITE_SIZE", DefinePrint("DD_TEMPLEOSLITE_SIZE",
"Download $TX,"TempleOS V3.12",D="DD_OS_NAME_VERSION"$ - Lite Distro (%0.1f MB)", "Download $TX,"TempleOS V4.01",D="DD_OS_NAME_VERSION"$ - Lite Distro (%0.1f MB)",
0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024));
Drv('C'); Drv('C');
} }
@@ -394,7 +393,7 @@ FileManager, WindowManager, PCSpeaker, Documentation.
Del(TOS_DISTRO_DIR "/Adam/AutoComplete/ACWords.DAT*"); Del(TOS_DISTRO_DIR "/Adam/AutoComplete/ACWords.DAT*");
Del(TOS_DISTRO_DIR "/Adam/God/Vocab.TXT.Z"); Del(TOS_DISTRO_DIR "/Adam/God/Vocab.TXT.Z");
Del(TOS_DISTRO_DIR "/Misc/OSTestSuite.CPP.Z"); Del(TOS_DISTRO_DIR "/Misc/OSTestSuite.CPP.Z");
Copy("C:/Home/Wb2/Files/UltraMenu.TXT.Z", Copy("C:/Home/Downloads/Distro/UltraMenu.TXT.Z",
TOS_DISTRO_DIR "/PersonalMenu.TXT.Z"); TOS_DISTRO_DIR "/PersonalMenu.TXT.Z");
Copy("C:/Demo/Games/EagleDive.CPP.Z", Copy("C:/Demo/Games/EagleDive.CPP.Z",
TOS_DISTRO_DIR "/Misc"); TOS_DISTRO_DIR "/Misc");
@@ -405,7 +404,7 @@ U0 MakeUltraDistro()
ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",,
TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSULTRA_SIZE", DefinePrint("DD_TEMPLEOSULTRA_SIZE",
"Download $TX,"TempleOS V3.12",D="DD_OS_NAME_VERSION"$ - UltraLite Distro (%0.1f MB)", "Download $TX,"TempleOS V4.01",D="DD_OS_NAME_VERSION"$ - UltraLite Distro (%0.1f MB)",
0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024));
Drv('C'); Drv('C');
} }
@@ -435,24 +434,23 @@ U0 MakeWebSite()
CDirEntry *tempde,*tempde1; CDirEntry *tempde,*tempde1;
DocClear; DocClear;
Cd("D:/Wb"); Cd("D:/Wb");
DelTree("D:/Wb/Home/Archive");
DelTree("D:/Wb/Home/Budget"); DelTree("D:/Wb/Home/Budget");
DelTree("D:/Wb/Home/Psalmody"); DelTree("D:/Wb/Home/Private");
Del("D:/Wb/Home/*"); Del("D:/Wb/Home/*");
Touch("D:/Wb/Home/Wb2/index.TXT.Z",""); Touch("D:/Wb/Home/Web/index.TXT.Z","");
Touch("D:/Wb/Home/Wb2/Downloads.TXT.Z",""); Touch("D:/Wb/Home/Web/Downloads.TXT.Z","");
Touch("D:/Wb/Home/Wb2/TempleOS.TXT.Z",""); Touch("D:/Wb/Home/Web/TempleOS.TXT.Z","");
tempde=tempde1=FilesFind("*", tempde=tempde1=FilesFind("*",
FUF_RECURSE|FUF_JUST_FILES|FUF_JUST_TXT|FUF_CLUSTER_ORDER); FUF_RECURSE|FUF_JUST_FILES|FUF_JUST_TXT|FUF_CLUSTER_ORDER);
while (tempde) { while (tempde) {
TOSWebFile(tempde->full_name); TOSWebFile(tempde->full_name);
tempde=tempde->next; tempde=tempde->next;
} }
Copy( "D:/Wb/Home/Wb2/Files/Bin/TempleBot", Copy( "D:/Wb/Home/Downloads/Bin/TempleBot",
"D:/Wb/Home/Wb2/Files/Bin/TempleBot.TXT"); "D:/Wb/Home/Downloads/Bin/TempleBot.TXT");
ToDolDoc("D:/Wb/Home/Wb2/Files/Bin/TempleBot.TXT"); ToDolDoc("D:/Wb/Home/Downloads/Bin/TempleBot.TXT");
ToHtml("D:/Wb/Home/Wb2/Files/Bin/TempleBot.TXT"); ToHtml("D:/Wb/Home/Downloads/Bin/TempleBot.TXT");
Del("D:/Wb/Home/Wb2/Files/Bin/TempleBot.TXT"); Del("D:/Wb/Home/Downloads/Bin/TempleBot.TXT");
DirTreeDel(tempde1); DirTreeDel(tempde1);
Drv('C'); Drv('C');
} }
@@ -482,23 +480,27 @@ U0 FreshenWebDir(U8 *dirname)
U0 MakeWebSitePartial() U0 MakeWebSitePartial()
{ {
FreshenWebDir("/Home/Wb2"); FreshenWebDir("/Home/Web");
FreshenWebDir("/Home/Wb2/Imgs"); FreshenWebDir("/Home/Web/TAD");
FreshenWebDir("/Home/Web/Imgs");
Drv('C'); Drv('C');
} }
U0 UpdateISODocDefines() U0 UpdateISODocDefines()
{ {
try {
DefinePrint("DD_TEMPLEOSCD_SIZE", DefinePrint("DD_TEMPLEOSCD_SIZE",
"Download $TX,"TempleOS V3.12",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1f MB)", "Download $TX,"TempleOS V4.01",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1f MB)",
0.1*(10*Size("D:/Wb/TempleOSCD.ISO","+s")/1024/1024)); 0.1*(10*Size("D:/Wb/TempleOSCD.ISO","+s")/1024/1024));
DefinePrint("DD_TEMPLEOSCD_K_SIZE", DefinePrint("DD_TEMPLEOSCD_K_SIZE",
"%d KB",Size("D:/Wb/TempleOSCD.ISO","+s")/1024); "%d KB",Size("D:/Wb/TempleOSCD.ISO","+s")/1024);
DefinePrint("DD_TEMPLEOSULTRA_SIZE", DefinePrint("DD_TEMPLEOSULTRA_SIZE",
"Download $TX,"TempleOS V3.12",D="DD_OS_NAME_VERSION"$ - UltraSmall Distro (%0.1f MB)", "Download $TX,"TempleOS V4.01",D="DD_OS_NAME_VERSION"$ - UltraSmall Distro (%0.1f MB)",
0.1*(10*Size("D:/Wb/TempleOSUltra.ISO","+s")/1024/1024)); 0.1*(10*Size("D:/Wb/TempleOSUltra.ISO","+s")/1024/1024));
DefinePrint("DD_TEMPLEOSULTRA_K_SIZE", DefinePrint("DD_TEMPLEOSULTRA_K_SIZE",
"%d KB",Size("D:/Wb/TempleOSUltra.ISO","+s")/1024); "%d KB",Size("D:/Wb/TempleOSUltra.ISO","+s")/1024);
} catch
Fs->catch_except=TRUE;
} }
UpdateISODocDefines; UpdateISODocDefines;
@@ -550,9 +552,9 @@ public U0 MakeDistrosAndBackUp()
public U0 PreBackUp() public U0 PreBackUp()
{ {
Copy("D:/Home/Wb2/Files/Bookmarks.html","C:/Home/Wb2/Files"); Copy("D:/Home/Downloads/Blog/Bookmarks.html","C:/Home/Downloads/Blog");
Del("C:/Home/Wb2/Files/Bin/*"); Del("C:/Home/Downloads/Bin/*");
Copy("D:/Home/Wb2/Files/Bin/*","C:/Home/Wb2/Files/Bin"); Copy("D:/Home/Downloads/Bin/*","C:/Home/Downloads/Bin");
Copy("D:/Home/Wb2/Files/Bin/TempleBot","C:/Linux"); Copy("D:/Home/Downloads/Bin/TempleBot","C:/Linux");
Copy("D:/Home/Wb2/Files/Bin/God*","C:/Linux"); Copy("D:/Home/Downloads/Bin/God*","C:/Linux");
} }
+21 -21
View File
@@ -38,8 +38,8 @@ public U8 *FileNameNumNext(U8 *files_find_mask,U8 *fmt)
U0 DCImgWrite(CDC *dc) U0 DCImgWrite(CDC *dc)
{ {
U8 *st1=FileNameNumNext("::/Home/Wb2/Imgs/Img*", U8 *st1=FileNameNumNext("::/Home/Web/Imgs/Img*",
"::/Home/Wb2/Imgs/Img%03d.BMP"), "::/Home/Web/Imgs/Img%03d.BMP"),
*st2=MStrPrint("http://www.templeos.org/Wb%s",st1+2); *st2=MStrPrint("http://www.templeos.org/Wb%s",st1+2);
BMPWrite(st1,dc); BMPWrite(st1,dc);
Free(st1); Free(st1);
@@ -64,7 +64,7 @@ U0 BlogScreenShot()
DocCursor(old_cursor); DocCursor(old_cursor);
} }
U8 *WebBookMarks(U8 *filename="::/Home/Wb2/Files/Bookmarks.html") U8 *WebBookMarks(U8 *filename="::/Home/Downloads/Blog/Bookmarks.html")
{ {
U8 *st; U8 *st;
CDocEntry *doc_e; CDocEntry *doc_e;
@@ -93,10 +93,10 @@ U8 *WebBookMarks(U8 *filename="::/Home/Wb2/Files/Bookmarks.html")
return st; return st;
} }
U8 *YouTubeGet(U8 *filename="C:/Home/Wb2/Files/YouTube.TXT.Z",U8 *needle) U8 *YouTubeGet(U8 *filename="C:/Home/Downloads/Blog/YouTube.TXT.Z",U8 *needle)
{ {
I64 i=0,line=MIN_I64; I64 i=0,line=MIN_I64;
CDoc *doc=DocRead(filename,DOCF_PLAIN_TEXT_WITH_TABS), CDoc *doc=DocRead(filename,DOCF_PLAIN_TEXT_TABS|DOCF_NO_CURSOR),
*doc2=DocNew; *doc2=DocNew;
U8 *title,*code,*result; U8 *title,*code,*result;
while (DocFind(doc,line,needle)) { while (DocFind(doc,line,needle)) {
@@ -130,10 +130,10 @@ U8 *YouTubeGet(U8 *filename="C:/Home/Wb2/Files/YouTube.TXT.Z",U8 *needle)
return result; return result;
} }
U0 YouTubeAdd(U8 *filename="C:/Home/Wb2/Files/YouTube.TXT.Z", U0 YouTubeAdd(U8 *filename="C:/Home/Downloads/Blog/YouTube.TXT.Z",
U8 *title,U8 *code) U8 *title,U8 *code)
{ {
CDoc *doc=DocRead(filename,DOCF_PLAIN_TEXT_WITH_TABS); CDoc *doc=DocRead(filename,DOCF_PLAIN_TEXT_TABS|DOCF_NO_CURSOR);
if (!DocFind(doc,,title)) { if (!DocFind(doc,,title)) {
DocBottom(doc); DocBottom(doc);
DocPrint(doc,"%s\n%s\n",title,code); DocPrint(doc,"%s\n%s\n",title,code);
@@ -269,7 +269,7 @@ class CRandHexBeacon8Form
U8 *RandVideoRead(U8 *filename,I64 line) U8 *RandVideoRead(U8 *filename,I64 line)
{ {
U8 *result=NULL; U8 *result=NULL;
CDoc *doc=DocRead(filename,DOCF_PLAIN_TEXT_WITH_TABS); CDoc *doc=DocRead(filename,DOCF_PLAIN_TEXT_TABS|DOCF_NO_CURSOR);
if (DocLineNumGoTo(doc,line-1) && doc->cur_entry->type_u8==DOCT_TEXT) if (DocLineNumGoTo(doc,line-1) && doc->cur_entry->type_u8==DOCT_TEXT)
result=StrNew(doc->cur_entry->tag); result=StrNew(doc->cur_entry->tag);
DocDel(doc); DocDel(doc);
@@ -279,7 +279,7 @@ U8 *RandVideoRead(U8 *filename,I64 line)
U8 *RandVideoWrite(U8 *filename,I64 line,U8 *st) U8 *RandVideoWrite(U8 *filename,I64 line,U8 *st)
{ {
U8 *result=NULL; U8 *result=NULL;
CDoc *doc=DocRead(filename,DOCF_PLAIN_TEXT_WITH_TABS); CDoc *doc=DocRead(filename,DOCF_PLAIN_TEXT_TABS|DOCF_NO_CURSOR);
if (DocLineNumGoTo(doc,line-1)) { if (DocLineNumGoTo(doc,line-1)) {
if (doc->cur_entry->type_u8==DOCT_TEXT) { if (doc->cur_entry->type_u8==DOCT_TEXT) {
Free(doc->cur_entry->tag); Free(doc->cur_entry->tag);
@@ -483,14 +483,14 @@ U0 InsMyURL()
NIST_TIME_TO_SWITCH,60); NIST_TIME_TO_SWITCH,60);
switch (PopUpPickLst("NISTBeacon5Bible\0NISTBeacon8Passage\0" switch (PopUpPickLst("NISTBeacon5Bible\0NISTBeacon8Passage\0"
"BibleGatewaySearch\0BibleGatewayVerse\0" "BibleGatewaySearch\0BibleGatewayVerse\0"
"YouTube\0Imgur\0Wikipedia\0RandomNumbers.info\0Random.org\0PassWord\0" "YouTube\0Imgur\0Wikipedia\0RandomNumbers.info\0"
"VirtualNotary\0ANU_NIST\0HotBits\0GenerateData\0WebBookMark\0" "Random.org\0PassWord\0VirtualNotary\0ANU_NIST\0HotBits\0"
"Roulette\0Movie\0Metallica\0")) { "GenerateData\0WebBookMark\0Roulette\0Movie\0Metallica\0")) {
case: case:
if (DocForm(url(CRandHexBeacon5Form *))) { if (DocForm(url(CRandHexBeacon5Form *))) {
"$$BG,LTGRAY$$"; "$$BG,LTGRAY$$";
if (FileFind("::/Home/Wb2/Files/NISTPassage.TXT.Z")) // if (FileFind("::/Home/Web/TAD/NISTPassage.TXT.Z"))
Type("::/Home/Wb2/Files/NISTPassage.TXT.Z",0); // Type("::/Home/Web/TAD/NISTPassage.TXT.Z",0);
"$$TX,\"Guidelines for Talking with God.\"," "$$TX,\"Guidelines for Talking with God.\","
"HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n";
tag=MStrPrint("https:/beacon.nist.gov/rest/record/%d",url->timestamp); tag=MStrPrint("https:/beacon.nist.gov/rest/record/%d",url->timestamp);
@@ -502,14 +502,14 @@ U0 InsMyURL()
case: case:
if (DocForm(url(CRandHexBeacon8Form *))) { if (DocForm(url(CRandHexBeacon8Form *))) {
"$$BG,LTGRAY$$"; "$$BG,LTGRAY$$";
if (FileFind("::/Home/Wb2/Files/NISTPick.TXT.Z")) // if (FileFind("::/Home/Web/TAD/NISTPick.TXT.Z"))
Type("::/Home/Wb2/Files/NISTPick.TXT.Z",0); // Type("::/Home/Web/TAD/NISTPick.TXT.Z",0);
"$$TX,\"Guidelines for Talking with God.\"," "$$TX,\"Guidelines for Talking with God.\","
"HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n";
tag=MStrPrint("https:/beacon.nist.gov/rest/record/%d",url->timestamp); tag=MStrPrint("https:/beacon.nist.gov/rest/record/%d",url->timestamp);
"$$TX,\"%Q\",HTML=\"%Q\"$$\n$$BG$$",tag,tag; "$$TX,\"%Q\",HTML=\"%Q\"$$\n$$BG$$",tag,tag;
Free(tag); Free(tag);
GodBooksPassage("C:/Home/Wb2/Files/Text/*",, GodBooksPassage("C:/Home/Downloads/Text/*",,
Str2I64(url->special,16),TRUE); Str2I64(url->special,16),TRUE);
} }
break; break;
@@ -673,17 +673,17 @@ U0 InsMyURL()
case: case:
if (DocForm(url(CTopMoviesForm *))) if (DocForm(url(CTopMoviesForm *)))
RandVideo("Top 100 Movies","http://www.afi.com/100years/movies10.aspx", RandVideo("Top 100 Movies","http://www.afi.com/100years/movies10.aspx",
url,"C:/Home/Wb2/Files/Movies.TXT.Z"); url,"C:/Home/Downloads/Blog/Movies.TXT.Z");
break; break;
case: case:
if (DocForm(url(CMetallicaForm *))) if (DocForm(url(CMetallicaForm *)))
RandVideo("Metallica Song", RandVideo("Metallica Song",
"http://home.hccnet.nl/a.r.adams/lyrics/metallica/songindex.html", "http://home.hccnet.nl/a.r.adams/lyrics/metallica/songindex.html",
url,"C:/Home/Wb2/Files/Metallica.TXT.Z"); url,"C:/Home/Downloads/Blog/Metallica.TXT.Z");
break; break;
} }
Free(url); Free(url);
} }
if (FileFind("::/Home/Wb2/Files/Words/LinuxDict.TXT")) if (FileFind("::/Home/Downloads/Words/LinuxDict.TXT"))
GodInit("::/Home/Wb2/Files/Words/LinuxDict.TXT"); GodInit("::/Home/Downloads/Words/LinuxDict.TXT");
-63
View File
@@ -1,63 +0,0 @@
//This file has handy functions used to identify which machine
//is which in your personal collection of computers.
Bool IsDrvVMware(U8 drv_let)
{
Bool result=FALSE;
U8 *m=NULL;
try
if ((m=DrvModelNum(drv_let)) &&
!MemCmp(m,"VMware",6))
result=TRUE;
catch
Fs->catch_except=TRUE;
Free(m);
return result;
}
I64 DrvMaxBlk(U8 drv_let)
{
I64 result=0;
CBlkDev *bd;
try {
if (bd=Let2BlkDev(drv_let))
result=bd->max_blk;
} catch
Fs->catch_except=TRUE;
return result;
}
I64 IsDrvATAPI(U8 drv_let)
{
Bool result=FALSE;
CBlkDev *bd;
try if ((bd=Let2BlkDev(drv_let)) &&
bd->type==BDT_ATAPI)
result=TRUE;
catch
Fs->catch_except=TRUE;
return result;
}
Bool ChkDrvModelSerial(U8 drv_let,U8 *model,U8 *serial)
{
Bool result;
U8 *m=NULL,*s=NULL;
try {
m=DrvModelNum(drv_let);
s=DrvSerialNum(drv_let);
} catch {
Free(m); Free(s);
m=NULL; s=NULL;
Fs->catch_except=TRUE;
}
if (m && s && !StrCmp(m,model) && !StrCmp(s,serial))
result=TRUE;
else
result=FALSE;
Free(m); Free(s);
return result;
}
#define CID_DFT 0
I64 tos_cid=CID_DFT;
+4 -52
View File
@@ -81,7 +81,7 @@ public U0 JukeSong(I64 num)
AutoComplete; AutoComplete;
if (!fg_on) if (!fg_on)
FrameGrabberToggle; FrameGrabberToggle;
JukeSongsPuppet("::/Home/Wb2/Files/Psalmody",,num,num+1); JukeSongsPuppet("::/Home/Downloads/Psalmody",,num,num+1);
if (fg_on) if (fg_on)
FrameGrabberToggle; FrameGrabberToggle;
} }
@@ -91,7 +91,7 @@ public U0 JukeLines(I64 start_line,I64 end_line)
AutoComplete; AutoComplete;
if (!fg_on) if (!fg_on)
FrameGrabberToggle; FrameGrabberToggle;
JukeSongsPuppet("::/Home/Wb2/Files/Psalmody",,start_line*5,end_line*5); JukeSongsPuppet("::/Home/Downloads/Psalmody",,start_line*5,end_line*5);
if (fg_on) if (fg_on)
FrameGrabberToggle; FrameGrabberToggle;
} }
@@ -177,54 +177,6 @@ public U0 BMP2TXT(U8 *_in_name,U8 *_out_name=NULL)
Free(out_name); Free(out_name);
} }
U0 DblSpaceScanFile(U8 *filename)
{
CDoc *doc=DocRead(filename);
I64 i;
CDocEntry *doc_e=doc->root.next;
while (doc_e!=doc) {
if (doc_e->type_u8==DOCT_NEW_LINE &&
doc_e->next->type_u8==DOCT_NEW_LINE &&
doc_e->next->next->type_u8==DOCT_NEW_LINE) {
i=0;
while (doc_e->type_u8==DOCT_NEW_LINE) {
i++;
doc_e=doc_e->next;
}
"%02d:",i;
PutFileLink(doc->filename.name,doc_e->y);
'\n';
} else
doc_e=doc_e->next;
}
DocDel(doc);
}
U0 DblSpaceScanLst(CDirEntry *tempde)
{
CDirEntry *tempde1;
while (tempde) {
tempde1=tempde->next;
if (tempde->attr & RS_ATTR_DIR) {
if (tempde->sub) {
"Scanning Directory: %s\n",tempde->full_name;
DblSpaceScanLst(tempde->sub);
}
} else
DblSpaceScanFile(tempde->full_name);
DirEntryDel(tempde);
tempde=tempde1;
}
}
public U0 DblSpaceScan(U8 *files_find_mask="*",U8 *fu_flags=NULL)
{
I64 f=0;
ScanFlags(&f,Define("ST_FILE_UTIL_FLAGS"),"+r+T");
ScanFlags(&f,Define("ST_FILE_UTIL_FLAGS"),fu_flags);
DblSpaceScanLst(FilesFind(files_find_mask,f));
}
RegSetDftEntry("TempleOS/TOS", RegSetDftEntry("TempleOS/TOS",
"I64 tos_code_walk_thru=1,tos_after_egypt_in_action=1;\n"); "I64 tos_code_walk_thru=1,tos_after_egypt_in_action=1;\n");
RegExeBranch("TempleOS/TOS"); RegExeBranch("TempleOS/TOS");
@@ -305,7 +257,7 @@ U0 TempleOSTheme()
{ {
if (!fg_on) if (!fg_on)
PopUp("Sleep(50);FrameGrabberToggle;"); PopUp("Sleep(50);FrameGrabberToggle;");
ExeFile("::/Home/Wb2/Files/TempleOSTheme.CPP"); ExeFile("::/Home/Downloads/Graphics/TempleOSTheme.CPP");
DocClear; DocClear;
} }
@@ -315,6 +267,6 @@ U0 TOSJukeVideo(I64 start=0,I64 end=10)
Free(buf); Free(buf);
AutoComplete; AutoComplete;
FrameGrabberToggle; FrameGrabberToggle;
JukeSongsPuppet("::/Home/Wb2/Files/Psalmody",,start,end); JukeSongsPuppet("::/Home/Downloads/Psalmody",,start,end);
FrameGrabberToggle; FrameGrabberToggle;
} }
+22 -22
View File
@@ -66,12 +66,12 @@
#define IC_ADD_CONST 0x37 #define IC_ADD_CONST 0x37
#define IC_SUB_CONST 0x38 #define IC_SUB_CONST 0x38
#define IC_EQUAL_EQUAL 0x39 #define IC_EQU_EQU 0x39
#define IC_NOT_EQUAL 0x3A #define IC_NOT_EQU 0x3A
#define IC_LESS 0x3B #define IC_LESS 0x3B
#define IC_GREATER 0x3C #define IC_GREATER 0x3C
#define IC_LESS_EQUAL 0x3D #define IC_LESS_EQU 0x3D
#define IC_GREATER_EQUAL 0x3E #define IC_GREATER_EQU 0x3E
#define IC_PUSH_CMP 0x3F #define IC_PUSH_CMP 0x3F
#define IC_AND_AND 0x40 #define IC_AND_AND 0x40
@@ -86,16 +86,16 @@
#define IC_ASSIGN_PP 0x46 #define IC_ASSIGN_PP 0x46
#define IC_ASSIGN_MM 0x47 #define IC_ASSIGN_MM 0x47
#define IC_SHL_EQUAL 0x48 #define IC_SHL_EQU 0x48
#define IC_SHR_EQUAL 0x49 #define IC_SHR_EQU 0x49
#define IC_MUL_EQUAL 0x4A #define IC_MUL_EQU 0x4A
#define IC_DIV_EQUAL 0x4B #define IC_DIV_EQU 0x4B
#define IC_MOD_EQUAL 0x4C #define IC_MOD_EQU 0x4C
#define IC_AND_EQUAL 0x4D #define IC_AND_EQU 0x4D
#define IC_OR_EQUAL 0x4E #define IC_OR_EQU 0x4E
#define IC_XOR_EQUAL 0x4F #define IC_XOR_EQU 0x4F
#define IC_ADD_EQUAL 0x50 #define IC_ADD_EQU 0x50
#define IC_SUB_EQUAL 0x51 #define IC_SUB_EQU 0x51
#define IC_JMP 0x52 #define IC_JMP 0x52
#define IC_SWITCH 0x53 #define IC_SWITCH 0x53
@@ -178,16 +178,16 @@
#define IC_BR_ZERO 0x93 #define IC_BR_ZERO 0x93
#define IC_BR_NOT_ZERO 0x94 #define IC_BR_NOT_ZERO 0x94
#define IC_BR_NOT_EQUAL 0x95 #define IC_BR_NOT_EQU 0x95
#define IC_BR_EQUAL_EQUAL 0x96 #define IC_BR_EQU_EQU 0x96
#define IC_BR_GREATER_EQUAL 0x97 #define IC_BR_GREATER_EQU 0x97
#define IC_BR_LESS_EQUAL 0x98 #define IC_BR_LESS_EQU 0x98
#define IC_BR_GREATER 0x99 #define IC_BR_GREATER 0x99
#define IC_BR_LESS 0x9A #define IC_BR_LESS 0x9A
#define IC_BR_NOT_EQUAL2 0x9B #define IC_BR_NOT_EQU2 0x9B
#define IC_BR_EQUAL_EQUAL2 0x9C #define IC_BR_EQU_EQU2 0x9C
#define IC_BR_GREATER_EQUAL2 0x9D #define IC_BR_GREATER_EQU2 0x9D
#define IC_BR_LESS_EQUAL2 0x9E #define IC_BR_LESS_EQU2 0x9E
#define IC_BR_GREATER2 0x9F #define IC_BR_GREATER2 0x9F
#define IC_BR_LESS2 0xA0 #define IC_BR_LESS2 0xA0
#define IC_BR_AND_ZERO 0xA1 #define IC_BR_AND_ZERO 0xA1
+1 -1
View File
@@ -8,7 +8,7 @@ public U0 DocProfile(U8 *filename,I64 flags)
//use $LK,"DocRecalc",A="MN:DocRecalc"$(). //use $LK,"DocRecalc",A="MN:DocRecalc"$().
CDoc *doc=DocRead(filename,flags); CDoc *doc=DocRead(filename,flags);
//doc->root which is equal to doc is the //doc->root which is equ to doc is the
//header of the CQue and represents the end-of-file marker. //header of the CQue and represents the end-of-file marker.
CDocEntry *doc_e=doc->root.next; CDocEntry *doc_e=doc->root.next;
while (doc_e!=doc) { while (doc_e!=doc) {
+2 -1
View File
@@ -3,7 +3,7 @@
U0 NumBible() U0 NumBible()
{ {
CDoc *doc_in=DocRead("::/Misc/Bible.TXT.Z",DOCF_PLAIN_TEXT_WITH_TABS), CDoc *doc_in=DocRead("::/Misc/Bible.TXT.Z",DOCF_PLAIN_TEXT_TABS),
*doc_out=DocNew("::/Home/NumBible.TXT.Z"); *doc_out=DocNew("::/Home/NumBible.TXT.Z");
CDocEntry *doc_e=doc_in->root.next; CDocEntry *doc_e=doc_in->root.next;
while (doc_e!=doc_in) { while (doc_e!=doc_in) {
@@ -20,6 +20,7 @@ U0 NumBible()
} else } else
doc_e=doc_e->next; doc_e=doc_e->next;
} }
doc_out->flags|=DOCF_NO_CURSOR;
DocWrite(doc_out); DocWrite(doc_out);
DocDel(doc_out); DocDel(doc_out);
DocDel(doc_in); DocDel(doc_in);
+2 -5
View File
@@ -3,13 +3,10 @@ U0 UnusedSpaceRep()
I64 i; I64 i;
CDrv *dv; CDrv *dv;
for (i=0;i<26;i++) for (i=0;i<26;i++)
try { if ((dv=Let2Drv(i+'A',FALSE)) &&
dv=Let2Drv(i+'A'); (dv->fs_type==FSt_FAT32 || dv->fs_type==FSt_REDSEA))
if (dv->type==DVT_FAT32 || dv->type==DVT_REDSEA)
"%C: %7.3f%% Free\n", "%C: %7.3f%% Free\n",
Drv2Let(dv),UnusedDrvSpace(Drv2Let(dv))*100.0/(dv->size*BLK_SIZE); Drv2Let(dv),UnusedDrvSpace(Drv2Let(dv))*100.0/(dv->size*BLK_SIZE);
} catch
Fs->catch_except=TRUE;
} }
UnusedSpaceRep; UnusedSpaceRep;
+1 -1
View File
@@ -1,7 +1,7 @@
//$BK,1$WARNING:$BK,0$ Don't return out of a catch{}. This //$BK,1$WARNING:$BK,0$ Don't return out of a catch{}. This
//might get fixed. //might get fixed.
//You can use $LK,"PutExcept",A="MN:PutExcept"$() in a catch statement //You can use $LK,"PutExcept",A="MN:PutExcept"$() in a catch stmt
//and it will report args. //and it will report args.
Bool Prompt(I64 i) Bool Prompt(I64 i)
{ {
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -693,7 +693,7 @@ U0 Varoom()
} }
vr_done: //Don't goto out of try vr_done: //Don't goto out of try
} catch } catch
Fs->catch_except=TRUE; PutExcept;
CleanUp; CleanUp;
SettingsPop(,TSF_SAME_SONG); SettingsPop(,TSF_SAME_SONG);
MenuPop; MenuPop;
+1 -1
View File
@@ -17,7 +17,7 @@ U0 Main()
y1=ClampI64(y1+vy1,0,Fs->pix_height-1); y1=ClampI64(y1+vy1,0,Fs->pix_height-1);
x2=ClampI64(x2+vx2,0,Fs->pix_width-1); x2=ClampI64(x2+vx2,0,Fs->pix_width-1);
y2=ClampI64(y2+vy2,0,Fs->pix_height-1); y2=ClampI64(y2+vy2,0,Fs->pix_height-1);
Sleep(1); //Take this out and see what happens! Sleep(1); //Replace this with Yield() ort Sleep(0) and see what happens!
} }
DCFill(dc); DCFill(dc);
DCDel(dc); DCDel(dc);
Binary file not shown.
+1 -1
View File
@@ -2,7 +2,7 @@
$TR-C,"Main Compiler"$ $TR-C,"Main Compiler"$
$ID,2$The mini compiler is like the main compiler, except the main compiler's lexical analyser removes comments and does preprocessing. $LK,"Lex",A="MN:Lex"$(),$LK,"Echo",A="MN:Echo"$(ON). $ID,2$The mini compiler is like the main compiler, except the main compiler's lexical analyser removes comments and does preprocessing. $LK,"Lex",A="MN:Lex"$(),$LK,"Echo",A="MN:Echo"$(ON).
The main compiler generates $LK,"Intermediate Code",A="FF:::/Compiler/CompilerA.HPP,IC_END"$ at the parser stage. See $LK,"PrsExpression",A="MN:PrsExpression"$(), $LK,"PrsStatement",A="MN:PrsStatement"$(). The main compiler generates $LK,"Intermediate Code",A="FF:::/Compiler/CompilerA.HPP,IC_END"$ at the parser stage. See $LK,"PrsExpression",A="MN:PrsExpression"$(), $LK,"PrsStmt",A="MN:PrsStmt"$().
The main compiler optimizes See $LK,"Intermediate Code Attributes",A="MN:intermediate_code_table"$, $LK,"Combining Consts",A="FF:::/Compiler/OptPass012.CPP,case IC_MUL"$, $LK,"Choosing Reg Vars",A="FF:::/Compiler/OptPass3.CPP,cmp.num_reg_vars"$. Use $LK,"PassTrace",A="MN:PassTrace"$() to see the optimization stages. The main compiler optimizes See $LK,"Intermediate Code Attributes",A="MN:intermediate_code_table"$, $LK,"Combining Consts",A="FF:::/Compiler/OptPass012.CPP,case IC_MUL"$, $LK,"Choosing Reg Vars",A="FF:::/Compiler/OptPass3.CPP,cmp.num_reg_vars"$. Use $LK,"PassTrace",A="MN:PassTrace"$() to see the optimization stages.
+2 -2
View File
@@ -1,7 +1,7 @@
/*lock{} is a compiler statement /*lock{} is a compiler stmt
which places asm LOCK instruction which places asm LOCK instruction
prefixes on code. Only use it on prefixes on code. Only use it on
read-modify-write statements. read-modify-write stmts.
It will generate invalid instructions It will generate invalid instructions
if you misuse it and it will crash. if you misuse it and it will crash.
$LK,"U",A="MN:U"$() to see what code was generated. $LK,"U",A="MN:U"$() to see what code was generated.
+2 -2
View File
@@ -36,7 +36,7 @@ U0 QSortU32(I32 *base,I64 num)
} }
} }
i=less-base; i=less-base;
if (i==num) {//All less or equal to pivot if (i==num) {//All less or equ to pivot
//Point greater to first less //Point greater to first less
do greater--; do greater--;
@@ -47,7 +47,7 @@ U0 QSortU32(I32 *base,I64 num)
if (less<greater) if (less<greater)
SwapU32(less,greater); SwapU32(less,greater);
num=i; num=i;
} else //All equal } else //All equ
break; break;
} else if (i<num/2) { } else if (i<num/2) {
QSortU32(base,i); QSortU32(base,i);
+1 -1
View File
@@ -1,4 +1,4 @@
//This shows a switch statement with some null cases. //This shows a switch stmt with some null cases.
//If no number for the case, //If no number for the case,
//it uses one plus previous case number. //it uses one plus previous case number.
+1 -1
View File
@@ -1 +1 @@
Yk─г#ы┤?╢]t²╕└ж?═8Ч<█Б? ╤ЬкКД?▀wъ_Е?rнпЕDИЕ?╠$▌ДХ?KД│$;И?ОДГЧ.Л?╘p╞и4╔Л? ╡▓H╝+5╫?кO╓╨█mц?Ч≥Qфк?ЧeХмЦ?═<н╪$╫Д?ph─┐h║Ф?┼┤3ЖЖ╦И?T3 Д≈eЙ?рp1й М?' GХЖ"О?
+10 -10
View File
@@ -1,11 +1,11 @@
//This is sorted. //This is sorted.
0.191824 0.095336
0.343942 0.105530
0.612445 0.318999
0.711101 0.412453
0.746556 0.621226
0.758473 0.711749
0.843496 0.960501
0.875693 0.965063
0.922265 0.981767
0.937839 0.988804
+1 -1
View File
@@ -1 +1 @@
╢]t²╕└ж? ╤ЬкКД?KД│$;И?▀wъ_Е?Yk─г#ы┤?═8Ч<█Б?╘p╞и4╔Л?ОДГЧ.Л?╠$▌ДХ?rнпЕDИЕ? �‡3צצ¸י? <־¼$½ה?‏eטֽד?‏™Qֶֻ?ֻO₪÷�mֳ?' Gטצ"ן?ph€ƒh¡ז?²’H®+5½?T3 ה—eך?ׂp1ֺ ם?
+10 -10
View File
@@ -1,11 +1,11 @@
//This is unsorted. //This is unsorted.
0.711101 0.711749
0.875693 0.988804
0.191824 0.095336
0.612445 0.318999
0.937839 0.965063
0.922265 0.105530
0.746556 0.621226
0.843496 0.960501
0.343942 0.412453
0.758473 0.981767
+24
View File
@@ -0,0 +1,24 @@
/* This converts $LK,"::/Demo/ToHtmlToTXTExample/InPage.TXT"$ to
an html document named "OutPage.html".
Notice that an entry like $$TX,"GOOGLE",HTML="http://www.google.com"$$
will be converted to text in the html with an html link.
I cheated by hardcoding $LK,"www.templeos.org",A="FF:::/Adam/Opt/Utils/ToHtml.CPP,www.templeos.org"$ as the website
for $LK,"TempleOS Links",A="MN:LK_FILE"$. Why don't you copy $LK,"::/Adam/Opt/Utils/ToHtml.CPP"$
to your /Home directory and modify it? You are welcome
to link to http://www.templeos.org if you want file
that come on the TempleOS distribution.
You can pass html meta data as args to $LK,"ToHtml",A="MN:ToHtml"$().
If you want to blog like I do, see these files...
$LK,"::/Demo/AcctExample/HomeKeyPlugIns.CPP"$
$LK,"::/Demo/AcctExample/TOSHolySpirit.CPP"$
$LK,"MakeWebSite",A="FF:::/Demo/AcctExample/TOSDistro.CPP,MakeWebSite"$()
*/
Cd(__DIR__);;
ToHtml("InPage.TXT.Z","OutPage.html");
+49
View File
@@ -0,0 +1,49 @@
$WW,1$$FG,5$$TX+CX,"The Temple Operating System"$$FG,4$
$TX,"Downloads",HTML="http://www.templeos.org/Wb/Home/Web/Downloads.html"$ $TX,"Screen Shots",HTML="http://www.templeos.org/Wb/Home/Web/ScreenShots.html"$
$LK,"Introduction",A="FI:::/Doc/Welcome.TXT"$ $LK,"F.A.Q.",A="FI:::/Doc/FAQ.TXT"$
$LK,"Features",A="FI:::/Doc/Features.TXT"$ $LK,"The Charter",A="FI:::/Doc/Charter.TXT"$
$LK,"TempleOS Help",A="FI:::/Doc/HelpIndex.TXT"$ $TX,"Instructional YouTube Videos",HTML="http://www.templeos.org/Wb/Home/Web/TempleOSVideos.html"$
$LK,"Source Code By File",A="FF:::/Home/Web/LineRep.TXT,KStart.CPP"$ $TX,"Source Code (Raw)",HTML="http://www.templeos.org/Wb/"$
$TX,"Source Code By Sym",HTML="http://www.templeos.org/Wb/Home/Web/SymsAlpha.html"$ $TX,"Source Code By Address",HTML="http://www.templeos.org/Wb/Home/Web/SymsAddress.html"$
$TX,"Misc TempleOS Files For Download",HTML="http://www.templeos.org/Wb/Home/Downloads"$ $LK,"3rd-Party TempleOS Files For Download",A="FI:::/Home/Web/3rdParty.TXT"$
$LK,"Change Log",A="FI:::/Doc/ChangeLog.TXT"$ $TX,"The History of TempleOS",HTML="http://www.templeos.org/Wb/Home/Web/History.html"$
$TX,"About Terry Davis",HTML="http://www.templeos.org/Wb/Home/Web/TAD/TAD.html"$ $LK,"TempleOS Credits",A="FI:::/Doc/Credits.TXT"$
$FG$
The Brits are moving to $TX,"ban \"hacking tools\"",HTML="http://www.theregister.co.uk/2008/01/02/hacker_toll_ban_guidance"$. Take my $LK,"unassembler",A="MN:Ui"$ from my cold dead hands. The IRA is the NRA for computer people.
$HC,"<object width=\"640\" height=\"520\"><param name=\"movie\" value=\"http://www.youtube.com/v/A_hzz2XSAaI\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/A_hzz2XSAaI\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" width=\"640\" height=\"520\"></embed></object>"$
TempleOS is a free, public domain, open source, $FG,4$$TX,"x86_64",HTML="http://en.wikipedia.org/wiki/Amd64#AMD64"$$FG$, non-preemptive multi-tasking, multi-cored, $FG,4$$TX,"ring-0-only",HTML="http://en.wikipedia.org/wiki/Ring_(computer_security)"$$FG$, single-address-map ($FG,4$$TX,"identity-mapped",HTML="http://en.wikipedia.org/wiki/Identity_(mathematics)"$$FG$), non-networked, PC operating system. Paging is, basically, not used.
This $TX,"\"Hello World\" joke",HTML="http://www.infiltec.com/j-h-wrld.htm"$, the $TX,"BMP file format",HTML="http://en.wikipedia.org/wiki/BMP_file_format"$ and the $TX,"WAV file format",HTML="http://en.wikipedia.org/wiki/WAV"$ show that the industry is really screwed-up! That's what TempleOS fixes. I capped the line-of-code count at 100,000 and God said it must be perfect, so it will never be an ugly monstrocity. It is currently $TX,"80,928",D="DD_TEMPLEOS_LOC_OFFICIAL"$ lines of unblemished code. Backward compatibility is not promised.
Normally, failure is not an option, but since TempleOS accompanies Windows or Linux, we exclude certain uses. There is no reason to duplicate browsing, multimedia, desktop publishing, etc. Linux wants to be a secure, multi-user mainframe. That's why it has file permissions. The vision for TempleOS, however, is a modern, 64-bit Commodore 64. The C64 was a non-networked, home computer mostly used for games. It trained my generation how to program because it was wide open, completely hackable. The games were not multimedia works of art, but generated by non-artist.
A troll might ask, "Why not just use $FG,4$$TX,"DOS",HTML="http://en.wikipedia.org/wiki/DOS"$$FG$? It was ring-0-only and single-address-map." $FG,4$$TX,"DOS",HTML="http://en.wikipedia.org/wiki/DOS"$$FG$ was 16-bit, with segmentation -- awful! TempleOS is 64-bit, flat, non-segmented and multi-cored. It has a C64-like shell with $LK,"HolyC",A="FI:::/Doc/HolyC.TXT"$, a dialect of C/C++, instead of BASIC. It was written from scratch, and not even ASCII was sacred -- it has 8-bit unsigned char source code to support European languages. Also, the source code supports binary sprite graphics.
A troll might say, "It can crash!" We used $FG,4$$TX,"DOS",HTML="http://en.wikipedia.org/wiki/DOS"$$FG$ for years and loved it. Computers even had a reset switch! Just think of the power of ring-0, muhahaha! Think of the speed and simplicity of $FG,4$$TX,"ring-0-only",HTML="http://en.wikipedia.org/wiki/Ring_(computer_security)"$$FG$ and $FG,4$$TX,"identity-mapping",HTML="http://en.wikipedia.org/wiki/Identity_(mathematics)"$$FG$. It can change tasks in half a microsecond because it doesn't mess with page tables or privilege levels. Inter-process communication is effortless because every task can access every other task's memory.
It's fun having access to everything. When I was a teenager, I had a book, $FG,4$$TX,"Mapping the Commodore 64",HTML="http://unusedino.de/ec64/technical/project64/mapping_c64.html"$$FG$, that told what every location in memory did. I liked copying the ROM to RAM and poking around at the ROM BASIC's variables. Everybody directly poked the hardware ports.
TempleOS is simpler than Linux and you can have hours of fun tinkering because all memory and ports are accessible. Memory is $FG,4$$TX,"identity-mapped",HTML="http://en.wikipedia.org/wiki/Identity_(mathematics)"$$FG$ at all times, so you can modify any task's memory from any other task. You can access all disk blocks, too. I had a blast using a C64 disk block editor to modify directories to un-delete files, when I was a kid. Maybe, you want to play with a raw-block database, or make your own file system?
$HC,"<object width=\"640\" height=\"520\"><param name=\"movie\" value=\"http://www.youtube.com/v/AIEJjpVlZu0\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/AIEJjpVlZu0\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" width=\"640\" height=\"520\"></embed></object>"$
$HC,"<object width=\"640\" height=\"520\"><param name=\"movie\" value=\"http://www.youtube.com/v/W_b4zMxfLvA\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/W_b4zMxfLvA\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" width=\"640\" height=\"520\"></embed></object>"$
I wrote all $LK,"118,851",A="FF:::/Home/Web/LineRep.TXT,Kernel.PRJ",D="DD_TEMPLEOS_LOC"$ lines of TempleOS over the last $TX,"12.5",D="DD_TEMPLEOS_AGE"$ years, full-time, including the 64-bit compiler. It was called, at various times, "$FG,4$$TX,"Hoppy",HTML="http://web.archive.org/web/*/http://www.simstructure.hare.com/*"$$FG$", "$FG,4$$TX,"The J Operating System",HTML="http://wayback.archive.org/web/*/http://www.justrighteous.org/*"$$FG$", "$FG,4$$TX,"LoseThos",HTML="http://web.archive.org/web/*/http://www.losethos.com/*"$$FG$" and "$FG,4$$TX,"SparrowOS",HTML="http://web.archive.org/web/*/http://www.sparrowos.com/*"$$FG$". Here are my $FG,4$$TX,"college transcripts",HTML="http://www.templeos.org/files/ASU_Transcripts.pdf"$$FG$. I've been a professional operating system developer since 1990 when I was hired to work on Ticketmaster's VAX OS.
$FG,8$
* "Commodore 64" was a trademark of Commodore Business Machines.
* "Linux" is probably a trademark owned by Linus Torvalds.
* "Windows" and "DOS" are trademark of MicroSoft Corp.
+8
View File
@@ -0,0 +1,8 @@
/* This converts $LK,"::/Demo/ToHtmlToTXTExample/InPage.TXT"$ to
an plain ASCII text document named, "OutPage.TXT".
*/
Cd(__DIR__);;
ToTXT("InPage.TXT.Z","OutPage.TXT");
+2 -1
View File
@@ -37,7 +37,8 @@ U0 LogStructDel(LogStruct *templg)
U0 PrsSingleLogFile(LogStruct *root,U8 *name,CDate *_start,CDate *_end) U0 PrsSingleLogFile(LogStruct *root,U8 *name,CDate *_start,CDate *_end)
{ {
CDoc *doc=DocRead(name,DOCF_PLAIN_TEXT_WITH_TABS|DOCF_DBL_DOLLARS); CDoc *doc=DocRead(name,
DOCF_PLAIN_TEXT_TABS|DOCF_DBL_DOLLARS|DOCF_NO_CURSOR);
CDocEntry *doc_e=doc->root.next; CDocEntry *doc_e=doc->root.next;
U8 *src,*src2,*mon_lst=Define("ST_MONTHS"); U8 *src,*src2,*mon_lst=Define("ST_MONTHS");
LogStruct *templg; LogStruct *templg;
+1 -1
View File
@@ -13,7 +13,7 @@ U0 InitKey()
U0 LogScrambleFile(U8 *name) U0 LogScrambleFile(U8 *name)
{ {
CDoc *doc=DocRead(name,DOCF_PLAIN_TEXT); CDoc *doc=DocRead(name,DOCF_PLAIN_TEXT|DOCF_NO_CURSOR);
CDocEntry *doc_e=doc->root.next; CDocEntry *doc_e=doc->root.next;
I64 i; I64 i;
U32 num; U32 num;
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
Loaded 100 of 171 files, more files were not shown because too many files have changed in this diff. Show more