TempleOSCDV4.08.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:47:25 +02:00
1 parent b632ab9a4f
commit 2d56cda5f3
258 files changed
+6973 -5476

No files matched your search

Binary file not shown.
+1 -1
View File
@@ -109,7 +109,7 @@ I64 CopyTree2(CDirEntry *tempde,I64 src_dir_len,I64 dst_dir_len,U8 *dst_dir)
MemCpy(st,dst_dir,dst_dir_len); MemCpy(st,dst_dir,dst_dir_len);
StrCpy(st+dst_dir_len,tempde->full_name+src_dir_len); StrCpy(st+dst_dir_len,tempde->full_name+src_dir_len);
if (tempde->attr & RS_ATTR_DIR) { if (tempde->attr & RS_ATTR_DIR) {
MkDir(st); MkDir(st,LinkedLstCnt(tempde->sub));
res+=CopyTree2(tempde->sub,src_dir_len,dst_dir_len,dst_dir); res+=CopyTree2(tempde->sub,src_dir_len,dst_dir_len,dst_dir);
} else } else
if (CopySingle(tempde->full_name,st)) if (CopySingle(tempde->full_name,st))
+12 -13
View File
@@ -55,7 +55,7 @@ I64 RedSeaChkDsk(U8 drv_let,Bool *_fix,Bool *_confirm)
Drv(drv_let); Drv(drv_let);
"Scanning...\n"; "Scanning...\n";
size=(dv->size-(dv->data_area-dv->base_offset))/dv->spc; size=(dv->size-(dv->data_area-dv->drv_offset))/dv->spc;
bpc=dv->spc<<BLK_SIZE_BITS; bpc=dv->spc<<BLK_SIZE_BITS;
bits=CAlloc((size+7)>>3); bits=CAlloc((size+7)>>3);
bits2=CAlloc((size+7)>>3+BLK_SIZE); bits2=CAlloc((size+7)>>3+BLK_SIZE);
@@ -159,7 +159,7 @@ I64 FAT32ChkDsk(U8 drv_let,Bool *_fix,Bool *_confirm)
U32 *bits2; U32 *bits2;
Drv(drv_let); Drv(drv_let);
"Scanning...\n"; "Scanning...\n";
size=(dv->size-(dv->data_area-dv->base_offset))/dv->spc; size=(dv->size-(dv->data_area-dv->drv_offset))/dv->spc;
bpc=dv->spc<<BLK_SIZE_BITS; bpc=dv->spc<<BLK_SIZE_BITS;
bits=CAlloc((size+7)>>3); bits=CAlloc((size+7)>>3);
bits2=CAlloc(size*4+BLK_SIZE); bits2=CAlloc(size*4+BLK_SIZE);
@@ -232,15 +232,14 @@ public I64 ChkDsk(U8 drv_let=0,Bool fix=FALSE,Bool confirm=TRUE)
U0 RedSeaDrvView(U8 drv_let=0) U0 RedSeaDrvView(U8 drv_let=0)
{ {
CDrv *dv=Let2Drv(drv_let); CDrv *dv=Let2Drv(drv_let);
I64 lohi,c1,i,x,y,l,s; I64 lohi,c1,i,x,y,l=(GR_HEIGHT-3*FONT_HEIGHT)*(GR_WIDTH-FONT_WIDTH<<1),
s=dv->size+dv->drv_offset-dv->data_area;
U8 *bitmap; U8 *bitmap;
CDC *dc=DCAlias; 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"$ SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$
WinMax; WinMax;
WinBorder(ON);
DocCursor; DocCursor;
DocClear; DocClear;
DCFill; DCFill;
@@ -275,14 +274,14 @@ U0 RedSeaDrvView(U8 drv_let=0)
U0 FAT32DrvView(U8 drv_let=0) U0 FAT32DrvView(U8 drv_let=0)
{ {
CDrv *dv=Let2Drv(drv_let); CDrv *dv=Let2Drv(drv_let);
I64 lohi,c1,i,x,y,l,s; I64 lohi,c1,i,x,y,l=(GR_HEIGHT-3*FONT_HEIGHT)*(GR_WIDTH-FONT_WIDTH<<1),
s=(dv->size+dv->spc-1)/dv->spc-(2+dv->data_area-dv->drv_offset);
U32 *bitmap; U32 *bitmap;
CDC *dc=DCAlias; 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"$ SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$
WinMax; WinMax;
WinBorder(ON);
DocCursor; DocCursor;
DocClear; DocClear;
DCFill; DCFill;
@@ -357,8 +356,8 @@ public U0 DskView(U8 drv_let=0)
for (i=0;i<NUM_DRVS;i++) { for (i=0;i<NUM_DRVS;i++) {
dv=&blkdev.drvs[i]; dv=&blkdev.drvs[i];
if (bd==dv->bd && dv->fs_type) { if (bd==dv->bd && dv->fs_type) {
sect_start=-(dv->base_offset*2*ã/(bd->max_blk+1)); sect_start=-(dv->drv_offset*2*ã/(bd->max_blk+1));
sect_end =-((dv->base_offset+dv->size)*2*ã/(bd->max_blk+1)); sect_end =-((dv->drv_offset+dv->size)*2*ã/(bd->max_blk+1));
dc->color=BLACK; dc->color=BLACK;
GrLine(dc,h>>1,v>>1, GrLine(dc,h>>1,v>>1,
h>>1+radius*Cos(sect_start), h>>1+radius*Cos(sect_start),
@@ -392,7 +391,7 @@ I64 RedSeaUnusedDrvSpace(U8 drv_let=0)
I64 res=0,i,l; I64 res=0,i,l;
U8 *bitmap; U8 *bitmap;
try { try {
l=(dv->size+dv->spc-1)/dv->spc; l=dv->size+dv->drv_offset-dv->data_area;
i=((l+7)>>3+BLK_SIZE-1)>>BLK_SIZE_BITS; i=((l+7)>>3+BLK_SIZE-1)>>BLK_SIZE_BITS;
bitmap=MAlloc(i<<BLK_SIZE_BITS); bitmap=MAlloc(i<<BLK_SIZE_BITS);
RBlks(dv,bitmap,dv->fat1,i); RBlks(dv,bitmap,dv->fat1,i);
@@ -410,7 +409,7 @@ I64 FAT32UnusedDrvSpace(U8 drv_let=0)
I64 res=0,i,l; I64 res=0,i,l;
U32 *bitmap; U32 *bitmap;
try { try {
l=(dv->size+dv->spc-1)/dv->spc; l=(dv->size+dv->spc-1)/dv->spc-(2+dv->data_area-dv->drv_offset);
i=(l*4+BLK_SIZE-1)>>BLK_SIZE_BITS; i=(l*4+BLK_SIZE-1)>>BLK_SIZE_BITS;
bitmap=MAlloc(i<<BLK_SIZE_BITS); bitmap=MAlloc(i<<BLK_SIZE_BITS);
RBlks(dv,bitmap,dv->fat1,i); RBlks(dv,bitmap,dv->fat1,i);
+7 -10
View File
@@ -217,17 +217,15 @@ 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->fs_type==FSt_REDSEA||dv->fs_type==FSt_FAT32) if (dv->bd->type==BDT_ATAPI) {
FMRebuildDocDrv(Drv2Let(dv),doc,_root,TRUE);
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 {
tempde=FMRebuildDocDrv(Drv2Let(dv),doc,_root,FALSE); tempde=FMRebuildDocDrv(Drv2Let(dv),doc,_root,FALSE);
tempde->flags|=DEF_NOT_INITIALIZED; tempde->flags|=DEF_NOT_INITIALIZED;
} }
tempde->flags|=DEF_REMOVABLE; } else if (dv->fs_type==FSt_REDSEA || dv->fs_type==FSt_FAT32)
} FMRebuildDocDrv(Drv2Let(dv),doc,_root,TRUE);
} }
DocTop(doc); DocTop(doc);
FMMarkUncollapsed(doc,tempc,cur_entry,next_entry); FMMarkUncollapsed(doc,tempc,cur_entry,next_entry);
@@ -382,7 +380,7 @@ U0 FMMakeISO(CDoc *doc)
st=MStrPrint("%s*",tempde->full_name); st=MStrPrint("%s*",tempde->full_name);
else else
st=MStrPrint("%s/*",tempde->full_name); st=MStrPrint("%s/*",tempde->full_name);
ISOFileCreate(,st); ISO9660ISO(,st);
Free(st); Free(st);
Silent(OFF); Silent(OFF);
} }
@@ -566,8 +564,7 @@ public U8 *FileMgr(I64 mode=FM_NORMAL,CTask *mem_task=NULL)
} }
do { do {
DocUnlock(doc); DocUnlock(doc);
do msg_code=GetMsg(&a1,&a2, do msg_code=GetMsg(&a1,&a2,1<<MSG_KEY_DOWN|1<<MSG_IP_L_DOWN|1<<MSG_IP_L_UP|
1<<MSG_KEY_DOWN|1<<MSG_IP_L_DOWN|1<<MSG_IP_L_UP|
1<<MSG_IP_R_UP); 1<<MSG_IP_R_UP);
while (Fs!=sys_focus_task); while (Fs!=sys_focus_task);
DocLock(doc); DocLock(doc);
@@ -655,7 +652,7 @@ public U8 *FileMgr(I64 mode=FM_NORMAL,CTask *mem_task=NULL)
FMRightClick; FMRightClick;
DocLock(doc); DocLock(doc);
break; break;
sub_switch_start: start:
DocUnlock(doc); DocUnlock(doc);
case CH_CTRLV: case CH_CTRLV:
FMCopy(doc); FMCopy(doc);
@@ -681,7 +678,7 @@ public U8 *FileMgr(I64 mode=FM_NORMAL,CTask *mem_task=NULL)
case 'f': case 'f':
FMFmtDrv(doc); FMFmtDrv(doc);
break; break;
sub_switch_end: end:
FMRebuildDoc(&doc,&root,mode); FMRebuildDoc(&doc,&root,mode);
break; break;
case CH_SHIFT_ESC: case CH_SHIFT_ESC:
+7 -4
View File
@@ -13,7 +13,8 @@ I64 Mount2(U8 boot_drv_let,CDoc *_doc,Bool repartition)
DrvRep; 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 ATA hard drives.\n" "$$GREEN$$C$$FG$$-$$GREEN$$L$$FG$$ are ATA hard drives.\n"
"$$GREEN$$M$$FG$$-$$GREEN$$S$$FG$$ are file drives.\n"
"$$GREEN$$T$$FG$$-$$GREEN$$Z$$FG$$ are ATAPI 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);
@@ -31,9 +32,9 @@ I64 Mount2(U8 boot_drv_let,CDoc *_doc,Bool repartition)
unit=0; unit=0;
switch (type) { switch (type) {
case BDT_RAM: case 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);
case BDT_FILE:
"Blks of 512 bytes:"; "Blks of 512 bytes:";
GetS(blks_buf,STR_LEN); GetS(blks_buf,STR_LEN);
break; break;
@@ -77,8 +78,10 @@ I64 Mount2(U8 boot_drv_let,CDoc *_doc,Bool repartition)
switch (type) { switch (type) {
case BDT_RAM: 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", DocPrint(doc,"bd->RAM_dsk=%s;\n",addr_buf);
addr_buf,blks_buf); case BDT_FILE:
if (!*blks_buf) StrCpy(blks_buf,"0");
DocPrint(doc,"bd->max_blk=(%s)-1;\n",blks_buf);
break; break;
case BDT_ATA: case BDT_ATA:
case BDT_ATAPI: case BDT_ATAPI:
+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","119,714"); $ID,4$DefinePrint("DD_TEMPLEOS_LOC","120,845");
DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","79,854"); DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","80,741");
$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;
+3 -2
View File
@@ -48,11 +48,11 @@ extern U0 DrawCtrls(CTask *task);
extern Bool Ed(U8 *link_st,I64 edf_dof_flags=0); extern Bool Ed(U8 *link_st,I64 edf_dof_flags=0);
extern U0 EdCodeTools(CDoc *doc); extern U0 EdCodeTools(CDoc *doc);
extern U8 *EdSprite(I64 bin_num); extern U8 *EdSprite(I64 bin_num);
extern I64 ExeDoc(CDoc *doc,Bool just_load=FALSE); extern I64 ExeDoc(CDoc *doc,I64 ccf_flags=0);
extern I64 FindWiz(); extern I64 FindWiz();
extern I64 GetI64(U8 *msg,I64 dft,I64 lo=MIN_I64,I64 hi=MAX_I64); extern I64 GetI64(U8 *msg,I64 dft,I64 lo=MIN_I64,I64 hi=MAX_I64);
extern U0 GrPlot0(CDC *dc,I64 x,I64 y); extern U0 GrPlot0(CDC *dc,I64 x,I64 y);
extern I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask, extern I64 ISO9660ISO(U8 *_filename=NULL,U8 *src_files_find_mask,
U8 *fu_flags=NULL,U8 *_stage2_filename=NULL); U8 *fu_flags=NULL,U8 *_stage2_filename=NULL);
extern CMenuEntry *MenuEntryFind(CMenu *m,U8 *full_name); extern CMenuEntry *MenuEntryFind(CMenu *m,U8 *full_name);
extern CMenu *MenuFilePush(U8 *filename); extern CMenu *MenuFilePush(U8 *filename);
@@ -70,6 +70,7 @@ extern I64 PopUpFile(U8 *filename,
Bool warn_ext=TRUE,CTask *parent=NULL,CTask **_pu_task=NULL); Bool warn_ext=TRUE,CTask *parent=NULL,CTask **_pu_task=NULL);
extern Bool PopUpForm(U8 *_d,U8 *class_name=lastclass, extern Bool PopUpForm(U8 *_d,U8 *class_name=lastclass,
I64 dof_flags=DOF_MIN_SIZE,U8 *header=NULL,U8 *footer=NULL); I64 dof_flags=DOF_MIN_SIZE,U8 *header=NULL,U8 *footer=NULL);
extern I64 PopUpGetI64(U8 *msg,I64 dft,I64 lo=MIN_I64,I64 hi=MAX_I64);
extern U8 *PopUpGetStr(U8 *header=NULL); extern U8 *PopUpGetStr(U8 *header=NULL);
extern I64 PopUpMenu(CDoc *doc,I64 dof_flags=0); extern I64 PopUpMenu(CDoc *doc,I64 dof_flags=0);
extern Bool PopUpNoYes(U8 *header=NULL,U8 *footer=NULL); extern Bool PopUpNoYes(U8 *header=NULL,U8 *footer=NULL);
+6 -4
View File
@@ -398,11 +398,13 @@ public U0 MapFileLoad(U8 *filename)
if (*doc_e->tag) { if (*doc_e->tag) {
Free(temph->src_link); Free(temph->src_link);
temph->src_link=doc_e->aux_str; temph->src_link=doc_e->aux_str;
ptr=temph->src_link; ptr=temph->src_link;
if (ptr[0] && ptr[1] && ptr[2]==':' && ptr[3]==':') if (ptr[0] && ptr[1] && ptr[2]==':') {
ptr[3]=blkdev.boot_drv_let; if (ptr[3]==':')
ptr[3]=blkdev.boot_drv_let;
else if (ptr[3]=='~')
ptr[3]=*blkdev.home_dir;
}
doc_e->aux_str=NULL; doc_e->aux_str=NULL;
} }
if (temph->type&(HTT_FUN|HTT_EXPORT_SYS_SYM) && if (temph->type&(HTT_FUN|HTT_EXPORT_SYS_SYM) &&
+3 -3
View File
@@ -1,5 +1,5 @@
#help_index "Misc/Registry" #help_index "Misc/Registry"
#define REGISTRY_FILENAME "::/Home/Registry.CPP.Z" #define REGISTRY_FILENAME "~/Registry.CPP.Z"
CDoc *sys_registry_doc=NULL; CDoc *sys_registry_doc=NULL;
I64 sys_msg_flags[1]={0}; I64 sys_msg_flags[1]={0};
F64 registry_version; F64 registry_version;
@@ -30,7 +30,7 @@ public Bool RegSetDftEntry(U8 *path,U8 *val,Bool is_adam_entry=FALSE)
else else
Adam("%s",val); Adam("%s",val);
} }
if (DrvIsWritable(':')) if (DrvIsWritable(*sys_registry_doc->filename.name))
DocWrite(sys_registry_doc); DocWrite(sys_registry_doc);
res=FALSE; res=FALSE;
} else } else
@@ -58,7 +58,7 @@ public Bool RegWriteBranch(U8 *path,U8 *fmt,...)
DocCut(sys_registry_doc,tree_branch,end_indent); DocCut(sys_registry_doc,tree_branch,end_indent);
DocTreeMake(sys_registry_doc,path); DocTreeMake(sys_registry_doc,path);
DocPrint(sys_registry_doc,"%s",buf); DocPrint(sys_registry_doc,"%s",buf);
if (DrvIsWritable(':')) if (DrvIsWritable(*sys_registry_doc->filename.name))
DocWrite(sys_registry_doc); DocWrite(sys_registry_doc);
if (unlock_doc) if (unlock_doc)
DocUnlock(sys_registry_doc); DocUnlock(sys_registry_doc);
+1 -1
View File
@@ -148,7 +148,7 @@ U0 UpdateDerivedCtrlSlider(CCtrl *c)
U0 LeftClickSlider(CCtrl *c,I64 x,I64 y,Bool down) U0 LeftClickSlider(CCtrl *c,I64 x,I64 y,Bool down)
{ {
nounusedwarn down; no_warn down;
CSliderState *s=c->state; CSliderState *s=c->state;
"); ");
+18 -18
View File
@@ -29,7 +29,7 @@ public U0 EdCursorLeft(CDoc *doc,I64 sc=MIN_I64)
if (sc>=0 && sc&SCF_CTRL) { if (sc>=0 && sc&SCF_CTRL) {
while (doc_ce->last!=doc && (doc_ce->last->y==y || while (doc_ce->last!=doc && (doc_ce->last->y==y ||
doc_ce->de_flags & (DOCEF_SKIP|DOCEF_FILTER_SKIP))) doc_ce->de_flags & (DOCEF_SKIP|DOCEF_FILTER_SKIP)))
doc_ce=doc_ce->last; //TODO: select? recurse? doc_ce=doc_ce->last; //TODO: sel? recurse?
cc=doc_ce->min_col; cc=doc_ce->min_col;
} else { } else {
if (cc>doc_ce->min_col) { if (cc>doc_ce->min_col) {
@@ -51,7 +51,7 @@ public U0 EdCursorLeft(CDoc *doc,I64 sc=MIN_I64)
cc=doc_ce->min_col; cc=doc_ce->min_col;
} }
if (sc>=0) if (sc>=0)
BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); BEqu(&doc_ce->type,DOCEt_SEL,sc&SCF_SHIFT);
} else { } else {
cc=doc_ce->min_col; cc=doc_ce->min_col;
while (doc_ce->last!=doc && while (doc_ce->last!=doc &&
@@ -60,7 +60,7 @@ public U0 EdCursorLeft(CDoc *doc,I64 sc=MIN_I64)
doc_ce->last->de_flags&(DOCEF_SKIP|DOCEF_FILTER_SKIP))) { doc_ce->last->de_flags&(DOCEF_SKIP|DOCEF_FILTER_SKIP))) {
doc_ce=doc_ce->last; doc_ce=doc_ce->last;
if (sc>=0) if (sc>=0)
BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); BEqu(&doc_ce->type,DOCEt_SEL,sc&SCF_SHIFT);
} }
if (doc_ce->last!=doc) { if (doc_ce->last!=doc) {
doc_ce=doc_ce->last; doc_ce=doc_ce->last;
@@ -78,7 +78,7 @@ public U0 EdCursorLeft(CDoc *doc,I64 sc=MIN_I64)
} else } else
cc=doc_ce->max_col; cc=doc_ce->max_col;
if (sc>=0) if (sc>=0)
BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); BEqu(&doc_ce->type,DOCEt_SEL,sc&SCF_SHIFT);
} }
} }
} }
@@ -123,7 +123,7 @@ public U0 EdCursorRight(CDoc *doc,I64 sc=MIN_I64)
old_de_flags=doc_ce->de_flags; old_de_flags=doc_ce->de_flags;
old_color=doc_ce->type; old_color=doc_ce->type;
if (sc>=0) if (sc>=0)
BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); BEqu(&doc_ce->type,DOCEt_SEL,sc&SCF_SHIFT);
if (IsEditableText(doc_ce) && cc<doc_ce->max_col) { if (IsEditableText(doc_ce) && cc<doc_ce->max_col) {
dst=doc_ce->tag+cc; dst=doc_ce->tag+cc;
doc_ne=DocEntryNewTag(doc,doc_ce,dst); doc_ne=DocEntryNewTag(doc,doc_ce,dst);
@@ -141,17 +141,17 @@ public U0 EdCursorRight(CDoc *doc,I64 sc=MIN_I64)
} else { } else {
if (doc_ce!=doc) { if (doc_ce!=doc) {
if (cc<=doc_ce->min_col && sc>=0) if (cc<=doc_ce->min_col && sc>=0)
BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); BEqu(&doc_ce->type,DOCEt_SEL,sc&SCF_SHIFT);
doc_ce=doc_ce->next; doc_ce=doc_ce->next;
while (doc_ce!=doc && doc_ce->de_flags&(DOCEF_SKIP|DOCEF_FILTER_SKIP)) { while (doc_ce!=doc && doc_ce->de_flags&(DOCEF_SKIP|DOCEF_FILTER_SKIP)) {
if (sc>=0) if (sc>=0)
BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); BEqu(&doc_ce->type,DOCEt_SEL,sc&SCF_SHIFT);
doc_ce=doc_ce->next; doc_ce=doc_ce->next;
} }
cc=doc_ce->min_col; cc=doc_ce->min_col;
if (doc_ce->type_u8==DOCT_SOFT_NEW_LINE) { if (doc_ce->type_u8==DOCT_SOFT_NEW_LINE) {
if (sc>=0) if (sc>=0)
BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); BEqu(&doc_ce->type,DOCEt_SEL,sc&SCF_SHIFT);
doc_ce=doc_ce->next; doc_ce=doc_ce->next;
cc=doc_ce->min_col; cc=doc_ce->min_col;
} }
@@ -198,7 +198,7 @@ public U0 EdLineUp(CDoc *doc,I64 sc=MIN_I64)
} else if (doc_ce->last!=doc) } else if (doc_ce->last!=doc)
doc_ce=doc_ce->last; doc_ce=doc_ce->last;
if (sc>=0) if (sc>=0)
BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); BEqu(&doc_ce->type,DOCEt_SEL,sc&SCF_SHIFT);
doc->cur_entry=doc_ce; doc->cur_entry=doc_ce;
DocFormBwd(doc); DocFormBwd(doc);
doc_ce=doc->cur_entry; doc_ce=doc->cur_entry;
@@ -206,14 +206,14 @@ public U0 EdLineUp(CDoc *doc,I64 sc=MIN_I64)
doc_ce->de_flags & (DOCEF_SKIP|DOCEF_FILTER_SKIP))) { doc_ce->de_flags & (DOCEF_SKIP|DOCEF_FILTER_SKIP))) {
doc_ce=doc_ce->last; doc_ce=doc_ce->last;
if (sc>=0) if (sc>=0)
BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); BEqu(&doc_ce->type,DOCEt_SEL,sc&SCF_SHIFT);
} }
y=doc_ce->y; y=doc_ce->y;
doc->y=y; doc->y=y;
while (doc_ce!=doc && (doc_ce->y>=y && doc_ce->x>=x || while (doc_ce!=doc && (doc_ce->y>=y && doc_ce->x>=x ||
doc_ce->de_flags & (DOCEF_SKIP|DOCEF_FILTER_SKIP))) { doc_ce->de_flags & (DOCEF_SKIP|DOCEF_FILTER_SKIP))) {
if (sc>=0) if (sc>=0)
BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); BEqu(&doc_ce->type,DOCEt_SEL,sc&SCF_SHIFT);
doc_ce=doc_ce->last; doc_ce=doc_ce->last;
} }
@@ -222,7 +222,7 @@ public U0 EdLineUp(CDoc *doc,I64 sc=MIN_I64)
else { else {
if (!IsEditableText(doc_ce)) { if (!IsEditableText(doc_ce)) {
if (sc>=0) if (sc>=0)
BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); BEqu(&doc_ce->type,DOCEt_SEL,sc&SCF_SHIFT);
} else { } else {
if (doc_ce->next->x==x) { if (doc_ce->next->x==x) {
doc_ce=doc_ce->next; doc_ce=doc_ce->next;
@@ -259,9 +259,9 @@ public U0 EdLineUp(CDoc *doc,I64 sc=MIN_I64)
*dst=0; *dst=0;
if (sc>=0) { if (sc>=0) {
if (sc&SCF_SHIFT) if (sc&SCF_SHIFT)
doc_ne->type=doc_ce->type | DOCET_SELECTED; doc_ne->type=doc_ce->type | DOCET_SEL;
else else
doc_ne->type=doc_ce->type & ~DOCET_SELECTED; doc_ne->type=doc_ce->type & ~DOCET_SEL;
} }
doc_ne->x=doc_ce->x+doc->cur_col; doc_ne->x=doc_ce->x+doc->cur_col;
doc_ce->max_col=doc->cur_col; doc_ce->max_col=doc->cur_col;
@@ -305,9 +305,9 @@ public U0 EdLineDown(CDoc *doc,I64 sc=MIN_I64)
*dst=0; *dst=0;
if (sc>=0) { if (sc>=0) {
if (sc&SCF_SHIFT) if (sc&SCF_SHIFT)
doc_ne->type=doc_ce->type | DOCET_SELECTED; doc_ne->type=doc_ce->type | DOCET_SEL;
else else
doc_ne->type=doc_ce->type & ~DOCET_SELECTED; doc_ne->type=doc_ce->type & ~DOCET_SEL;
} }
doc_ne->x=doc_ce->x+doc->cur_col; doc_ne->x=doc_ce->x+doc->cur_col;
doc_ce->max_col=doc->cur_col; doc_ce->max_col=doc->cur_col;
@@ -345,7 +345,7 @@ public U0 EdLineDown(CDoc *doc,I64 sc=MIN_I64)
doc_ce2->de_flags & (DOCEF_SKIP|DOCEF_FILTER_SKIP) || doc_ce2->de_flags & (DOCEF_SKIP|DOCEF_FILTER_SKIP) ||
doc_ce2->x==x && !doc_ce2->max_col && doc_ce2->x==x && !doc_ce2->max_col &&
Bt(doldoc.type_flags_nontag_invisible,doc_ce2->type_u8)) && sc>=0) Bt(doldoc.type_flags_nontag_invisible,doc_ce2->type_u8)) && sc>=0)
BEqu(&doc_ce2->type,DOCEt_SELECTED,sc&SCF_SHIFT); BEqu(&doc_ce2->type,DOCEt_SEL,sc&SCF_SHIFT);
if (doc_ce2==doc_ce) break; if (doc_ce2==doc_ce) break;
doc_ce2=doc_ce2->next; doc_ce2=doc_ce2->next;
} }
@@ -377,7 +377,7 @@ public U0 EdLineDown(CDoc *doc,I64 sc=MIN_I64)
if (!(doc->flags & DOCF_FORM)) if (!(doc->flags & DOCF_FORM))
while (doc_ce!=doc && doc_ce!=doc->cur_entry) { while (doc_ce!=doc && doc_ce!=doc->cur_entry) {
if (sc>=0) if (sc>=0)
BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); BEqu(&doc_ce->type,DOCEt_SEL,sc&SCF_SHIFT);
doc_ce=doc_ce->next; doc_ce=doc_ce->next;
} }
doc->x=doc->cur_entry->x+doc->cur_col; doc->x=doc->cur_entry->x+doc->cur_col;
+6 -6
View File
@@ -8,15 +8,15 @@ public U0 ClipboardDel()
} }
public U0 EdCopyToClipboard(CDoc *doc) public U0 EdCopyToClipboard(CDoc *doc)
{//Copy $LK,"DOCET_SELECTED",A="MN:DOCET_SELECTED"$ flagged entries to clipboard. {//Copy $LK,"DOCET_SEL",A="MN:DOCET_SEL"$ flagged entries to clipboard.
CDoc *doc2=sys_clipboard_doc; CDoc *doc2=sys_clipboard_doc;
Bool unlock_doc=DocLock(doc), Bool unlock_doc=DocLock(doc),
unlock_doc2=DocLock(doc2); unlock_doc2=DocLock(doc2);
CDocEntry *doc_e=doc->root.next,*doc_ne; CDocEntry *doc_e=doc->root.next,*doc_ne;
ClipboardDel; ClipboardDel;
while (doc_e!=doc) { while (doc_e!=doc) {
if (doc_e->type & DOCET_SELECTED) { if (doc_e->type & DOCET_SEL) {
doc_e->type&=~DOCET_SELECTED; doc_e->type&=~DOCET_SEL;
if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) { if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) {
doc_ne=DocEntryCopy(doc2,doc_e); doc_ne=DocEntryCopy(doc2,doc_e);
QueIns(doc_ne,doc2->root.last); QueIns(doc_ne,doc2->root.last);
@@ -31,7 +31,7 @@ public U0 EdCopyToClipboard(CDoc *doc)
} }
public U0 EdCutToClipboard(CDoc *doc) public U0 EdCutToClipboard(CDoc *doc)
{//Remove selected entries and place on clipboard. {//Remove sel entries and place on clipboard.
CDoc *doc2=sys_clipboard_doc; CDoc *doc2=sys_clipboard_doc;
Bool unlock_doc=DocLock(doc), Bool unlock_doc=DocLock(doc),
unlock_doc2=DocLock(doc2); unlock_doc2=DocLock(doc2);
@@ -39,8 +39,8 @@ public U0 EdCutToClipboard(CDoc *doc)
ClipboardDel; ClipboardDel;
while (doc_e!=doc) { while (doc_e!=doc) {
doc_e1=doc_e->next; doc_e1=doc_e->next;
if (doc_e->type & DOCET_SELECTED) { if (doc_e->type & DOCET_SEL) {
doc_e->type&=~DOCET_SELECTED; doc_e->type&=~DOCET_SEL;
if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) { if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) {
doc_ne=DocEntryCopy(doc2,doc_e); doc_ne=DocEntryCopy(doc2,doc_e);
QueIns(doc_ne,doc2->root.last); QueIns(doc_ne,doc2->root.last);
+21 -20
View File
@@ -1,29 +1,29 @@
#help_index "DolDoc/Misc" #help_index "DolDoc/Misc"
U0 EdReplaceTroubleOne(CDoc *doc,U8 *st_original,U8 *st_safe,I64 num, U0 EdReplaceTroubleOne(CDoc *doc,U8 *st_original,U8 *st_safe,I64 num,
Bool to_safe,Bool select) Bool to_safe,Bool sel)
{ {
U8 buf[STR_LEN]; U8 buf[STR_LEN];
StrPrint(buf,st_safe,num); StrPrint(buf,st_safe,num);
if (to_safe) if (to_safe)
EdReplace(doc,st_original,buf,select); EdReplace(doc,st_original,buf,sel);
else else
EdReplace(doc,buf,st_original,select); EdReplace(doc,buf,st_original,sel);
} }
U0 EdReplaceTroubleAll(CDoc *doc,Bool to_safe,Bool select) U0 EdReplaceTroubleAll(CDoc *doc,Bool to_safe,Bool sel)
{ {
I64 i=0; I64 i=0;
EdReplaceTroubleOne(doc,"#assert" ,"//<@%d@>" ,i++,to_safe,select); EdReplaceTroubleOne(doc,"#assert" ,"//<@%d@>" ,i++,to_safe,sel);
EdReplaceTroubleOne(doc,"#define" ,"//<@%d@>" ,i++,to_safe,select); EdReplaceTroubleOne(doc,"#define" ,"//<@%d@>" ,i++,to_safe,sel);
EdReplaceTroubleOne(doc,"#include","//<@%d@>" ,i++,to_safe,select); EdReplaceTroubleOne(doc,"#include","//<@%d@>" ,i++,to_safe,sel);
//#if will match #if,#ifdef,#ifndef,#ifaot and #ifjit //#if will match #if,#ifdef,#ifndef,#ifaot and #ifjit
EdReplaceTroubleOne(doc,"#if" ,"//<@%d@>" ,i++,to_safe,select); EdReplaceTroubleOne(doc,"#if" ,"//<@%d@>" ,i++,to_safe,sel);
EdReplaceTroubleOne(doc,"#endif" ,"//<@%d@>" ,i++,to_safe,select); EdReplaceTroubleOne(doc,"#endif" ,"//<@%d@>" ,i++,to_safe,sel);
//Convert #exe to union because we want that indent pattern. //Convert #exe to union because we want that indent pattern.
EdReplaceTroubleOne(doc,"#exe" ,"union @%d@",i++,to_safe,select); EdReplaceTroubleOne(doc,"#exe" ,"union @%d@",i++,to_safe,sel);
EdReplaceTroubleOne(doc,"'{'" ,"'<@%d@>'" ,i++,to_safe,select); EdReplaceTroubleOne(doc,"'{'" ,"'<@%d@>'" ,i++,to_safe,sel);
EdReplaceTroubleOne(doc,"'}'" ,"'<@%d@>'" ,i++,to_safe,select); EdReplaceTroubleOne(doc,"'}'" ,"'<@%d@>'" ,i++,to_safe,sel);
} }
#define C_INDENT_SPACES 2 #define C_INDENT_SPACES 2
@@ -76,7 +76,7 @@ I64 EdRILex(CRILex *rx)
!rx->exp_depth || i==KW_ELSE || i==KW_CATCH || i==KW_DO) !rx->exp_depth || i==KW_ELSE || i==KW_CATCH || i==KW_DO)
rx->is_not_cont=TRUE; rx->is_not_cont=TRUE;
if (rx->was_new_line && (rx->cc1->token!=':' || i==KW_CASE || if (rx->was_new_line && (rx->cc1->token!=':' || i==KW_CASE ||
i==KW_DFT || i==KW_SUB_SWITCH_START || i==KW_SUB_SWITCH_END)) { i==KW_DFT || i==KW_START || i==KW_END)) {
tempf=rx->cc2->lex_include_stk; tempf=rx->cc2->lex_include_stk;
while (tempf->next) while (tempf->next)
tempf=tempf->next; tempf=tempf->next;
@@ -189,13 +189,13 @@ U0 EdRIStmt(CRILex *rx,Bool indent)
i=0; i=0;
while (rx->cc1->token && rx->cc1->token!='}') { while (rx->cc1->token && rx->cc1->token!='}') {
switch (PrsKeyWord(rx->cc1)) { switch (PrsKeyWord(rx->cc1)) {
case KW_SUB_SWITCH_START: case KW_START:
rx->depth+=i; i=0; rx->depth+=i; i=0;
while (EdRILex(rx) && rx->cc1->token!=':'); while (EdRILex(rx) && rx->cc1->token!=':');
EdRILex(rx); EdRILex(rx);
i++; i++;
break; break;
case KW_SUB_SWITCH_END: case KW_END:
rx->depth+=i; i=0; rx->depth+=i; i=0;
if (--rx->depth<0) rx->depth=0; if (--rx->depth<0) rx->depth=0;
while (EdRILex(rx) && rx->cc1->token!=':'); while (EdRILex(rx) && rx->cc1->token!=':');
@@ -336,7 +336,7 @@ I64 EdRAGetU8(CDoc *doc)
{ {
I64 res=-1; I64 res=-1;
while (doc->cur_entry!=doc && while (doc->cur_entry!=doc &&
doc->cur_entry->type&DOCET_SELECTED && res<0) { doc->cur_entry->type&DOCET_SEL && res<0) {
res=EdCurU8(doc); res=EdCurU8(doc);
EdCursorRight(doc); EdCursorRight(doc);
} }
@@ -393,7 +393,7 @@ U0 EdRenumAsm(CDoc *doc)
buf2[sizeof(CEdFindText.find_text)]; buf2[sizeof(CEdFindText.find_text)];
QueInit(&root); QueInit(&root);
EdSelectFun(doc,TRUE); EdSelFun(doc,TRUE);
EdRACollect(doc,&root); EdRACollect(doc,&root);
tempr=root.next; tempr=root.next;
@@ -412,7 +412,7 @@ U0 EdRenumAsm(CDoc *doc)
EdReplace(doc,buf,buf2,TRUE,TRUE,TRUE); EdReplace(doc,buf,buf2,TRUE,TRUE,TRUE);
num-=ASM_RENUM_SPACING; num-=ASM_RENUM_SPACING;
} }
EdSelectAll(doc,FALSE); EdSelAll(doc,FALSE);
DocRecalc(doc); DocRecalc(doc);
DocCenter(doc); DocCenter(doc);
if (unlock) if (unlock)
@@ -479,9 +479,10 @@ U0 EdCodeTools2(CDoc *doc,I64 tool_action,Bool beep=TRUE)
prj_file=FileNameAbs(st,FUF_Z_OR_NOT_Z); prj_file=FileNameAbs(st,FUF_Z_OR_NOT_Z);
Free(st); Free(st);
if (FileFind(prj_file)) if (FileFind(prj_file))
st=MStrPrint("\"$$WW,1$$\";ExeFile(\"%s\",TRUE);",prj_file); st=MStrPrint("\"$$WW,1$$\";ExeFile(\"%s\",CCF_JUST_LOAD);",prj_file);
else else
st=MStrPrint("\"$$WW,1$$\";ExeFile(\"%s\",TRUE);",doc->filename.name); st=MStrPrint("\"$$WW,1$$\";ExeFile(\"%s\",CCF_JUST_LOAD);",
doc->filename.name);
tempc=TaskExe(task,Fs,st,1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER); tempc=TaskExe(task,Fs,st,1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER);
Free(st); Free(st);
if (JobResScan(tempc,&r) && r) if (JobResScan(tempc,&r) && r)
+19 -19
View File
@@ -106,8 +106,8 @@ public U0 EdFindNext(CDoc *doc)
if (doc_e!=doc) { if (doc_e!=doc) {
if (doc_e->de_flags&DOCEF_TAG && doc_e->tag && if (doc_e->de_flags&DOCEF_TAG && doc_e->tag &&
!(doc_e->de_flags&(DOCEG_DONT_EDIT|DOCEF_FILTER_SKIP))) { !(doc_e->de_flags&(DOCEG_DONT_EDIT|DOCEF_FILTER_SKIP))) {
if (doc_e->type & DOCET_SELECTED || if (doc_e->type & DOCET_SEL ||
!doc->find_replace->scan_selected_text) { !doc->find_replace->scan_sel_text) {
if (doc->find_replace->scan_fwd) { if (doc->find_replace->scan_fwd) {
if (doc_e==doc_ce) { if (doc_e==doc_ce) {
ptr=doc_ce->tag+doc->cur_col+1; ptr=doc_ce->tag+doc->cur_col+1;
@@ -167,12 +167,12 @@ fn_skip:
DocUnlock(doc); DocUnlock(doc);
} }
public U0 EdSelectAll(CDoc *doc,Bool select) public U0 EdSelAll(CDoc *doc,Bool sel)
{//Set state of $LK,"DOCET_SELECTED",A="MN:DOCET_SELECTED"$ on all entries. {//Set state of $LK,"DOCET_SEL",A="MN:DOCET_SEL"$ on all entries.
Bool unlock=DocLock(doc); Bool unlock=DocLock(doc);
CDocEntry *doc_e=doc->root.next; CDocEntry *doc_e=doc->root.next;
while (doc_e!=doc) { while (doc_e!=doc) {
BEqu(&doc_e->type,DOCEt_SELECTED,select); BEqu(&doc_e->type,DOCEt_SEL,sel);
doc_e=doc_e->next; doc_e=doc_e->next;
} }
if (unlock) if (unlock)
@@ -319,13 +319,13 @@ public Bool EdGoToFun(CDoc *doc,Bool fwd,Bool abort_on_dbl_colon)
return res; return res;
} }
public U0 EdSelectFun(CDoc *doc,Bool abort_on_dbl_colon=FALSE) public U0 EdSelFun(CDoc *doc,Bool abort_on_dbl_colon=FALSE)
{//Set $LK,"DOCET_SELECTED",A="MN:DOCET_SELECTED"$ on all entries in cur fun. {//Set $LK,"DOCET_SEL",A="MN:DOCET_SEL"$ on all entries in cur fun.
Bool unlock=DocLock(doc); Bool unlock=DocLock(doc);
U8 *ptr; U8 *ptr;
I64 ch,levels=0,colons=0; I64 ch,levels=0,colons=0;
CDocEntry *doc_e; CDocEntry *doc_e;
EdSelectAll(doc,FALSE); EdSelAll(doc,FALSE);
EdGoToFun(doc,FALSE,abort_on_dbl_colon); EdGoToFun(doc,FALSE,abort_on_dbl_colon);
if (EdCurU8(doc)=='{') if (EdCurU8(doc)=='{')
levels--; levels--;
@@ -336,7 +336,7 @@ public U0 EdSelectFun(CDoc *doc,Bool abort_on_dbl_colon=FALSE)
} }
doc_e=doc->cur_entry; doc_e=doc->cur_entry;
while (doc_e!=doc) { while (doc_e!=doc) {
doc_e->type|=DOCET_SELECTED; doc_e->type|=DOCET_SEL;
if (doc_e->de_flags&DOCEF_TAG && doc_e->tag) { if (doc_e->de_flags&DOCEF_TAG && doc_e->tag) {
ptr=doc_e->tag; ptr=doc_e->tag;
if (doc_e==doc->cur_entry) if (doc_e==doc->cur_entry)
@@ -406,10 +406,10 @@ I64 EdFindReplace(CDoc *doc)
if (doc_ce->de_flags&DOCEF_TAG && doc_ce->tag && if (doc_ce->de_flags&DOCEF_TAG && doc_ce->tag &&
!(doc_ce->de_flags&DOCEF_FILTER_SKIP) && !(doc_ce->de_flags&DOCEF_FILTER_SKIP) &&
StrFind(doc->find_replace->find_text,doc_ce->tag,sf_flags)) { StrFind(doc->find_replace->find_text,doc_ce->tag,sf_flags)) {
doc_ce->type|=DOCET_SELECTED; doc_ce->type|=DOCET_SEL;
res++; res++;
} else } else
doc_ce->type&=~DOCET_SELECTED; doc_ce->type&=~DOCET_SEL;
doc_ce=doc_ce->next; doc_ce=doc_ce->next;
} }
@@ -420,7 +420,7 @@ I64 EdFindReplace(CDoc *doc)
doc_e=doc_ce; doc_e=doc_ce;
while (doc_e!=doc && doc_e->y>doc_ce->y-i) { while (doc_e!=doc && doc_e->y>doc_ce->y-i) {
if (doc_e->type&DOCET_SELECTED) { if (doc_e->type&DOCET_SEL) {
found=TRUE; found=TRUE;
break; break;
} else } else
@@ -430,7 +430,7 @@ I64 EdFindReplace(CDoc *doc)
if (!found) { if (!found) {
doc_e=doc_ce; doc_e=doc_ce;
while (doc_e!=doc && doc_e->y<doc_ce->y+i) { while (doc_e!=doc && doc_e->y<doc_ce->y+i) {
if (doc_e->type&DOCET_SELECTED) { if (doc_e->type&DOCET_SEL) {
found=TRUE; found=TRUE;
break; break;
} else } else
@@ -444,12 +444,12 @@ I64 EdFindReplace(CDoc *doc)
doc_ce=doc_ce->next; doc_ce=doc_ce->next;
} }
EdSelectAll(doc,FALSE); EdSelAll(doc,FALSE);
goto fr_unlock_done; goto fr_unlock_done;
} }
if (doc->find_replace->local_var) if (doc->find_replace->local_var)
EdSelectFun(doc); EdSelFun(doc);
if (!doc->find_replace->replace && !doc->find_replace->local_var) { if (!doc->find_replace->replace && !doc->find_replace->local_var) {
EdFindNext(doc); EdFindNext(doc);
@@ -473,8 +473,8 @@ I64 EdFindReplace(CDoc *doc)
} }
if (doc_e->type_u8==DOCT_TEXT && if (doc_e->type_u8==DOCT_TEXT &&
!(doc_e->de_flags&(DOCEG_DONT_EDIT|DOCEF_FILTER_SKIP)) && !(doc_e->de_flags&(DOCEG_DONT_EDIT|DOCEF_FILTER_SKIP)) &&
(doc_e->type & DOCET_SELECTED || (doc_e->type & DOCET_SEL ||
!doc->find_replace->scan_selected_text&& !doc->find_replace->scan_sel_text&&
!doc->find_replace->local_var)) { !doc->find_replace->local_var)) {
src=doc_e->tag; src=doc_e->tag;
while (src) { while (src) {
@@ -541,7 +541,7 @@ fr_unlock_done:
} }
public I64 EdReplace(CDoc *doc,U8 *find,U8 *replace, public I64 EdReplace(CDoc *doc,U8 *find,U8 *replace,
Bool selected=TRUE,Bool match_case=TRUE,Bool whole_labels=FALSE) Bool sel=TRUE,Bool match_case=TRUE,Bool whole_labels=FALSE)
{//Find & replace using editor's cmd. {//Find & replace using editor's cmd.
CEdFindText old_find_replace; CEdFindText old_find_replace;
Bool unlock; Bool unlock;
@@ -557,7 +557,7 @@ Bool selected=TRUE,Bool match_case=TRUE,Bool whole_labels=FALSE)
if (i<sizeof(CEdFindText.replace_text)) { if (i<sizeof(CEdFindText.replace_text)) {
MemCpy(doc->find_replace->replace_text,replace,i+1); MemCpy(doc->find_replace->replace_text,replace,i+1);
doc->find_replace->replace=TRUE; doc->find_replace->replace=TRUE;
doc->find_replace->scan_selected_text=selected; doc->find_replace->scan_sel_text=sel;
doc->find_replace->match_case=match_case; doc->find_replace->match_case=match_case;
doc->find_replace->whole_labels=whole_labels; doc->find_replace->whole_labels=whole_labels;
doc->find_replace->pmt=FALSE; doc->find_replace->pmt=FALSE;
+2 -2
View File
@@ -24,8 +24,8 @@ public I64 PopUpColorLighting(U8 *header=NULL)
CDoc *doc=DocNew; CDoc *doc=DocNew;
if (header) if (header)
DocPrint(doc,"%s",header); DocPrint(doc,"%s",header);
DocPrint(doc,"\nSingle-Sided means both sides same color." DocPrint(doc,"\nSingle-Sided means front and back different."
"\nDouble-Sided means back side darker." "\nDouble-Sided means front and back same."
"\n" "\n"
"\nHalf-Range means 0 to [0,7]" "\nHalf-Range means 0 to [0,7]"
"\n [8,15]-8 to [8,15]" "\n [8,15]-8 to [8,15]"
+1 -1
View File
@@ -1,7 +1,7 @@
#help_index "DolDoc/Misc" #help_index "DolDoc/Misc"
U32 *DocHighlight(CDocEntry *doc_e,U8 *src,I64 len,I64 _temp_u32_attr) U32 *DocHighlight(CDocEntry *doc_e,U8 *src,I64 len,I64 _temp_u32_attr)
{//Be aware of $LK,"::/Demo/ToHtmlToTXTExample/ToHtml.CPP"$. {//Be aware of $LK,"::/Demo/ToHtmlToTXTDemo/ToHtml.CPP"$.
U32 *res=MAlloc((len+1)*sizeof(U32)),*dst=res; U32 *res=MAlloc((len+1)*sizeof(U32)),*dst=res;
U8 *ptr; U8 *ptr;
CDocSettings *s=&doc_e->settings; CDocSettings *s=&doc_e->settings;
+3 -3
View File
@@ -10,7 +10,7 @@ I64 PrsDocFlagSingle(CCmpCtrl *cc,I64 *_de_flags,U32 *_type,Bool turn_on)
if (res<64) { if (res<64) {
BEqu(_de_flags,res,turn_on); BEqu(_de_flags,res,turn_on);
switch (res) { switch (res) {
case DOCEf_SELECTED: case DOCEf_SEL:
case DOCEf_UNDERLINE: case DOCEf_UNDERLINE:
case DOCEf_INVERT: case DOCEf_INVERT:
case DOCEf_BLINK: case DOCEf_BLINK:
@@ -56,7 +56,7 @@ U8 *Doc2PlainText(CDoc *doc,CDocEntry *doc_e)
f1=doldoc.dft_de_flags[doc_e->type_u8]; f1=doldoc.dft_de_flags[doc_e->type_u8];
t1=doc_e->type_u8|doldoc.dft_type_flags[doc_e->type_u8]; t1=doc_e->type_u8|doldoc.dft_type_flags[doc_e->type_u8];
de_flags=doc_e->de_flags&~(DOCG_BL_IV_UL|DOCEF_SELECTED| de_flags=doc_e->de_flags&~(DOCG_BL_IV_UL|DOCEF_SEL|
DOCEF_HIGHLIGHT|DOCEF_WORD_WRAP|DOCEF_SKIP|DOCEF_FILTER_SKIP); DOCEF_HIGHLIGHT|DOCEF_WORD_WRAP|DOCEF_SKIP|DOCEF_FILTER_SKIP);
for (i=0;i<DOCEf_NUM_FLAGS;i++) for (i=0;i<DOCEf_NUM_FLAGS;i++)
if (Bt(&f1,i)!=Bt(&de_flags,i)) { if (Bt(&f1,i)!=Bt(&de_flags,i)) {
@@ -70,7 +70,7 @@ U8 *Doc2PlainText(CDoc *doc,CDocEntry *doc_e)
Free(buf); buf=buf2; Free(buf); buf=buf2;
} }
} }
type=doc_e->type&~DOCET_SELECTED; type=doc_e->type&~DOCET_SEL;
for (i=DOCEt_BLINK;i<=DOCEt_UNDERLINE;i++) for (i=DOCEt_BLINK;i<=DOCEt_UNDERLINE;i++)
if (Bt(&t1,i)!=Bt(&type,i)) { if (Bt(&t1,i)!=Bt(&type,i)) {
if (Bt(&type,i)) if (Bt(&type,i))
+3 -1
View File
@@ -112,6 +112,7 @@ public U8 *PopUpPickLst(U8 *lst)
return i; return i;
} }
#help_index "DolDoc/Input;Char/Lists;Char/Define;StdIn/DolDoc"
public U8 *PopUpPickDefineSub(U8 *dname) public U8 *PopUpPickDefineSub(U8 *dname)
{//Prompt for $LK,"Define",A="HI:Define"$ lst entry in PopUp win task. {//Prompt for $LK,"Define",A="HI:Define"$ lst entry in PopUp win task.
return PopUpPickLst(Define(dname)); return PopUpPickLst(Define(dname));
@@ -295,7 +296,8 @@ public I64 PopUpFile(U8 *filename,Bool warn_ext=TRUE,
okay=FALSE; okay=FALSE;
if (okay) { if (okay) {
st=MStrPrint( st=MStrPrint(
"\"$$$$WW+H,1$$$$\";Auto(\"ExeFile2(\\\"%s\\\");\\n\");UserTaskCont;", "\"$$$$WW+H,1$$$$\";Auto(\"ExeFile2(\\\"%s\\\",CCF_CMD_LINE);\\n\");"
"UserTaskCont;",
name2); name2);
res=PopUp(st,parent,_pu_task); res=PopUp(st,parent,_pu_task);
Free(st); Free(st);
+12 -12
View File
@@ -45,7 +45,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
if (!(sc&SCF_CTRL)) { if (!(sc&SCF_CTRL)) {
if (sc&SCF_KEY_DESC) { if (sc&SCF_KEY_DESC) {
if (sc&SCF_SHIFT) if (sc&SCF_SHIFT)
KeyDescSet("Edit/Cursor Down, Select"); KeyDescSet("Edit/Cursor Down, Sel");
else else
KeyDescSet("Edit/Cursor Down"); KeyDescSet("Edit/Cursor Down");
} else } else
@@ -58,12 +58,12 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
if (!(sc&SCF_CTRL)) { if (!(sc&SCF_CTRL)) {
if (sc&SCF_KEY_DESC) { if (sc&SCF_KEY_DESC) {
if (sc&SCF_SHIFT) if (sc&SCF_SHIFT)
KeyDescSet("Edit/GoTo Doc End, Select"); KeyDescSet("Edit/GoTo Doc End, Sel");
else else
KeyDescSet("Edit/GoTo Doc End"); KeyDescSet("Edit/GoTo Doc End");
} else { } else {
while (doc_ce!=doc) { while (doc_ce!=doc) {
BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); BEqu(&doc_ce->type,DOCEt_SEL,sc&SCF_SHIFT);
doc_ce=doc->cur_entry=doc_ce->next; doc_ce=doc->cur_entry=doc_ce->next;
} }
doc->cur_col=doc_ce->min_col; doc->cur_col=doc_ce->min_col;
@@ -75,7 +75,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
if (!(sc&SCF_CTRL)) { if (!(sc&SCF_CTRL)) {
if (sc&SCF_KEY_DESC) { if (sc&SCF_KEY_DESC) {
if (sc&SCF_SHIFT) if (sc&SCF_SHIFT)
KeyDescSet("Edit/Cursor Up, Select"); KeyDescSet("Edit/Cursor Up, Sel");
else else
KeyDescSet("Edit/Cursor Up"); KeyDescSet("Edit/Cursor Up");
} else } else
@@ -88,13 +88,13 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
if (!(sc&SCF_CTRL)) { if (!(sc&SCF_CTRL)) {
if (sc&SCF_KEY_DESC) { if (sc&SCF_KEY_DESC) {
if (sc&SCF_SHIFT) if (sc&SCF_SHIFT)
KeyDescSet("Edit/GoTo Top of Doc, Select"); KeyDescSet("Edit/GoTo Top of Doc, Sel");
else else
KeyDescSet("Edit/GoTo Top of Doc"); KeyDescSet("Edit/GoTo Top of Doc");
} else { } else {
if (doc_ce==doc) doc_ce=doc_ce->last; if (doc_ce==doc) doc_ce=doc_ce->last;
while (doc_ce!=doc) { while (doc_ce!=doc) {
BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); BEqu(&doc_ce->type,DOCEt_SEL,sc&SCF_SHIFT);
doc_ce=doc->cur_entry=doc_ce->last; doc_ce=doc->cur_entry=doc_ce->last;
} }
doc_ce=doc->cur_entry=doc->root.next; doc_ce=doc->cur_entry=doc->root.next;
@@ -107,7 +107,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
if (!(sc&SCF_CTRL)) { if (!(sc&SCF_CTRL)) {
if (sc&SCF_KEY_DESC) { if (sc&SCF_KEY_DESC) {
if (sc&SCF_SHIFT) if (sc&SCF_SHIFT)
KeyDescSet("Edit/Page Down, Select"); KeyDescSet("Edit/Page Down, Sel");
else else
KeyDescSet("Edit/Page Down"); KeyDescSet("Edit/Page Down");
} else { } else {
@@ -131,7 +131,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
if (!(sc&SCF_CTRL)) { if (!(sc&SCF_CTRL)) {
if (sc&SCF_KEY_DESC) { if (sc&SCF_KEY_DESC) {
if (sc&SCF_SHIFT) if (sc&SCF_SHIFT)
KeyDescSet("Edit/Page Up, Select"); KeyDescSet("Edit/Page Up, Sel");
else else
KeyDescSet("Edit/Page Up"); KeyDescSet("Edit/Page Up");
}else { }else {
@@ -158,7 +158,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
KeyDescSet("Edit/GoTo Start of Line"); KeyDescSet("Edit/GoTo Start of Line");
else { else {
if (sc&SCF_SHIFT) if (sc&SCF_SHIFT)
KeyDescSet("Edit/Cursor Left, Select"); KeyDescSet("Edit/Cursor Left, Sel");
else else
KeyDescSet("Edit/Cursor Left"); KeyDescSet("Edit/Cursor Left");
} }
@@ -171,7 +171,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
KeyDescSet("Edit/GoTo End of Line"); KeyDescSet("Edit/GoTo End of Line");
else { else {
if (sc&SCF_SHIFT) if (sc&SCF_SHIFT)
KeyDescSet("Edit/Cursor Right, Select"); KeyDescSet("Edit/Cursor Right, Sel");
else else
KeyDescSet("Edit/Cursor Right"); KeyDescSet("Edit/Cursor Right");
} }
@@ -505,12 +505,12 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Cmd /Personal Notes"); KeyDescSet("Cmd /Personal Notes");
else else
Ed("::/Home/PersonalNotes.TXT.Z"); Ed("~/PersonalNotes.TXT.Z");
} else { } else {
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Cmd /Personal Menu"); KeyDescSet("Cmd /Personal Menu");
else { else {
m=DocRead("::/Home/PersonalMenu.TXT.Z"); m=DocRead("~/PersonalMenu.TXT.Z");
DocMenu(m); DocMenu(m);
DocDel(m); DocDel(m);
} }
+1 -1
View File
@@ -968,7 +968,7 @@ rc_adjust_xy:
i=cur_u8_attr>>4 &0xF ^ win_task->text_attr>>4 & 0xF; i=cur_u8_attr>>4 &0xF ^ win_task->text_attr>>4 & 0xF;
else { else {
i=temp_u32_attr>>12&0xF ^ win_task->text_attr>>4 & 0xF; i=temp_u32_attr>>12&0xF ^ win_task->text_attr>>4 & 0xF;
if (temp_u32_attr & DOCET_SELECTED) if (temp_u32_attr & DOCET_SEL)
i^=0xF; i^=0xF;
if (temp_u32_attr & DOCET_INVERT) if (temp_u32_attr & DOCET_INVERT)
i^=0xF; i^=0xF;
+1 -1
View File
@@ -2,7 +2,7 @@
public I64 DocEntryRun(CDoc *doc,CDocEntry *doc_e, public I64 DocEntryRun(CDoc *doc,CDocEntry *doc_e,
Bool exited,I64 *_has_action=NULL) Bool exited,I64 *_has_action=NULL)
{//Do action on final entry selected by user. {//Do action on final entry sel by user.
//Sometimes returns locked, sometimes unlocked //Sometimes returns locked, sometimes unlocked
U8 ch=doc->cmd_U8,*st; U8 ch=doc->cmd_U8,*st;
I64 res=DOCM_CANCEL,has_action=FALSE; I64 res=DOCM_CANCEL,has_action=FALSE;
+1 -1
View File
@@ -121,7 +121,7 @@ I64 TermRightClickLink(CDoc *doc,CDocEntry *doc_e)
} }
"#include \"%s\";\n$$PT$$$$FG$$$$BG$$",st; "#include \"%s\";\n$$PT$$$$FG$$$$BG$$",st;
WinZBufUpdate; WinZBufUpdate;
ExeFile(st); ExeFile(st,CCF_CMD_LINE);
res=TRUE; res=TRUE;
break; break;
case RIGHT_AINCLUDE: case RIGHT_AINCLUDE:
+2 -4
View File
@@ -114,13 +114,11 @@ mt_done:
} }
#help_index "DolDoc/Compiler;Compiler" #help_index "DolDoc/Compiler;Compiler"
public I64 ExeDoc(CDoc *doc,Bool just_load=FALSE) public I64 ExeDoc(CDoc *doc,I64 ccf_flags=0)
{//JIT Compile and execute a document. {//JIT Compile and execute a document.
I64 res; I64 res;
Bool okay=TRUE,unlock_doc=DocLock(doc); Bool okay=TRUE,unlock_doc=DocLock(doc);
CCmpCtrl *cc=CmpCtrlNew(,CCF_DONT_FREE_BUF); CCmpCtrl *cc=CmpCtrlNew(,ccf_flags|CCF_DONT_FREE_BUF);
if (just_load)
cc->flags|=CCF_JUST_LOAD;
if (Fs->last_lex!=&Fs->next_lex) if (Fs->last_lex!=&Fs->next_lex)
cc->opts=Fs->last_lex->opts; cc->opts=Fs->last_lex->opts;
QueIns(cc,Fs->last_lex); QueIns(cc,Fs->last_lex);
+1 -1
View File
@@ -860,7 +860,7 @@ U0 EdInsCheckBox()
class CEdLst class CEdLst
{ {
U8 tag[512] fmtstr "$$DA-P,A=\"Dft Select :%s\"$$\n", U8 tag[512] fmtstr "$$DA-P,A=\"Dft Sel :%s\"$$\n",
define_str[512] fmtstr "$$DA-P,A=\"Define Str :%s\"$$\n"; define_str[512] fmtstr "$$DA-P,A=\"Define Str :%s\"$$\n";
Bool refresh fmtstr "$$CB,\"Refresh Data\"$$\n"; Bool refresh fmtstr "$$CB,\"Refresh Data\"$$\n";
I64 type fmtstr "$$LS,D=\"ST_INT_SIZE_TYPES\"$$\n"; I64 type fmtstr "$$LS,D=\"ST_INT_SIZE_TYPES\"$$\n";
+13 -13
View File
@@ -4,13 +4,13 @@ $WW,1$The Catholic purpose of life is to know God, love God and obey God.$FG$ P
You don't know God. $LK,"1 Chronicles,28:9-9",A="BF:1 Chronicles,28:9-9"$, $LK,"Matthew,11:27-27",A="BF:Matthew,11:27-27"$, $LK,"Luke,13:25-27",A="BF:Luke,13:25-27"$, $LK,"1 Samuel,3:6-8",A="BF:1 Samuel,3:6-8"$ You must talk with God to know Him. With Samuel, supposedly, God took the initiative, but I think that is the exception. Seek the Lord by taking the initiative. $LK,"Luke,11:9-10",A="BF:Luke,11:9-10"$, $LK,"Isaiah,30:1-2",A="BF:Isaiah,30:1-2"$ You don't know God. $LK,"1 Chronicles,28:9-9",A="BF:1 Chronicles,28:9-9"$, $LK,"Matthew,11:27-27",A="BF:Matthew,11:27-27"$, $LK,"Luke,13:25-27",A="BF:Luke,13:25-27"$, $LK,"1 Samuel,3:6-8",A="BF:1 Samuel,3:6-8"$ You must talk with God to know Him. With Samuel, supposedly, God took the initiative, but I think that is the exception. Seek the Lord by taking the initiative. $LK,"Luke,11:9-10",A="BF:Luke,11:9-10"$, $LK,"Isaiah,30:1-2",A="BF:Isaiah,30:1-2"$
There's something obviously different about people in the Bible compared to people today -- God talked! Also, the people in the Bible were obsessed with doing offerings all the time. It is required that you do offerings before God will talk. Did the people in the Bible hear voices? Maybe. More likely, they used occult techniques such as an oracle. $LK,"1 Kings,6:20-23",A="BF:1 Kings,6:20-23"$ Have you heard of "tongues?" $LK,"1 Corinthians,14:1-40",A="BF:1 Corinthians,14:1-40"$ The idea is, you let yourself be puppeted by a spirit, so you say things. You try to get a spirit -- the Holy Spirit -- to talk. You might as well use a Ouija board. However, it turns-out that a Ouija board is bad for technical reasons. A really good technique is just randomly opening a book. God told me in an oracle that it is a covenant that you hold-up your end of the conversation. There's something obviously different about people in the Bible compared to people today -- God talked! Also, the people in the Bible were obsessed with doing offerings all the time. It is required that you do offerings before God will talk. Did the people in the Bible hear voices? Maybe. More likely, they used occult techniques such as an oracle. $LK,"1 Kings,6:21",A="BF:1 Kings,6:21"$ Have you heard of "tongues?" $LK,"1 Corinthians,14:1-40",A="BF:1 Corinthians,14:1-40"$ The idea is, you let yourself be puppeted by a spirit, so you say things. You try to get a spirit -- the Holy Spirit -- to talk. You might as well use a Ouija board. However, it turns-out that a Ouija board is bad for technical reasons. A really good technique is just randomly opening a book. God told me in an oracle that it is a covenant that you hold-up your end of the conversation.
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-10",A="BF:Genesis,4:1-10"$, $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/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"$ 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:28-29",A="BF:Matthew,6:28-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-13",A="BF:Acts,2:1-13"$ -- 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:11-13",A="BF:Luke,11:11-13"$ Just remember, "Boys are made of snakes and snails and puppy-dog tails."
The technique I use to consult the Holy Spirit is reading a microsecond-range stop-watch each button press for random numbers. Then, I pick words or passages. You can use the $MA-X+PU,"AfterEgypt",HTML="http://www.youtube.com/watch?v=P0MsDl39UL0",LM="#include \"::/Apps/AfterEgypt/Run\""$ in God's official temple, $FG,4$$TX,"TempleOS",HTML="http://www.templeos.org"$$FG$. The technique I use to consult the Holy Spirit is reading a microsecond-range stop-watch each button press for random numbers. Then, I pick words or passages. You can use the $MA-X+PU,"AfterEgypt",HTML="http://www.youtube.com/watch?v=P0MsDl39UL0",LM="#include \"::/Apps/AfterEgypt/Run\""$ in God's official temple, $FG,4$$TX,"TempleOS",HTML="http://www.templeos.org"$$FG$.
@@ -18,29 +18,29 @@ Since seeking the word of the Holy Spirit, I have come to know God much better t
I asked God if the World was perfectly just. God asked if I was calling Him lazy. God could make A.I., right? God could make bots as smart as Himself, or, in fact, part of Himself. What if God made a bot to manipulate every person's life so that perfect justice happened? I asked God if the World was perfectly just. God asked if I was calling Him lazy. God could make A.I., right? God could make bots as smart as Himself, or, in fact, part of Himself. What if God made a bot to manipulate every person's life so that perfect justice happened?
I think highs and lows balance. $LK,"Luke,6:20",A="BF:Luke,6:20"$ If you laugh, you will cry. If you cry, you will laugh. Not one person has had great joy and not great sorrow. I think this claim is falsifyable if you atheists want to find a counter-example to disprove it -- find a single person who had great joy and not great sorrow. In Sirach, it says things happen in pairs. You might be surprised examining your own life to see great joy was in proximity to great sorrow. Pleasures and pains seem designed to balance. Man must do manual labor and have pain. Women must do child birth. Pride and humility also balance -- pride before a fall and humility before honors. Palm Sunday is juxtaposed to Good Friday. Perhaps, being loved balances with being hated. $LK,"Job",A="BF:Job,1:1"$, in the Bible, had highs and lows that balanced. Joseph, in the Old Testament, had highs and lows that balanced. $LK,"Genesis,39:20",A="BF:Genesis,39:20"$ I think highs and lows balance. $LK,"Luke,6:20-26",A="BF:Luke,6:20-26"$ If you laugh, you will cry. If you cry, you will laugh. Not one person has had great joy and not great sorrow. I think this claim is falsifyable if you atheists want to find a counter-example to disprove it -- find a single person who had great joy and not great sorrow. In Sirach, it says things happen in pairs. You might be surprised examining your own life to see great joy was in proximity to great sorrow. Pleasures and pains seem designed to balance. Man must do manual labor and have pain. Women must do child birth. Pride and humility also balance -- pride before a fall and humility before honors. Palm Sunday is juxtaposed to Good Friday. Perhaps, being loved balances with being hated. $LK,"Job,1:1-22",A="BF:Job,1:1-22"$, in the Bible, had highs and lows that balanced. Joseph, in the Old Testament, had highs and lows that balanced. $LK,"Genesis,39:17-22",A="BF:Genesis,39:17-22"$
Jesus said, "Forgive us our trespasses as we forgive those who tresspass against us." If you think about it, the only way you get forgiven is for it to be done to you. That is a Jedi mind trick because it is nothing but simple eye-for-eye tooth-for-tooth justice. Live by the sword; die by the sword. The Bible is filled with justice pairs. St. Paul persecuted Christians and gained forgiveness by getting persecuted. King David almost got killed by Saul, then he killed a guy and took his wife. Abraham almost killed his unloved son, Ishmael. $LK,"Genesis,21:16",A="BF:Genesis,21:16"$ That is why God asked Abraham to kill Isaac. God's favorite thing on TV is soap operas. Jesus said, "Forgive us our trespasses as we forgive those who tresspass against us." If you think about it, the only way you get forgiven is for it to be done to you. That is a Jedi mind trick because it is nothing but simple eye-for-eye tooth-for-tooth justice. Live by the sword; die by the sword. The Bible is filled with justice pairs. St. Paul persecuted Christians and gained forgiveness by getting persecuted. King David almost got killed by Saul, $LK,"1 Samuel,18:20-21",A="BF:1 Samuel,18:20-21"$ then he killed a guy and took his wife. $LK,"2 Samuel,11:15",A="BF:2 Samuel,11:15"$ Abraham almost killed his unloved son, Ishmael. $LK,"Genesis,21:16",A="BF:Genesis,21:16"$ That is why God asked Abraham to kill Isaac. God's favorite thing on TV is soap operas.
God hates complaining. $LK,"Numbers,11:1",A="BF:Numbers,11:1"$ Food and clothing is all we're to ask for or demand, in fact -- daily bread. $LK,"1 Timothy,6:8",A="BF:1 Timothy,6:8"$ Just think about man in the last 100,000 years mostly living like Native Americans and how God must see us. You need food, clothing and entertainment, money is to get those. Man does not live on bread alone. $LK,"Luke,4:4",A="BF:Luke,4:4"$, $LK,"Amos,8:11",A="BF:Amos,8:11"$ God hates complaining. $LK,"Numbers,11:1-35",A="BF:Numbers,11:1-35"$ Food and clothing is all we're to ask for or demand, in fact -- daily bread. $LK,"1 Timothy,6:8",A="BF:1 Timothy,6:8"$ Just think about man in the last 50,000 years mostly living like Native Americans and how God must see us. You need food, clothing and entertainment, money is to get those. Man does not live on bread alone. $LK,"Luke,4:4",A="BF:Luke,4:4"$, $LK,"Amos,8:11-12",A="BF:Amos,8:11-12"$
God's favorite animals are bears and elephants. They are funny shaped -- I think God must have seen too much starvation over the years. If the purpose of life is to know and love God, then a priest's job is to make everybody know and love God. By saying God likes bears and elephants, I did more toward that end than all priests in history. $LK,"Hosea,6:6",A="BF:Hosea,6:6"$ "It is love that I desire, not sacrifice; knowledge of God, not holocaust." As a former Catholic, that blew my mind. I actually thought love was sacrifice! I was so dumb-founded reading, "it is love that I desire, not sacrifice," that I actually looked-up the word, "love". It means to take delight in. I realized it is demonic pride if you think love means hurting yourself for others. In the Philippians, they got the notion crucifying yourself was a good idea. Similarly, a child thinking about Lent, might conclude, "if it's bad, it must be good." That is, if you think God wants you to hurt yourself to please Him, you are worshiping a demon, not God! God wants you to take delight in His company, get to know Him and praise Him. It is best to separate justice -- sin and punishment -- from relationship with God. Never ask God to change justice into injustice by not punishing. God said to me in an oracle, "Excessive contrician wearisome." He doesn't want to hear confessions. When you pray, be witty and charming and rarely earnest. Enjoy God's company without imposing on Him and don't expect secrets of the Universe. Earnestness in prayer is the root of much evil. Be entertaining. Don't remind Him of sin, LOL. God's favorite animals are bears and elephants. They are funny shaped -- I think God must have seen too much starvation over the years. If the purpose of life is to know and love God, then a priest's job is to make everybody know and love God. By saying God likes bears and elephants, I did more toward that end than all priests in history. $LK,"Hosea,6:6",A="BF:Hosea,6:6"$ "It is love that I desire, not sacrifice; knowledge of God, not holocaust." As a former Catholic, that blew my mind. I actually thought love was sacrifice! I was so dumb-founded reading, "it is love that I desire, not sacrifice," that I actually looked-up the word, "love". It means to take delight in. I realized it is demonic pride if you think love means hurting yourself for others. In the Philippians, they got the notion crucifying yourself was a good idea. Similarly, a child thinking about Lent, might conclude, "if it's bad, it must be good." That is, if you think God wants you to hurt yourself to please Him, you are worshiping a demon, not God! God wants you to take delight in His company, get to know Him and praise Him. It is best to separate justice -- sin and punishment -- from relationship with God. Never ask God to change justice into injustice by not punishing. God said to me in an oracle, "Excessive contrician wearisome." He doesn't want to hear confessions. When you pray, be witty and charming and rarely earnest. Enjoy God's company without imposing on Him and don't expect secrets of the Universe. Earnestness in prayer is the root of much evil. Be entertaining. Don't remind Him of sin, LOL.
God's ways are far above man's ways. Mom said Heaven was a never-ending family reunion. Yikes! A friend said, "Most guy's idea of Heaven would be running around doing things they'd get locked up for on Earth." I wonder how long kids play Grand Theft Auto before getting board. Perhaps, it takes ten years, but they will get bored. Most people are like King Midas. When you realize how silly most notions of Heaven are, you come to appreciate that Earth is not that bad. This is the first step in loving God, the Creator -- praising Creation. My parents spend their retired days watching TV and going to casinos. That's not a good argument for getting extended-play! God's ways are far above man's ways. Mom said Heaven was a never-ending family reunion. Yikes! A friend said, "Most guy's idea of Heaven would be running around doing things they'd get locked up for on Earth." I wonder how long kids play Grand Theft Auto before getting board. Perhaps, it takes ten years, but they will get bored. Most people are like King Midas. When you realize how silly most notions of Heaven are, you come to appreciate that Earth is not that bad. This is the first step in loving God, the Creator -- praising Creation. My parents spend their retired days watching TV and going to casinos. That's not a good argument for getting extended-play!
Imagine a billionare. Everyone around him can't forget his money for even a moment. The truth is, most people are after God's "money" -- they fear for their salvation. Here's a test -- would you pray to and praise God even if there were no salvation? Love God and don't be a "user". Asking for stuff is annoying. $LK,"Luke,11:5",A="BF:Luke,11:5"$ Imagine a billionare. Everyone around him can't forget his money for even a moment. The truth is, most people are after God's "money" -- they fear for their salvation. Here's a test -- would you pray to and praise God even if there were no salvation? Love God and don't be a "user". Asking for stuff is annoying. $LK,"Luke,11:5-7",A="BF:Luke,11:5-7"$ Don't SPAM God.
All those sophisticated theological "infinity" things -- omniscience, omnipotence, omnipresence, omnivorous -- will mess you up. Trust me that anthropomorphic is far better, in practice. Christ suggested thinking of God as "Abba" which is Aramaic for "Daddy" and said the childlike had an advantage. $LK,"Matthew,11:25",A="BF:Matthew,11:25"$ Pray out-loud because God doesn't want the hastle of reading your brain. The best way to stop people from testing God is to suggest He can't do everything. All those sophisticated theological "infinity" things -- omniscience, omnipotence, omnipresence, omnivorous -- will mess you up. Trust me that anthropomorphic is far better, in practice. Christ suggested thinking of God as "Abba" which is Aramaic for "Daddy" and said the childlike had an advantage. $LK,"Matthew,11:25",A="BF:Matthew,11:25"$ Pray out-loud because God doesn't want the hastle of reading your brain. The best way to stop people from testing God is to suggest He can't do everything.
Jesus said, "I am meek and humble of heart." $LK,"Matthew,11:29",A="BF:Matthew,11:29"$ What does "humble of head" mean? Humble of heart means you look around and say, "I don't care as much as they do." A proud of heart person says, "I am superior because I have more compassion then everybody else." If you are proud of heart, you don't accept a gift. God gives birthrights. Esau, in the Bible, scorned his birthright and God hated him. $LK,"Malachi,1:1",A="BF:Malachi,1:1"$ Jesus even accepted $$30,000 worth of perfume (300 day's wages) and caused Judas to betray him. $LK,"Mark,14:5",A="BF:Mark,14:5"$ If you express false outrage at wars, you are proud of heart. If you fight to go in the door last, e.g. "No, you first..." then you are proud of heart. If you ask God to save starving Africans as though you care more than God, you are proud of heart. Jesus said, "I am meek and humble of heart." $LK,"Matthew,11:29",A="BF:Matthew,11:29"$ What does "humble of head" mean? Humble of heart means you look around and say, "I don't care as much as they do." A proud of heart person says, "I am superior because I have more compassion then everybody else." If you are proud of heart, you don't accept a gift. God gives birthrights. Esau, in the Bible, scorned his birthright and God hated him. $LK,"Malachi,1:2-3",A="BF:Malachi,1:2-3"$ Jesus even accepted $$30,000 worth of perfume (300 day's wages) and caused Judas to betray him. $LK,"Mark,14:5",A="BF:Mark,14:5"$ If you express false outrage at wars, you are proud of heart. If you fight to go in the door last, e.g. "No, you first..." then you are proud of heart. If you ask God to save starving Africans as though you care more than God, you are proud of heart.
I connected being humble of heart with animal sacrifices. The animal sacrifices in the Bible really seem off-the-mark from what we modern people imagine truth to be! I asked God and He said the people were, "primitive." Well, obviously, a sacrifice represents giving-up something of value, but is there more to it? It would be tramatic to see a goat's throat being slit and it dying for your sins. I'm not an expert, but sometimes they killed animals to make-up for sins. Perhaps, starting at age eight and every year thereafter, they kill a goat for your sins? (I'm just speculating.) In a couple years, it is not tramatic and you yawn and say to the goat, "bummer for you, Mr. Goat, that you gotta die for my sins." When a high school football team beats their rivals, nobody thinks twice that the winning team really hurts the feelings -- devastates -- the losing team member's feelings. The heart of being masculine is being competetive and not caring about the necessity to slit the throat of the goat. As a Catholic, saying Jesus died for our sins and that we cannot earn salvation, never sat well. I clung to the heretical notion that you earn salvation. Animal sacrifices were the heart of Biblical Judaism and although it seems satanic, you really do have to slit the throat of the goat and accept grace, a term for something you did not earn. Heck, every time you eat beef, a cow had to die for you. God said to me in an oracle that having pets was, "homo." I think God's idea of pets is farm animals you eat. I connected being humble of heart with animal sacrifices. The animal sacrifices in the Bible really seem off-the-mark from what we modern people imagine truth to be! I asked God and He said the people were, "primitive." Well, obviously, a sacrifice represents giving-up something of value, but is there more to it? It would be tramatic to see a goat's throat being slit and it dying for your sins. I'm not an expert, but sometimes they killed animals to make-up for sins. Perhaps, starting at age eight and every year thereafter, they kill a goat for your sins? (I'm just speculating.) In a couple years, it is not tramatic and you yawn and say to the goat, "bummer for you, Mr. Goat, that you gotta die for my sins." When a high school football team beats their rivals, nobody thinks twice that the winning team really hurts the feelings -- devastates -- the losing team member's feelings. The heart of being masculine is being competetive and not caring about the necessity to slit the throat of the goat. As a Catholic, saying Jesus died for our sins and that we cannot earn salvation, never sat well. I clung to the heretical notion that you earn salvation. Animal sacrifices were the heart of Biblical Judaism and although it seems satanic, you really do have to slit the throat of the goat and accept grace, a term for something you did not earn. Heck, every time you eat beef, a cow had to die for you. God said to me in an oracle that having pets was, "homo." I think God's idea of pets is farm animals you eat.
If you feel guilty for being American and want Mexicans to share your birthright, you are proud of heart. Jesus was a racist and called Canaanites "dogs". $LK,"Matthew,15:26",A="BF:Matthew,15:26"$ In an oracle, God told me He was against immigration. The Chinese intellectuals felt bad about not being laborers. Don't feel guilty about not being a laborer because God made it a Brave New World. $LK,"1 Corinthians,12:1",A="BF:1 Corinthians,12:1"$ If you feel guilty for being American and want Mexicans to share your birthright, you are proud of heart. Jesus was a racist and called Canaanites "dogs". $LK,"Matthew,15:22-28",A="BF:Matthew,15:22-28"$ In an oracle, God told me He was against immigration. The Chinese intellectuals felt bad about not being laborers. Don't feel guilty about not being a laborer because God made it a Brave New World. $LK,"1 Corinthians,12:1-31",A="BF:1 Corinthians,12:1-31"$
In an ant colony, the workers have one set of marching orders, the soldiers have another set of marching orders, the queen and drones have marching orders and the diggers have marching orders. The Bible gives conflicting orders -- conservatives pay attention to one set of passages and liberals pay attention to others. Everybody has selective hearing, but that's good because we are different members of the body of Christ. In an ant colony, the workers have one set of marching orders, the soldiers have another set of marching orders, the queen and drones have marching orders and the diggers have marching orders. The Bible gives conflicting orders -- conservatives pay attention to one set of passages and liberals pay attention to others. Everybody has selective hearing, but that's good because we are different members of the body of Christ.
Jesus repeats the phrase, "for those who have ears to hear" many times, but not actually at the times that matter. Jesus says several Jedi mind tricks -- He asks, what father gives a scorpion to his son? $LK,"Luke,11:12",A="BF:Luke,11:12"$ Jesus says, when you ask God for things, it is as annoying as like a neighbor in the night! $LK,"Luke,11:7",A="BF:Luke,11:7"$ He said, "I came to serve" but Jesus' three years of service were more like being a rockstar than a janitor. $LK,"John,13:14",A="BF:John,13:14"$ Jesus repeats the phrase, "for those who have ears to hear" many times, but not actually at the times that matter. Jesus says several Jedi mind tricks -- He asks, what father gives a scorpion to his son? $LK,"Luke,11:11-13",A="BF:Luke,11:11-13"$ Jesus says, when you ask God for things, it is as annoying as like a neighbor in the night! $LK,"Luke,11:5-7",A="BF:Luke,11:5-7"$ He said, "I came to serve" but Jesus' three years of service were more like being a rockstar than a janitor. $LK,"John,13:5-15",A="BF:John,13:5-15"$
There are sheep and there are shepherds. You would be silly to take other shepherds seriously when they are only caring for their sheep. Sheep are very hard to communicate to, as Jesus learned. He used parables. Seed on a path gets eaten by birds; weeds choke; and the one percent is rich soil. There are sheep and there are shepherds. You would be silly to take other shepherds seriously when they are only caring for their sheep. Sheep are very hard to communicate to, as Jesus learned. He used parables. Seed on a path gets eaten by birds; weeds choke; and the one percent is rich soil.
@@ -56,7 +56,7 @@ War? $FG,4$"Servicemen competing"$FG$
(Praise the Creator--what would teenage male video games be like if never war?) (Praise the Creator--what would teenage male video games be like if never war?)
Is the World perfectly just? $FG,4$Are you calling me lazy?$FG$ Is the World perfectly just? $FG,4$Are you calling me lazy?$FG$
(Slavery was just. In the movie, Titanic, the rich wore straight jackets. You must bow to authority to get authority. I do $TX,"Moses comics",HTML="http://www.templeos.org/Wb/Apps/AfterEgypt/Comics/"$ as offerings. I said, "We're dying of malnutrician on manna." Like Cain and Abel, God didn't like it. Duh! He wants to be the hero. How do I know they died of malnutrician? Screw Hollywood for making slavery worse than it was -- I love God. School is more cruel. Read $LK,"Numbers,11:1",A="BF:Numbers,11:1"$. All you need is food, clothing and the word of God. Today, you can take Ivy League course videos! There is no excuse except you were born stupid... or ugly. I'm gonna praise God.) (Slavery was just. In the movie, Titanic, the rich wore straight jackets. You must bow to authority to get authority. I do $TX,"Moses comics",HTML="http://www.templeos.org/Wb/Apps/AfterEgypt/Comics/"$ as offerings. I said, "We're dying of malnutrician on manna." Like Cain and Abel, God didn't like it. Duh! He wants to be the hero. How do I know they died of malnutrician? Screw Hollywood for making slavery worse than it was -- I love God. School is more cruel. Read $LK,"Numbers,11:1-35",A="BF:Numbers,11:1-35"$. All you need is food, clothing and the word of God. Today, you can take Ivy League course videos! There is no excuse except you were born stupid... or ugly. I'm gonna praise God.)
On using Markov chains? $FG,4$"No weights"$FG$ On using Markov chains? $FG,4$"No weights"$FG$
On doing offerings? $FG,4$"Honest measures"(You get out what you put in.) On doing offerings? $FG,4$"Honest measures"(You get out what you put in.)
@@ -93,7 +93,7 @@ Money? $FG,4$"Enough vehemently better"$FG$
$FG,4$"Pride [or] money, choose_one"$FG$ $FG,4$"Pride [or] money, choose_one"$FG$
Favorite car? $FG,4$Beamer$FG$ Favorite car? $FG,4$Beamer$FG$
Favorite soda? $FG,4$Root beer, $TX,"scotch variety",HTML="http://www.root-beer.org/modules.php?name=Brands&rbop=Brand&bid=1965"$.$FG$ Favorite soda? $FG,4$Root beer, $TX,"scotch variety",HTML="http://www.root-beer.org/modules.php?name=Brands&rbop=Brand&bid=1965"$.$FG$
Homosexuality? $LK,"Matthew,15:10",A="BF:Matthew,15:10",HTML="http://www.biblegateway.com/passage/?search=matthew%2015:10-11&version=NIV"$ Homosexuality? $LK,"Matthew,15:11",A="BF:Matthew,15:11"$
Pets? $FG,4$"homo"$FG$ Pets? $FG,4$"homo"$FG$
Sports? $FG,4$"homo"$FG$ Sports? $FG,4$"homo"$FG$
Favorite sport? $FG,4$Hockey$FG$ Favorite sport? $FG,4$Hockey$FG$
+1 -1
View File
@@ -153,7 +153,7 @@ public class CSpritePtMeshU8s : CSpriteBase
public class CSprite public class CSprite
{ {
CSprite *next,*last; CSprite *next,*last;
Bool selected; Bool sel;
U0 start; U0 start;
union { union {
U8 type; U8 type;
+2 -2
View File
@@ -9,7 +9,7 @@ _GR_UPDATE_LINE64::
MOV RAX,U64 SF_ARG2[RBP] MOV RAX,U64 SF_ARG2[RBP]
MOV RSI,U64 [RAX] //rsi=src MOV RSI,U64 [RAX] //rsi=src
MOV RBX,U64 [&reverse_bits_table] MOV RBX,U64 [&rev_bits_table]
MOV RCX,U64 SF_ARG3[RBP] //rcx=d MOV RCX,U64 SF_ARG3[RBP] //rcx=d
MOV RAX,U64 SF_ARG4[RBP] MOV RAX,U64 SF_ARG4[RBP]
MOV RDI,U64 [RAX] //rdi=image MOV RDI,U64 [RAX] //rdi=image
@@ -62,7 +62,7 @@ _GR_UPDATE_LINE64_FLUSH_CACHE::
MOV RAX,U64 SF_ARG2[RBP] MOV RAX,U64 SF_ARG2[RBP]
MOV RSI,U64 [RAX] //rsi=src MOV RSI,U64 [RAX] //rsi=src
MOV RBX,U64 [&reverse_bits_table] MOV RBX,U64 [&rev_bits_table]
MOV RCX,U64 SF_ARG3[RBP] //rcx=d MOV RCX,U64 SF_ARG3[RBP] //rcx=d
MOV RAX,U64 SF_ARG4[RBP] MOV RAX,U64 SF_ARG4[RBP]
MOV RDI,U64 [RAX] //rdi=image MOV RDI,U64 [RAX] //rdi=image
+171
View File
@@ -1808,3 +1808,174 @@ public I64 GrHLine(CDC *dc=gr.dc,I64 x1,I64 x2,I64 y,I64 z1=0,I64 z2=0)
gr_done: gr_done:
return res; return res;
} }
public I64 GrVLine(CDC *dc=gr.dc,I64 x,I64 y1,I64 y2,I64 z1=0,I64 z2=0)
{//3D. No transformation or pen width.
//Returns cnt of pixs changed
//Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CPP"$.
I64 dist,dy,dz,z,res=0,i,j,d;
U8 *dst;
CColorROPU32 c,c2,color=dc->color,bkcolor=dc->bkcolor,dither_colors;
I32 *db;
Bool plot=TRUE,char_clear,dither,probability_dither;
CTask *win_task;
if (!dc->depth_buf) {
if (y2<y1) SwapI64(&y1,&y2);
return GrRect(dc,x,y1,1,y2-y1+1);
}
if (dc->flags & DCF_SCREEN_BITMAP) {
win_task=dc->win_task;
x +=win_task->scroll_x;
y1+=win_task->scroll_y;
y2+=win_task->scroll_y;
z1+=win_task->scroll_z;
z2+=win_task->scroll_z;
}
if (dc->flags & DCF_RECORD_EXTENTS) {
if (x<dc->min_x) dc->min_x=x;
if (x>dc->max_x) dc->max_x=x;
if (y1<dc->min_y) dc->min_y=y1;
if (y1>dc->max_y) dc->max_y=y1;
if (y2<dc->min_y) dc->min_y=y2;
if (y2>dc->max_y) dc->max_y=y2;
}
if (x<0) goto gr_done;
if (y2<y1) {
SwapI64(&y1,&y2);
SwapI64(&z1,&z2);
}
if (y2<0)
goto gr_done;
if (y1<0) {
i=-y1;
y1=0;
} else
i=0;
j=0;
if (dc->flags & DCF_SCREEN_BITMAP) {
y1+=win_task->pix_top;
y2+=win_task->pix_top;
if (y1>win_task->pix_bottom)
goto gr_done;
if (y2>win_task->pix_bottom) {
j=y2-win_task->pix_bottom;
y2=win_task->pix_bottom;
}
x+=win_task->pix_left;
if (!(0<=x<=win_task->pix_right) || y2<0)
goto gr_done;
}
if (y1>=dc->height || x>=dc->width)
goto gr_done;
dy=y2+j-(y1-i);
d=dc->width_internal*y1+x;
if (db=dc->depth_buf) {
db+=d;
if (dy)
dz=(z2-z1)<<32/dy;
else
dz=0;
z=z1<<32;
}
if (i)
z+=i*dz;
if (y2>=dc->height)
y2=dc->height-1;
if (dc->flags & DCF_LOCATE_NEAREST) {
if (y1<=dc->cur_y<=y2)
dist=0;
else if (dc->cur_y<y1)
dist=SqrI64(y1-dc->cur_y);
else
dist=SqrI64(dc->cur_y-y2);
dist+=SqrI64(x-dc->cur_x);
if (dist<=dc->nearest_dist) {
dc->nearest_dist=dist;
dc->nearest_sprite_elem_num=dc->cur_sprite_elem_num;
}
}
if (dc->flags & DCF_DONT_DRAW)
goto gr_done;
if (!(dc->flags & DCF_SCREEN_BITMAP) ||
win_task->next_task==sys_winmgr_task ||
dc->flags&DCF_ON_TOP || !IsPixCovered0(win_task,x,y1))
char_clear=TRUE;
else
char_clear=FALSE;
if (color.c1.rop&(ROPBF_DITHER|ROPBF_PROBABILITY_DITHER)) {
dither=TRUE;
if (color.c1.rop&ROPBF_PROBABILITY_DITHER) {
probability_dither=TRUE;
color.c1.rop=color.c0.rop;
dither_colors=color;
if (RandU16<dc->dither_probability_u16)
color.c0=dither_colors.c1;
else
color.c0=dither_colors.c0;
} else {
probability_dither=FALSE;
color.c1.rop=color.c0.rop;
if ((x^y1)&1)
SwapU16(&color.c0,&color.c1);
}
} else
dither=FALSE;
while (y1<=y2) {
if (char_clear) {
if (db) {
if (0<=z.i32[1]<=*db) {
*db=z.i32[1];
plot=TRUE;
} else
plot=FALSE;
}
if (plot) {
dst=dc->body+d;
c=color.c0.color;
switch [color.c0.rop] {
case ROPB_EQU:
case ROPB_MONO:
*dst=c;
break;
case ROPB_COLLISION:
c2=*dst;
if (c2!=TRANSPARENT && c2!=bkcolor.c0.color)
dc->collision_cnt++;
break;
case ROPB_XOR:
*dst^=c;
break;
}
res++;
}
}
if (dither) {
if (probability_dither) {
if (RandU16<dc->dither_probability_u16)
color.c0=dither_colors.c1;
else
color.c0=dither_colors.c0;
} else
SwapU16(&color.c0,&color.c1);
}
d+=dc->width_internal;
y1++;
if (db)
db+=dc->width_internal;
z+=dz;
if (!(y1&(FONT_HEIGHT-1)) && y1<=y2) {
if (!(dc->flags & DCF_SCREEN_BITMAP)||
win_task->next_task==sys_winmgr_task ||
dc->flags&DCF_ON_TOP || !IsPixCovered0(win_task,x,y1))
char_clear=TRUE;
else
char_clear=FALSE;
}
}
gr_done:
return res;
}
+2
View File
@@ -30,6 +30,8 @@ public class CGrGlbls
*collision_pen_brushes[GR_NUM_PEN_BRUSHES], *collision_pen_brushes[GR_NUM_PEN_BRUSHES],
*even_pen_brushes[GR_NUM_PEN_BRUSHES], *even_pen_brushes[GR_NUM_PEN_BRUSHES],
*odd_pen_brushes[GR_NUM_PEN_BRUSHES]; *odd_pen_brushes[GR_NUM_PEN_BRUSHES];
I8 circle_lo[GR_NUM_PEN_BRUSHES][GR_NUM_PEN_BRUSHES],
circle_hi[GR_NUM_PEN_BRUSHES][GR_NUM_PEN_BRUSHES];
#define GR_MAX_SCREEN_ZOOM 8 #define GR_MAX_SCREEN_ZOOM 8
U8 *screen_zoom_tables[GR_MAX_SCREEN_ZOOM+1]; U8 *screen_zoom_tables[GR_MAX_SCREEN_ZOOM+1];
+12 -1
View File
@@ -20,6 +20,17 @@ U0 GrSetUpTables()
for (i=0;i<GR_NUM_PEN_BRUSHES;i++) { for (i=0;i<GR_NUM_PEN_BRUSHES;i++) {
k=i+1; k=i+1;
rr=k*k;
for (y=1;y<k;y++)
for (x=1;x<k;x++)
if (SqrI64(y*2-k)+SqrI64(x*2-k)<rr) {
if (x-1-i>>1<gr.circle_lo[i][i-y])
gr.circle_lo[i][i-y]=x-1-i>>1;
if (x-1-i>>1>gr.circle_hi[i][i-y])
gr.circle_hi[i][i-y]=x-1-i>>1;
}
dc=DCNew(i,i); dc=DCNew(i,i);
gr.pen_brushes[i]=dc; gr.pen_brushes[i]=dc;
dc->color=COLOR_MONO; dc->color=COLOR_MONO;
@@ -57,7 +68,7 @@ U0 GrSetUpTables()
GrPlot0(dc,x-1,y-1); GrPlot0(dc,x-1,y-1);
} }
if (!Bt(&sys_run_level,RLf_VGA)) { //if text mode if (!Bt(&sys_run_level,RLf_VGA)) { //if text mode
MemSet(VGAM_TEXT,0,TEXT_ROWS*TEXT_COLS*sizeof(U16)); MemSet(text.vga_text_alias,0,TEXT_ROWS*TEXT_COLS*sizeof(U16));
MemSet(gr.vga_text_cache,0,TEXT_ROWS*TEXT_COLS*sizeof(U16)); MemSet(gr.vga_text_cache,0,TEXT_ROWS*TEXT_COLS*sizeof(U16));
} else { } else {
OutU8(VGAP_IDX,VGAR_MAP_MASK); OutU8(VGAP_IDX,VGAR_MAP_MASK);
+15 -34
View File
@@ -5,11 +5,8 @@ public I64 gr_x_offsets[8]={-1, 0, 1,-1,1,-1,0,1},
gr_x_offsets2[4]={ 0,-1, 1, 0}, gr_x_offsets2[4]={ 0,-1, 1, 0},
gr_y_offsets2[4]={-1, 0, 0, 1}; gr_y_offsets2[4]={-1, 0, 0, 1};
public Bool Line(U8 *aux_data, public Bool Line(U8 *aux_data,I64 x1,I64 y1,I64 z1,I64 x2,I64 y2,I64 z2,
I64 x1,I64 y1,I64 z1, Bool (*fp_plot)(U8 *aux,I64 x,I64 y,I64 z),I64 step=1,I64 start=0)
I64 x2,I64 y2,I64 z2,
Bool (*fp_plot)(U8 *aux,I64 x,I64 y,I64 z),
I64 step=1,I64 start=0)
{//Step through line segment calling callback. {//Step through line segment calling callback.
//Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CPP"$. //Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CPP"$.
I64 i,j,d,dx=x2-x1,dy=y2-y1,dz=z2-z1,_x,_y,_z, I64 i,j,d,dx=x2-x1,dy=y2-y1,dz=z2-z1,_x,_y,_z,
@@ -115,8 +112,7 @@ public I64 *Mat4x4New(I64 *src,CTask *mem_task=NULL)
public I64 *Mat4x4RotX(I64 *m1,F64 è) public I64 *Mat4x4RotX(I64 *m1,F64 è)
{//Rot matrix about X axis. Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CPP"$. {//Rot matrix about X axis. Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CPP"$.
F64 my_cos=Cos(è)*GR_SCALE, F64 my_cos=Cos(è)*GR_SCALE,my_sin=Sin(è)*GR_SCALE;
my_sin=Sin(è)*GR_SCALE;
I64 r[16],r2[16]; I64 r[16],r2[16];
MemSet(r,0,sizeof(r)); MemSet(r,0,sizeof(r));
r[5]=my_cos; r[5]=my_cos;
@@ -130,8 +126,7 @@ public I64 *Mat4x4RotX(I64 *m1,F64
public I64 *Mat4x4RotY(I64 *m1,F64 ê) public I64 *Mat4x4RotY(I64 *m1,F64 ê)
{//Rot matrix about Y axis. Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CPP"$. {//Rot matrix about Y axis. Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CPP"$.
F64 my_cos=Cos(ê)*GR_SCALE, F64 my_cos=Cos(ê)*GR_SCALE,my_sin=Sin(ê)*GR_SCALE;
my_sin=Sin(ê)*GR_SCALE;
I64 r[16],r2[16]; I64 r[16],r2[16];
MemSet(r,0,sizeof(r)); MemSet(r,0,sizeof(r));
r[0]=my_cos; r[0]=my_cos;
@@ -145,8 +140,7 @@ public I64 *Mat4x4RotY(I64 *m1,F64
public I64 *Mat4x4RotZ(I64 *m1,F64 é) public I64 *Mat4x4RotZ(I64 *m1,F64 é)
{//Rot matrix about Z axis. Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CPP"$. {//Rot matrix about Z axis. Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CPP"$.
F64 my_cos=Cos(é)*GR_SCALE, F64 my_cos=Cos(é)*GR_SCALE,my_sin=Sin(é)*GR_SCALE;
my_sin=Sin(é)*GR_SCALE;
I64 r[16],r2[16]; I64 r[16],r2[16];
MemSet(r,0,sizeof(r)); MemSet(r,0,sizeof(r));
r[0]=my_cos; r[0]=my_cos;
@@ -285,13 +279,9 @@ public U0 DCReflect(CDC *dc,I64 *_x,I64 *_y,I64 *_z)
#help_index "Graphics/Math" #help_index "Graphics/Math"
#define SCALE1 24 #define SCALE1 24
#define SCALE2 8 #define SCALE2 8
public Bool Circle(U8 *aux_data, public Bool Circle(U8 *aux_data,I64 cx,I64 cy,I64 cz,I64 radius,
I64 cx,I64 cy,I64 cz, Bool (*fp_plot)(U8 *aux,I64 x,I64 y,I64 z),
I64 radius, I64 step=1,F64 start_radians=0,F64 len_radians=2*ã)
Bool (*fp_plot)(U8 *aux,I64 x,I64 y,I64 z),
I64 step=1,
F64 start_radians=0,
F64 len_radians=2*ã)
{//Step through circle arc calling callback. {//Step through circle arc calling callback.
I64 i,j,len=Ceil(len_radians*radius), I64 i,j,len=Ceil(len_radians*radius),
x,y,x1,y1,s1,s2,c; x,y,x1,y1,s1,s2,c;
@@ -328,14 +318,9 @@ public Bool Circle(U8 *aux_data,
return TRUE; return TRUE;
} }
public Bool Ellipse(U8 *aux_data, public Bool Ellipse(U8 *aux_data,I64 cx,I64 cy,I64 cz,
I64 cx,I64 cy,I64 cz, I64 x_radius,I64 y_radius,Bool (*fp_plot)(U8 *aux,I64 x,I64 y,I64 z),
I64 x_radius,I64 y_radius, F64 rot_angle=0,I64 step=1,F64 start_radians=0,F64 len_radians=2*ã)
Bool (*fp_plot)(U8 *aux,I64 x,I64 y,I64 z),
F64 rot_angle=0,
I64 step=1,
F64 start_radians=0,
F64 len_radians=2*ã)
{//Step through ellipse arc calling callback. {//Step through ellipse arc calling callback.
I64 i,j,len, I64 i,j,len,
x,y,_x,_y,x1,y1,x2,y2, s1,s2,c, s12,s22,c2; x,y,_x,_y,x1,y1,x2,y2, s1,s2,c, s12,s22,c2;
@@ -400,14 +385,10 @@ public Bool Ellipse(U8 *aux_data,
return TRUE; return TRUE;
} }
public Bool RegPoly(U8 *aux_data, public Bool RegPoly(U8 *aux_data,I64 cx,I64 cy,I64 cz,
I64 cx,I64 cy,I64 cz, I64 x_radius,I64 y_radius,I64 sides,
I64 x_radius,I64 y_radius,I64 sides, Bool (*fp_plot)(U8 *aux,I64 x,I64 y,I64 z),
Bool (*fp_plot)(U8 *aux,I64 x,I64 y,I64 z), F64 rot_angle=0,I64 step=1,F64 start_radians=0,F64 len_radians=2*ã)
F64 rot_angle=0,
I64 step=1,
F64 start_radians=0,
F64 len_radians=2*ã)
{//Step through regular polygon calling callback. {//Step through regular polygon calling callback.
I64 i,n,x,y,x1,y1,x2,y2, I64 i,n,x,y,x1,y1,x2,y2,
xx1,yy1,xx2,yy2, xx1,yy1,xx2,yy2,
+276 -18
View File
@@ -274,6 +274,141 @@ ff_done:
return res; return res;
} }
I64 GrFillSemiCircle(CDC *dc=gr.dc,I64 cx,I64 cy,I64 z=0,I64 diameter,I64 n)
{//2D. Clipping but not transformation.
I64 res=0,i,k,r=diameter>>1,rr;
if (diameter>=1)
switch (n) {
case 0:
if (diameter<GR_NUM_PEN_BRUSHES)
for (i=0;i<r;i++)
res+=GrHLine(dc,gr.circle_lo[diameter][i]+cx,
gr.circle_hi[diameter][i]+cx,cy+i-r,z,z);
else {
k=diameter+1;
rr=SqrI64((k+1)>>1);
for (i=0;i<r;i++)
res+=GrHLine(dc,-Sqrt(rr-SqrI64(r-i))+cx,
Sqrt(rr-SqrI64(r-i))+cx,cy+i-r,z,z);
}
break;
case 1:
if (diameter<GR_NUM_PEN_BRUSHES)
for (i=r+1;i<diameter;i++)
res+=GrHLine(dc,gr.circle_lo[diameter][i]+cx,
gr.circle_hi[diameter][i]+cx,cy+i-r,z,z);
else {
k=diameter+1;
rr=SqrI64((k+1)>>1);
for (i=r+1;i<k;i++)
res+=GrHLine(dc,-Sqrt(rr-SqrI64(i-r))+cx,
Sqrt(rr-SqrI64(i-r))+cx,cy+i-r,z,z);
}
break;
case 2:
if (diameter<GR_NUM_PEN_BRUSHES)
for (i=0;i<r;i++)
res+=GrVLine(dc,cx+i-r,gr.circle_lo[diameter][i]+cy,
gr.circle_hi[diameter][i]+cy,z,z);
else {
k=diameter+1;
rr=SqrI64((k+1)>>1);
for (i=0;i<r;i++)
res+=GrVLine(dc,cx+i-r,-Sqrt(rr-SqrI64(r-i))+cy,
Sqrt(rr-SqrI64(r-i))+cy,z,z);
}
break;
case 3:
if (diameter<GR_NUM_PEN_BRUSHES)
for (i=r+1;i<diameter;i++)
res+=GrVLine(dc,cx+i-r,gr.circle_lo[diameter][i]+cy,
gr.circle_hi[diameter][i]+cy,z,z);
else {
k=diameter+1;
rr=SqrI64((k+1)>>1);
for (i=r+1;i<k;i++)
res+=GrVLine(dc,cx+i-r,-Sqrt(rr-SqrI64(i-r))+cy,
Sqrt(rr-SqrI64(i-r))+cy,z,z);
}
break;
case 4:
if (diameter<GR_NUM_PEN_BRUSHES)
for (i=0;i<r;i++)
res+=GrHLine(dc,gr.circle_lo[diameter][i]+cx,
gr.circle_hi[diameter][i]+cx,cy+i-r,z,z);
else {
k=diameter+1;
rr=SqrI64((k+1)>>1);
for (i=0;i<r;i++)
res+=GrHLine(dc,-Sqrt(rr-SqrI64(r-i))+cx,
Sqrt(rr-SqrI64(r-i))+cx,cy+i-r,z,z);
}
break;
case 5:
if (diameter<GR_NUM_PEN_BRUSHES)
for (i=r+1;i<diameter;i++)
res+=GrHLine(dc,gr.circle_lo[diameter][i]+cx,
gr.circle_hi[diameter][i]+cx,cy+i-r,z,z);
else {
k=diameter+1;
rr=SqrI64((k+1)>>1);
for (i=r+1;i<k;i++)
res+=GrHLine(dc,-Sqrt(rr-SqrI64(i-r))+cx,
Sqrt(rr-SqrI64(i-r))+cx,cy+i-r,z,z);
}
break;
case 6:
if (diameter<GR_NUM_PEN_BRUSHES)
for (i=0;i<r;i++)
res+=GrVLine(dc,cx+i-r,gr.circle_lo[diameter][i]+cy,
gr.circle_hi[diameter][i]+cy,z,z);
else {
k=diameter+1;
rr=SqrI64((k+1)>>1);
for (i=0;i<r;i++)
res+=GrVLine(dc,cx+i-r,-Sqrt(rr-SqrI64(r-i))+cy,
Sqrt(rr-SqrI64(r-i))+cy,z,z);
}
break;
case 7:
if (diameter<GR_NUM_PEN_BRUSHES)
for (i=r+1;i<diameter;i++)
res+=GrVLine(dc,cx+i-r,gr.circle_lo[diameter][i]+cy,
gr.circle_hi[diameter][i]+cy,z,z);
else {
k=diameter+1;
rr=SqrI64((k+1)>>1);
for (i=r+1;i<k;i++)
res+=GrVLine(dc,cx+i-r,-Sqrt(rr-SqrI64(i-r))+cy,
Sqrt(rr-SqrI64(i-r))+cy,z,z);
}
break;
}
return res;
}
public I64 GrFillCircle(CDC *dc=gr.dc,I64 cx,I64 cy,I64 z=0,I64 diameter)
{//2D. Clipping but not transformation.
I64 res=0,i,k,r=diameter>>1,rr;
if (diameter>=1) {
if (diameter<GR_NUM_PEN_BRUSHES)
for (i=0;i<diameter;i++)
res+=GrHLine(dc,gr.circle_lo[diameter][i]+cx,
gr.circle_hi[diameter][i]+cx,cy+i-r,z,z);
else {
k=diameter+1;
rr=SqrI64((k+1)>>1);
for (i=0;i<=r;i++)
res+=GrHLine(dc,-Sqrt(rr-SqrI64(r-i))+cx,
Sqrt(rr-SqrI64(r-i))+cx,cy+i-r,z,z);
for (;i<k;i++)
res+=GrHLine(dc,-Sqrt(rr-SqrI64(i-r))+cx,
Sqrt(rr-SqrI64(i-r))+cx,cy+i-r,z,z);
}
}
return res;
}
public Bool GrPlot3B(CDC *dc=gr.dc,I64 x,I64 y,I64 z) public Bool GrPlot3B(CDC *dc=gr.dc,I64 x,I64 y,I64 z)
{//3D. Clipping and transformation but no pen_width. {//3D. Clipping and transformation but no pen_width.
I64 _x,_y,_z; I64 _x,_y,_z;
@@ -305,7 +440,7 @@ gr_done:
public Bool GrPlot3(CDC *dc=gr.dc,I64 x,I64 y,I64 z) public Bool GrPlot3(CDC *dc=gr.dc,I64 x,I64 y,I64 z)
{//3D. Clipping and transformation and pen width. {//3D. Clipping and transformation and pen width.
I64 _x,_y,_z,i,j,w,dist; I64 _x,_y,_z,w,dist;
CColorROPU32 old_color=dc->color; CColorROPU32 old_color=dc->color;
Bool record,was_transform=FALSE,was_symmetry=FALSE; Bool record,was_transform=FALSE,was_symmetry=FALSE;
CTask *win_task; CTask *win_task;
@@ -401,15 +536,8 @@ public Bool GrPlot3(CDC *dc=gr.dc,I64 x,I64 y,I64 z)
} }
} }
} }
} else if (dc->pen_width & 1) {//TODO Dither } else
for (i=-w;i<=w;i++) GrFillCircle(dc,x,y,dc->db_z,dc->pen_width);
for (j=-w;j<=w;j++)
GrPlot1(dc,x+i,y+j);
} else {
for (i=-w;i<w;i++)
for (j=-w;j<w;j++)
GrPlot1(dc,x+i,y+j);
}
gr_done: gr_done:
dc->color=old_color; dc->color=old_color;
if (was_transform) if (was_transform)
@@ -519,6 +647,128 @@ public Bool Gr3BSpline(CDC *dc=gr.dc,CD3I32 *ctrl,I64 cnt,Bool closed=FALSE)
return BSpline3(dc,ctrl,cnt,&GrLinePlot,closed); return BSpline3(dc,ctrl,cnt,&GrLinePlot,closed);
} }
I64 GrLineFat3(CDC *dc=gr.dc,I64 x1,I64 y1,I64 z1,I64 x2,I64 y2,I64 z2,
I64 width,I64 start=0)
{//Step through line segment calling callback.
//Uses $LK,"fixed-point",A="FI:::/Demo/Lectures/FixedPoint.CPP"$.
I64 res=0,i,j,d,dx=x2-x1,dy=y2-y1,dz=z2-z1,_x,_y,_z,d_lo,d_hi,
adx=AbsI64(dx),ady=AbsI64(dy),adz=AbsI64(dz);
if (width>0) {
if (adx>=ady) {
if (adx>=adz) {
if (d=adx) {
if (dx>=0)
dx=0x100000000;
else
dx=-0x100000000;
dy=dy<<32/d;
dz=dz<<32/d;
}
} else {
if (d=adz) {
dx=dx<<32/d;
dy=dy<<32/d;
if (dz>=0)
dz=0x100000000;
else
dz=-0x100000000;
}
}
x1<<=32; y1<<=32; z1<<=32;
for (j=0;j<start;j++) {
x1+=dx; y1+=dy; z1+=dz;
}
if (start>=d)
res+=GrFillCircle(dc,x1.i32[1],y1.i32[1],z1.i32[1],width);
else {
if (width==1)
for (i=start;i<=d;i++) {
dc->db_z=z1.i32[1];
res+=GrPlot1(dc,x1.i32[1],y1.i32[1]);
_x=x1.i32[1]; _y=y1.i32[1]; _z=z1.i32[1];
x1+=dx; y1+=dy; z1+=dz;
}
else {
i=width*Sqrt(SqrI64(adx)+SqrI64(ady))/adx;
d_lo=i>>1; d_hi=(i-1)>>1;
if (dx>=0)
res+=GrFillSemiCircle(dc,x1.i32[1],y1.i32[1],z1.i32[1],width,2);
else
res+=GrFillSemiCircle(dc,x1.i32[1],y1.i32[1],z1.i32[1],width,7);
for (i=start;i<=d;i++) {
res+=GrVLine(dc,x1.i32[1],y1.i32[1]-d_lo,y1.i32[1]+d_hi,
z1.i32[1],z1.i32[1]);
_x=x1.i32[1]; _y=y1.i32[1]; _z=z1.i32[1];
x1+=dx; y1+=dy; z1+=dz;
}
x1-=dx; y1-=dy; z1-=dz;
if (dx>=0)
res+=GrFillSemiCircle(dc,x1.i32[1],y1.i32[1],z1.i32[1],width,3);
else
res+=GrFillSemiCircle(dc,x1.i32[1],y1.i32[1],z1.i32[1],width,6);
}
}
} else {
if (ady>=adz) {
if (d=ady) {
dx=dx<<32/d;
if (dy>=0)
dy=0x100000000;
else
dy=-0x100000000;
dz=dz<<32/d;
}
} else {
if (d=adz) {
dx=dx<<32/d;
dy=dy<<32/d;
if (dz>=0)
dz=0x100000000;
else
dz=-0x100000000;
}
}
x1<<=32; y1<<=32; z1<<=32;
for (j=0;j<start;j++) {
x1+=dx; y1+=dy; z1+=dz;
}
if (start>=d)
res+=GrFillCircle(dc,x1.i32[1],y1.i32[1],z1.i32[1],width);
else {
if (width==1)
for (i=start;i<=d;i++) {
dc->db_z=z1.i32[1];
res+=GrPlot1(dc,x1.i32[1],y1.i32[1]);
_x=x1.i32[1]; _y=y1.i32[1]; _z=z1.i32[1];
x1+=dx; y1+=dy; z1+=dz;
}
else {
i=width*Sqrt(SqrI64(ady)+SqrI64(adx))/ady;
d_lo=i>>1; d_hi=(i-1)>>1;
if (dy>=0)
res+=GrFillSemiCircle(dc,x1.i32[1],y1.i32[1],z1.i32[1],width,0);
else
res+=GrFillSemiCircle(dc,x1.i32[1],y1.i32[1],z1.i32[1],width,5);
for (i=start;i<=d;i++) {
res+=GrHLine(dc,x1.i32[1]-d_lo,x1.i32[1]+d_hi,y1.i32[1],
z1.i32[1],z1.i32[1]);
_x=x1.i32[1]; _y=y1.i32[1]; _z=z1.i32[1];
x1+=dx; y1+=dy; z1+=dz;
}
x1-=dx; y1-=dy; z1-=dz;
if (dy>=0)
res+=GrFillSemiCircle(dc,x1.i32[1],y1.i32[1],z1.i32[1],width,1);
else
res+=GrFillSemiCircle(dc,x1.i32[1],y1.i32[1],z1.i32[1],width,4);
}
}
}
}
return res;
}
public Bool GrLine3(CDC *dc=gr.dc,I64 x1,I64 y1,I64 z1,I64 x2,I64 y2,I64 z2, public Bool GrLine3(CDC *dc=gr.dc,I64 x1,I64 y1,I64 z1,I64 x2,I64 y2,I64 z2,
I64 step=1,I64 start=0) I64 step=1,I64 start=0)
{//3D. Transformation with pen width. {//3D. Transformation with pen width.
@@ -536,20 +786,28 @@ public Bool GrLine3(CDC *dc=gr.dc,I64 x1,I64 y1,I64 z1,I64 x2,I64 y2,I64 z2,
_x2=x2; _y2=y2; _z2=z2; _x2=x2; _y2=y2; _z2=z2;
DCReflect(dc,&_x2,&_y2,&_z2); DCReflect(dc,&_x2,&_y2,&_z2);
dc->flags&=~DCF_SYMMETRY; dc->flags&=~DCF_SYMMETRY;
if (step==1 && !start && !dc->brush && dc->pen_width<2 && if (step==1 && !dc->brush) {
!dc->depth_buf) {//TODO: clip z for depth buf if (!start && dc->pen_width<2 && !dc->depth_buf) {//TODO: clip z depbuf
if (DCClipLine(dc,&_x1,&_y1,&_x2,&_y2)) if (DCClipLine(dc,&_x1,&_y1,&_x2,&_y2))
res=Line(dc,_x1,_y1,0,_x2,_y2,0,&GrLinePlot0,step,start); res=Line(dc,_x1,_y1,0,_x2,_y2,0,&GrLinePlot0,step,start);
} else {
if (GrLineFat3(dc,_x1,_y1,_z1,_x2,_y2,_z2,dc->pen_width,start))
res=TRUE;
}
} else } else
res=Line(dc,_x1,_y1,_z1,_x2,_y2,_z2,&GrPlot3,step,start); res=Line(dc,_x1,_y1,_z1,_x2,_y2,_z2,&GrPlot3,step,start);
was_symmetry=TRUE; was_symmetry=TRUE;
if (dc->flags&DCF_JUST_MIRROR) if (dc->flags&DCF_JUST_MIRROR)
goto gr_done; goto gr_done;
} }
if (step==1 && !start && !dc->brush && dc->pen_width<2 && if (step==1 && !dc->brush) {
!dc->depth_buf) {//TODO: clip z for depth buf if (!start && dc->pen_width<2 && !dc->depth_buf) {//TODO: clip z depbuf
if (DCClipLine(dc,&x1,&y1,&x2,&y2)) if (DCClipLine(dc,&x1,&y1,&x2,&y2))
res|=Line(dc,x1,y1,0,x2,y2,0,&GrLinePlot0,step,start); res|=Line(dc,x1,y1,0,x2,y2,0,&GrLinePlot0,step,start);
} else {
if (GrLineFat3(dc,x1,y1,z1,x2,y2,z2,dc->pen_width,start))
res=TRUE;
}
} else } else
res|=Line(dc,x1,y1,z1,x2,y2,z2,&GrPlot3,step,start); res|=Line(dc,x1,y1,z1,x2,y2,z2,&GrPlot3,step,start);
gr_done: gr_done:
+11 -14
View File
@@ -221,8 +221,8 @@ U0 GrUpdateTextBG()
for (row=num_rows;row--;) { for (row=num_rows;row--;) {
for (col=num_cols;col--;) { for (col=num_cols;col--;) {
cur_ch=*src++; cur_ch=*src++;
if (cur_ch & (ATTRF_SELECTED|ATTRF_INVERT|ATTRF_BLINK)) { if (cur_ch & (ATTRF_SEL|ATTRF_INVERT|ATTRF_BLINK)) {
if (cur_ch & ATTRF_SELECTED) if (cur_ch & ATTRF_SEL)
cur_ch.u8[1]=cur_ch.u8[1]^0xFF; cur_ch.u8[1]=cur_ch.u8[1]^0xFF;
if (cur_ch & ATTRF_INVERT) if (cur_ch & ATTRF_INVERT)
cur_ch.u8[1]=cur_ch.u8[1]<<4+cur_ch.u8[1]>>4; cur_ch.u8[1]=cur_ch.u8[1]<<4+cur_ch.u8[1]>>4;
@@ -286,8 +286,8 @@ U0 GrUpdateTextFG()
for (row=num_rows;row--;) { for (row=num_rows;row--;) {
for (col=num_cols;col--;) { for (col=num_cols;col--;) {
cur_ch=*src++; cur_ch=*src++;
if (cur_ch & (ATTRF_UNDERLINE|ATTRF_SELECTED|ATTRF_INVERT|ATTRF_BLINK)) { if (cur_ch & (ATTRF_UNDERLINE|ATTRF_SEL|ATTRF_INVERT|ATTRF_BLINK)) {
if (cur_ch & ATTRF_SELECTED) if (cur_ch & ATTRF_SEL)
cur_ch.u8[1]=cur_ch.u8[1]^0xFF; cur_ch.u8[1]=cur_ch.u8[1]^0xFF;
if (cur_ch & ATTRF_INVERT) if (cur_ch & ATTRF_INVERT)
cur_ch.u8[1]=cur_ch.u8[1]<<4+cur_ch.u8[1]>>4; cur_ch.u8[1]=cur_ch.u8[1]<<4+cur_ch.u8[1]>>4;
@@ -327,34 +327,31 @@ U0 DCBlotColor8(CDC *dc,CDC *img)
U0 GrUpdateTextModeText() U0 GrUpdateTextModeText()
{ {
U32 *src=gr.text_base; U32 *src=gr.text_base;
I64 cur_ch,i,d0=TEXT_COLS*TEXT_ROWS; I64 cur_ch,i=TEXT_COLS*TEXT_ROWS;
U16 *dst=VGAM_TEXT,*dst2=gr.vga_text_cache; U16 *dst=text.vga_text_alias,*dst2=gr.vga_text_cache;
Bool blink_flag=Blink; Bool blink_flag=Blink;
if (LBtr(&sys_semas[SYS_SEMA_FLUSH_VGA_IMAGE],0)) { if (LBtr(&sys_semas[SYS_SEMA_FLUSH_VGA_IMAGE],0)) {
i=d0;
while (i--) { while (i--) {
cur_ch=*src++; cur_ch=*src++;
if (cur_ch & ATTRF_SELECTED) if (cur_ch & ATTRF_SEL)
cur_ch.u8[1]=cur_ch.u8[1]^0xFF; cur_ch.u8[1]=cur_ch.u8[1]^0xFF;
if (cur_ch & ATTRF_INVERT) if (cur_ch & ATTRF_INVERT)
cur_ch.u8[1]=cur_ch.u8[1]<<4+cur_ch.u8[1]>>4; cur_ch.u8[1]=cur_ch.u8[1]<<4+cur_ch.u8[1]>>4;
if (cur_ch & ATTRF_BLINK) if (cur_ch & ATTRF_BLINK)
if (blink_flag) if (blink_flag)
cur_ch.u8[1]= cur_ch.u8[1]<<4+ cur_ch.u8[1]>>4; cur_ch.u8[1]=cur_ch.u8[1]<<4+cur_ch.u8[1]>>4;
cur_ch&=0x7FFF; *dst++=*dst2++=cur_ch&0x7FFF;
*dst++=*dst2++=cur_ch;
} }
} else { } else {
i=d0;
while (i--) { while (i--) {
cur_ch=*src++; cur_ch=*src++;
if (cur_ch & ATTRF_SELECTED) if (cur_ch & ATTRF_SEL)
cur_ch.u8[1]=cur_ch.u8[1]^0xFF; cur_ch.u8[1]=cur_ch.u8[1]^0xFF;
if (cur_ch & ATTRF_INVERT) if (cur_ch & ATTRF_INVERT)
cur_ch.u8[1]=cur_ch.u8[1]<<4+cur_ch.u8[1]>>4; cur_ch.u8[1]=cur_ch.u8[1]<<4+cur_ch.u8[1]>>4;
if (cur_ch & ATTRF_BLINK) if (cur_ch & ATTRF_BLINK)
if (blink_flag) if (blink_flag)
cur_ch.u8[1]= cur_ch.u8[1]<<4+ cur_ch.u8[1]>>4; cur_ch.u8[1]=cur_ch.u8[1]<<4+cur_ch.u8[1]>>4;
cur_ch&=0x7FFF; cur_ch&=0x7FFF;
if (*dst2!=cur_ch) if (*dst2!=cur_ch)
*dst++=*dst2++=cur_ch; *dst++=*dst2++=cur_ch;
+2 -2
View File
@@ -172,7 +172,7 @@ public U0 Sprite3(CDC *dc=gr.dc,I64 x,I64 y,I64 z,U8 *elems,
GrPlot3(dc,x1+x,y1+y,z); GrPlot3(dc,x1+x,y1+y,z);
} }
break; break;
sub_switch_start: start:
p=&tempg->nu.u; p=&tempg->nu.u;
for (i=0;i<tempg->nu.num;i++,p++) { for (i=0;i<tempg->nu.num;i++,p++) {
p->x+=x; p->x+=x;
@@ -191,7 +191,7 @@ public U0 Sprite3(CDC *dc=gr.dc,I64 x,I64 y,I64 z,U8 *elems,
case SPT_BSPLINE3_CLOSED: case SPT_BSPLINE3_CLOSED:
Gr3BSpline3(dc,&tempg->nu.u,tempg->nu.num,TRUE); Gr3BSpline3(dc,&tempg->nu.u,tempg->nu.num,TRUE);
break; break;
sub_switch_end: end:
p=&tempg->nu.u; p=&tempg->nu.u;
for (i=0;i<tempg->nu.num;i++,p++) { for (i=0;i<tempg->nu.num;i++,p++) {
p->x-=x; p->x-=x;
+11 -26
View File
@@ -334,32 +334,17 @@ public U0 TextBorder(CTask *task=NULL,
I64 i; I64 i;
if (!task) task=Fs; if (!task) task=Fs;
attr<<=8; attr<<=8;
if (solid) { TextChar(task,,l-1,t-1,text.border_chars[6+solid]+attr);
TextChar(task,,l-1,t-1,'É'+attr); TextChar(task,,r+1,t-1,text.border_chars[8+solid]+attr);
TextChar(task,,r+1,t-1,'»'+attr); TextChar(task,,l-1,b+1,text.border_chars[10+solid]+attr);
TextChar(task,,l-1,b+1,'È'+attr); TextChar(task,,r+1,b+1,text.border_chars[12+solid]+attr);
TextChar(task,,r+1,b+1,'¼'+attr); for (i=l;i<=r;i++) {
for (i=l;i<=r;i++) { TextChar(task,,i,t-1,text.border_chars[2+solid]+attr);
TextChar(task,,i,t-1,'Í'+attr); TextChar(task,,i,b+1,text.border_chars[2+solid]+attr);
TextChar(task,,i,b+1,'Í'+attr); }
} for (i=t;i<=b;i++) {
for (i=t;i<=b;i++) { TextChar(task,,l-1,i,text.border_chars[4+solid]+attr);
TextChar(task,,l-1,i,'º'+attr); //Note: $LK,"RawDr",A="MN:RawDr"$() uses this char. TextChar(task,,r+1,i,text.border_chars[4+solid]+attr);
TextChar(task,,r+1,i,'º'+attr);
}
} else {
TextChar(task,,l-1,t-1,'Ú'+attr);
TextChar(task,,r+1,t-1,'¿'+attr);
TextChar(task,,l-1,b+1,'À'+attr);
TextChar(task,,r+1,b+1,'Ù'+attr);
for (i=l;i<=r;i++) {
TextChar(task,,i,t-1,'Ä'+attr);
TextChar(task,,i,b+1,'Ä'+attr);
}
for (i=t;i<=b;i++) {
TextChar(task,,l-1,i,'³'+attr);
TextChar(task,,r+1,i,'³'+attr);
}
} }
} }
+2 -2
View File
@@ -361,7 +361,7 @@ bm_menu:
GrPlot3(img,a1-xx1,a2-yy1,0); GrPlot3(img,a1-xx1,a2-yy1,0);
GrBitMapEdPrepPersistentDC(dc,xx1,yy1,img); GrBitMapEdPrepPersistentDC(dc,xx1,yy1,img);
break; break;
sub_switch_start: start:
if (down) if (down)
GrBitMapEdPrepPersistentDC(dc,xx1,yy1,img); GrBitMapEdPrepPersistentDC(dc,xx1,yy1,img);
x1=a1; y1=a2; x1=a1; y1=a2;
@@ -386,7 +386,7 @@ bm_menu:
dc->pen_width=1; dc->pen_width=1;
GrBorder(dc,x1,y1,x1,y1); GrBorder(dc,x1,y1,x1,y1);
break; break;
sub_switch_end: end:
break; break;
case GBM_PASTE: case GBM_PASTE:
case GBM_PASTE_TRANSPARENT: case GBM_PASTE_TRANSPARENT:
+2 -2
View File
@@ -209,7 +209,7 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type)
CQueVectU8 *tempv; CQueVectU8 *tempv;
MemSet(&g,0,sizeof(CSprite)); MemSet(&g,0,sizeof(CSprite));
switch (type) { switch (type) {
sub_switch_start: start:
case SPT_COLOR: case SPT_COLOR:
case SPT_DITHER_COLOR: case SPT_DITHER_COLOR:
st=LexFirstRem(cc,"}"); st=LexFirstRem(cc,"}");
@@ -311,7 +311,7 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type)
Lex(cc); //Skip , Lex(cc); //Skip ,
g.pwha.angle=ã/180*LexExpressionF64(cc); g.pwha.angle=ã/180*LexExpressionF64(cc);
break; break;
sub_switch_end: end:
size=SpriteElemSize(&g)+offset(CSprite.start); size=SpriteElemSize(&g)+offset(CSprite.start);
res=MAlloc(size); res=MAlloc(size);
MemCpy(res,&g,size); MemCpy(res,&g,size);
+52 -52
View File
@@ -69,7 +69,7 @@ CSprite *Sprite2SpriteQue(U8 *elems)
tempg1=MAlloc(SpriteElemSize(tempg)+offset(CSprite.start)); tempg1=MAlloc(SpriteElemSize(tempg)+offset(CSprite.start));
s=SpriteElemSize(tempg); s=SpriteElemSize(tempg);
MemCpy(&tempg1->start,&tempg->start,s); MemCpy(&tempg1->start,&tempg->start,s);
tempg1->selected=FALSE; tempg1->sel=FALSE;
QueIns(tempg1,res->last); QueIns(tempg1,res->last);
tempg(U8 *)+=s; tempg(U8 *)+=s;
} }
@@ -117,7 +117,7 @@ U0 SpriteSetOrigin(CSprite *root,I64 dx,I64 dy,I64 dz)
CD3I32 *p; CD3I32 *p;
CSprite *tempg=root->next; CSprite *tempg=root->next;
while (tempg!=root) { while (tempg!=root) {
if (tempg->selected) if (tempg->sel)
switch (tempg->type) { switch (tempg->type) {
case SPT_ARROW: case SPT_ARROW:
case SPT_LINE: case SPT_LINE:
@@ -203,7 +203,7 @@ CSprite *SpriteTransformCircle(I64 *r,CSprite *tempg)
tempg1->pwha.height=ToI64(m2)/0x10000; tempg1->pwha.height=ToI64(m2)/0x10000;
tempg1->pwha.angle=-a1; tempg1->pwha.angle=-a1;
tempg1->selected=tempg->selected; tempg1->sel=tempg->sel;
return tempg1; return tempg1;
} }
@@ -244,7 +244,7 @@ CSprite *SpriteTransformEllipse(I64 *r,CSprite *tempg)
if (tempg1->pwha.height<1) tempg1->pwha.height=1; if (tempg1->pwha.height<1) tempg1->pwha.height=1;
tempg1->pwha.angle=-a1; tempg1->pwha.angle=-a1;
tempg1->selected=tempg->selected; tempg1->sel=tempg->sel;
return tempg1; return tempg1;
} }
@@ -286,7 +286,7 @@ CSprite *SpriteTransformRect(I64 *r,CSprite *tempg,F64
tempg1->ppa.y2=tempg1->ppa.y1+h; tempg1->ppa.y2=tempg1->ppa.y1+h;
tempg1->ppa.angle=-a1; tempg1->ppa.angle=-a1;
tempg1->selected=tempg->selected; tempg1->sel=tempg->sel;
return tempg1; return tempg1;
} }
@@ -380,7 +380,7 @@ U0 SpriteTransform(I64 *r,CSprite *root)
CD3I32 *p; CD3I32 *p;
CSprite *tempg=root->next,root2,*tempg1,*tempg2,*tempg3; CSprite *tempg=root->next,root2,*tempg1,*tempg2,*tempg3;
while (tempg!=root) { while (tempg!=root) {
if (tempg->selected) if (tempg->sel)
switch (tempg->type) { switch (tempg->type) {
case SPT_WIDTH: case SPT_WIDTH:
tempg->w.width*=Sqrt(Mat4x4NormSqr65536(r))/65536; tempg->w.width*=Sqrt(Mat4x4NormSqr65536(r))/65536;
@@ -506,7 +506,7 @@ U0 SpriteTransform(I64 *r,CSprite *root)
tempg3->npu.num=num; tempg3->npu.num=num;
QueIns(tempg3,tempg); QueIns(tempg3,tempg);
QueRem(tempg); QueRem(tempg);
tempg3->selected=tempg->selected; tempg3->sel=tempg->sel;
Free(tempg); Free(tempg);
tempg=tempg3; tempg=tempg3;
break; break;
@@ -553,25 +553,25 @@ U0 SpriteTransform(I64 *r,CSprite *root)
} }
} }
I64 SpriteQueSelectCnt(CSprite *root,Bool val=TRUE) I64 SpriteQueSelCnt(CSprite *root,Bool val=TRUE)
{ {
I64 res=0; I64 res=0;
CSprite *tempg=root->next; CSprite *tempg=root->next;
val=ToBool(val); val=ToBool(val);
while (tempg!=root) { while (tempg!=root) {
if (ToBool(tempg->selected)==val) if (ToBool(tempg->sel)==val)
res++; res++;
tempg=tempg->next; tempg=tempg->next;
} }
return res; return res;
} }
I64 SpriteQueSelectAll(CSprite *root,Bool val=TRUE) I64 SpriteQueSelAll(CSprite *root,Bool val=TRUE)
{ {
I64 res=0; I64 res=0;
CSprite *tempg=root->next; CSprite *tempg=root->next;
while (tempg!=root) { while (tempg!=root) {
tempg->selected=val; tempg->sel=val;
res++; res++;
tempg=tempg->next; tempg=tempg->next;
} }
@@ -590,7 +590,7 @@ CSprite *SpriteSideBar2SpriteQue(CDoc *doc,CSprite *root,I64 *_cur_elem_num)
tempg=SpriteSetSettings(,root,doc_e->left_exp); tempg=SpriteSetSettings(,root,doc_e->left_exp);
if (tempg!=root) { if (tempg!=root) {
tempg=MAllocIdent(tempg); tempg=MAllocIdent(tempg);
tempg->selected=Bt(&doc_e->type,DOCEt_SELECTED); tempg->sel=Bt(&doc_e->type,DOCEt_SEL);
if (*_cur_elem_num==doc_e->left_exp) { if (*_cur_elem_num==doc_e->left_exp) {
*_cur_elem_num=num; *_cur_elem_num=num;
found=TRUE; found=TRUE;
@@ -627,8 +627,8 @@ U0 SpriteSideBarPickNew(CDoc *doc,CSprite *root,I64 old_num)
DocPrint(doc,"$$LTBLUE$$"); DocPrint(doc,"$$LTBLUE$$");
doc_e=DocPrint(doc,"$$MU-UL,\"%Q\",LE=%d$$\n",st,cur_elem_num++); doc_e=DocPrint(doc,"$$MU-UL,\"%Q\",LE=%d$$\n",st,cur_elem_num++);
} }
BEqu(&doc_e->de_flags,DOCEf_SELECTED,tempg->selected); BEqu(&doc_e->de_flags,DOCEf_SEL,tempg->sel);
BEqu(&doc_e->type,DOCEt_SELECTED,tempg->selected); BEqu(&doc_e->type,DOCEt_SEL,tempg->sel);
Free(st); Free(st);
tempg=tempg->next; tempg=tempg->next;
} }
@@ -715,13 +715,13 @@ Bool SpriteEdText(CSprite **_root,I64 *_cur_elem_num)
return res; return res;
} }
#define GED_SELECT_UNSELECT_ALL 0 #define GED_SEL_UNSEL_ALL 0
#define GED_SELECT 1 #define GED_SEL 1
#define GED_UNSELECT 2 #define GED_UNSEL 2
#define GED_SHIFT_PTS 3 #define GED_SHIFT_PTS 3
#define GED_SHIFT_RECTS 4 #define GED_SHIFT_RECTS 4
#define GED_SHIFT_SELECTED 5 #define GED_SHIFT_SEL 5
#define GED_TRANSFORM_SELECTED 6 #define GED_TRANSFORM_SEL 6
#define GED_SET_ORIGIN 7 #define GED_SET_ORIGIN 7
#define GED_SHIFT_SUB_ORIGIN 8 #define GED_SHIFT_SUB_ORIGIN 8
#define GED_TEXT_ED 9 #define GED_TEXT_ED 9
@@ -731,7 +731,7 @@ Bool SpriteEdText(CSprite **_root,I64 *_cur_elem_num)
U0 GrInit3() U0 GrInit3()
{ {
DefineLstLoad("ST_SPRITE_ED_MENU","Select/Unslesct All\0" DefineLstLoad("ST_SPRITE_ED_MENU","Select/Unselect All\0"
"Select\0Unselect\0Shift Points\0Shift Rects\0Shift Selected\0" "Select\0Unselect\0Shift Points\0Shift Rects\0Shift Selected\0"
"Transform Selected\0Set Origin\0Insert Shift SubOrigin\0" "Transform Selected\0Set Origin\0Insert Shift SubOrigin\0"
"Edit as Text\0Insert Clipboard\0Main Menu\0"); "Edit as Text\0Insert Clipboard\0Main Menu\0");
@@ -746,13 +746,13 @@ I64 PopUpSpriteEd(CSprite **_root,I64 *_cur_elem_num)
CDoc *doc=DocNew; CDoc *doc=DocNew;
DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Sprite Edit Menu\"$$\n" DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Sprite Edit Menu\"$$\n"
"$$LK+PU+CX,\"Click for Help\",A=\"FI:::/Doc/SpriteEd.TXT.Z\"$$\n\n" "$$LK+PU+CX,\"Click for Help\",A=\"FI:::/Doc/SpriteEd.TXT.Z\"$$\n\n"
"$$LTBLUE$$$$MU-UL,\"Select/Unselect All\",LE=GED_SELECT_UNSELECT_ALL$$\n" "$$LTBLUE$$$$MU-UL,\"Select/Unselect All\",LE=GED_SEL_UNSEL_ALL$$\n"
"$$MU-UL,\"Select Elems\",LE=GED_SELECT$$\n" "$$MU-UL,\"Select Elems\",LE=GED_SEL$$\n"
"$$MU-UL,\"Unselect Elems\",LE=GED_UNSELECT$$\n\n" "$$MU-UL,\"Unsel Elems\",LE=GED_UNSEL$$\n\n"
"$$MU-UL,\"Shift Points\",LE=GED_SHIFT_PTS$$\n" "$$MU-UL,\"Shift Points\",LE=GED_SHIFT_PTS$$\n"
"$$MU-UL,\"Shift Points with Rects\",LE=GED_SHIFT_RECTS$$\n" "$$MU-UL,\"Shift Points with Rects\",LE=GED_SHIFT_RECTS$$\n"
"$$MU-UL,\"Shift Selected Elems\",LE=GED_SHIFT_SELECTED$$\n" "$$MU-UL,\"Shift Selected Elems\",LE=GED_SHIFT_SEL$$\n"
"$$MU-UL,\"Transform Selected Elems\",LE=GED_TRANSFORM_SELECTED$$\n\n" "$$MU-UL,\"Transform Selected Elems\",LE=GED_TRANSFORM_SEL$$\n\n"
"$$MU-UL,\"Set Origin\",LE=GED_SET_ORIGIN$$\n" "$$MU-UL,\"Set Origin\",LE=GED_SET_ORIGIN$$\n"
"$$MU-UL,\"Insert Shift SubOrigin\",LE=GED_SHIFT_SUB_ORIGIN$$\n\n" "$$MU-UL,\"Insert Shift SubOrigin\",LE=GED_SHIFT_SUB_ORIGIN$$\n\n"
"$$MU-UL,\"Edit as Text\",LE=GED_TEXT_ED$$\n" "$$MU-UL,\"Edit as Text\",LE=GED_TEXT_ED$$\n"
@@ -775,7 +775,7 @@ I64 PopUpSpriteEd(CSprite **_root,I64 *_cur_elem_num)
#define GSPT_SIMPLE_PT 0 #define GSPT_SIMPLE_PT 0
#define GSPT_WIDTH_HEIGHT 1 #define GSPT_WIDTH_HEIGHT 1
#define GSPF_SELECTED 1 #define GSPF_SEL 1
class CEdSprite class CEdSprite
{ {
@@ -920,7 +920,7 @@ U0 SpriteCtrlPtsDraw(CDC *dc,CEdSprite *root)
y=*temppe->h+*temppe->y+temppe->yy; y=*temppe->h+*temppe->y+temppe->yy;
break; break;
} }
if (temppe->flags&GSPF_SELECTED) if (temppe->flags&GSPF_SEL)
dc->color=RED; dc->color=RED;
else else
dc->color=BLACK; dc->color=BLACK;
@@ -937,7 +937,7 @@ U0 SpriteCtrlPtsMove(CEdSprite *root,I64 dx,I64 dy)
CEdSprite *temppe; CEdSprite *temppe;
temppe=root->next; temppe=root->next;
while (temppe!=root) { while (temppe!=root) {
if (temppe->flags&GSPF_SELECTED) if (temppe->flags&GSPF_SEL)
switch (temppe->type) { switch (temppe->type) {
case GSPT_SIMPLE_PT: case GSPT_SIMPLE_PT:
if (temppe->x) *temppe->x+=dx; if (temppe->x) *temppe->x+=dx;
@@ -990,7 +990,7 @@ Bool SpriteShiftPts(U8 *elems,I64 x,I64 y,I64 *_cur_elem_num,I64 mode)
temppe=temppe->next; temppe=temppe->next;
} }
cur_elem_num=best_pe->num; cur_elem_num=best_pe->num;
best_pe->flags|=GSPF_SELECTED; best_pe->flags|=GSPF_SEL;
break; break;
case GED_SHIFT_RECTS: case GED_SHIFT_RECTS:
xx2=xx=a1; yy2=yy=a2; xx2=xx=a1; yy2=yy=a2;
@@ -1013,12 +1013,12 @@ Bool SpriteShiftPts(U8 *elems,I64 x,I64 y,I64 *_cur_elem_num,I64 mode)
case GSPT_SIMPLE_PT: case GSPT_SIMPLE_PT:
if (xx<=*temppe->x+temppe->xx<=xx2 && if (xx<=*temppe->x+temppe->xx<=xx2 &&
yy<=*temppe->y+temppe->yy<=yy2) yy<=*temppe->y+temppe->yy<=yy2)
temppe->flags|=GSPF_SELECTED; temppe->flags|=GSPF_SEL;
break; break;
case GSPT_WIDTH_HEIGHT: case GSPT_WIDTH_HEIGHT:
if (xx<=*temppe->x+*temppe->w+temppe->xx<=xx2 && if (xx<=*temppe->x+*temppe->w+temppe->xx<=xx2 &&
yy<=*temppe->y+*temppe->h+temppe->yy<=yy2) yy<=*temppe->y+*temppe->h+temppe->yy<=yy2)
temppe->flags|=GSPF_SELECTED; temppe->flags|=GSPF_SEL;
break; break;
} }
temppe=temppe->next; temppe=temppe->next;
@@ -1040,7 +1040,7 @@ Bool SpriteShiftPts(U8 *elems,I64 x,I64 y,I64 *_cur_elem_num,I64 mode)
} while (msg_code!=MSG_IP_L_UP); } while (msg_code!=MSG_IP_L_UP);
temppe=root.next; temppe=root.next;
while (temppe!=&root) { while (temppe!=&root) {
temppe->flags&=~GSPF_SELECTED; temppe->flags&=~GSPF_SEL;
temppe=temppe->next; temppe=temppe->next;
} }
break; break;
@@ -1089,7 +1089,7 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
old_de_flags=doc_ce->de_flags; old_de_flags=doc_ce->de_flags;
tempb=doc_ce->bin_data; tempb=doc_ce->bin_data;
DocUnlock(doc); DocUnlock(doc);
SpriteQueSelectAll(*_root,FALSE); SpriteQueSelAll(*_root,FALSE);
do { do {
if (winmgr.fps<10) if (winmgr.fps<10)
doc_ce->de_flags|=DOCEF_DONT_DRAW; doc_ce->de_flags|=DOCEF_DONT_DRAW;
@@ -1099,14 +1099,14 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
if (0<=i<GED_EXIT) { if (0<=i<GED_EXIT) {
StrCpy(Fs->task_title,DefineSub(i,"ST_SPRITE_ED_MENU")); StrCpy(Fs->task_title,DefineSub(i,"ST_SPRITE_ED_MENU"));
switch (i) { switch (i) {
case GED_SELECT_UNSELECT_ALL: case GED_SEL_UNSEL_ALL:
if (!SpriteQueSelectCnt(*_root)) if (!SpriteQueSelCnt(*_root))
SpriteQueSelectAll(*_root); SpriteQueSelAll(*_root);
else else
SpriteQueSelectAll(*_root,FALSE); SpriteQueSelAll(*_root,FALSE);
break; break;
case GED_SELECT: case GED_SEL:
case GED_UNSELECT: case GED_UNSEL:
doc_ce->de_flags=old_de_flags; doc_ce->de_flags=old_de_flags;
doc->cur_sprite=tempb->data; doc->cur_sprite=tempb->data;
do { do {
@@ -1116,23 +1116,23 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
if (msg_code==MSG_IP_L_DOWN) { if (msg_code==MSG_IP_L_DOWN) {
*_cur_elem_num=doc->nearest_sprite_elem_num; *_cur_elem_num=doc->nearest_sprite_elem_num;
cur_elem=SpriteSetSettings(,*_root,*_cur_elem_num); cur_elem=SpriteSetSettings(,*_root,*_cur_elem_num);
cur_elem->selected=ToBool(i==GED_SELECT); cur_elem->sel=ToBool(i==GED_SEL);
GetMsg(,,1<<MSG_IP_L_UP); GetMsg(,,1<<MSG_IP_L_UP);
} }
} while (msg_code!=MSG_IP_R_UP); } while (msg_code!=MSG_IP_R_UP);
doc->cur_sprite=NULL; doc->cur_sprite=NULL;
break; break;
case GED_SET_ORIGIN: case GED_SET_ORIGIN:
SpriteQueSelectAll(*_root); SpriteQueSelAll(*_root);
doc_ce->de_flags=old_de_flags; doc_ce->de_flags=old_de_flags;
GetMsg(&a1,&a2,1<<MSG_IP_L_UP); GetMsg(&a1,&a2,1<<MSG_IP_L_UP);
SpriteSetOrigin(*_root,x-a1,y-a2,0); SpriteSetOrigin(*_root,x-a1,y-a2,0);
SpriteEdUpdate(doc,doc_ce,*_root); SpriteEdUpdate(doc,doc_ce,*_root);
SpriteQueSelectAll(*_root,FALSE); SpriteQueSelAll(*_root,FALSE);
break; break;
case GED_SHIFT_SELECTED: case GED_SHIFT_SEL:
if (!SpriteQueSelectCnt(*_root)) if (!SpriteQueSelCnt(*_root))
SpriteQueSelectAll(*_root); SpriteQueSelAll(*_root);
doc_ce->de_flags=old_de_flags; doc_ce->de_flags=old_de_flags;
GetMsg(&a1,&a2,1<<MSG_IP_L_DOWN); GetMsg(&a1,&a2,1<<MSG_IP_L_DOWN);
xx=a1; yy=a2; xx=a1; yy=a2;
@@ -1143,8 +1143,8 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
xx=a1; yy=a2; xx=a1; yy=a2;
SpriteEdUpdate(doc,doc_ce,*_root); SpriteEdUpdate(doc,doc_ce,*_root);
} while (msg_code!=MSG_IP_L_UP); } while (msg_code!=MSG_IP_L_UP);
if (!SpriteQueSelectCnt(*_root,FALSE)) if (!SpriteQueSelCnt(*_root,FALSE))
SpriteQueSelectAll(*_root,FALSE); SpriteQueSelAll(*_root,FALSE);
break; break;
case GED_SHIFT_PTS: case GED_SHIFT_PTS:
case GED_SHIFT_RECTS: case GED_SHIFT_RECTS:
@@ -1161,15 +1161,15 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
} else } else
SpriteEdUpdate(doc,doc_ce,*_root); SpriteEdUpdate(doc,doc_ce,*_root);
break; break;
case GED_TRANSFORM_SELECTED: case GED_TRANSFORM_SEL:
if (!SpriteQueSelectCnt(*_root)) if (!SpriteQueSelCnt(*_root))
SpriteQueSelectAll(*_root); SpriteQueSelAll(*_root);
if (PopUpTransform(r)) { if (PopUpTransform(r)) {
SpriteTransform(r,*_root); SpriteTransform(r,*_root);
SpriteEdUpdate(doc,doc_ce,*_root); SpriteEdUpdate(doc,doc_ce,*_root);
} }
if (!SpriteQueSelectCnt(*_root,FALSE)) if (!SpriteQueSelCnt(*_root,FALSE))
SpriteQueSelectAll(*_root,FALSE); SpriteQueSelAll(*_root,FALSE);
break; break;
case GED_SHIFT_SUB_ORIGIN: case GED_SHIFT_SUB_ORIGIN:
doc_ce->de_flags=old_de_flags; doc_ce->de_flags=old_de_flags;
+4 -4
View File
@@ -581,7 +581,7 @@ U0 SMTextFamily(I64 eletype,CDoc *doc,CDocEntry *doc_ce,CSprite *root,CDC *dc,
I64 SMBitMap(I64 eletype,CDoc *doc,CDocEntry *doc_ce,CSprite *root, I64 SMBitMap(I64 eletype,CDoc *doc,CDocEntry *doc_ce,CSprite *root,
CDC *dc,I64 xx,I64 yy,I64 a1,I64 a2,CColorROPU32 bm_bkcolor, CDC *dc,I64 xx,I64 yy,I64 a1,I64 a2,CColorROPU32 bm_bkcolor,
Bool select,I64 xx1=0,I64 yy1=0,I64 xx2=0,I64 yy2=0,I64 *_cur_elem_num) Bool sel,I64 xx1=0,I64 yy1=0,I64 xx2=0,I64 yy2=0,I64 *_cur_elem_num)
{ {
I64 i,msg_code,x=xx,y=yy,x1=a1,y1=a2,x2=a1,y2=a2,old_width; I64 i,msg_code,x=xx,y=yy,x1=a1,y1=a2,x2=a1,y2=a2,old_width;
CSprite *tempg,*tempg1,*insert_pt; CSprite *tempg,*tempg1,*insert_pt;
@@ -590,7 +590,7 @@ I64 SMBitMap(I64 eletype,CDoc *doc,CDocEntry *doc_ce,CSprite *root,
insert_pt=SpriteSetSettings(,root,*_cur_elem_num,xx,yy,,,&x,&y); insert_pt=SpriteSetSettings(,root,*_cur_elem_num,xx,yy,,,&x,&y);
x+=xx; y+=yy; x+=xx; y+=yy;
if (select) { if (sel) {
xx1=a1; yy1=a2; xx1=a1; yy1=a2;
xx2=a1; yy2=a2; xx2=a1; yy2=a2;
old_width=dc->pen_width; old_width=dc->pen_width;
@@ -1077,7 +1077,7 @@ I64 SpriteMainEd(CDoc *doc)
break; break;
case MSG_IP_L_DOWN: case MSG_IP_L_DOWN:
switch (eletype) { switch (eletype) {
sub_switch_start: start:
case SPT_LINE: case SPT_LINE:
tempg=SMLine(dc,x,y,a1,a2,color); tempg=SMLine(dc,x,y,a1,a2,color);
break; break;
@@ -1124,7 +1124,7 @@ I64 SpriteMainEd(CDoc *doc)
case SPT_POLYPT: case SPT_POLYPT:
tempg=SMPolyPoint(dc,x,y,a1,a2,color); tempg=SMPolyPoint(dc,x,y,a1,a2,color);
break; break;
sub_switch_end: end:
if (tempg) { if (tempg) {
QueIns(tempg,insert_pt->last); QueIns(tempg,insert_pt->last);
SpriteEdUpdate(doc,doc_ce,root); SpriteEdUpdate(doc,doc_ce,root);
+317 -204
View File
File diff suppressed because it is too large. Load diff
+29 -4
View File
@@ -58,7 +58,7 @@ BDVD_NOT64_MSG:
BDVD_BLK_LO:: DU16 0; BDVD_BLK_LO:: DU16 0;
BDVD_BLK_HI:: DU16 0; BDVD_BLK_HI:: DU16 0;
BDVD_BLK_CNT:: DU16 0; BDVD_BLK_CNT:: DU16 0;
BDVD_SHIFT_BLKS:: DU16 0;
BDVD_PROGRESS_STEP:: DU32 0; BDVD_PROGRESS_STEP:: DU32 0;
BDVD_PROGRESS_VAL:: DU32 0; BDVD_PROGRESS_VAL:: DU32 0;
@@ -150,10 +150,35 @@ BDVD_MAIN::
POP CX POP CX
LOOP @@20 LOOP @@20
//Shift backward to align
PUSH DS
MOV BX,U16 [BDVD_SHIFT_BLKS-BDVD_START]
SHL BX,BLK_SIZE_BITS-4
MOV CX,U16 [BDVD_BLK_CNT-BDVD_START]
MOV AX,BOOT_RAM_BASE/16
MOV ES,AX
ADD AX,BX
MOV DS,AX
@@35: PUSH CX
XOR SI,SI
XOR DI,DI
MOV CX,DVD_BLK_SIZE/4
REP_MOVSD
MOV AX,DS
ADD AX,DVD_BLK_SIZE/16
MOV DS,AX
MOV AX,ES
ADD AX,DVD_BLK_SIZE/16
MOV ES,AX
POP CX
LOOP @@35
POP DS
//See $LK,"BootDVDProve",A="MN:BootDVDProve"$(). //See $LK,"BootDVDProve",A="MN:BootDVDProve"$().
MOV EBX,U32 [BDVD_BLK_LO-BDVD_START] //TODO: oops overflow? MOV EBX,U32 [BDVD_BLK_LO-BDVD_START]
SHL EBX,16 MOV AX,U16 [BDVD_SHIFT_BLKS-BDVD_START]
MOV BX,BOOT_SRC_DVD //$MA-X+PU,"See sys_boot_src",LM="Find(\"sys_boot_src\",\"/*\");View;\n"$ SHL EAX,16
MOV AX,BOOT_SRC_DVD //$MA-X+PU,"See sys_boot_src",LM="Find(\"sys_boot_src\",\"/*\");View;\n"$
//My assembler doesn't support 16-bit very well. //My assembler doesn't support 16-bit very well.
DU8 0xEA; //JMP BOOT_RAM_BASE:0000 DU8 0xEA; //JMP BOOT_RAM_BASE:0000
+2 -1
View File
@@ -86,7 +86,8 @@ BHD_HISTART:
@@10: POP CX @@10: POP CX
LOOP @@05 LOOP @@05
MOV EBX,BOOT_SRC_HARDDRV //$MA-X+PU,"See sys_boot_src",LM="Find(\"sys_boot_src\",\"/*\");View;\n"$ XOR EBX,EBX
MOV EAX,BOOT_SRC_HARDDRV //$MA-X+PU,"See sys_boot_src",LM="Find(\"sys_boot_src\",\"/*\");View;\n"$
//My assembler doesn't support 16-bit very well. //My assembler doesn't support 16-bit very well.
DU8 0xEA; //JMP BOOT_RAM_BASE:0000 DU8 0xEA; //JMP BOOT_RAM_BASE:0000
DU16 0,BOOT_RAM_BASE/16; DU16 0,BOOT_RAM_BASE/16;
+8 -7
View File
@@ -48,7 +48,7 @@ public Bool MakeOSDrvBootInstall(U8 src_drv=0,U8 dst_drv=0)
if (!Drv(src_drv)) if (!Drv(src_drv))
throw; throw;
MakeAll; MakeAll;
if ((bd=Let2BlkDev(dst_drv,FALSE)) && (dv=Let2Drv(dst_drv,FALSE))) if ((dv=Let2Drv(dst_drv,FALSE)) && (bd=dv->bd))
type=bd->type; type=bd->type;
else { else {
type=BDT_ATAPI; type=BDT_ATAPI;
@@ -56,6 +56,7 @@ public Bool MakeOSDrvBootInstall(U8 src_drv=0,U8 dst_drv=0)
} }
switch (type) { switch (type) {
case BDT_ATAPI: case BDT_ATAPI:
case BDT_FILE:
Move("/Kernel/Kernel.BIN.Z",BOOT_DIR_KERNEL_BIN_C); Move("/Kernel/Kernel.BIN.Z",BOOT_DIR_KERNEL_BIN_C);
res=TRUE; res=TRUE;
break; break;
@@ -67,7 +68,7 @@ public Bool MakeOSDrvBootInstall(U8 src_drv=0,U8 dst_drv=0)
else { else {
Free(de.full_name); Free(de.full_name);
"Modifying partition boot record.\n"; "Modifying partition boot record.\n";
RBlks(dv,&br,dv->base_offset,1); RBlks(dv,&br,dv->drv_offset,1);
br.jump_and_nop[0]=OC_JMP_REL8; br.jump_and_nop[0]=OC_JMP_REL8;
br.jump_and_nop[1]=offset(CFAT32Boot.code)-2; br.jump_and_nop[1]=offset(CFAT32Boot.code)-2;
#assert offset(CFAT32Boot.code)>=offset(CRedSeaBoot.code) #assert offset(CFAT32Boot.code)>=offset(CRedSeaBoot.code)
@@ -79,7 +80,7 @@ public Bool MakeOSDrvBootInstall(U8 src_drv=0,U8 dst_drv=0)
#assert sizeof(CFAT32Boot.code)>=BHD_END-BHD_CODE #assert sizeof(CFAT32Boot.code)>=BHD_END-BHD_CODE
for (;i<sizeof(CFAT32Boot.code);i++) for (;i<sizeof(CFAT32Boot.code);i++)
br.code[i]=0; br.code[i]=0;
WBlks(dv,&br,dv->base_offset,1); WBlks(dv,&br,dv->drv_offset,1);
res=TRUE; res=TRUE;
} }
break; break;
@@ -172,7 +173,7 @@ public Bool MasterBootInstall(U8 drv_let,U8 *drv_lst=NULL)
if (dv->fs_type!=FSt_REDSEA && dv->fs_type!=FSt_FAT32) if (dv->fs_type!=FSt_REDSEA && dv->fs_type!=FSt_FAT32)
PrintErr("File System Not Supported\n"); PrintErr("File System Not Supported\n");
else { else {
bd=Let2BlkDev(drv_let); bd=dv->bd;
if (!FileFind(BOOT_DIR_OLDMBR_BIN_C,,FUF_JUST_FILES)) if (!FileFind(BOOT_DIR_OLDMBR_BIN_C,,FUF_JUST_FILES))
MasterBootOldRead(drv_let,drv_let); MasterBootOldRead(drv_let,drv_let);
@@ -190,14 +191,14 @@ public Bool MasterBootInstall(U8 drv_let,U8 *drv_lst=NULL)
ptr=buf; ptr=buf;
while (ch=*ptr++) { while (ch=*ptr++) {
if ((p1=Let2Drv(ch,FALSE)) && (bd1=Let2BlkDev(ch,FALSE)) && bd1==bd) { if ((p1=Let2Drv(ch,FALSE)) && (bd1=p1->bd) && bd1==bd) {
*_q=p1->base_offset; *_q=p1->drv_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));
_q++; _q++;
} }
} }
CatPrint(menu_ptr,"\n\rSelection:"); CatPrint(menu_ptr,"\n\rSellection:");
size=BMHD2_END-BMHD2_START; size=BMHD2_END-BMHD2_START;
FileWrite(BOOT_DIR_BOOTMHD2_BIN_C,BMHD2_START,size); FileWrite(BOOT_DIR_BOOTMHD2_BIN_C,BMHD2_START,size);
@@ -1,28 +1,14 @@
#help_index "File/CD DVD" #help_index "File/CD DVD"
U0 FillU16Palindrome(CPalindromeU16 *dst,U16 w)
{
dst->big=EndianU16(w);
dst->little=w;
}
U0 FillU32Palindrome(CPalindromeU32 *dst,I64 d)
{
dst->big=EndianU32(d);
dst->little=d;
}
class CCDVDUserData //Create DVD class CCDVDUserData //Create DVD
{ {
I64 loc,path_entry_num, I64 loc,path_entry_num,
short_dir_blks,long_dir_blks; short_dir_blks,long_dir_blks;
}; };
I64 DVDFileCreate2(CFile *out_file,CDirEntry *tempde, I64 DVDFileCreate2(CFile *out_file,CDirEntry *tempde,CISO1DirEntry *tempi,
CISO1DirEntry *tempi,CISO1DirEntry *tempi2, CISO1DirEntry *tempi2,I64 *_cur_blk,CDirEntry *parent,Bool write,
I64 *_cur_blk, U8 *stage2_filename,I64 *_stage2_blk)
CDirEntry *parent,Bool write,
U8 *stage2_filename,I64 *_stage2_blk)
{ {
CCDVDUserData *tempc; CCDVDUserData *tempc;
CDirEntry *tempde1,*tempde2; CDirEntry *tempde1,*tempde2;
@@ -65,7 +51,7 @@ I64 DVDFileCreate2(CFile *out_file,CDirEntry *tempde,
de2->flags=ISO1_ATTR_DIR; de2->flags=ISO1_ATTR_DIR;
de2->name_len=1; de2->name_len=1;
de2->name=0; de2->name=0;
de2->len=de2->len+de2->name_len; de2->len+=de2->name_len;
de2(U8 *)+=de2->len; de2(U8 *)+=de2->len;
de2->len=sizeof(CISO1DirEntry)-1; de2->len=sizeof(CISO1DirEntry)-1;
@@ -315,20 +301,7 @@ U0 DVDFillPathTable(CDirEntry *tempde,
} }
} }
class CElTorito public I64 ISO9660ISO(U8 *_filename=NULL,U8 *src_files_find_mask,
{
U16 w[16];
U8 bootable; //88=bootable 00=not bootable
U8 media_type; //0=no emulation 4=hard disk
U16 load_seg; //0000->07C0
U8 sys_type;
U8 zero;
U16 sect_cnt;
U32 load_rba; //start addr of virtual disk
U8 zero2[20];
};
public I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask,
U8 *fu_flags=NULL,U8 *_stage2_filename=NULL) U8 *fu_flags=NULL,U8 *_stage2_filename=NULL)
{//See $LK,"::/Misc/DoDistro.CPP"$ {//See $LK,"::/Misc/DoDistro.CPP"$
//Use "C:/Distro/*" if you want all files in the C:/Distro directory. //Use "C:/Distro/*" if you want all files in the C:/Distro directory.
@@ -338,7 +311,7 @@ public I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask,
*iso_sup=CAlloc(DVD_BLK_SIZE), *iso_sup=CAlloc(DVD_BLK_SIZE),
*iso_term=CAlloc(DVD_BLK_SIZE); *iso_term=CAlloc(DVD_BLK_SIZE);
CDirEntry *rootdir=CAlloc(sizeof(CDirEntry)); CDirEntry *rootdir=CAlloc(sizeof(CDirEntry));
I64 i,j,stage2_blk=(DVD_FILE_OFFSET+1<<2+DVD_BOOT_LOADER_SIZE/BLK_SIZE)>>2, I64 i,j,stage2_blk=(20<<2+1<<2+DVD_BOOT_LOADER_SIZE/BLK_SIZE)>>2,
stage2_size,cur_blk=0,tabsize,tabsize2,first_free,max_depth,fuf_flags=0; stage2_size,cur_blk=0,tabsize,tabsize2,first_free,max_depth,fuf_flags=0;
U32 *d; U32 *d;
CElTorito *et=CAlloc(DVD_BLK_SIZE); CElTorito *et=CAlloc(DVD_BLK_SIZE);
@@ -369,13 +342,12 @@ public I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask,
tempc=rootdir->user_data; tempc=rootdir->user_data;
tempc->path_entry_num=1; tempc->path_entry_num=1;
cur_blk=DVD_FILE_OFFSET>>2; cur_blk=20<<2>>2;
if (stage2_filename) //preboot and bootloader if (stage2_filename) //preboot and bootloader
cur_blk+=1+DVD_BOOT_LOADER_SIZE/DVD_BLK_SIZE; cur_blk+=1+DVD_BOOT_LOADER_SIZE/DVD_BLK_SIZE;
DVDFileCreate2(out_file,rootdir, DVDFileCreate2(out_file,rootdir,&iso_pri->root_dir_record,
&iso_pri->root_dir_record, &iso_sup->root_dir_record,&cur_blk,rootdir,FALSE,
&iso_sup->root_dir_record, stage2_filename,&stage2_blk);
&cur_blk,rootdir,FALSE,stage2_filename,&stage2_blk);
tabsize=sizeof(CISO1PathEntry); tabsize=sizeof(CISO1PathEntry);
tabsize2=sizeof(CISO1PathEntry); tabsize2=sizeof(CISO1PathEntry);
max_depth=DVDTableLen(rootdir,&tabsize,&tabsize2,1); max_depth=DVDTableLen(rootdir,&tabsize,&tabsize2,1);
@@ -394,7 +366,7 @@ public I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask,
if (!out_file) if (!out_file)
goto cf_done; goto cf_done;
while (cur_blk<DVD_FILE_OFFSET>>2) while (cur_blk<20<<2>>2)
FWBlks(out_file,zero_buf,cur_blk++<<2,4); FWBlks(out_file,zero_buf,cur_blk++<<2,4);
iso_pri->type=ISO1T_PRI_VOL_DESC; iso_pri->type=ISO1T_PRI_VOL_DESC;
@@ -418,7 +390,7 @@ public I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask,
iso_boot->version=1; iso_boot->version=1;
StrCpy(iso_boot(U8 *)+7,"EL TORITO SPECIFICATION"); StrCpy(iso_boot(U8 *)+7,"EL TORITO SPECIFICATION");
cur_blk=DVD_FILE_OFFSET>>2; cur_blk=20<<2>>2;
if (stage2_filename) { if (stage2_filename) {
d=iso_boot(U8 *)+0x47; d=iso_boot(U8 *)+0x47;
@@ -511,7 +483,7 @@ public I64 ISOFileCreate(U8 *_filename=NULL,U8 *src_files_find_mask,
"$$RED$$!!! Boot Stage 2 !!! %X-%X$$FG$$\n", "$$RED$$!!! Boot Stage 2 !!! %X-%X$$FG$$\n",
stage2_blk,stage2_blk+stage2_size-1; stage2_blk,stage2_blk+stage2_size-1;
FWBlks(out_file,stage1_buf, FWBlks(out_file,stage1_buf,
DVD_FILE_OFFSET+1<<2,DVD_BOOT_LOADER_SIZE/BLK_SIZE); 20<<2+1<<2,DVD_BOOT_LOADER_SIZE/BLK_SIZE);
} else { } else {
FWBlks(out_file,iso_sup,17<<2,4); FWBlks(out_file,iso_sup,17<<2,4);
FWBlks(out_file,iso_term,18<<2,4); FWBlks(out_file,iso_term,18<<2,4);
+186
View File
@@ -0,0 +1,186 @@
#help_index "File/CD DVD"
U0 FillU16Palindrome(CPalindromeU16 *dst,U16 w)
{
dst->big=EndianU16(w);
dst->little=w;
}
U0 FillU32Palindrome(CPalindromeU32 *dst,I64 d)
{
dst->big=EndianU32(d);
dst->little=d;
}
class CElTorito
{
U16 w[16];
U8 bootable; //88=bootable 00=not bootable
U8 media_type; //0=no emulation 4=hard disk
U16 load_seg; //0000->07C0
U8 sys_type;
U8 zero;
U16 sect_cnt;
U32 load_rba; //start addr of virtual disk
U8 zero2[20];
};
U0 RedSeaISO9660(U8 *iso_filename,U8 drv_let,I64 stage2_blk=0,I64 stage2_size=0)
{
CDrv *dv=Let2Drv(drv_let);
CISO1PriDesc *iso_pri=CAlloc(DVD_BLK_SIZE),
*iso_boot=CAlloc(DVD_BLK_SIZE),
*iso_sup=CAlloc(DVD_BLK_SIZE),
*iso_term=CAlloc(DVD_BLK_SIZE);
I64 iso_size=0,i,j;
U32 *d;
CElTorito *et=CAlloc(DVD_BLK_SIZE);
U8 *stage1_buf=CAlloc(DVD_BOOT_LOADER_SIZE),
*zero_buf=CAlloc(DVD_BLK_SIZE);
CFile *out_file=NULL;
if (out_file=FOpen(iso_filename,"wc+")) {
iso_size=FSize(out_file)/DVD_BLK_SIZE;
for (i=0;i<dv->bd->drv_offset;i+=4)
FWBlks(out_file,zero_buf,i,4);
iso_pri->type=ISO1T_PRI_VOL_DESC;
StrCpy(iso_pri->id,"CD001");
iso_pri->version=1;
FillU16Palindrome(&iso_pri->vol_set_size,1);
FillU16Palindrome(&iso_pri->vol_seq_num,1);
FillU16Palindrome(&iso_pri->log_block_size,DVD_BLK_SIZE);
FillU32Palindrome(&iso_pri->vol_space_size,iso_size);
FillU32Palindrome(&iso_pri->root_dir_record,dv->root_cluster);
iso_pri->file_structure_version=1;
StrCpy(iso_pri->publisher_id,"TempleOS RedSea");
MemCpy(iso_sup,iso_pri,DVD_BLK_SIZE);
iso_sup->type=ISO1T_SUPPLEMENTARY_DESC;
iso_boot->type=ISO1T_BOOT_RECORD;
StrCpy(iso_boot->id,"CD001");
iso_boot->version=1;
StrCpy(iso_boot(U8 *)+7,"EL TORITO SPECIFICATION");
FWBlks(out_file,iso_pri,16<<2,4);
iso_term->type=ISO1T_TERMINATOR;
StrCpy(iso_term->id,"CD001");
iso_term->version=1;
if (stage2_blk) {
d=iso_boot(U8 *)+0x47;
*d=20<<2>>2;
FWBlks(out_file,iso_boot,17<<2,4);
FWBlks(out_file,iso_sup,18<<2,4);
FWBlks(out_file,iso_term,19<<2,4);
et->w[0]=1;
StrCpy(&et->w[2],"TempleOS");
et->w[15]=0xAA55;
j=0;
for (i=0;i<16;i++) //Checksum
j+=et->w[i];
et->w[14]=-j;
et->bootable=0x88;
et->media_type=0;//0=no emu 2=1.44meg 4=hard drive
et->sect_cnt=4; //5 seems like the limit, 4 is safer
et->load_rba=20<<2>>2+1;
FWBlks(out_file,et,20<<2,4);
MemCpy(stage1_buf,BDVD_START,BDVD_END-BDVD_START);
*(BDVD_BLK_LO -BDVD_START+stage1_buf)(U32 *)=stage2_blk>>2;
*(BDVD_BLK_CNT -BDVD_START+stage1_buf)(U16 *)=
(stage2_size+DVD_BLK_SIZE-1)>>(BLK_SIZE_BITS+2);
*(BDVD_SHIFT_BLKS -BDVD_START+stage1_buf)(U16 *)=stage2_blk&3;
if (stage2_blk&3)
*(BDVD_BLK_CNT -BDVD_START+stage1_buf)(U16 *)+=1;
FWBlks(out_file,stage1_buf,
20<<2+1<<2,DVD_BOOT_LOADER_SIZE/BLK_SIZE);
} else {
FWBlks(out_file,iso_sup,17<<2,4);
FWBlks(out_file,iso_term,18<<2,4);
}
FClose(out_file);
}
Free(zero_buf);
Free(stage1_buf);
Free(et);
Free(iso_pri);
Free(iso_boot);
Free(iso_sup);
Free(iso_term);
}
I64 RedSeaISOPass1(CDirEntry *tempde)
{
I64 dir_entry_cnt=3+LinkedLstCnt(tempde),res=0;
while (tempde) {
if (tempde->attr & RS_ATTR_DIR) {
if (tempde->sub)
res+=RedSeaISOPass1(tempde->sub);
else
res+=BLK_SIZE; //Empty dir
} else
res+=CeilU64(tempde->size,BLK_SIZE);
tempde=tempde->next;
}
res+=CeilU64(dir_entry_cnt<<6,BLK_SIZE); //Size in bytes
#assert CDIR_SIZE==64
return res;
}
public I64 RedSeaISO(U8 *_iso_filename=NULL,U8 *_src_dir,
U8 *_stage2_filename=NULL)
{//See $LK,"::/Misc/DoDistro.CPP"$. Must be ISO.C
I64 i,res,root_cnt,root_dir_blks,bitmap_blks,bitmap_blks1;
CDirEntry *tempde,de;
U8 buf[STR_LEN],*iso_filename,*src_dir,*stage2_filename;
CDrv *dv=DrvNextFree('M'); //First $LK,"BDT_FILE",A="MN:BDT_FILE"$
CBlkDev *bd=BlkDevNextFree(dv->drv_let,BDT_FILE);
if (!_iso_filename)
_iso_filename=blkdev.dft_iso_filename;
iso_filename=ChgExt(_iso_filename,"ISO.C");
src_dir=DirNameAbs(_src_dir);
if (_stage2_filename) {
stage2_filename=FileNameAbs(_stage2_filename);
*stage2_filename=dv->drv_let;
i=StrLen(src_dir);
if (i!=3) //If not root
i++; //Skip slash
StrCpy(stage2_filename+3,stage2_filename+i);
} else
stage2_filename=NULL;
tempde=FilesFind(src_dir,FUF_RECURSE);
root_cnt=LinkedLstCnt(tempde)+3;
root_dir_blks=CeilU64(root_cnt<<6,BLK_SIZE)>>BLK_SIZE_BITS;
if (res=RedSeaISOPass1(tempde)>>BLK_SIZE_BITS) {
bd->drv_offset=19<<2;
if (stage2_filename) //preboot and bootloader
bd->drv_offset+=(DVD_BLK_SIZE*2+DVD_BOOT_LOADER_SIZE)/BLK_SIZE;
bitmap_blks=1;
do {
bitmap_blks1=bitmap_blks;
bitmap_blks=(res+bitmap_blks+BLK_SIZE<<3-1)/BLK_SIZE<<3;
} while (bitmap_blks!=bitmap_blks1);
bd->max_blk=CeilI64(bd->drv_offset+1+bitmap_blks+res,4);
bd->max_blk--; //Inclusive.
bd->file_dsk_name=AStrNew(iso_filename);
bd->init_root_dir_blks=root_dir_blks;
BlkDevAdd(bd,TRUE,TRUE);
StrPrint(buf,"%C:/",dv->drv_let);
CopyTree(src_dir,buf,TRUE);
if (FileFind(stage2_filename,&de))
RedSeaISO9660(iso_filename,dv->drv_let,de.cluster,de.size);
else
RedSeaISO9660(iso_filename,dv->drv_let);
DrvDel(dv);
BlkDevDel(bd);
}
Free(stage2_filename);
Free(src_dir);
Free(iso_filename);
return res;
}
+2 -1
View File
@@ -3,7 +3,8 @@ Cd(__DIR__);;
#include "BootHD" #include "BootHD"
#include "BootMHD" #include "BootMHD"
#include "BootMHD2" #include "BootMHD2"
#include "DskISOFile" #include "DskISORedSea"
#include "DskISO9660"
#include "BootIns" #include "BootIns"
#include "Reboot" #include "Reboot"
Cd("..");; Cd("..");;
+1
View File
@@ -43,6 +43,7 @@ public U0 RAMReboot(U8 *filename)
while (sys_ram_reboot<0x100000); while (sys_ram_reboot<0x100000);
hi_image->boot_src=BOOT_SRC_RAM; hi_image->boot_src=BOOT_SRC_RAM;
hi_image->boot_blk=0;
hi_image->boot_patch_table_base=lo_image(U8 *)+hi_image->h.patch_table_offset; hi_image->boot_patch_table_base=lo_image(U8 *)+hi_image->h.patch_table_offset;
hi_image->sys_run_level =lo_image->sys_run_level&(RLF_VGA|RLF_16BIT); hi_image->sys_run_level =lo_image->sys_run_level&(RLF_VGA|RLF_16BIT);
MemCpy(&hi_image->start,&lo_image->start, MemCpy(&hi_image->start,&lo_image->start,
+3 -3
View File
@@ -34,7 +34,7 @@ I64 DiffEntriesCompare(CDocEntry *doc_e1,CDocEntry *doc_e2)
#define DF_ABORT_ALL_FILES 0x20 #define DF_ABORT_ALL_FILES 0x20
#define DF_NO_MORE_PMTS_THIS_FILE 0x40 #define DF_NO_MORE_PMTS_THIS_FILE 0x40
U0 DiffSelect(CDoc *doc,I64 *_df_flags,I64 j1_lo,I64 j1_hi, U0 DiffSel(CDoc *doc,I64 *_df_flags,I64 j1_lo,I64 j1_hi,
I64 j2_lo,I64 j2_hi,I64 cnt1,I64 cnt2, I64 j2_lo,I64 j2_hi,I64 cnt1,I64 cnt2,
CDocEntry **doc_unsorted1,CDocEntry **doc_unsorted2) CDocEntry **doc_unsorted1,CDocEntry **doc_unsorted2)
{ {
@@ -150,7 +150,7 @@ Bool DiffSub(CDoc *doc,I64 *_df_flags,I64 j1_lo,I64 j1_hi,I64 j2_lo,I64 j2_hi,
if (j1_lo>=j1_hi || j2_lo>=j2_hi) { if (j1_lo>=j1_hi || j2_lo>=j2_hi) {
if (j1_lo<j1_hi || j2_lo<j2_hi) { if (j1_lo<j1_hi || j2_lo<j2_hi) {
DiffSelect(doc,_df_flags,j1_lo,j1_hi,j2_lo,j2_hi,cnt1,cnt2, DiffSel(doc,_df_flags,j1_lo,j1_hi,j2_lo,j2_hi,cnt1,cnt2,
doc_unsorted1,doc_unsorted2); doc_unsorted1,doc_unsorted2);
return TRUE; return TRUE;
} else } else
@@ -202,7 +202,7 @@ Bool DiffSub(CDoc *doc,I64 *_df_flags,I64 j1_lo,I64 j1_hi,I64 j2_lo,I64 j2_hi,
} }
} }
if (!best_score) { if (!best_score) {
DiffSelect(doc,_df_flags,j1_lo,j1_hi,j2_lo,j2_hi,cnt1,cnt2, DiffSel(doc,_df_flags,j1_lo,j1_hi,j2_lo,j2_hi,cnt1,cnt2,
doc_unsorted1,doc_unsorted2); doc_unsorted1,doc_unsorted2);
return TRUE; return TRUE;
} else { } else {
+1 -1
View File
@@ -57,7 +57,7 @@ I64 FindFile(U8 *needle_str,U8 *haystack_filename,
cnt++; cnt++;
if (first_on_line || Bt(_fuf_flags,FUf_REPLACE)) { if (first_on_line || Bt(_fuf_flags,FUf_REPLACE)) {
first_on_line=FALSE; first_on_line=FALSE;
PutFileLink(haystack_filename,doc_e->y+1,TRUE); PutFileLink(haystack_filename,,doc_e->y+1,TRUE);
name_buf=MStrPrint("%s,%d",haystack_filename,doc_e->y+1); name_buf=MStrPrint("%s,%d",haystack_filename,doc_e->y+1);
if (cur_l=DocPut) { if (cur_l=DocPut) {
old_flags=cur_l->flags&DOCF_PLAIN_TEXT; old_flags=cur_l->flags&DOCF_PLAIN_TEXT;
+2 -2
View File
@@ -20,13 +20,13 @@ I64 LinkChkDoc(CDoc *doc,I64 *_fuf_flags)
Fs->put_doc=old_doc; Fs->put_doc=old_doc;
DocUnlock(old_doc); DocUnlock(old_doc);
if (!found) { if (!found) {
PutFileLink(doc->filename.name,doc_e->y); PutFileLink(doc->filename.name,,doc_e->y);
"$$RED$$ %04d:%s\n$$FG$$",doc_e->y,st; "$$RED$$ %04d:%s\n$$FG$$",doc_e->y,st;
res++; res++;
} }
Free(st); Free(st);
} else if (doc_e->type_u8==DOCT_ERROR) { } else if (doc_e->type_u8==DOCT_ERROR) {
PutFileLink(doc->filename.name,doc_e->y); PutFileLink(doc->filename.name,,doc_e->y);
"$$RED$$ Doc Error\n$$FG$$"; "$$RED$$ Doc Error\n$$FG$$";
res++; res++;
} }
+2 -2
View File
@@ -12,7 +12,7 @@ U0 TXTPutS(CDoc *doc,U8 *st,I64 *_col)
} while (*_col&7); } while (*_col&7);
break; break;
sub_switch_start: start:
case 'ă': ptr="pi"; break; case 'ă': ptr="pi"; break;
case 'é': ptr="theta"; break; case 'é': ptr="theta"; break;
case 'č': ptr="phi"; break; case 'č': ptr="phi"; break;
@@ -20,7 +20,7 @@ U0 TXTPutS(CDoc *doc,U8 *st,I64 *_col)
case 'ě': ptr="inf"; break; case 'ě': ptr="inf"; break;
case 'ć': ptr="u"; break; case 'ć': ptr="u"; break;
case CH_SHIFT_SPACE: ptr=" "; break; case CH_SHIFT_SPACE: ptr=" "; break;
sub_switch_end: end:
DocPrint(doc,ptr); DocPrint(doc,ptr);
*_col=*_col+StrLen(ptr); *_col=*_col+StrLen(ptr);
break; break;
+2 -2
View File
@@ -53,9 +53,9 @@ U0 KeyMapCtrlAltFamily(Bool no_shift,Bool shift)
if (no_shift) KeyMapKeyPrint(SC_DELETE+SCF_CTRL+SCF_ALT+no_shift_f, if (no_shift) KeyMapKeyPrint(SC_DELETE+SCF_CTRL+SCF_ALT+no_shift_f,
&Reboot,"Cmd /Reboot"); &Reboot,"Cmd /Reboot");
if (no_shift) KeyMapKeyPrint(SC_ESC+SCF_CTRL+SCF_ALT+no_shift_f, if (no_shift) KeyMapKeyPrint(SC_ESC+SCF_CTRL+SCF_ALT+no_shift_f,
&User,"Cmd /Spawn New User Task"); &User,"Cmd /Terminal Window");
if (no_shift) KeyMapKeyPrint(SC_TAB+SCF_CTRL+SCF_ALT+no_shift_f, if (no_shift) KeyMapKeyPrint(SC_TAB+SCF_CTRL+SCF_ALT+no_shift_f,
&WinToTop,"Cmd /Switch Focus to Next Task"); &WinToTop,"Cmd /Next Focus Task");
for (i=0;i<26;i++) for (i=0;i<26;i++)
if (keydev.fp_ctrl_alt_cbs[i]) { if (keydev.fp_ctrl_alt_cbs[i]) {
+1 -1
View File
@@ -104,7 +104,7 @@ U0 ExtendedASCII()
{ {
I64 i; I64 i;
CDoc *doc=DocNew; CDoc *doc=DocNew;
DocPrint(doc,"Select Char and Press <ESC>\n$$LTBLUE$$"); DocPrint(doc,"Sel Char and Press <ESC>\n$$LTBLUE$$");
for (i=0;i<256;i++) { for (i=0;i<256;i++) {
if (i>=CH_SHIFT_SPACE && i!=0x7F) { if (i>=CH_SHIFT_SPACE && i!=0x7F) {
if (i==CH_SHIFT_SPACE) if (i==CH_SHIFT_SPACE)
+2 -2
View File
@@ -2,7 +2,7 @@ extern U0 BgtRegen();
Bool BgtPutKey(CDoc *doc,U8 *,I64 ch,I64 sc) Bool BgtPutKey(CDoc *doc,U8 *,I64 ch,I64 sc)
{//ch=ASCII; sc=scan_code {//ch=ASCII; sc=scan_code
nounusedwarn sc; no_warn sc;
CBgtEntry *tempb,*tempb1; CBgtEntry *tempb,*tempb1;
CBgtTemplate *tempt,*tempt1; CBgtTemplate *tempt,*tempt1;
CDocEntry *doc_ce; CDocEntry *doc_ce;
@@ -51,7 +51,7 @@ Bool BgtPutKey(CDoc *doc,U8 *,I64 ch,I64 sc)
case 'a': case 'a':
PopUpOk( "Set the name and color of your accounts.\n" PopUpOk( "Set the name and color of your accounts.\n"
"To delete accounts, manually edit\n" "To delete accounts, manually edit\n"
"$$GREEN$$/Home/Budget/Accts.TXT.Z$$FG$$."); "$$GREEN$$~/Budget/Accts.TXT.Z$$FG$$.");
if (PopUpEd(BGT_ACCTS_FILE,Fs)) { if (PopUpEd(BGT_ACCTS_FILE,Fs)) {
BgtAcctsRead; BgtAcctsRead;
BgtRegen; BgtRegen;
+3 -3
View File
@@ -1,6 +1,6 @@
#define BGT_STRINGS_FILE "::/Home/Budget/Strs.TXT.Z" #define BGT_STRINGS_FILE "~/Budget/Strs.TXT.Z"
#define BGT_ACCTS_FILE "::/Home/Budget/Accts.TXT.Z" #define BGT_ACCTS_FILE "~/Budget/Accts.TXT.Z"
#define BGT_DATA_FILE "::/Home/Budget/Bgt.DAT.Z" #define BGT_DATA_FILE "~/Budget/Bgt.DAT.Z"
#define BE_NORMAL 0 #define BE_NORMAL 0
#define BE_GAS 1 #define BE_GAS 1
+3 -3
View File
@@ -1,5 +1,5 @@
Cd(__DIR__);; Cd(__DIR__);;
if (!FileFind("::/Home/Budget",,FUF_JUST_DIRS)) { if (!FileFind("~/Budget",,FUF_JUST_DIRS)) {
MkDir("::/Home/Budget"); MkDir("~/Budget");
Copy("Accts.TXT.Z","::/Home/Budget"); Copy("Accts.TXT.Z","~/Budget");
} }
+73 -44
View File
@@ -240,16 +240,17 @@ I64 score0,score1;
#define NUM_PER_SIDE 3 #define NUM_PER_SIDE 3
#define NUM_OBJS (NUM_PER_SIDE*2+1) #define NUM_OBJS (NUM_PER_SIDE*2+1)
Bool someone_shooting; Bool someone_shooting,someone_has_ball;
F64 shot_land_t;
class Obj class Obj
{ {
I64 team; //-1 is ball I64 team; //-1 is ball
F64 x,y,z,DxDt,DyDt,DzDt,ay,radius,stolen_t0; F64 x,y,z,DxDt,DyDt,DzDt,é,radius,stolen_t0;
F64 last_t0,next_t0,foul_t0; F64 get_ball_dt,get_ball_é,nearest_man_dd,last_t0,next_t0,foul_t0;
I64 last_img,next_img; I64 last_img,next_img;
Bool stopped,shooting,has_ball,pad[5]; Bool stopped,shooting,has_ball,nearest_ball,pad[4];
} objs[NUM_OBJS],*ball,*human; } objs[NUM_OBJS],*ball,*human,*last_owner;
/*Just to be different, I didn't use the built-in /*Just to be different, I didn't use the built-in
DCF_TRANSFORMATION flag in this game. DCF_TRANSFORMATION flag in this game.
@@ -282,7 +283,7 @@ U0 DrawObj(CDC *dc,Obj *o,F64 tt)
temps=SpriteInterpolate((tt-o->last_t0)/(o->next_t0-o->last_t0), temps=SpriteInterpolate((tt-o->last_t0)/(o->next_t0-o->last_t0),
imgs[o->last_img].img[o->team], imgs[o->last_img].img[o->team],
imgs[o->next_img].img[o->team]); imgs[o->next_img].img[o->team]);
SpriteY3B(dc,o->x,(o->y-o->z)/2,GR_Z_ALL-o->y,temps,o->ay); SpriteY3B(dc,o->x,(o->y-o->z)/2,GR_Z_ALL-o->y,temps,o->é);
Free(temps); Free(temps);
} }
} }
@@ -316,9 +317,9 @@ U0 DrawIt(CTask *task,CDC *dc)
o=o_sort[i]=&objs[i]; o=o_sort[i]=&objs[i];
if (o!=ball) { if (o!=ball) {
if (o->has_ball) { if (o->has_ball) {
ball->x=o->x+HAND_X_OFFSET*Cos(o->ay-ã/2)+HAND_Y_OFFSET*Cos(o->ay); ball->x=o->x+HAND_X_OFFSET*Cos(o->é-ã/2)+HAND_Y_OFFSET*Cos(o->é);
//The factor 2 is because the man is not transformed. //The factor 2 is because the man is not transformed.
ball->y=o->y+HAND_X_OFFSET*Sin(o->ay-ã/2)/2+HAND_Y_OFFSET*Sin(o->ay)/2; ball->y=o->y+HAND_X_OFFSET*Sin(o->é-ã/2)/2+HAND_Y_OFFSET*Sin(o->é)/2;
if (ball->z+ball->radius*2>o->z+HAND_Z_OFFSET) if (ball->z+ball->radius*2>o->z+HAND_Z_OFFSET)
ball->z=o->z+HAND_Z_OFFSET-ball->radius*2; ball->z=o->z+HAND_Z_OFFSET-ball->radius*2;
} else if (o->shooting) { } else if (o->shooting) {
@@ -355,10 +356,12 @@ U0 DrawIt(CTask *task,CDC *dc)
o->next_img=FIRST_SHOOTING; o->next_img=FIRST_SHOOTING;
if (o->next_img>LAST_SHOOTING) { if (o->next_img>LAST_SHOOTING) {
o->next_img=FIRST_STANDING; o->next_img=FIRST_STANDING;
someone_shooting=o->has_ball=o->shooting=FALSE; someone_has_ball=someone_shooting=o->has_ball=o->shooting=FALSE;
ball->DxDt=o->DxDt+SHOT_VELOCITY/sqrt2*Cos(o->ay-ã/2); ball->DxDt=o->DxDt+SHOT_VELOCITY/sqrt2*Cos(o->é-ã/2);
ball->DyDt=o->DyDt+SHOT_VELOCITY/sqrt2*Sin(o->ay-ã/2); ball->DyDt=o->DyDt+SHOT_VELOCITY/sqrt2*Sin(o->é-ã/2);
ball->DzDt=o->DzDt+SHOT_VELOCITY/sqrt2; ball->DzDt=o->DzDt+SHOT_VELOCITY/sqrt2;
shot_land_t=tt+(ball->DzDt+Sqrt(Sqr(ball->DzDt)+
2*GRAVITY_ACCELERATION*ball->z))/GRAVITY_ACCELERATION;
} else { } else {
ball->DxDt=0; ball->DxDt=0;
ball->DyDt=0; ball->DyDt=0;
@@ -426,9 +429,9 @@ U0 Shoot(Obj *o)
U0 AnimateTask(CTask *parent_task) U0 AnimateTask(CTask *parent_task)
{ {
F64 d,dx,dy,dt,dx2,dy2,t0=tS; F64 d,dx,dy,dt,dx2,dy2,t0=tS;
I64 i,j,team; I64 i,j;
Bool gets_ball,ball_stolen; Bool gets_ball;
Obj *o; Obj *o,*nearest_ball[2];
while (TRUE) { while (TRUE) {
dt=tS-t0; dt=tS-t0;
t0=tS; t0=tS;
@@ -444,10 +447,29 @@ U0 AnimateTask(CTask *parent_task)
} }
} }
if (game_t_end) if (game_t_end) {
MemSet(&nearest_ball,0,sizeof(nearest_ball));
for (i=0;i<NUM_OBJS;i++) { for (i=0;i<NUM_OBJS;i++) {
o=&objs[i]; o=&objs[i];
o->nearest_ball=FALSE;
if (o!=ball) {
d=0;
for (j=0;j<5;j++) //Iterative estimate of how long to get ball.
d=Sqrt(Sqr(ball->DxDt*d+ball->x-o->x)+
Sqr(ball->DyDt*d+ball->y-o->y))/MAN_VELOCITY;
o->get_ball_dt=d;
o->get_ball_é=Arg(ball->DxDt*d+ball->x-o->x,
ball->DyDt*d+ball->y-o->y);
if (o!=last_owner && !nearest_ball[o->team] ||
o->get_ball_dt<nearest_ball[o->team]->get_ball_dt)
nearest_ball[o->team]=o;
}
}
nearest_ball[0]->nearest_ball=TRUE;
nearest_ball[1]->nearest_ball=TRUE;
for (i=0;i<NUM_OBJS;i++) {
o=&objs[i];
if (o==ball) { if (o==ball) {
o->x+=dt*o->DxDt; o->x+=dt*o->DxDt;
o->y+=dt*o->DyDt; o->y+=dt*o->DyDt;
@@ -460,32 +482,31 @@ U0 AnimateTask(CTask *parent_task)
dy=ball->y-o->y; dy=ball->y-o->y;
if (dx*dx+dy*dy<HAND_SQR_OFFSET && ball->z<o->z+HAND_Z_OFFSET) { if (dx*dx+dy*dy<HAND_SQR_OFFSET && ball->z<o->z+HAND_Z_OFFSET) {
gets_ball=TRUE; gets_ball=TRUE;
ball_stolen=FALSE;
for (j=0;j<NUM_PER_SIDE*2;j++) for (j=0;j<NUM_PER_SIDE*2;j++)
if (j!=i && objs[j].has_ball) { if (j!=i && objs[j].has_ball) {
if (Rand<2.0*dt) { if (Rand<2.0*dt) {
objs[j].stolen_t0=t0; objs[j].stolen_t0=t0;
objs[j].has_ball=FALSE; objs[j].has_ball=FALSE;
ball_stolen=TRUE;
team=objs[j].team;
} else } else
gets_ball=FALSE; gets_ball=FALSE;
} }
if (gets_ball) { if (gets_ball) {
o->has_ball=TRUE; someone_has_ball=o->has_ball=TRUE;
if (o==human) { if (o!=last_owner) {
if (ball_stolen && team) {
Noise(250,2000,2000);
score0+=2;
}
} else {
if (o->team) { if (o->team) {
if (t0<shot_land_t+0.1)
score1+=6;
else
score1+=2;
Noise(250,1000,1000); Noise(250,1000,1000);
score1+=2;
} else { } else {
if (t0<shot_land_t+0.1)
score0+=6;
else
score0+=2;
Noise(250,2000,2000); Noise(250,2000,2000);
score0+=2;
} }
last_owner=o;
} }
} }
} }
@@ -497,19 +518,29 @@ U0 AnimateTask(CTask *parent_task)
dx=(ip.pos.x-parent_task->pix_left-parent_task->scroll_x)-o->x; dx=(ip.pos.x-parent_task->pix_left-parent_task->scroll_x)-o->x;
dy=(ip.pos.y-parent_task->pix_top-parent_task->scroll_y)*2-o->y; dy=(ip.pos.y-parent_task->pix_top-parent_task->scroll_y)*2-o->y;
} else { } else {
dx=o->DxDt+=RANDOM_MAN_ACCELERATION/sqrt2*RandI16/MAX_I16*dt; if (!someone_has_ball && o->nearest_man_dd>4*MAN_SQR_RADIUS &&
dy=o->DyDt+=RANDOM_MAN_ACCELERATION/sqrt2*RandI16/MAX_I16*dt; o->nearest_ball) {
dx=o->DxDt=MAN_VELOCITY*Cos(o->get_ball_é);
dy=o->DyDt=MAN_VELOCITY*Sin(o->get_ball_é);
} else {
dx=o->DxDt+=RANDOM_MAN_ACCELERATION/sqrt2*RandI16/MAX_I16*dt;
dy=o->DyDt+=RANDOM_MAN_ACCELERATION/sqrt2*RandI16/MAX_I16*dt;
}
} }
d=Sqrt(dx*dx+dy*dy); d=Sqrt(dx*dx+dy*dy);
if (d>=1.0) { if (d>=1.0) {
o->ay=Arg(dx,dy)+ã/2; o->é=Arg(dx,dy)+ã/2;
dx*=MAN_VELOCITY/sqrt2*dt/d; dx*=MAN_VELOCITY/sqrt2*dt/d;
dy*=MAN_VELOCITY/sqrt2*dt/d; dy*=MAN_VELOCITY/sqrt2*dt/d;
o->nearest_man_dd=MAX_F64;
for (j=0;j<NUM_PER_SIDE*2;j++) for (j=0;j<NUM_PER_SIDE*2;j++)
if (j!=i) { if (j!=i) {
dx2=objs[j].x-o->x; dx2=objs[j].x-o->x;
dy2=objs[j].y-o->y; dy2=objs[j].y-o->y;
if ((d=Sqr(dx2)+Sqr(dy2))<MAN_SQR_RADIUS) { d=Sqr(dx2)+Sqr(dy2);
if (d<o->nearest_man_dd)
o->nearest_man_dd=d;
if (d<MAN_SQR_RADIUS) {
if (d) { if (d) {
d=Sqrt(d); d=Sqrt(d);
dx2/=d; dx2/=d;
@@ -584,7 +615,7 @@ U0 AnimateTask(CTask *parent_task)
o->DzDt*=d; o->DzDt*=d;
} }
} }
}
WinMgrSync; WinMgrSync;
} }
} }
@@ -593,6 +624,7 @@ U0 Init()
{ {
I64 i; I64 i;
someone_shooting=FALSE; someone_shooting=FALSE;
shot_land_t=0;
MemSet(&objs,0,sizeof(objs)); MemSet(&objs,0,sizeof(objs));
for (i=0;i<NUM_PER_SIDE*2;i++) { for (i=0;i<NUM_PER_SIDE*2;i++) {
objs[i].team=i&1; objs[i].team=i&1;
@@ -600,6 +632,7 @@ U0 Init()
objs[i].y=2*Fs->pix_height/2; objs[i].y=2*Fs->pix_height/2;
objs[i].next_img=objs[i].last_img=FIRST_RUNNING; objs[i].next_img=objs[i].last_img=FIRST_RUNNING;
} }
last_owner=NULL;
human=&objs[0]; human=&objs[0];
ball =&objs[i]; ball =&objs[i];
ball->team=-1; ball->team=-1;
@@ -612,28 +645,26 @@ U0 Init()
foul_t_end=0; foul_t_end=0;
} }
U0 CleanUp()
{
}
U0 KeepAway() U0 KeepAway()
{ {
I64 msg_code,a1,a2; I64 msg_code,a1,a2;
PopUpOk( PopUpOk(
"$$RED$$Pass or hand-off to score points.$$FG$$\n\n" "Pass or hand-off to your team to score points.$$FG$$\n\n"
"Left-Click to pass.\n" "\t2 points for successful hand-off.\n"
"Right-Click to jump.\n"); "\t6 points for successful pass.\n"
"\t1 point penalty for foul.\n\n"
"Left-Click\tto pass.\n\n"
"Right-Click\tto jump.\n");
SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$
Fs->text_attr=BLACK+YELLOW<<4; Fs->text_attr=BLACK+YELLOW<<4;
Fs->win_inhibit|=WIG_DBL_CLICK;
AutoComplete; AutoComplete;
WinBorder; WinBorder;
WinMax; WinMax;
DocCursor; DocCursor;
DocClear; DocClear;
Fs->win_inhibit|=WIG_DBL_CLICK;
MenuPush( MenuPush(
"File {" "File {"
" Abort(,CH_SHIFT_ESC);" " Abort(,CH_SHIFT_ESC);"
@@ -666,7 +697,6 @@ ka_jump:
case MSG_KEY_DOWN: case MSG_KEY_DOWN:
switch (a1) { switch (a1) {
case '\n': case '\n':
CleanUp;
Init; Init;
break; break;
case 'j': case 'j':
@@ -687,7 +717,6 @@ ka_done: //Don't goto out of try
SettingsPop; SettingsPop;
RegWriteBranch("TempleOS/KeepAway","I64 best_score0=%d,best_score1=%d;\n", RegWriteBranch("TempleOS/KeepAway","I64 best_score0=%d,best_score1=%d;\n",
best_score0,best_score1); best_score0,best_score1);
CleanUp;
MenuPop; MenuPop;
} }
Êp¨­ÿÿÿûÿÿÿûÿÿÿ­ÿÿÿûÿÿÿ·ÿÿÿûÿÿÿûÿÿÿ·ÿÿÿûÿÿÿ­ÿÿÿûÿÿÿ­ÿÿÿ·ÿÿÿûÿÿÿ·ÿÿÿ Êp¨­ÿÿÿûÿÿÿûÿÿÿ­ÿÿÿûÿÿÿ·ÿÿÿûÿÿÿûÿÿÿ·ÿÿÿûÿÿÿ­ÿÿÿûÿÿÿ­ÿÿÿ·ÿÿÿûÿÿÿ·ÿÿÿ
+10 -10
View File
@@ -63,18 +63,18 @@ U8 *gate_type_lst="NULL\0OUTPUT\0INPUT\0"
#define GT_XOR 8 #define GT_XOR 8
#define GT_AND3 9 #define GT_AND3 9
#define GT_OR3 10 #define GT_OR3 10
#define GT_NAND3 11 #define GT_NAND3 11
#define GT_NOR3 12 #define GT_NOR3 12
#define GT_NUM_ENTRIES 13 #define GT_NUM_ENTRIES 13
#define MAX_SELECTED_GATES 128 #define MAX_SEL_GATES 128
CSprite *imgs[GT_NUM_ENTRIES]={NULL,NULL,NULL, CSprite *imgs[GT_NUM_ENTRIES]={NULL,NULL,NULL,
$IB,"<NOT>",BI=1$,$IB,"<AND>",BI=2$,$IB,"<OR>",BI=3$,$IB,"<NAND>",BI=4$,$IB,"<NOR>",BI=5$,$IB,"<XOR>",BI=6$,$IB,"<AND3>",BI=7$,$IB,"<OR3>",BI=8$,$IB,"<NAND3>",BI=9$,$IB,"<NOR3>",BI=10$}; $IB,"<NOT>",BI=1$,$IB,"<AND>",BI=2$,$IB,"<OR>",BI=3$,$IB,"<NAND>",BI=4$,$IB,"<NOR>",BI=5$,$IB,"<XOR>",BI=6$,$IB,"<AND3>",BI=7$,$IB,"<OR3>",BI=8$,$IB,"<NAND3>",BI=9$,$IB,"<NOR3>",BI=10$};
I64 num_inputs_entered,num_outputs_entered; I64 num_inputs_entered,num_outputs_entered;
I64 num_selected_gates, I64 num_sel_gates,
selected_gates[MAX_SELECTED_GATES]; sel_gates[MAX_SEL_GATES];
U0 GetGates() U0 GetGates()
{ {
@@ -87,9 +87,9 @@ U0 GetGates()
"%z ",i,gate_type_lst; "%z ",i,gate_type_lst;
'\n'; '\n';
num_selected_gates=0; num_sel_gates=0;
while (num_selected_gates<GT_NUM_ENTRIES) { while (num_sel_gates<GT_NUM_ENTRIES) {
"%d",num_selected_gates; "%d",num_sel_gates;
st=GetStr(" Gate: "); st=GetStr(" Gate: ");
if (!*st) { if (!*st) {
Free(st); Free(st);
@@ -100,7 +100,7 @@ U0 GetGates()
if (i<GT_FIRST_REAL_GATE) if (i<GT_FIRST_REAL_GATE)
"Invalid response\n"; "Invalid response\n";
else else
selected_gates[num_selected_gates++]=i; sel_gates[num_sel_gates++]=i;
} }
} }
@@ -527,9 +527,9 @@ I64 FillGateTable()
"Pass : %d\n",passes++; "Pass : %d\n",passes++;
chged=FALSE; chged=FALSE;
MemSet(added_this_pass,0,(table_size+7)/8); MemSet(added_this_pass,0,(table_size+7)/8);
for (current_gate=0;current_gate<num_selected_gates && for (current_gate=0;current_gate<num_sel_gates &&
num_outputs_found<num_outputs_entered;current_gate++) { num_outputs_found<num_outputs_entered;current_gate++) {
switch (selected_gates[current_gate]) { switch (sel_gates[current_gate]) {
case GT_NOT: FillNot (&chged,&num_outputs_found); break; case GT_NOT: FillNot (&chged,&num_outputs_found); break;
case GT_AND: FillAnd (&chged,&num_outputs_found); break; case GT_AND: FillAnd (&chged,&num_outputs_found); break;
case GT_OR: FillOr (&chged,&num_outputs_found); break; case GT_OR: FillOr (&chged,&num_outputs_found); break;
+3 -3
View File
@@ -10,9 +10,9 @@ $WW,1$$FG,5$$TX+CX,"Psalmody Help"$$FG$
* 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 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"$("~/Psalmody"); to play your songs.
* To create a $FG,2$.SND$FG$ file which can be exported and played under Windows, set the $FG,2$Bool$FG$ $LK,"snd.record",A="MN:CSndGlbls"$ to $FG,2$TRUE$FG$, play music, and set it to $FG,2$FALSE$FG$. Then, call $LK,"SndFileCreate",A="MN:SndFileCreate"$(). You might wish to make a $FG,2$<CTRL-ALT-key>$FG$ to toggle this system level recording feat. See $LK,"Snd",A="MN:Snd"$(). Add this code to your $LK,"::/Home/HomeKeyPlugIns.CPP"$ file. * To create a $FG,2$.SND$FG$ file which can be exported and played under Windows, set the $FG,2$Bool$FG$ $LK,"snd.record",A="MN:CSndGlbls"$ to $FG,2$TRUE$FG$, play music, and set it to $FG,2$FALSE$FG$. Then, call $LK,"SndFileCreate",A="MN:SndFileCreate"$(). You might wish to make a $FG,2$<CTRL-ALT-key>$FG$ to toggle this system level recording feat. See $LK,"Snd",A="MN:Snd"$(). Add this code to your $LK,"~/HomeKeyPlugIns.CPP"$ file.
$FG,5$U0 CtrlAltR(I64) $FG,5$U0 CtrlAltR(I64)
{ {
@@ -20,5 +20,5 @@ $FG,5$U0 CtrlAltR(I64)
} }
CtrlAltCBSet('R',&CtrlAltR,"Cmd /Toggle snd.record");$FG$ CtrlAltCBSet('R',&CtrlAltR,"Cmd /Toggle snd.record");$FG$
* When calling $LK,"SndFileCreate",A="MN:SndFileCreate"$() you can set a waveform. The PC speaker is $LK,"WF_SQUARE",A="MN:WF_SQUARE"$. You can select reverb and averaging, also. * When calling $LK,"SndFileCreate",A="MN:SndFileCreate"$() you can set a waveform. The PC speaker is $LK,"WF_SQUARE",A="MN:WF_SQUARE"$. You can sel reverb and averaging, also.
+2 -2
View File
@@ -1,2 +1,2 @@
if (!FileFind("::/Home/Psalmody",,FUF_JUST_DIRS)) if (!FileFind("~/Psalmody",,FUF_JUST_DIRS))
MkDir("::/Home/Psalmody"); MkDir("~/Psalmody");
+1 -1
View File
@@ -49,7 +49,7 @@ Bool JBPutKey(CDoc *doc,U8 *,I64 ch,I64 sc)
return FALSE; return FALSE;
} }
public U0 JukeBox(U8 *dirname="::/Home/Psalmody",U8 **_filename=NULL) public U0 JukeBox(U8 *dirname="~/Psalmody",U8 **_filename=NULL)
{//_filename is for using this as a song-chooser program. {//_filename is for using this as a song-chooser program.
I64 i=0,rating; I64 i=0,rating;
U8 *st,*st2; U8 *st,*st2;
+1 -1
View File
@@ -72,7 +72,7 @@ U0 JukeSongPuppet(CTask *juke_task,I64 passes,I64 song_num,U8 *name)
Kill(task); Kill(task);
} }
public U0 JukeSongsPuppet(U8 *dirname="::/Home/Psalmody",I64 passes=2, public U0 JukeSongsPuppet(U8 *dirname="~/Psalmody",I64 passes=2,
I64 start_song=0,I64 end_song=MAX_I64) I64 start_song=0,I64 end_song=MAX_I64)
{//Help make music video by puppeting JukeBox task. {//Help make music video by puppeting JukeBox task.
I64 i; I64 i;
+2 -2
View File
@@ -29,8 +29,8 @@ $WW,1$$WW,0$*/
#define PSMT_NOTE 1 #define PSMT_NOTE 1
#define PSMT_METER 2 #define PSMT_METER 2
#define PSMf_SELECTED 0 #define PSMf_SEL 0
#define PSMF_SELECTED 1 #define PSMF_SEL 1
#define PSMf_SHARP 1 #define PSMf_SHARP 1
#define PSMf_FLAT 2 #define PSMf_FLAT 2
#define PSMf_TIE 3 #define PSMf_TIE 3
+5 -5
View File
@@ -86,15 +86,15 @@ Bool PsmIsDotted(I64 duration)
return FALSE; return FALSE;
} }
U0 PsmMarkSelected(I64 x1,I64 x2,Bool sel) U0 PsmMarkSel(I64 x1,I64 x2,Bool sel)
{ {
PsmNote *tempo=oc.root.next; PsmNote *tempo=oc.root.next;
while (tempo!=&oc.root) { while (tempo!=&oc.root) {
if (sel) { if (sel) {
if (x1<=tempo->x<=x2) if (x1<=tempo->x<=x2)
tempo->flags|=PSMF_SELECTED; tempo->flags|=PSMF_SEL;
} else } else
tempo->flags&=~PSMF_SELECTED; tempo->flags&=~PSMF_SEL;
tempo=tempo->next; tempo=tempo->next;
} }
} }
@@ -236,7 +236,7 @@ U0 DrawIt(CTask *task,CDC *dc)
if (tempo==oc.cur_note && PsmBlink) { if (tempo==oc.cur_note && PsmBlink) {
dc->color=BROWN; dc->color=BROWN;
GrPrint(dc,x+8,y,"%s",tempo->word); GrPrint(dc,x+8,y,"%s",tempo->word);
} else if (tempo->flags&PSMF_SELECTED) } else if (tempo->flags&PSMF_SEL)
dc->color=RED; dc->color=RED;
else { else {
if (tempo->note!=NOTE_REST) if (tempo->note!=NOTE_REST)
@@ -331,7 +331,7 @@ Bool PsmGetPickToolBox(I64 xx,I64 yy)
{ {
if (PSM_TOOLS_X<=xx<PSM_TOOLS_X+27 && if (PSM_TOOLS_X<=xx<PSM_TOOLS_X+27 &&
PSM_TOOLS_Y<=yy<PSM_TOOLS_Y+15) { PSM_TOOLS_Y<=yy<PSM_TOOLS_Y+15) {
PsmMarkSelected(0,0,FALSE); PsmMarkSel(0,0,FALSE);
if (xx<PSM_TOOLS_X+13) if (xx<PSM_TOOLS_X+13)
oc.tool=PSMTT_BOX_TOOL; oc.tool=PSMTT_BOX_TOOL;
else else
+4 -4
View File
@@ -33,11 +33,11 @@ U0 PsmCutToClipboard()
tempo=oc.root.next; tempo=oc.root.next;
while (tempo!=&oc.root) { while (tempo!=&oc.root) {
tempo1=tempo->next; tempo1=tempo->next;
if (tempo->flags&PSMF_SELECTED) { if (tempo->flags&PSMF_SEL) {
if (oc.cur_note==tempo) if (oc.cur_note==tempo)
oc.cur_note=tempo->next; oc.cur_note=tempo->next;
QueRem(tempo); QueRem(tempo);
tempo->flags&=~PSMF_SELECTED; tempo->flags&=~PSMF_SEL;
QueIns(tempo,oc.clipboard.last); QueIns(tempo,oc.clipboard.last);
} }
tempo=tempo1; tempo=tempo1;
@@ -61,8 +61,8 @@ U0 PsmCopyToClipboard()
PsmSongDel(&oc.clipboard); PsmSongDel(&oc.clipboard);
tempo=oc.root.next; tempo=oc.root.next;
while (tempo!=&oc.root) { while (tempo!=&oc.root) {
if (tempo->flags&PSMF_SELECTED) { if (tempo->flags&PSMF_SEL) {
tempo->flags&=~PSMF_SELECTED; tempo->flags&=~PSMF_SEL;
tempo1=PsmNoteCopy(tempo); tempo1=PsmNoteCopy(tempo);
QueIns(tempo1,oc.clipboard.last); QueIns(tempo1,oc.clipboard.last);
} }
+9 -9
View File
@@ -241,7 +241,7 @@ U0 PsmLeftClickStaffBox(I64 x,I64 y)
GrBorder(oc.dc2,x,y,a1,a2); GrBorder(oc.dc2,x,y,a1,a2);
if (msg_code==MSG_IP_L_UP) { if (msg_code==MSG_IP_L_UP) {
if (x>a1) SwapI64(&x,&a1); if (x>a1) SwapI64(&x,&a1);
PsmMarkSelected(x,a1,TRUE); PsmMarkSel(x,a1,TRUE);
} }
} while (msg_code!=MSG_IP_L_UP); } while (msg_code!=MSG_IP_L_UP);
DrawDC2; DrawDC2;
@@ -396,7 +396,7 @@ U0 PsmPopMode()
#define PSMF_CD 1 #define PSMF_CD 1
#define PSMF_INCOMPLETE 2 #define PSMF_INCOMPLETE 2
U0 Psalmody(U8 *dirname="::/Home/Psalmody") U0 Psalmody(U8 *dirname="~/Psalmody")
{ {
Bool was_playing; Bool was_playing;
I64 a1,a2,msg_code=0,col, I64 a1,a2,msg_code=0,col,
@@ -536,7 +536,7 @@ mo_got_msg:
col=0; col=0;
} else { } else {
switch (a1) { switch (a1) {
sub_switch_start: start:
case 'a': note=7; octave--; break; case 'a': note=7; octave--; break;
case 's': note=8; octave--; break; case 's': note=8; octave--; break;
case 'e': note=9; octave--; break; case 'e': note=9; octave--; break;
@@ -556,7 +556,7 @@ mo_got_msg:
case '[': note=11; break; case '[': note=11; break;
case '\'': note=0; octave++; break; case '\'': note=0; octave++; break;
case ']': note=1; octave++; break; case ']': note=1; octave++; break;
sub_switch_end: end:
f=Note2Freq(note,octave); f=Note2Freq(note,octave);
break; break;
case CH_SPACE: case CH_SPACE:
@@ -572,13 +572,13 @@ mo_got_msg:
while (oc.cur_note->last!=&oc.root) { while (oc.cur_note->last!=&oc.root) {
oc.cur_note=oc.cur_note->last; oc.cur_note=oc.cur_note->last;
if (oc.cur_note!=&oc.root) if (oc.cur_note!=&oc.root)
LBEqu(&oc.cur_note->flags,PSMf_SELECTED,a2&SCF_SHIFT); LBEqu(&oc.cur_note->flags,PSMf_SEL,a2&SCF_SHIFT);
} }
} else { } else {
if (oc.cur_note->last!=&oc.root) { if (oc.cur_note->last!=&oc.root) {
oc.cur_note=oc.cur_note->last; oc.cur_note=oc.cur_note->last;
if (oc.cur_note!=&oc.root) if (oc.cur_note!=&oc.root)
LBEqu(&oc.cur_note->flags,PSMf_SELECTED,a2&SCF_SHIFT); LBEqu(&oc.cur_note->flags,PSMf_SEL,a2&SCF_SHIFT);
} }
} }
break; break;
@@ -586,13 +586,13 @@ mo_got_msg:
if (a2&SCF_CTRL) { if (a2&SCF_CTRL) {
while (oc.cur_note!=&oc.root) { while (oc.cur_note!=&oc.root) {
if (oc.cur_note!=&oc.root) if (oc.cur_note!=&oc.root)
LBEqu(&oc.cur_note->flags,PSMf_SELECTED,a2&SCF_SHIFT); LBEqu(&oc.cur_note->flags,PSMf_SEL,a2&SCF_SHIFT);
oc.cur_note=oc.cur_note->next; oc.cur_note=oc.cur_note->next;
} }
} else { } else {
if (oc.cur_note!=&oc.root) { if (oc.cur_note!=&oc.root) {
if (oc.cur_note!=&oc.root) if (oc.cur_note!=&oc.root)
LBEqu(&oc.cur_note->flags,PSMf_SELECTED,a2&SCF_SHIFT); LBEqu(&oc.cur_note->flags,PSMf_SEL,a2&SCF_SHIFT);
oc.cur_note=oc.cur_note->next; oc.cur_note=oc.cur_note->next;
} }
} }
@@ -638,7 +638,7 @@ mo_got_msg:
case CH_CTRLO: case CH_CTRLO:
PsmPopMode; PsmPopMode;
RegOneTimePopUp(ARf_PSALMODY_JUKEBOX, RegOneTimePopUp(ARf_PSALMODY_JUKEBOX,
"Select a song and preview it.\n" "Sel a song and preview it.\n"
"$$GREEN$$<SHIFT-ESC>$$FG$$ to load it into Psalmody.\n\n" "$$GREEN$$<SHIFT-ESC>$$FG$$ to load it into Psalmody.\n\n"
ST_WARN_ST " Graphics and other embelishments\n" ST_WARN_ST " Graphics and other embelishments\n"
"will be lost because Psalmody can't\n" "will be lost because Psalmody can't\n"
+1 -1
View File
@@ -1 +1 @@
MkDir("::/Home/Span"); MkDir("~/Span");
+1 -1
View File
@@ -319,7 +319,7 @@ U0 Span()
"\t$$GREEN$$'c'$$FG$$oncrete\n" "\t$$GREEN$$'c'$$FG$$oncrete\n"
"\t$$GREEN$$'s'$$FG$$teel\n" "\t$$GREEN$$'s'$$FG$$teel\n"
"\t$$GREEN$$'w'$$FG$$ire\n" "\t$$GREEN$$'w'$$FG$$ire\n"
"\nto select materials.\n"); "\nto sel materials.\n");
try { try {
while (TRUE) { while (TRUE) {
+4 -4
View File
@@ -69,9 +69,9 @@ Bool SpanWrite(CMathODE *ode)
U8 *name,*buf; U8 *name,*buf;
I64 size; I64 size;
Bool res=FALSE,old_silent=Silent; Bool res=FALSE,old_silent=Silent;
MkDir("::/Home/Span"); MkDir("~/Span");
Silent(old_silent); Silent(old_silent);
if (name=PopUpFileName("::/Home/Span/Game.DAT")) { if (name=PopUpFileName("~/Span/Game.DAT")) {
if (buf=SpanSave(ode,&size)) { if (buf=SpanSave(ode,&size)) {
FileWrite(name,buf,size); FileWrite(name,buf,size);
Free(buf); Free(buf);
@@ -115,9 +115,9 @@ U8 *SpanRead()
{ {
U8 *src=NULL,*name; U8 *src=NULL,*name;
Bool old_silent=Silent; Bool old_silent=Silent;
MkDir("::/Home/Span"); MkDir("~/Span");
Silent(old_silent); Silent(old_silent);
if (name=PopUpPickFile("::/Home/Span")) { if (name=PopUpPickFile("~/Span")) {
src=FileRead(name); src=FileRead(name);
Free(name); Free(name);
} }
+4 -4
View File
@@ -603,10 +603,10 @@ U0 Strut()
DocCursor; DocCursor;
DocClear; DocClear;
"\n$$WW,1$$$$PURPLE$$$$TX+CX,\"Build a ship.\"$$$$FG$$\n\n" "\n$$WW,1$$$$PURPLE$$$$TX+CX,\"Build a ship.\"$$$$FG$$\n\n"
"Select mass mode.\tLeft-click to place masses.\n" "Sel mass mode.\tLeft-click to place masses.\n"
"Select spring mode.\tLeft-drag to make members.\n" "Sel spring mode.\tLeft-drag to make members.\n"
"Select thruster mode.\tPress a digit, 0-9. Drag to make thruster.\n" "Sel thruster mode.\tPress a digit, 0-9. Drag to make thruster.\n"
"Select connector mode.\tPress a digit, 0-9. " "Sel connector mode.\tPress a digit, 0-9. "
"Drag to make breakable connector.\n\n" "Drag to make breakable connector.\n\n"
"Press $$GREEN$$<SPACE>$$FG$$ to run the game. Press digits to operate " "Press $$GREEN$$<SPACE>$$FG$$ to run the game. Press digits to operate "
"thrusters and break connectors.\n\n" "thrusters and break connectors.\n\n"
+2 -2
View File
@@ -1,5 +1,5 @@
if (!FileFind("::/Home/TimeClock",,FUF_JUST_DIRS)) { if (!FileFind("~/TimeClock",,FUF_JUST_DIRS)) {
MkDir("::/Home/TimeClock"); MkDir("~/TimeClock");
DocClear; DocClear;
"After Loading, type $$GREEN$$PunchIn;$$FG$$, " "After Loading, type $$GREEN$$PunchIn;$$FG$$, "
"$$GREEN$$PunchOut;$$FG$$ or $$GREEN$$TimeRep;$$FG$$\n" "$$GREEN$$PunchOut;$$FG$$ or $$GREEN$$TimeRep;$$FG$$\n"
+1 -1
View File
@@ -1,4 +1,4 @@
#define TIME_FILENAME "::/Home/TimeClock/TimeFile.DAT.Z" #define TIME_FILENAME "~/TimeClock/TimeFile.DAT.Z"
#define TET_EOF 0 #define TET_EOF 0
#define TET_PUNCH_IN 1 #define TET_PUNCH_IN 1
+8 -7
View File
@@ -521,20 +521,21 @@ U0 TimeOut()
WinMax; WinMax;
DocCursor; DocCursor;
DocClear; DocClear;
"\n\nYou're sent back through time to help fight some bad guys. " "\n\nYou're sent back through time to help fight some bad guys. "
"($$LTPURPLE$$Purple$$FG$$)\n" "($$LTPURPLE$$Purple$$FG$$)\n"
"Perhaps, you are an angel helping the Jews in the Bible?\n\n" "Perhaps, you are an angel helping the Jews in the Bible?\n\n"
"Scoring:\n" "Scoring:\n"
" Enemy Killed\t\t+5\n" "\tEnemy Killed\t\t+5\n"
" Enemy by Friendly\t+10\n" "\tEnemy by Friendly\t+10\n"
" Friendly Fire\t\t-200\n" "\tFriendly Fire\t\t-200\n"
" Bullets Fired\t\t-1\n" "\tBullets Fired\t\t-1\n"
" Game Time\t\t-10 per second\n" "\tGame Time\t\t-10 per second\n"
" Surviving Friendlies\t+500\n\n" "\tSurviving Friendlies\t+500\n\n"
"Sweep side-to-side while shooting, " "Sweep side-to-side while shooting, "
"holding down $$GREEN$$<SPACE>$$FG$$.\n\n"; "holding down $$GREEN$$<SPACE>$$FG$$.\n\n";
PressAKey; PressAKey;
Fs->text_attr=YELLOW<<4+CYAN; Fs->text_attr=YELLOW<<4+CYAN;
Init; Init;
DocClear; DocClear;
+1 -1
View File
@@ -1,2 +1,2 @@
MkDir("::/Home/ToTheFront"); MkDir("~/ToTheFront");
+2 -2
View File
@@ -1371,7 +1371,7 @@ U0 PickAI(U8 *dirname,I64 player)
st=MStrPrint("%s/*.CPP*",dirname); st=MStrPrint("%s/*.CPP*",dirname);
tempde=FilesFind(st); tempde=FilesFind(st);
Free(st); Free(st);
tempde2=FilesFind("::/Home/ToTheFront/*.CPP*"); tempde2=FilesFind("~/ToTheFront/*.CPP*");
tempde1=tempde; tempde1=tempde;
Silent(old_silent); Silent(old_silent);
@@ -1395,7 +1395,7 @@ U0 PickAI(U8 *dirname,I64 player)
Free(st); Free(st);
tempde1=tempde1->next; tempde1=tempde1->next;
} }
DocPrint(doc,"\n\n\n$$FG$$Create your own AI in /Home/ToTheFront."); DocPrint(doc,"\n\n\n$$FG$$Create your own AI in ~/ToTheFront.");
while ((tempde1=PopUpMenu(doc))<=0); while ((tempde1=PopUpMenu(doc))<=0);
ExeFile(tempde1->full_name); ExeFile(tempde1->full_name);
DocDel(doc); DocDel(doc);
+6 -8
View File
@@ -1263,8 +1263,8 @@ U0 XCaliber()
" StopSpin(,,SC_CURSOR_DOWN);" " StopSpin(,,SC_CURSOR_DOWN);"
" Left(,,SC_CURSOR_LEFT);" " Left(,,SC_CURSOR_LEFT);"
" Right(,,SC_CURSOR_RIGHT);" " Right(,,SC_CURSOR_RIGHT);"
" LeftMissile(,'l');" " LeftMissile(,,SC_CURSOR_LEFT|SCF_CTRL);"
" RightMissile(,'r');" " RightMissile(,,SC_CURSOR_RIGHT|SCF_CTRL);"
" Spackwalk(,'w');" " Spackwalk(,'w');"
" LongerFuse(,,SC_CURSOR_RIGHT|SCF_SHIFT);" " LongerFuse(,,SC_CURSOR_RIGHT|SCF_SHIFT);"
" ShorterFuse(,,SC_CURSOR_LEFT|SCF_SHIFT);" " ShorterFuse(,,SC_CURSOR_LEFT|SCF_SHIFT);"
@@ -1298,12 +1298,16 @@ U0 XCaliber()
case 0: case 0:
switch (sc.u8[0]) { switch (sc.u8[0]) {
case SC_CURSOR_RIGHT: case SC_CURSOR_RIGHT:
if (sc&SCF_CTRL)
HumanFireMissileBegin(0);
if (sc&SCF_SHIFT) if (sc&SCF_SHIFT)
ctrl_panel.fuse_time+=2; ctrl_panel.fuse_time+=2;
else else
human_t_right=MAX_THRUST; human_t_right=MAX_THRUST;
break; break;
case SC_CURSOR_LEFT: case SC_CURSOR_LEFT:
if (sc&SCF_CTRL)
HumanFireMissileBegin(1);
if (sc&SCF_SHIFT) if (sc&SCF_SHIFT)
ctrl_panel.fuse_time-=2; ctrl_panel.fuse_time-=2;
else else
@@ -1331,12 +1335,6 @@ U0 XCaliber()
else else
HumanFireLaserBegin; HumanFireLaserBegin;
break; break;
case 'l':
HumanFireMissileBegin(1);
break;
case 'r':
HumanFireMissileBegin(0);
break;
case 'w': case 'w':
ctrl_panel.spacewalk=TRUE; ctrl_panel.spacewalk=TRUE;
break; break;
+2 -2
View File
@@ -48,7 +48,7 @@ U0 PrsAsmArg(CCmpCtrl *cc,CAsmArg *arg,Bool rel)
tempr=temph; tempr=temph;
arg->reg1_type=tempr->reg_type; arg->reg1_type=tempr->reg_type;
switch (tempr->reg_type) { switch (tempr->reg_type) {
sub_switch_start: start:
case REGT_R8: case REGT_R8:
arg->size=1; arg->size=1;
break; break;
@@ -61,7 +61,7 @@ U0 PrsAsmArg(CCmpCtrl *cc,CAsmArg *arg,Bool rel)
case REGT_R64: case REGT_R64:
arg->size=8; arg->size=8;
break; break;
sub_switch_end: end:
arg->reg1=tempr->reg_num; arg->reg1=tempr->reg_num;
Lex(cc); Lex(cc);
return; return;
+14 -14
View File
@@ -329,7 +329,7 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip)
r=tempi->a1.reg; r=tempi->a1.reg;
else else
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,
tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.reg,tempi->a1.disp,ip);
if (r>7) if (r>7)
j=0xC0004D; j=0xC0004D;
@@ -341,13 +341,13 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip)
ICU24(tempi,0x6900+j+(r&7)<<16+(r&7)<<19); ICU24(tempi,0x6900+j+(r&7)<<16+(r&7)<<19);
ICU32(tempi,i); ICU32(tempi,i);
} }
ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,MDF_REG+RT_I64,r,0,ip); tempi->a1.reg,tempi->a1.disp,MDF_REG+RT_I64,r,0,ip);
} else { } else {
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,
tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip);
ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0,
MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); MDF_DISP+tempi->a1_type_pointed_to,REG_RCX,0,ip);
r=REG_RBX; r=REG_RBX;
if (MIN_I8<=i<=MAX_I8) if (MIN_I8<=i<=MAX_I8)
ICU32(tempi,i<<24+0xDB6B48); ICU32(tempi,i<<24+0xDB6B48);
@@ -355,7 +355,7 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip)
ICU24(tempi,0xDB6948); ICU24(tempi,0xDB6948);
ICU32(tempi,i); ICU32(tempi,i);
} }
ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0, ICMov(tempi,MDF_DISP+tempi->a1_type_pointed_to,REG_RCX,0,
MDF_REG+RT_I64,REG_RBX,0,ip); MDF_REG+RT_I64,REG_RBX,0,ip);
} }
} else { } else {
@@ -367,10 +367,10 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip)
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0,
tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.reg,tempi->a1.disp,ip);
ICU24(tempi,i); ICU24(tempi,i);
ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,MDF_REG+RT_I64,REG_RAX,0,ip); tempi->a1.reg,tempi->a1.disp,MDF_REG+RT_I64,REG_RAX,0,ip);
} else { } else {
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,
@@ -378,9 +378,9 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip)
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,
tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip);
ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0,
MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); MDF_DISP+tempi->a1_type_pointed_to,REG_RCX,0,ip);
ICU24(tempi,i); ICU24(tempi,i);
ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0, ICMov(tempi,MDF_DISP+tempi->a1_type_pointed_to,REG_RCX,0,
MDF_REG+RT_I64,REG_RAX,0,ip); MDF_REG+RT_I64,REG_RAX,0,ip);
} }
} }
@@ -411,7 +411,7 @@ U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip)
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,
tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.reg,tempi->a1.disp,ip);
if (tempi->ic_class->raw_type&RTF_UNSIGNED) { if (tempi->ic_class->raw_type&RTF_UNSIGNED) {
ICZero(tempi,REG_RDX); ICZero(tempi,REG_RDX);
@@ -421,10 +421,10 @@ U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip)
ICU24(tempi,0xF9F748); ICU24(tempi,0xF9F748);
} }
if (is_mod) if (is_mod)
ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,MDF_REG+RT_I64,REG_RDX,0,ip); tempi->a1.reg,tempi->a1.disp,MDF_REG+RT_I64,REG_RDX,0,ip);
else else
ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,MDF_REG+RT_I64,REG_RAX,0,ip); tempi->a1.reg,tempi->a1.disp,MDF_REG+RT_I64,REG_RAX,0,ip);
} else { } else {
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,
@@ -432,7 +432,7 @@ U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip)
ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0,
tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip);
//dangerous might clobber RBX in Mov, but it doesn't //dangerous might clobber RBX in Mov, but it doesn't
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,MDF_DISP+tempi->a1.type_pointed_to, ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,MDF_DISP+tempi->a1_type_pointed_to,
REG_RBX,0,ip); REG_RBX,0,ip);
if (tempi->ic_class->raw_type&RTF_UNSIGNED) { if (tempi->ic_class->raw_type&RTF_UNSIGNED) {
ICZero(tempi,REG_RDX); ICZero(tempi,REG_RDX);
@@ -442,10 +442,10 @@ U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip)
ICU24(tempi,0xF9F748); ICU24(tempi,0xF9F748);
} }
if (is_mod) if (is_mod)
ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to,REG_RBX,0, ICMov(tempi,MDF_DISP+tempi->a1_type_pointed_to,REG_RBX,0,
MDF_REG+RT_I64,REG_RDX,0,ip); MDF_REG+RT_I64,REG_RDX,0,ip);
else else
ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to,REG_RBX,0, ICMov(tempi,MDF_DISP+tempi->a1_type_pointed_to,REG_RBX,0,
MDF_REG+RT_I64,REG_RAX,0,ip); MDF_REG+RT_I64,REG_RAX,0,ip);
} }
if (tempi->r.type.mode) { if (tempi->r.type.mode) {
+20 -21
View File
@@ -257,7 +257,6 @@ U0 ICBitOps(CIntermediateCode *tempi,CICArg *a1,CICArg *a2,
} }
if (!res_not_used) { if (!res_not_used) {
ICU24(tempi,0xC0920F); //SETC AL ICU24(tempi,0xC0920F); //SETC AL
progress3++;
if (tempi->r.type.mode) if (tempi->r.type.mode)
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
MDF_REG+RT_I64,REG_RAX,0,ip); MDF_REG+RT_I64,REG_RAX,0,ip);
@@ -309,17 +308,17 @@ U0 ICPreIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
if (tempi->ic_flags & ICF_BY_VAL) { if (tempi->ic_flags & ICF_BY_VAL) {
if (tempc->ptr_stars_cnt && tempc1->size!=1) { if (tempc->ptr_stars_cnt && tempc1->size!=1) {
ICAddSubEctImm(tempi, ICAddSubEctImm(tempi,
tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp, tempi->a1.reg,tempi->a1.disp,
tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,tempc1->size,op.u16[3],ip); tempi->a1.reg,tempi->a1.disp,tempc1->size,op.u16[3],ip);
} else } else
ICSlashOp(tempi, ICSlashOp(tempi,
tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,op,ip); tempi->a1.reg,tempi->a1.disp,op,ip);
if (tempi->r.type.mode) if (tempi->r.type.mode)
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.reg,tempi->a1.disp,ip);
} else { } else {
if (tempi->a1.type&MDF_REG) if (tempi->a1.type&MDF_REG)
@@ -331,15 +330,15 @@ U0 ICPreIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
} }
if (tempc->ptr_stars_cnt && if (tempc->ptr_stars_cnt &&
tempc1->size!=1) { tempc1->size!=1) {
ICAddSubEctImm(tempi,MDF_DISP+tempi->a1.type_pointed_to,r,0, ICAddSubEctImm(tempi,MDF_DISP+tempi->a1_type_pointed_to,r,0,
MDF_DISP+tempi->a1.type_pointed_to,r,0, MDF_DISP+tempi->a1_type_pointed_to,r,0,
tempc1->size,op.u16[3],ip); tempc1->size,op.u16[3],ip);
} else } else
ICSlashOp(tempi, ICSlashOp(tempi,
MDF_DISP+tempi->a1.type_pointed_to,r,0,op,ip); MDF_DISP+tempi->a1_type_pointed_to,r,0,op,ip);
if (tempi->r.type.mode) if (tempi->r.type.mode)
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
MDF_DISP+tempi->a1.type_pointed_to,r,0,ip); MDF_DISP+tempi->a1_type_pointed_to,r,0,ip);
} }
} }
@@ -350,17 +349,17 @@ U0 ICPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
if (tempi->ic_flags & ICF_BY_VAL) { if (tempi->ic_flags & ICF_BY_VAL) {
if (tempi->r.type.mode) if (tempi->r.type.mode)
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.reg,tempi->a1.disp,ip);
if (tempc->ptr_stars_cnt && tempc1->size!=1) if (tempc->ptr_stars_cnt && tempc1->size!=1)
ICAddSubEctImm(tempi, ICAddSubEctImm(tempi,
tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp, tempi->a1.reg,tempi->a1.disp,
tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,tempc1->size,op.u16[3],ip); tempi->a1.reg,tempi->a1.disp,tempc1->size,op.u16[3],ip);
else else
ICSlashOp(tempi, ICSlashOp(tempi,
tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,op,ip); tempi->a1.reg,tempi->a1.disp,op,ip);
} else { } else {
if (tempi->a1.type&MDF_REG && if (tempi->a1.type&MDF_REG &&
@@ -373,12 +372,12 @@ U0 ICPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
} }
if (tempi->r.type.mode) if (tempi->r.type.mode)
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
MDF_DISP+tempi->a1.type_pointed_to,r,0,ip); MDF_DISP+tempi->a1_type_pointed_to,r,0,ip);
if (tempc->ptr_stars_cnt && tempc1->size!=1) if (tempc->ptr_stars_cnt && tempc1->size!=1)
ICAddSubEctImm(tempi,MDF_DISP+tempi->a1.type_pointed_to,r,0, ICAddSubEctImm(tempi,MDF_DISP+tempi->a1_type_pointed_to,r,0,
MDF_DISP+tempi->a1.type_pointed_to,r,0,tempc1->size,op.u16[3],ip); MDF_DISP+tempi->a1_type_pointed_to,r,0,tempc1->size,op.u16[3],ip);
else else
ICSlashOp(tempi,MDF_DISP+tempi->a1.type_pointed_to,r,0,op,ip); ICSlashOp(tempi,MDF_DISP+tempi->a1_type_pointed_to,r,0,op,ip);
} }
} }
@@ -388,8 +387,8 @@ U0 ICDerefPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
I64 r; I64 r;
CHashClass *tempc1=tempi->ic_class; CHashClass *tempc1=tempi->ic_class;
t=tempi->r.type.raw_type; t=tempi->r.type.raw_type;
if (t>tempi->a1.type_pointed_to) if (t>tempi->a1_type_pointed_to)
t=tempi->a1.type_pointed_to; t=tempi->a1_type_pointed_to;
if (tempi->ic_flags & ICF_BY_VAL) { if (tempi->ic_flags & ICF_BY_VAL) {
if (tempi->a1.type&MDF_REG) if (tempi->a1.type&MDF_REG)
r=tempi->a1.reg; r=tempi->a1.reg;
@@ -439,7 +438,7 @@ U0 ICAssignPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
tempi->a1.type&MDG_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.type&MDG_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp,ip);
r=REG_RDX; r=REG_RDX;
} }
ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to,r,0, ICMov(tempi,MDF_DISP+tempi->a1_type_pointed_to,r,0,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
if (tempi->r.type.mode) if (tempi->r.type.mode)
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
@@ -453,7 +452,7 @@ U0 ICAssignPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,
tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip);
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,MDF_DISP+RT_I64,REG_RDX,0,ip); ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,MDF_DISP+RT_I64,REG_RDX,0,ip);
ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0, ICMov(tempi,MDF_DISP+tempi->a1_type_pointed_to,REG_RCX,0,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
if (tempi->r.type.mode) if (tempi->r.type.mode)
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
+12 -16
View File
@@ -160,18 +160,14 @@ U0 ICAssign(CIntermediateCode *tempi,I64 ip)
{ {
CIntermediateCode *tempi1; CIntermediateCode *tempi1;
if (tempi->ic_flags & ICF_BY_VAL) { if (tempi->ic_flags & ICF_BY_VAL) {
ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp, tempi->a1.reg,tempi->a1.disp,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
if (tempi->r.type.mode) { if (tempi->r.type.mode)
if (tempi->a1.type&MDF_REG) ICMov(tempi,tempi->r.type&MDG_MASK+tempi->a1_type_pointed_to,
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->r.reg,tempi->r.disp,
tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.reg,tempi->a1.disp,ip);
else
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
}
} else { } else {
if (tempi->a1.type&MDF_REG) { if (tempi->a1.type&MDF_REG) {
if (!(tempi1=OptLag1(tempi)) || tempi1->ic_code!=IC_ADD_CONST || if (!(tempi1=OptLag1(tempi)) || tempi1->ic_code!=IC_ADD_CONST ||
@@ -181,7 +177,7 @@ U0 ICAssign(CIntermediateCode *tempi,I64 ip)
tempi->a2.reg==tempi->a1.reg || tempi->a2.reg==tempi->a1.reg ||
tempi->r.type.mode || tempi1->ic_flags&~ICG_NO_CVT_MASK) { tempi->r.type.mode || tempi1->ic_flags&~ICG_NO_CVT_MASK) {
ICMov(tempi, ICMov(tempi,
MDF_DISP+tempi->a1.type_pointed_to,tempi->a1.reg,tempi->a1.disp, MDF_DISP+tempi->a1_type_pointed_to,tempi->a1.reg,tempi->a1.disp,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
if (tempi->r.type.mode) if (tempi->r.type.mode)
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
@@ -191,14 +187,14 @@ U0 ICAssign(CIntermediateCode *tempi,I64 ip)
~ICF_CODE_FINAL|ICF_DONT_RESTORE; ~ICF_CODE_FINAL|ICF_DONT_RESTORE;
tempi->a1.disp=tempi1->ic_data; tempi->a1.disp=tempi1->ic_data;
OptSetNOP1(tempi1); //This better not be last pass! OptSetNOP1(tempi1); //This better not be last pass!
ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to, ICMov(tempi,MDF_DISP+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp, tempi->a1.reg,tempi->a1.disp,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
} }
} else { } else {
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,
tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip);
ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0, ICMov(tempi,MDF_DISP+tempi->a1_type_pointed_to,REG_RCX,0,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
if (tempi->r.type.mode) if (tempi->r.type.mode)
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
@@ -552,7 +548,7 @@ U0 ICAndEqu(CIntermediateCode *tempi,I64 ip2)
return; return;
} }
} }
ICAddSubEctEqu(tempi,tempi->a1.type_pointed_to, ICAddSubEctEqu(tempi,tempi->a1_type_pointed_to,
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);
@@ -573,7 +569,7 @@ U0 ICOrEqu(CIntermediateCode *tempi,I64 ip2)
return; return;
} }
} }
ICAddSubEctEqu(tempi,tempi->a1.type_pointed_to, ICAddSubEctEqu(tempi,tempi->a1_type_pointed_to,
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);
@@ -594,7 +590,7 @@ U0 ICXorEqu(CIntermediateCode *tempi,I64 ip2)
return; return;
} }
} }
ICAddSubEctEqu(tempi,tempi->a1.type_pointed_to, ICAddSubEctEqu(tempi,tempi->a1_type_pointed_to,
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);
+13 -13
View File
@@ -549,36 +549,36 @@ U0 ICFModEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip)
if (tempi->ic_flags & ICF_BY_VAL) { if (tempi->ic_flags & ICF_BY_VAL) {
if (dont_push_float) { if (dont_push_float) {
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,
tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.reg,tempi->a1.disp,ip);
if (tempi->a1.type_pointed_to!=RT_F64) if (tempi->a1_type_pointed_to!=RT_F64)
ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,FALSE,ip); ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,FALSE,ip);
} else { } else {
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,
tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.reg,tempi->a1.disp,ip);
if (tempi->a1.type_pointed_to!=RT_F64) if (tempi->a1_type_pointed_to!=RT_F64)
ICFCvt2(cc,tempi,REG_RDX,MDF_REG+RT_I64,REG_RDX,0,FALSE,ip); ICFCvt2(cc,tempi,REG_RDX,MDF_REG+RT_I64,REG_RDX,0,FALSE,ip);
} }
//TODO: unpushable,unpop? Not sure //TODO: unpushable,unpop? Not sure
ICCopyTemplate(cc,tempi,CMP_TEMPLATE_MOD,FALSE,FALSE,FALSE,CN_MAIN); ICCopyTemplate(cc,tempi,CMP_TEMPLATE_MOD,FALSE,FALSE,FALSE,CN_MAIN);
if (tempi->a1.type_pointed_to!=RT_F64) if (tempi->a1_type_pointed_to!=RT_F64)
ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,TRUE,ip); ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,TRUE,ip);
ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, ICMov(tempi,tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,MDF_REG+RT_I64,REG_RAX,0,ip); tempi->a1.reg,tempi->a1.disp,MDF_REG+RT_I64,REG_RAX,0,ip);
if (tempi->r.type.mode) if (tempi->r.type.mode)
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to, tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to,
tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.reg,tempi->a1.disp,ip);
} else { } else {
if (dont_push_float) { if (dont_push_float) {
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,tempi->a1.type, ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,tempi->a1.type,
tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.reg,tempi->a1.disp,ip);
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,
MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); MDF_DISP+tempi->a1_type_pointed_to,REG_RCX,0,ip);
if (tempi->a1.type_pointed_to!=RT_F64) if (tempi->a1_type_pointed_to!=RT_F64)
ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,FALSE,ip); ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,FALSE,ip);
} else { } else {
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,
@@ -586,15 +586,15 @@ U0 ICFModEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip)
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,tempi->a1.type, ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,tempi->a1.type,
tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.reg,tempi->a1.disp,ip);
ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,
MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); MDF_DISP+tempi->a1_type_pointed_to,REG_RCX,0,ip);
if (tempi->a1.type_pointed_to!=RT_F64) if (tempi->a1_type_pointed_to!=RT_F64)
ICFCvt2(cc,tempi,REG_RDX,MDF_REG+RT_I64,REG_RDX,0,FALSE,ip); ICFCvt2(cc,tempi,REG_RDX,MDF_REG+RT_I64,REG_RDX,0,FALSE,ip);
} }
//TODO: unpushable,unpop? Not sure //TODO: unpushable,unpop? Not sure
ICCopyTemplate(cc,tempi,CMP_TEMPLATE_MOD,FALSE,FALSE,FALSE,CN_MAIN); ICCopyTemplate(cc,tempi,CMP_TEMPLATE_MOD,FALSE,FALSE,FALSE,CN_MAIN);
if (tempi->a1.type_pointed_to!=RT_F64) if (tempi->a1_type_pointed_to!=RT_F64)
ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,TRUE,ip); ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,TRUE,ip);
ICMov(tempi,MDF_DISP+tempi->a1.type_pointed_to,REG_RCX,0, ICMov(tempi,MDF_DISP+tempi->a1_type_pointed_to,REG_RCX,0,
MDF_REG+RT_I64,REG_RAX,0,ip); MDF_REG+RT_I64,REG_RAX,0,ip);
if (tempi->r.type.mode) if (tempi->r.type.mode)
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
+38 -36
View File
@@ -16,32 +16,32 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
if (tempi->ic_flags & ICF_BY_VAL) { if (tempi->ic_flags & ICF_BY_VAL) {
p1_mem=FALSE; p1_mem=FALSE;
if (dont_push_float) { if (dont_push_float) {
if (a1->type_pointed_to!=RT_F64) { if (tempi->a1_type_pointed_to!=RT_F64) {
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,
a1->type&MDG_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); a1->type&MDG_MASK+tempi->a1_type_pointed_to,a1->reg,a1->disp,ip);
ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,FALSE,ip); ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,FALSE,ip);
ICPush(tempi,MDF_REG+RT_I64,REG_RAX,0,ip); ICPush(tempi,MDF_REG+RT_I64,REG_RAX,0,ip);
t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0;
rsp_size+=8; rsp_size+=8;
} else { } else {
if (a1->type_pointed_to>=RT_I64 && a1->type&MDG_DISP_SIB_RIP) { if (tempi->a1_type_pointed_to>=RT_I64 && a1->type&MDG_DISP_SIB_RIP) {
t1=a1->type&MDG_MASK+a1->type_pointed_to; t1=a1->type&MDG_MASK+tempi->a1_type_pointed_to;
r1=a1->reg; r1=a1->reg;
d1=a1->disp; d1=a1->disp;
p1_mem=TRUE; p1_mem=TRUE;
} else { } else {
ICPush(tempi, ICPush(tempi,a1->type&MDG_MASK+tempi->a1_type_pointed_to,
a1->type&MDG_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); a1->reg,a1->disp,ip);
t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0;
rsp_size+=8; rsp_size+=8;
} }
} }
} else { } else {
if (a1->type_pointed_to!=RT_F64 || a1->type&MDF_STK) { if (tempi->a1_type_pointed_to!=RT_F64 || a1->type&MDF_STK) {
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip); ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip);
ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,
a1->type&MDG_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); a1->type&MDG_MASK+tempi->a1_type_pointed_to,a1->reg,a1->disp,ip);
if (a1->type_pointed_to!=RT_F64) if (tempi->a1_type_pointed_to!=RT_F64)
ICFCvt2(cc,tempi,REG_RDX,MDF_REG+RT_I64,REG_RDX,0,FALSE,ip); ICFCvt2(cc,tempi,REG_RDX,MDF_REG+RT_I64,REG_RDX,0,FALSE,ip);
ICU16(tempi,0x5052); //PUSH EDX PUSH EAX ICU16(tempi,0x5052); //PUSH EDX PUSH EAX
rsp_size=16; rsp_size=16;
@@ -65,14 +65,14 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
rsp_size+=8; rsp_size+=8;
} }
} }
if (a1->type_pointed_to>=RT_I64 && a1->type&MDG_DISP_SIB_RIP) { if (tempi->a1_type_pointed_to>=RT_I64 && a1->type&MDG_DISP_SIB_RIP) {
t1=a1->type&MDG_MASK+a1->type_pointed_to; t1=a1->type&MDG_MASK+tempi->a1_type_pointed_to;
r1=a1->reg; r1=a1->reg;
d1=a1->disp; d1=a1->disp;
p1_mem=TRUE; p1_mem=TRUE;
} else { } else {
ICPush(tempi, ICPush(tempi,a1->type&MDG_MASK+tempi->a1_type_pointed_to,
a1->type&MDG_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); a1->reg,a1->disp,ip);
t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0;
rsp_size+=8; rsp_size+=8;
if (r2==REG_RSP+REG_RSP<<8) if (r2==REG_RSP+REG_RSP<<8)
@@ -80,7 +80,7 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
} }
} }
} }
if (!rsp_size && !(p1_mem && a1->type_pointed_to==RT_F64)) { if (!rsp_size && !(p1_mem && tempi->a1_type_pointed_to==RT_F64)) {
rsp_size=8; rsp_size=8;
ICAddRSP(tempi,-8); ICAddRSP(tempi,-8);
} }
@@ -96,7 +96,7 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
} }
ICSlashOp(tempi,t1,r1,d1,op,ip); ICSlashOp(tempi,t1,r1,d1,op,ip);
CmpNoteFloatOp(cc,tempi,TRUE,FALSE,CN_MAIN); CmpNoteFloatOp(cc,tempi,TRUE,FALSE,CN_MAIN);
if (p1_mem && a1->type_pointed_to==RT_F64) { if (p1_mem && tempi->a1_type_pointed_to==RT_F64) {
ICSlashOp(tempi,t1,r1,d1,SLASH_OP_FSTP,ip); ICSlashOp(tempi,t1,r1,d1,SLASH_OP_FSTP,ip);
if (rsp_size) if (rsp_size)
ICAddRSP(tempi,rsp_size); ICAddRSP(tempi,rsp_size);
@@ -108,40 +108,41 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
SLASH_OP_FSTP,ip); SLASH_OP_FSTP,ip);
ICAddRSP(tempi,rsp_size-8); ICAddRSP(tempi,rsp_size-8);
} }
if (a1->type_pointed_to!=RT_F64) { if (tempi->a1_type_pointed_to!=RT_F64) {
ICPop(tempi,MDF_REG+RT_I64,REG_RAX,0,ip); ICPop(tempi,MDF_REG+RT_I64,REG_RAX,0,ip);
ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,TRUE,ip); ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,TRUE,ip);
ICMov(tempi,a1->type&MDG_MASK+a1->type_pointed_to,a1->reg,a1->disp, ICMov(tempi,a1->type&MDG_MASK+tempi->a1_type_pointed_to,a1->reg,
MDF_REG+RT_I64,REG_RAX,0,ip); a1->disp,MDF_REG+RT_I64,REG_RAX,0,ip);
} else } else
ICPop(tempi,a1->type&MDG_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); ICPop(tempi,a1->type&MDG_MASK+tempi->a1_type_pointed_to,
a1->reg,a1->disp,ip);
} }
if (tempi->r.type.mode) if (tempi->r.type.mode)
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
a1->type&MDG_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); a1->type&MDG_MASK+tempi->a1_type_pointed_to,a1->reg,a1->disp,ip);
} else { } else {
if (a1->type_pointed_to>=RT_I64) if (tempi->a1_type_pointed_to>=RT_I64)
p1_mem=TRUE; p1_mem=TRUE;
else else
p1_mem=FALSE; p1_mem=FALSE;
if (dont_push_float) { if (dont_push_float) {
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip);
if (a1->type_pointed_to!=RT_F64) { if (tempi->a1_type_pointed_to!=RT_F64) {
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,
MDF_DISP+a1->type_pointed_to,REG_RCX,0,ip); MDF_DISP+tempi->a1_type_pointed_to,REG_RCX,0,ip);
ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,FALSE,ip); ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,FALSE,ip);
ICPush(tempi,MDF_REG+RT_I64,REG_RAX,0,ip); ICPush(tempi,MDF_REG+RT_I64,REG_RAX,0,ip);
} else } else
ICPush(tempi,MDF_DISP+a1->type_pointed_to,REG_RCX,0,ip); ICPush(tempi,MDF_DISP+tempi->a1_type_pointed_to,REG_RCX,0,ip);
t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0;
rsp_size+=8; rsp_size+=8;
} else { } else {
if (a1->type_pointed_to!=RT_F64 || a1->type&MDF_STK) { if (tempi->a1_type_pointed_to!=RT_F64 || a1->type&MDF_STK) {
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip); ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip);
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip);
ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0, ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,
MDF_DISP+a1->type_pointed_to,REG_RCX,0,ip); MDF_DISP+tempi->a1_type_pointed_to,REG_RCX,0,ip);
if (a1->type_pointed_to!=RT_F64) if (tempi->a1_type_pointed_to!=RT_F64)
ICFCvt2(cc,tempi,REG_RDX,MDF_REG+RT_I64,REG_RDX,0,FALSE,ip); ICFCvt2(cc,tempi,REG_RDX,MDF_REG+RT_I64,REG_RDX,0,FALSE,ip);
ICU16(tempi,0x5052); //PUSH EDX PUSH EAX ICU16(tempi,0x5052); //PUSH EDX PUSH EAX
rsp_size=16; rsp_size=16;
@@ -166,14 +167,14 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
} }
} }
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip);
ICPush(tempi,MDF_DISP+a1->type_pointed_to,REG_RCX,0,ip); ICPush(tempi,MDF_DISP+tempi->a1_type_pointed_to,REG_RCX,0,ip);
t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; t1=MDF_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0;
rsp_size+=8; rsp_size+=8;
if (r2==REG_RSP+REG_RSP<<8) if (r2==REG_RSP+REG_RSP<<8)
d2+=8; d2+=8;
} }
} }
if (!rsp_size && !(p1_mem && a1->type_pointed_to==RT_F64)) { if (!rsp_size && !(p1_mem && tempi->a1_type_pointed_to==RT_F64)) {
rsp_size=8; rsp_size=8;
ICAddRSP(tempi,-8); ICAddRSP(tempi,-8);
} }
@@ -190,8 +191,9 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
} }
ICSlashOp(tempi,t1,r1,d1,op,ip); ICSlashOp(tempi,t1,r1,d1,op,ip);
CmpNoteFloatOp(cc,tempi,TRUE,FALSE,CN_MAIN); CmpNoteFloatOp(cc,tempi,TRUE,FALSE,CN_MAIN);
if (p1_mem && a1->type_pointed_to==RT_F64) { if (p1_mem && tempi->a1_type_pointed_to==RT_F64) {
ICSlashOp(tempi,MDF_DISP+a1->type_pointed_to,REG_RCX,0,SLASH_OP_FSTP,ip); ICSlashOp(tempi,MDF_DISP+tempi->a1_type_pointed_to,
REG_RCX,0,SLASH_OP_FSTP,ip);
if (rsp_size) if (rsp_size)
ICAddRSP(tempi,rsp_size); ICAddRSP(tempi,rsp_size);
} else { } else {
@@ -203,9 +205,9 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
ICAddRSP(tempi,rsp_size-8); ICAddRSP(tempi,rsp_size-8);
} }
ICPop(tempi,MDF_REG+RT_I64,REG_RAX,0,ip); ICPop(tempi,MDF_REG+RT_I64,REG_RAX,0,ip);
if (a1->type_pointed_to!=RT_F64) if (tempi->a1_type_pointed_to!=RT_F64)
ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,TRUE,ip); ICFCvt2(cc,tempi,REG_RAX,MDF_REG+RT_I64,REG_RAX,0,TRUE,ip);
ICMov(tempi,MDF_DISP+a1->type_pointed_to,REG_RCX,0, ICMov(tempi,MDF_DISP+tempi->a1_type_pointed_to,REG_RCX,0,
MDF_REG+RT_I64,REG_RAX,0,ip); MDF_REG+RT_I64,REG_RAX,0,ip);
} }
if (tempi->r.type.mode) if (tempi->r.type.mode)
@@ -474,13 +476,13 @@ U0 ICFCmpAndBranch(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip,
U0 ICFMul(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip) U0 ICFMul(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip)
{ {
if (tempi->a1.type&MDF_IMM && tempi->a1.type_pointed_to==RT_F64 && if (tempi->a1.type&MDF_IMM && tempi->a1.type&RTG_MASK==RT_F64 &&
tempi->a1.disp(F64)==1.0) { tempi->a1.disp(F64)==1.0) {
CmpNoteFloatOp(cc,tempi,FALSE,FALSE,CN_MAIN); CmpNoteFloatOp(cc,tempi,FALSE,FALSE,CN_MAIN);
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
} else if (tempi->a2.type&MDF_IMM && } else if (tempi->a2.type&MDF_IMM &&
tempi->a2.type_pointed_to==RT_F64&& tempi->a2.disp(F64)==1.0) { tempi->a2.type&RTG_MASK==RT_F64&& tempi->a2.disp(F64)==1.0) {
CmpNoteFloatOp(cc,tempi,FALSE,FALSE,CN_MAIN); CmpNoteFloatOp(cc,tempi,FALSE,FALSE,CN_MAIN);
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip);
@@ -490,7 +492,7 @@ U0 ICFMul(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip)
U0 ICFDiv(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip) U0 ICFDiv(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip)
{ {
if (tempi->a2.type&MDF_IMM && tempi->a2.type_pointed_to==RT_F64 && if (tempi->a2.type&MDF_IMM && tempi->a2.type&RTG_MASK==RT_F64 &&
tempi->a2.disp(F64)==1.0) { tempi->a2.disp(F64)==1.0) {
CmpNoteFloatOp(cc,tempi,FALSE,FALSE,CN_MAIN); CmpNoteFloatOp(cc,tempi,FALSE,FALSE,CN_MAIN);
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
+122 -58
View File
@@ -56,52 +56,48 @@ U0 ICU64(CIntermediateCode *tempi,U64 q)
tempi->ic_cnt+=8; tempi->ic_cnt+=8;
} }
CIntermediateCode *ICLastIns(CIntermediateCode *tempi)
{
if (tempi->ic_last_cnt>=0)
return tempi;
else if (!tempi->ic_cnt &&(tempi=OptLag1(tempi)) && tempi->ic_last_cnt>=0)
return tempi;
else
return NULL;
}
U0 ICAddRSP(CIntermediateCode *tempi,I64 i,Bool optimize=TRUE) U0 ICAddRSP(CIntermediateCode *tempi,I64 i,Bool optimize=TRUE)
{ {
I64 j,last_cnt; I64 j,last_start;
CIntermediateCode *tempil1; CIntermediateCode *tempil1;
if (optimize && (tempil1=ICLastIns(tempi))) { if (optimize) {
j=tempil1->ic_cnt; tempil1=tempi;
if (tempil1->ic_last_cnt==j-4 && tempil1->ic_body[j-3]==0x83 && if (tempi->ic_last_start<0 && !tempi->ic_cnt &&
tempil1->ic_body[j-4]==0x48) { (tempil1=OptLag1(tempi)) && tempil1->ic_last_start<0)
if (tempil1->ic_body[j-2]==0xEC) tempil1=NULL;
j=-tempil1->ic_body[j-1](I8); if (tempil1) {
else if (tempil1->ic_body[j-2]==0xC4) j=tempil1->ic_cnt;
j=tempil1->ic_body[j-1](I8); if (tempil1->ic_last_start==j-4 && tempil1->ic_body[j-3]==0x83 &&
else tempil1->ic_body[j-4]==0x48) {
if (tempil1->ic_body[j-2]==0xEC)
j=-tempil1->ic_body[j-1](I8);
else if (tempil1->ic_body[j-2]==0xC4)
j=tempil1->ic_body[j-1](I8);
else
j=0;
} else if (tempil1->ic_last_start==j-7 && tempil1->ic_body[j-6]==0x81 &&
tempil1->ic_body[j-7]==0x48) {
if (tempil1->ic_body[j-5]==0xEC)
j=-tempil1->ic_body[j-4](I32);
else if (tempil1->ic_body[j-5]==0xC4)
j=tempil1->ic_body[j-4](I32);
else
j=0;
} else
j=0; j=0;
} else if (tempil1->ic_last_cnt==j-7 && tempil1->ic_body[j-6]==0x81 && if (j) {
tempil1->ic_body[j-7]==0x48) { if (tempi==tempil1) {
if (tempil1->ic_body[j-5]==0xEC) tempi->ic_cnt=tempi->ic_last_start;
j=-tempil1->ic_body[j-4](I32); i+=j;
else if (tempil1->ic_body[j-5]==0xC4) } else if (!(tempi->ic_flags&ICF_PREV_DELETED)) {
j=tempil1->ic_body[j-4](I32); tempil1->ic_flags|=ICF_DEL_PREV_INS;
else tempi->ic_flags=tempi->ic_flags&~ICF_CODE_FINAL|ICF_PREV_DELETED;
j=0; i+=j;
} else }
j=0;
if (j) {
if (tempi==tempil1) {
tempi->ic_cnt=tempi->ic_last_cnt;
i+=j;
} else if (!(tempi->ic_flags&ICF_PREV_DELETED)) {
tempil1->ic_flags|=ICF_DEL_PREV_INS;
tempi->ic_flags=tempi->ic_flags&~ICF_CODE_FINAL|ICF_PREV_DELETED;
i+=j;
} }
} }
} }
last_cnt=tempi->ic_cnt; last_start=tempi->ic_cnt;
if (i>0) { if (i>0) {
if (i<=MAX_I8) if (i<=MAX_I8)
ICU32(tempi,0xC48348+i<<24); ICU32(tempi,0xC48348+i<<24);
@@ -120,8 +116,8 @@ U0 ICAddRSP(CIntermediateCode *tempi,I64 i,Bool optimize=TRUE)
} else } else
throw('Compiler'); throw('Compiler');
} }
if (optimize && tempi->ic_cnt>last_cnt) if (optimize && tempi->ic_cnt>last_start)
tempi->ic_last_cnt=last_cnt; tempi->ic_last_start=last_start;
} }
extern U0 ICMov(CIntermediateCode *tempi, extern U0 ICMov(CIntermediateCode *tempi,
@@ -430,7 +426,8 @@ I64 ICBuiltInFloatConst(F64 d)
U0 ICMov(CIntermediateCode *tempi, U0 ICMov(CIntermediateCode *tempi,
CICType t1,I64 r1,I64 d1,CICType t2,I64 r2,I64 d2,I64 ip) CICType t1,I64 r1,I64 d1,CICType t2,I64 r2,I64 d2,I64 ip)
{ {
I64 i,j,last_cnt=tempi->ic_cnt; I64 i,cnt1,cnt2,b1_rex,b2_rex,b1,b2,b1_modr,b2_modr,
b1_r1,b1_r2,b2_r1,b2_r2,last_start=tempi->ic_cnt;
CIntermediateCode *tempil1; CIntermediateCode *tempil1;
Bool old_lock=Btr(&tempi->ic_flags,ICf_LOCK); Bool old_lock=Btr(&tempi->ic_flags,ICf_LOCK);
switch (Bsr(t1)) { switch (Bsr(t1)) {
@@ -492,19 +489,8 @@ U0 ICMov(CIntermediateCode *tempi,
else { else {
if (r1==r2 && t2&MDF_REG) if (r1==r2 && t2&MDF_REG)
goto move_done; goto move_done;
if (t2&MDF_REG) { if (t2&MDF_REG)
t2=MDF_REG+RT_I64; t2=MDF_REG+RT_I64;
if (tempil1=ICLastIns(tempi)) {
i=tempil1->ic_cnt;
j=0x48+(r1>7);
if (r2>7) j+=4;
if (tempil1->ic_last_cnt==i-3 && tempil1->ic_body[i-2]==0x8B &&
tempil1->ic_body[i-1]==0xC0+r1&7+(r2&7)<<3 &&
tempil1->ic_body[i-3]==j) {
goto move_done;
}
}
}
i=ICModr1(r1,t2,r2,d2); i=ICModr1(r1,t2,r2,d2);
if (t2.raw_type!=RT_U32) if (t2.raw_type!=RT_U32)
i|=0x4800; i|=0x4800;
@@ -605,9 +591,87 @@ U0 ICMov(CIntermediateCode *tempi,
break; break;
} }
move_done: move_done:
if (!((t1|t2)&(MDF_STK|MDF_RIP_DISP32))) {
tempil1=tempi;
if (tempi->ic_last_start<0 && (tempil1=OptLag1(tempi)) &&
tempil1->ic_last_start<0)
tempil1=NULL;
if (tempil1) {
if (tempil1==tempi)
cnt1=last_start-tempil1->ic_last_start;
else {
if (!(tempil1->ic_flags&ICF_CODE_FINAL))
tempi->ic_flags&=~ICF_CODE_FINAL;
if (last_start)
cnt1=0;
else
cnt1=tempil1->ic_cnt-tempil1->ic_last_start;
}
cnt2=tempi->ic_cnt-last_start;
if (cnt1 && cnt1==cnt2) {
b1_rex=tempil1->ic_body[tempil1->ic_last_start];
b2_rex=tempi->ic_body[last_start];
if (b1_rex&0x48==0x48 && b2_rex&0x48==0x48) {
for (i=1;i<cnt1;i++)
if ((b1=tempil1->ic_body[tempil1->ic_last_start+i])==
(b2=tempi->ic_body[last_start+i])) {
if (i==1 && (b2==0x89 || b2==0x8B)) {
b1_modr=tempil1->ic_body[tempil1->ic_last_start+2];
b1_r1=b1_modr&7 +Bt(&b1_rex,0)<<3;
b1_r2=b1_modr>>3&7+Bt(&b1_rex,2)<<3;
b2_modr=tempi->ic_body[last_start+2];
b2_r1=b2_modr&7 +Bt(&b2_rex,0)<<3;
b2_r2=b2_modr>>3&7+Bt(&b2_rex,2)<<3;
if (cnt1==3 && b2_modr&0xC0==0xC0) {
if (b2_r1==b2_r2)
goto move_redundant;
if (b1_modr&0xC0==0xC0) {
if (b1_r1==b2_r2 && b2_r1==b1_r2)
goto move_redundant;
}
} else if (b1_rex!=b2_rex || b1_r1==b1_r2 || (t1|t2)&MDF_SIB)
break;
} else if (b1_rex!=b2_rex)
break;
} else if (i!=1)
break;
else if (b2!=0x89 && b2!=0x8B)
break;
else {
b1_modr=tempil1->ic_body[tempil1->ic_last_start+2];
b1_r1=b1_modr&7 +Bt(&b1_rex,0)<<3;
b1_r2=b1_modr>>3&7+Bt(&b1_rex,2)<<3;
b2_modr=tempi->ic_body[last_start+2];
b2_r1=b2_modr&7 +Bt(&b2_rex,0)<<3;
b2_r2=b2_modr>>3&7+Bt(&b2_rex,2)<<3;
if (cnt1==3 && b2_modr&0xC0==0xC0) {
if (b2_r1==b2_r2)
goto move_redundant;
if (b1==0x89 && b2==0x8B || b1==0x8B && b2==0x89) {
if (b1_modr&0xC0==0xC0) {
if (b1_r1==b2_r1 && b1_r2==b2_r2 ||
b1_r1==b2_r2 && b2_r1==b1_r2)
goto move_redundant;
}
if (b1_rex!=b2_rex)
break;
} else
break;
} else if (b1_r1==b1_r2 || (t1|t2)&MDF_SIB || b1_rex!=b2_rex ||
!(b1==0x89 && b2==0x8B || b1==0x8B && b2==0x89))
break;
}
if (i==cnt1) {
move_redundant:
tempi->ic_cnt=last_start;
}
}
}
}
}
if (tempi->ic_cnt>last_start>tempi->ic_last_start)
tempi->ic_last_start=last_start;
BEqu(&tempi->ic_flags,ICf_LOCK,old_lock); BEqu(&tempi->ic_flags,ICf_LOCK,old_lock);
if (tempi->ic_cnt>last_cnt>tempi->ic_last_cnt)
tempi->ic_last_cnt=last_cnt;
} }
U0 ICLea(CIntermediateCode *tempi,CICType t1,I64 r1,I64 d1, U0 ICLea(CIntermediateCode *tempi,CICType t1,I64 r1,I64 d1,
@@ -646,8 +710,8 @@ U0 ICDeref(CIntermediateCode *tempi,I64 ip)
{ {
CICType t; CICType t;
t=tempi->r.type.raw_type; t=tempi->r.type.raw_type;
if (t>tempi->a1.type_pointed_to) if (t>tempi->a1_type_pointed_to)
t=tempi->a1.type_pointed_to; t=tempi->a1_type_pointed_to;
if (tempi->a1.type&MDF_REG) if (tempi->a1.type&MDF_REG)
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
MDF_DISP+t,tempi->a1.reg,tempi->a1.disp,ip); MDF_DISP+t,tempi->a1.reg,tempi->a1.disp,ip);
+21 -14
View File
@@ -54,7 +54,7 @@ U0 LexPutPos(CCmpCtrl *cc)
if (IsRaw) if (IsRaw)
"%s,%d ",cc->lex_include_stk->full_name,cc->lex_include_stk->line_num; "%s,%d ",cc->lex_include_stk->full_name,cc->lex_include_stk->line_num;
else { else {
PutFileLink(cc->lex_include_stk->full_name,cc->lex_include_stk->line_num); PutFileLink(cc->lex_include_stk->full_name,,cc->lex_include_stk->line_num);
AdamErr("%s,%d\n", AdamErr("%s,%d\n",
cc->lex_include_stk->full_name,cc->lex_include_stk->line_num); cc->lex_include_stk->full_name,cc->lex_include_stk->line_num);
'' CH_SPACE; '' CH_SPACE;
@@ -138,12 +138,11 @@ U0 ICClassPut(CHashClass *c)
'' CH_SPACE; '' CH_SPACE;
} }
U0 ICArgPut(CICArg *a) U0 ICArgPut(CICArg *a,I64 type_pointed_to)
{ {
if (a->type_pointed_to) if (type_pointed_to)
"%Z %Z %Z ",a->type.raw_type,"ST_RAW_TYPES", "[%Z](%Z) %Z ",a->type.raw_type,"ST_RAW_TYPES",
a->type_pointed_to,"ST_RAW_TYPES", type_pointed_to,"ST_RAW_TYPES",Bsr(a->type>>8)+1,"ST_TY_TYPES";
Bsr(a->type>>8)+1,"ST_TY_TYPES";
else else
"%Z %Z ",a->type.raw_type,"ST_RAW_TYPES", "%Z %Z ",a->type.raw_type,"ST_RAW_TYPES",
Bsr(a->type>>8)+1,"ST_TY_TYPES"; Bsr(a->type>>8)+1,"ST_TY_TYPES";
@@ -179,6 +178,7 @@ U0 ICArgPut(CICArg *a)
} }
break; break;
} }
'' CH_SPACE;
} }
U0 ICPut(CCmpCtrl *cc,CIntermediateCode *tempi) U0 ICPut(CCmpCtrl *cc,CIntermediateCode *tempi)
@@ -188,15 +188,22 @@ U0 ICPut(CCmpCtrl *cc,CIntermediateCode *tempi)
"%15ts %016X ",intermediate_code_table[opcode].name,tempi->ic_data; "%15ts %016X ",intermediate_code_table[opcode].name,tempi->ic_data;
if (cc->pass) { if (cc->pass) {
if (tempi->r.type.mode) { if (tempi->r.type.mode) {
ICArgPut(&tempi->r); "$$PURPLE$$R:$$FG$$";
"<-"; ICArgPut(&tempi->r,0);
} }
if (tempi->a1.type.mode) if (tempi->a1.type.mode) {
ICArgPut(&tempi->a1); "$$PURPLE$$A1:$$FG$$";
','; if (intermediate_code_table[tempi->ic_code].type==IST_DEREF ||
if (tempi->a2.type.mode) intermediate_code_table[tempi->ic_code].type==IST_ASSIGN)
ICArgPut(&tempi->a2); ICArgPut(&tempi->a1,tempi->a1_type_pointed_to);
'' CH_SPACE; else
ICArgPut(&tempi->a1,0);
}
if (tempi->a2.type.mode) {
"$$PURPLE$$A2:$$FG$$";
ICArgPut(&tempi->a2,0);
}
"$$PURPLE$$:$$FG$$";
} }
ICClassPut(tempi->ic_class); ICClassPut(tempi->ic_class);
if (tempi->ic_flags & ICF_LOCK) if (tempi->ic_flags & ICF_LOCK)
+2 -2
View File
@@ -166,8 +166,8 @@ CIntermediateStruct intermediate_code_table[IC_NUM_ENTRIES]={
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2LESS_EQU"}, {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_DEREF,FALSE,TRUE,0,0,0,"BR_MM_ZERO"},
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BR_MM_NOT_ZERO"}, {IS_1_ARG,0,IST_DEREF,FALSE,TRUE,0,0,0,"BR_MM_NOT_ZERO"},
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_AND_AND_ZERO"}, {IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_AND_AND_ZERO"},
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_AND_AND_NOT_ZERO"}, {IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_AND_AND_NOT_ZERO"},
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_OR_OR_ZERO"}, {IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_OR_OR_ZERO"},
+10 -14
View File
@@ -389,7 +389,7 @@ U0 CmpFixUpAOTAsm(CCmpCtrl *cc,CAOT *tempaot)
Free(tempie); Free(tempie);
} else { } else {
switch (tempie->type) { switch (tempie->type) {
sub_switch_start: start:
case IET_REL32_EXPORT: case IET_REL32_EXPORT:
case IET_IMM32_EXPORT: case IET_IMM32_EXPORT:
case IET_REL64_EXPORT: case IET_REL64_EXPORT:
@@ -405,7 +405,7 @@ U0 CmpFixUpAOTAsm(CCmpCtrl *cc,CAOT *tempaot)
case IET_REL_I16: *ptr(U16 *)-=ip2; break; case IET_REL_I16: *ptr(U16 *)-=ip2; break;
case IET_REL_I32: *ptr(U32 *)-=ip2; break; case IET_REL_I32: *ptr(U32 *)-=ip2; break;
case IET_REL_I64: *ptr(I64 *)-=ip2; break; case IET_REL_I64: *ptr(I64 *)-=ip2; break;
sub_switch_end: end:
tempie->ip+=ip2; tempie->ip+=ip2;
break; break;
} }
@@ -569,16 +569,14 @@ I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv_let=0)
} }
I64 ExePutS(U8 *buf,U8 *filename=NULL, I64 ExePutS(U8 *buf,U8 *filename=NULL,
Bool just_load=FALSE,CLexHashTableContext *htc=NULL) I64 ccf_flags=0,CLexHashTableContext *htc=NULL)
{//JIT Compile and execute text from a puts(""). {//JIT Compile and execute text from a puts("").
I64 res; I64 res;
Bool okay=TRUE; Bool okay=TRUE;
CCmpCtrl *cc; CCmpCtrl *cc;
if (!filename) if (!filename)
filename=blkdev.temp_filename; filename=blkdev.temp_filename;
cc=CmpCtrlNew(buf,CCF_DONT_FREE_BUF,filename); cc=CmpCtrlNew(buf,ccf_flags|CCF_DONT_FREE_BUF,filename);
if (just_load)
cc->flags|=CCF_JUST_LOAD;
if (Fs->last_lex!=&Fs->next_lex) { if (Fs->last_lex!=&Fs->next_lex) {
cc->opts=Fs->last_lex->opts; cc->opts=Fs->last_lex->opts;
if (htc) { if (htc) {
@@ -613,26 +611,24 @@ I64 ExePrint(U8 *fmt,...)
return res; return res;
} }
I64 ExeFile(U8 *name,Bool just_load=FALSE) I64 ExeFile(U8 *name,I64 ccf_flags=0)
{//JIT Compile and execute a file. {//JIT Compile and execute a file.
I64 res; I64 res;
U8 *name2=DftExt(name,"CPP.Z"), U8 *name2=DftExt(name,"CPP.Z"),
*st=MStrPrint("#include \"%s\";",name2); *st=MStrPrint("#include \"%s\";",name2);
res=ExePutS(st,name,just_load); res=ExePutS(st,name,ccf_flags);
Free(st); Free(st);
Free(name2); Free(name2);
return res; return res;
} }
I64 ExePutS2(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE) I64 ExePutS2(U8 *buf,U8 *filename=NULL,I64 ccf_flags=0)
{//throws exceptions {//throws exceptions
I64 res; I64 res;
CCmpCtrl *cc; CCmpCtrl *cc;
if (!filename) if (!filename)
filename=blkdev.temp_filename; filename=blkdev.temp_filename;
cc=CmpCtrlNew(buf,CCF_DONT_FREE_BUF,filename); cc=CmpCtrlNew(buf,ccf_flags|CCF_DONT_FREE_BUF,filename);
if (just_load)
cc->flags|=CCF_JUST_LOAD;
if (Fs->last_lex!=&Fs->next_lex) if (Fs->last_lex!=&Fs->next_lex)
cc->opts=Fs->last_lex->opts; cc->opts=Fs->last_lex->opts;
QueIns(cc,Fs->last_lex); QueIns(cc,Fs->last_lex);
@@ -652,11 +648,11 @@ I64 ExePrint2(U8 *fmt,...)
return res; return res;
} }
I64 ExeFile2(U8 *name,Bool just_load=FALSE) I64 ExeFile2(U8 *name,I64 ccf_flags=0)
{//throws exceptions {//throws exceptions
I64 res; I64 res;
U8 *name2=DftExt(name,"CPP.Z"),*st=MStrPrint("#include \"%s\";",name2); U8 *name2=DftExt(name,"CPP.Z"),*st=MStrPrint("#include \"%s\";",name2);
res=ExePutS2(st,name,just_load); res=ExePutS2(st,name,ccf_flags);
Free(st); Free(st);
Free(name2); Free(name2);
return res; return res;
Binary file not shown.
+354 -336
View File
@@ -1,278 +1,278 @@
$LK,"LexPutPos",A="FL:::/Compiler/CExcept.CPP.Z,50",BI=1$ $LK,"LexPutPos",A="FL:::/Compiler/CExcept.CPP.Z,50",BI=1$
$LK,"ICAssignPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,430",BI=2$ $LK,"ICAssignPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,429",BI=2$
$LK,"CmpSetFloatOpPushPop",A="FL:::/Compiler/BackFA.CPP.Z,62",BI=3$ $LK,"CmpSetFloatOpPushPop",A="FL:::/Compiler/BackFA.CPP.Z,62",BI=3$
$LK,"ICFCvt2",A="FL:::/Compiler/BackFA.CPP.Z,169",BI=4$ $LK,"ICFCvt2",A="FL:::/Compiler/BackFA.CPP.Z,169",BI=4$
$LK,"CmpRawTypePointed",A="FL:::/Compiler/OptLib.CPP.Z,517",BI=5$ $LK,"CmpMinTypePointed",A="FL:::/Compiler/OptLib.CPP.Z,528",BI=5$
$LK,"OptFixupBinaryOp1",A="FL:::/Compiler/OptLib.CPP.Z,96",BI=6$ $LK,"CmpRawTypePointed",A="FL:::/Compiler/OptLib.CPP.Z,517",BI=6$
$LK,"OptFixupBinaryOp2",A="FL:::/Compiler/OptLib.CPP.Z,182",BI=7$ $LK,"OptFixupBinaryOp1",A="FL:::/Compiler/OptLib.CPP.Z,96",BI=7$
$LK,"COCInit",A="FL:::/Compiler/PrsLib.CPP.Z,99",BI=8$ $LK,"OptFixupBinaryOp2",A="FL:::/Compiler/OptLib.CPP.Z,182",BI=8$
$LK,"IsLexExpression2Bin",A="FL:::/Compiler/PrsExp.CPP.Z,1128",BI=9$ $LK,"COCInit",A="FL:::/Compiler/PrsLib.CPP.Z,99",BI=9$
$LK,"IsLexExpression2Bin",A="FL:::/Compiler/PrsExp.CPP.Z,1128",BI=10$
$LK,"CSubSwitch",A="FL:::/Compiler/PrsStmt.CPP.Z,562"$ $LK,"CSubSwitch",A="FL:::/Compiler/PrsStmt.CPP.Z,562"$
$LK,"LexFilePop",A="FL:::/Compiler/Lex.CPP.Z,11",BI=10$ $LK,"LexFilePop",A="FL:::/Compiler/Lex.CPP.Z,11",BI=11$
$LK,"ExePutS",A="FL:::/Compiler/CMain.CPP.Z,571",BI=11$ $LK,"ExePutS",A="FL:::/Compiler/CMain.CPP.Z,571",BI=12$
$LK,"PrsStaticInit",A="FL:::/Compiler/PrsVar.CPP.Z,215",BI=12$ $LK,"PrsStaticInit",A="FL:::/Compiler/PrsVar.CPP.Z,215",BI=13$
$LK,"LexPutLine",A="FL:::/Compiler/CExcept.CPP.Z,22",BI=13$ $LK,"LexPutLine",A="FL:::/Compiler/CExcept.CPP.Z,22",BI=14$
$LK,"PrsKeyWord",A="FL:::/Compiler/PrsLib.CPP.Z,31",BI=14$ $LK,"PrsKeyWord",A="FL:::/Compiler/PrsLib.CPP.Z,31",BI=15$
$LK,"AsmLineLst",A="FL:::/Compiler/AsmLib.CPP.Z,147",BI=15$ $LK,"AsmLineLst",A="FL:::/Compiler/AsmLib.CPP.Z,147",BI=16$
$LK,"ICOpSizeRex",A="FL:::/Compiler/BackLib.CPP.Z,28",BI=16$ $LK,"ICOpSizeRex",A="FL:::/Compiler/BackLib.CPP.Z,28",BI=17$
$LK,"CVI2",A="FL:::/Compiler/PrsVar.CPP.Z,117"$ $LK,"CVI2",A="FL:::/Compiler/PrsVar.CPP.Z,117"$
$LK,"ICU8",A="FL:::/Compiler/BackLib.CPP.Z,17",BI=17$ $LK,"ICU8",A="FL:::/Compiler/BackLib.CPP.Z,17",BI=18$
$LK,"AsmStoreNum",A="FL:::/Compiler/Asm.CPP.Z,268",BI=18$ $LK,"AsmStoreNum",A="FL:::/Compiler/Asm.CPP.Z,268",BI=19$
$LK,"OptPass012",A="FL:::/Compiler/OptPass012.CPP.Z,23",BI=19$ $LK,"OptPass012",A="FL:::/Compiler/OptPass012.CPP.Z,23",BI=20$
$LK,"MemberLstSize",A="FL:::/Compiler/LexLib.CPP.Z,191",BI=20$ $LK,"MemberLstSize",A="FL:::/Compiler/LexLib.CPP.Z,191",BI=21$
$LK,"ICQueIns",A="FL:::/Compiler/BackC.CPP.Z,355",BI=21$ $LK,"ICQueIns",A="FL:::/Compiler/BackC.CPP.Z,351",BI=22$
$LK,"ICAndBranch",A="FL:::/Compiler/BackC.CPP.Z,1",BI=22$ $LK,"ICAndBranch",A="FL:::/Compiler/BackC.CPP.Z,1",BI=23$
$LK,"U",A="FL:::/Compiler/UAsm.CPP.Z,645",BI=23$ $LK,"U",A="FL:::/Compiler/UAsm.CPP.Z,645",BI=24$
$LK,"ICQueRem",A="FL:::/Compiler/BackC.CPP.Z,403",BI=24$ $LK,"ICQueRem",A="FL:::/Compiler/BackC.CPP.Z,399",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=25$ $LK,"OptLead1",A="FL:::/Compiler/OptLib.CPP.Z,73",BI=26$
$LK,"CmpNoteFloatOp",A="FL:::/Compiler/BackFA.CPP.Z,6",BI=26$ $LK,"CmpNoteFloatOp",A="FL:::/Compiler/BackFA.CPP.Z,6",BI=27$
$LK,"AOTGlblsResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,76",BI=27$ $LK,"AOTGlblsResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,76",BI=28$
$LK,"ExePutS2",A="FL:::/Compiler/CMain.CPP.Z,627",BI=28$ $LK,"ExePutS2",A="FL:::/Compiler/CMain.CPP.Z,625",BI=29$
$LK,"HashEntrySize",A="FL:::/Compiler/CHash.CPP.Z,1",BI=29$ $LK,"HashEntrySize",A="FL:::/Compiler/CHash.CPP.Z,1",BI=30$
$LK,"COCPush",A="FL:::/Compiler/PrsLib.CPP.Z,107",BI=30$ $LK,"COCPush",A="FL:::/Compiler/PrsLib.CPP.Z,107",BI=31$
$LK,"SLASH_OP_DEC",A="FL:::/Compiler/BackLib.CPP.Z,249"$ $LK,"SLASH_OP_DEC",A="FL:::/Compiler/BackLib.CPP.Z,245"$
$LK,"MODR_SIB_D32_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,136"$ $LK,"MODR_SIB_D32_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,132"$
$LK,"ICPushRegs",A="FL:::/Compiler/BackLib.CPP.Z,335",BI=31$ $LK,"ICPushRegs",A="FL:::/Compiler/BackLib.CPP.Z,331",BI=32$
$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,264"$ $LK,"SLASH_OP_FLD",A="FL:::/Compiler/BackLib.CPP.Z,260"$
$LK,"ICU32",A="FL:::/Compiler/BackLib.CPP.Z,47",BI=32$ $LK,"ICU32",A="FL:::/Compiler/BackLib.CPP.Z,47",BI=33$
$LK,"ICU24",A="FL:::/Compiler/BackLib.CPP.Z,41",BI=33$ $LK,"ICU24",A="FL:::/Compiler/BackLib.CPP.Z,41",BI=34$
$LK,"ICU16",A="FL:::/Compiler/BackLib.CPP.Z,35",BI=34$ $LK,"ICU16",A="FL:::/Compiler/BackLib.CPP.Z,35",BI=35$
$LK,"SLASH_OP_DIV",A="FL:::/Compiler/BackLib.CPP.Z,254"$ $LK,"SLASH_OP_DIV",A="FL:::/Compiler/BackLib.CPP.Z,250"$
$LK,"CmpFillTables",A="FL:::/Compiler/CInit.CPP.Z,240",BI=35$ $LK,"CmpFillTables",A="FL:::/Compiler/CInit.CPP.Z,240",BI=36$
$LK,"AOTStoreCodeU32",A="FL:::/Compiler/AsmLib.CPP.Z,30",BI=36$ $LK,"AOTStoreCodeU32",A="FL:::/Compiler/AsmLib.CPP.Z,30",BI=37$
$LK,"ICU64",A="FL:::/Compiler/BackLib.CPP.Z,53",BI=37$ $LK,"ICU64",A="FL:::/Compiler/BackLib.CPP.Z,53",BI=38$
$LK,"SLASH_OP_INC",A="FL:::/Compiler/BackLib.CPP.Z,248"$ $LK,"SLASH_OP_INC",A="FL:::/Compiler/BackLib.CPP.Z,244"$
$LK,"AOTStoreCodeU64",A="FL:::/Compiler/AsmLib.CPP.Z,68",BI=38$ $LK,"AOTStoreCodeU64",A="FL:::/Compiler/AsmLib.CPP.Z,68",BI=39$
$LK,"LexPopNoRestore",A="FL:::/Compiler/LexLib.CPP.Z,38",BI=39$ $LK,"LexPopNoRestore",A="FL:::/Compiler/LexLib.CPP.Z,38",BI=40$
$LK,"ExePrint",A="FL:::/Compiler/CMain.CPP.Z,607",BI=40$ $LK,"ExePrint",A="FL:::/Compiler/CMain.CPP.Z,605",BI=41$
$LK,"SLASH_OP_NEG",A="FL:::/Compiler/BackLib.CPP.Z,251"$ $LK,"SLASH_OP_NEG",A="FL:::/Compiler/BackLib.CPP.Z,247"$
$LK,"PrsVarLst",A="FL:::/Compiler/PrsVar.CPP.Z,416",BI=41$ $LK,"PrsVarLst",A="FL:::/Compiler/PrsVar.CPP.Z,416",BI=42$
$LK,"PrsAsmDefine",A="FL:::/Compiler/Asm.CPP.Z,814",BI=42$ $LK,"PrsAsmDefine",A="FL:::/Compiler/Asm.CPP.Z,814",BI=43$
$LK,"PrsAddOp",A="FL:::/Compiler/PrsExp.CPP.Z,15",BI=43$ $LK,"PrsAddOp",A="FL:::/Compiler/PrsExp.CPP.Z,15",BI=44$
$LK,"LexWarn",A="FL:::/Compiler/CExcept.CPP.Z,65",BI=44$ $LK,"LexWarn",A="FL:::/Compiler/CExcept.CPP.Z,65",BI=45$
$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=45$ $LK,"COCAppend",A="FL:::/Compiler/PrsLib.CPP.Z,126",BI=46$
$LK,"LexFilePush",A="FL:::/Compiler/Lex.CPP.Z,1",BI=46$ $LK,"LexFilePush",A="FL:::/Compiler/Lex.CPP.Z,1",BI=47$
$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,954",BI=47$ $LK,"PrsUnaryModifier",A="FL:::/Compiler/PrsExp.CPP.Z,954",BI=48$
$LK,"OptFixupUnaryOp",A="FL:::/Compiler/OptLib.CPP.Z,196",BI=48$ $LK,"OptFixupUnaryOp",A="FL:::/Compiler/OptLib.CPP.Z,196",BI=49$
$LK,"LexPush",A="FL:::/Compiler/LexLib.CPP.Z,12",BI=49$ $LK,"LexPush",A="FL:::/Compiler/LexLib.CPP.Z,12",BI=50$
$LK,"SLASH_OP_MOV",A="FL:::/Compiler/BackLib.CPP.Z,255"$ $LK,"SLASH_OP_MOV",A="FL:::/Compiler/BackLib.CPP.Z,251"$
$LK,"ICPopRegs",A="FL:::/Compiler/BackLib.CPP.Z,376",BI=50$ $LK,"ICPopRegs",A="FL:::/Compiler/BackLib.CPP.Z,372",BI=51$
$LK,"SLASH_OP_MUL",A="FL:::/Compiler/BackLib.CPP.Z,252"$ $LK,"SLASH_OP_MUL",A="FL:::/Compiler/BackLib.CPP.Z,248"$
$LK,"SLASH_OP_NOT",A="FL:::/Compiler/BackLib.CPP.Z,250"$ $LK,"SLASH_OP_NOT",A="FL:::/Compiler/BackLib.CPP.Z,246"$
$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,257"$ $LK,"SLASH_OP_POP",A="FL:::/Compiler/BackLib.CPP.Z,253"$
$LK,"ICFOp",A="FL:::/Compiler/BackFA.CPP.Z,339",BI=51$ $LK,"ICFOp",A="FL:::/Compiler/BackFA.CPP.Z,339",BI=52$
$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,1147",BI=52$ $LK,"LexExpressionF64",A="FL:::/Compiler/PrsExp.CPP.Z,1147",BI=53$
$LK,"ICAdd",A="FL:::/Compiler/PrsLib.CPP.Z,79",BI=53$ $LK,"ICAdd",A="FL:::/Compiler/PrsLib.CPP.Z,79",BI=54$
$LK,"CmpRawType",A="FL:::/Compiler/OptLib.CPP.Z,508",BI=54$ $LK,"CmpRawType",A="FL:::/Compiler/OptLib.CPP.Z,508",BI=55$
$LK,"ICFOpEqu",A="FL:::/Compiler/BackFB.CPP.Z,1",BI=55$ $LK,"ICFOpEqu",A="FL:::/Compiler/BackFB.CPP.Z,1",BI=56$
$LK,"LexExpressionI64",A="FL:::/Compiler/PrsExp.CPP.Z,1133",BI=56$ $LK,"LexExpressionI64",A="FL:::/Compiler/PrsExp.CPP.Z,1133",BI=57$
$LK,"ICQueInsRev",A="FL:::/Compiler/BackC.CPP.Z,379",BI=57$ $LK,"ICQueInsRev",A="FL:::/Compiler/BackC.CPP.Z,375",BI=58$
$LK,"LexExpression",A="FL:::/Compiler/PrsExp.CPP.Z,1161",BI=58$ $LK,"LexExpression",A="FL:::/Compiler/PrsExp.CPP.Z,1161",BI=59$
$LK,"PrsExpression",A="FL:::/Compiler/PrsExp.CPP.Z,264",BI=59$ $LK,"PrsExpression",A="FL:::/Compiler/PrsExp.CPP.Z,264",BI=60$
$LK,"PrsClassNew",A="FL:::/Compiler/PrsLib.CPP.Z,40",BI=60$ $LK,"PrsClassNew",A="FL:::/Compiler/PrsLib.CPP.Z,40",BI=61$
$LK,"LexInStr",A="FL:::/Compiler/Lex.CPP.Z,373",BI=61$ $LK,"LexInStr",A="FL:::/Compiler/Lex.CPP.Z,373",BI=62$
$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=62$ $LK,"OptPass3",A="FL:::/Compiler/OptPass3.CPP.Z,1",BI=63$
$LK,"OptPass4",A="FL:::/Compiler/OptPass4.CPP.Z,163",BI=63$ $LK,"OptPass4",A="FL:::/Compiler/OptPass4.CPP.Z,132",BI=64$
$LK,"OptPass5",A="FL:::/Compiler/OptPass5.CPP.Z,1",BI=64$ $LK,"OptPass5",A="FL:::/Compiler/OptPass5.CPP.Z,1",BI=65$
$LK,"OptPass6",A="FL:::/Compiler/OptPass6.CPP.Z,96",BI=65$ $LK,"OptPass6",A="FL:::/Compiler/OptPass6.CPP.Z,96",BI=66$
$LK,"MODR_REG",A="FL:::/Compiler/BackLib.CPP.Z,130"$ $LK,"MODR_REG",A="FL:::/Compiler/BackLib.CPP.Z,126"$
$LK,"Echo",A="FL:::/Compiler/CMisc.CPP.Z,24",BI=66$ $LK,"Echo",A="FL:::/Compiler/CMisc.CPP.Z,24",BI=67$
$LK,"PrsGlblVarLst",A="FL:::/Compiler/PrsStmt.CPP.Z,201",BI=67$ $LK,"PrsGlblVarLst",A="FL:::/Compiler/PrsStmt.CPP.Z,201",BI=68$
$LK,"ICQueInit",A="FL:::/Compiler/BackC.CPP.Z,341",BI=68$ $LK,"ICQueInit",A="FL:::/Compiler/BackC.CPP.Z,337",BI=69$
$LK,"ICCmp",A="FL:::/Compiler/BackB.CPP.Z,102",BI=69$ $LK,"ICCmp",A="FL:::/Compiler/BackB.CPP.Z,102",BI=70$
$LK,"ICAddRSP",A="FL:::/Compiler/BackLib.CPP.Z,69",BI=70$ $LK,"ICAddRSP",A="FL:::/Compiler/BackLib.CPP.Z,59",BI=71$
$LK,"ICDiv",A="FL:::/Compiler/BackA.CPP.Z,391",BI=71$ $LK,"ICDiv",A="FL:::/Compiler/BackA.CPP.Z,391",BI=72$
$LK,"ICDeref",A="FL:::/Compiler/BackLib.CPP.Z,645",BI=72$ $LK,"ICDeref",A="FL:::/Compiler/BackLib.CPP.Z,709",BI=73$
$LK,"ICLea",A="FL:::/Compiler/BackLib.CPP.Z,613",BI=73$ $LK,"ICLea",A="FL:::/Compiler/BackLib.CPP.Z,677",BI=74$
$LK,"CmpBuf",A="FL:::/Compiler/CMain.CPP.Z,157",BI=74$ $LK,"CmpBuf",A="FL:::/Compiler/CMain.CPP.Z,157",BI=75$
$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=75$ $LK,"ICAddEct",A="FL:::/Compiler/BackA.CPP.Z,1",BI=76$
$LK,"ICToF64",A="FL:::/Compiler/BackB.CPP.Z,284",BI=76$ $LK,"ICToF64",A="FL:::/Compiler/BackB.CPP.Z,283",BI=77$
$LK,"PrsBinFile",A="FL:::/Compiler/Asm.CPP.Z,888",BI=77$ $LK,"PrsBinFile",A="FL:::/Compiler/Asm.CPP.Z,888",BI=78$
$LK,"HashTableSize2",A="FL:::/Compiler/CHash.CPP.Z,72",BI=78$ $LK,"HashTableSize2",A="FL:::/Compiler/CHash.CPP.Z,72",BI=79$
$LK,"HashEntrySize2",A="FL:::/Compiler/CHash.CPP.Z,33",BI=79$ $LK,"HashEntrySize2",A="FL:::/Compiler/CHash.CPP.Z,33",BI=80$
$LK,"Ui",A="FL:::/Compiler/UAsm.CPP.Z,238",BI=80$ $LK,"Ui",A="FL:::/Compiler/UAsm.CPP.Z,238",BI=81$
$LK,"ICSlashOp",A="FL:::/Compiler/BackLib.CPP.Z,269",BI=81$ $LK,"ICSlashOp",A="FL:::/Compiler/BackLib.CPP.Z,265",BI=82$
$LK,"OptBrZero",A="FL:::/Compiler/OptLib.CPP.Z,230",BI=82$ $LK,"OptBrZero",A="FL:::/Compiler/OptLib.CPP.Z,230",BI=83$
$LK,"Un",A="FL:::/Compiler/UAsm.CPP.Z,660",BI=83$ $LK,"Un",A="FL:::/Compiler/UAsm.CPP.Z,660",BI=84$
$LK,"PrsSizeOf",A="FL:::/Compiler/PrsExp.CPP.Z,298",BI=84$ $LK,"PrsSizeOf",A="FL:::/Compiler/PrsExp.CPP.Z,298",BI=85$
$LK,"ICToI64",A="FL:::/Compiler/BackB.CPP.Z,278",BI=85$ $LK,"ICToI64",A="FL:::/Compiler/BackB.CPP.Z,277",BI=86$
$LK,"ICMod",A="FL:::/Compiler/BackA.CPP.Z,461",BI=86$ $LK,"ICMod",A="FL:::/Compiler/BackA.CPP.Z,461",BI=87$
$LK,"OptSetNOP1",A="FL:::/Compiler/OptLib.CPP.Z,17",BI=87$ $LK,"OptSetNOP1",A="FL:::/Compiler/OptLib.CPP.Z,17",BI=88$
$LK,"OptPass789A",A="FL:::/Compiler/OptPass789A.CPP.Z,1",BI=88$ $LK,"OptPass789A",A="FL:::/Compiler/OptPass789A.CPP.Z,1",BI=89$
$LK,"OptSetNOP2",A="FL:::/Compiler/OptLib.CPP.Z,25",BI=89$ $LK,"OptSetNOP2",A="FL:::/Compiler/OptLib.CPP.Z,25",BI=90$
$LK,"FBO1_F64",A="FL:::/Compiler/OptLib.CPP.Z,94"$ $LK,"FBO1_F64",A="FL:::/Compiler/OptLib.CPP.Z,94"$
$LK,"ICXorEqu",A="FL:::/Compiler/BackC.CPP.Z,582",BI=90$ $LK,"ICXorEqu",A="FL:::/Compiler/BackC.CPP.Z,578",BI=91$
$LK,"ICToUpper",A="FL:::/Compiler/BackB.CPP.Z,267",BI=91$ $LK,"ICToUpper",A="FL:::/Compiler/BackB.CPP.Z,266",BI=92$
$LK,"AsmLexExpression",A="FL:::/Compiler/AsmLib.CPP.Z,127",BI=92$ $LK,"AsmLexExpression",A="FL:::/Compiler/AsmLib.CPP.Z,127",BI=93$
$LK,"ICMov",A="FL:::/Compiler/BackLib.CPP.Z,430",BI=93$ $LK,"ICMov",A="FL:::/Compiler/BackLib.CPP.Z,426",BI=94$
$LK,"ICNot",A="FL:::/Compiler/BackB.CPP.Z,10",BI=94$ $LK,"ICNot",A="FL:::/Compiler/BackB.CPP.Z,10",BI=95$
$LK,"ICMul",A="FL:::/Compiler/BackA.CPP.Z,263",BI=95$ $LK,"ICMul",A="FL:::/Compiler/BackA.CPP.Z,263",BI=96$
$LK,"ICRex",A="FL:::/Compiler/BackLib.CPP.Z,22",BI=96$ $LK,"ICRex",A="FL:::/Compiler/BackLib.CPP.Z,22",BI=97$
$LK,"ICPop",A="FL:::/Compiler/BackLib.CPP.Z,348",BI=97$ $LK,"ICPop",A="FL:::/Compiler/BackLib.CPP.Z,344",BI=98$
$LK,"SLASH_OP_FADD",A="FL:::/Compiler/BackLib.CPP.Z,258"$ $LK,"SLASH_OP_FADD",A="FL:::/Compiler/BackLib.CPP.Z,254"$
$LK,"MODR_RIP_REL",A="FL:::/Compiler/BackLib.CPP.Z,137"$ $LK,"MODR_RIP_REL",A="FL:::/Compiler/BackLib.CPP.Z,133"$
$LK,"LexStmt2Bin",A="FL:::/Compiler/CMain.CPP.Z,1",BI=98$ $LK,"LexStmt2Bin",A="FL:::/Compiler/CMain.CPP.Z,1",BI=99$
$LK,"ICSub",A="FL:::/Compiler/BackA.CPP.Z,205",BI=99$ $LK,"ICSub",A="FL:::/Compiler/BackA.CPP.Z,205",BI=100$
$LK,"COCFloatConstFind",A="FL:::/Compiler/PrsLib.CPP.Z,164",BI=100$ $LK,"COCFloatConstFind",A="FL:::/Compiler/PrsLib.CPP.Z,164",BI=101$
$LK,"ICPut",A="FL:::/Compiler/CExcept.CPP.Z,184",BI=101$ $LK,"ICPut",A="FL:::/Compiler/CExcept.CPP.Z,184",BI=102$
$LK,"PrsArrayDims",A="FL:::/Compiler/PrsVar.CPP.Z,247",BI=102$ $LK,"PrsArrayDims",A="FL:::/Compiler/PrsVar.CPP.Z,247",BI=103$
$LK,"ICSqr",A="FL:::/Compiler/BackC.CPP.Z,457",BI=103$ $LK,"ICSqr",A="FL:::/Compiler/BackC.CPP.Z,453",BI=104$
$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=104$ $LK,"PrsClass",A="FL:::/Compiler/PrsStmt.CPP.Z,1",BI=105$
$LK,"MemberMetaData",A="FL:::/Compiler/LexLib.CPP.Z,45",BI=105$ $LK,"MemberMetaData",A="FL:::/Compiler/LexLib.CPP.Z,45",BI=106$
$LK,"ICSwitch",A="FL:::/Compiler/BackC.CPP.Z,603",BI=106$ $LK,"ICSwitch",A="FL:::/Compiler/BackC.CPP.Z,599",BI=107$
$LK,"OptBrNotZero",A="FL:::/Compiler/OptLib.CPP.Z,357",BI=107$ $LK,"OptBrNotZero",A="FL:::/Compiler/OptLib.CPP.Z,357",BI=108$
$LK,"LexPutToken",A="FL:::/Compiler/CExcept.CPP.Z,1",BI=108$ $LK,"LexPutToken",A="FL:::/Compiler/CExcept.CPP.Z,1",BI=109$
$LK,"SLASH_OP_FDIV",A="FL:::/Compiler/BackLib.CPP.Z,262"$ $LK,"SLASH_OP_FDIV",A="FL:::/Compiler/BackLib.CPP.Z,258"$
$LK,"AsmHashLoad",A="FL:::/Compiler/AsmInit.CPP.Z,50",BI=109$ $LK,"AsmHashLoad",A="FL:::/Compiler/AsmInit.CPP.Z,50",BI=110$
$LK,"UAsmHashLoad",A="FL:::/Compiler/UAsm.CPP.Z,188",BI=110$ $LK,"UAsmHashLoad",A="FL:::/Compiler/UAsm.CPP.Z,188",BI=111$
$LK,"UnusedExternWarning",A="FL:::/Compiler/CExcept.CPP.Z,104",BI=111$ $LK,"UnusedExternWarning",A="FL:::/Compiler/CExcept.CPP.Z,104",BI=112$
$LK,"SLASH_OP_FILD",A="FL:::/Compiler/BackLib.CPP.Z,267"$ $LK,"SLASH_OP_FILD",A="FL:::/Compiler/BackLib.CPP.Z,263"$
$LK,"ICXorXor",A="FL:::/Compiler/BackB.CPP.Z,75",BI=112$ $LK,"ICXorXor",A="FL:::/Compiler/BackB.CPP.Z,75",BI=113$
$LK,"PrsTryBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,838",BI=113$ $LK,"PrsTryBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,838",BI=114$
$LK,"CInit",A="FL:::/Compiler/CMain.CPP.Z,683",BI=114$ $LK,"CInit",A="FL:::/Compiler/CMain.CPP.Z,679",BI=115$
$LK,"MemberMetaFind",A="FL:::/Compiler/LexLib.CPP.Z,56",BI=115$ $LK,"MemberMetaFind",A="FL:::/Compiler/LexLib.CPP.Z,56",BI=116$
$LK,"ExePrint2",A="FL:::/Compiler/CMain.CPP.Z,646",BI=116$ $LK,"ExePrint2",A="FL:::/Compiler/CMain.CPP.Z,642",BI=117$
$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=117$ $LK,"PrsVarInit",A="FL:::/Compiler/PrsVar.CPP.Z,1",BI=118$
$LK,"ICOrEqu",A="FL:::/Compiler/BackC.CPP.Z,561",BI=118$ $LK,"ICOrEqu",A="FL:::/Compiler/BackC.CPP.Z,557",BI=119$
$LK,"ICModr1",A="FL:::/Compiler/BackLib.CPP.Z,139",BI=119$ $LK,"ICModr1",A="FL:::/Compiler/BackLib.CPP.Z,135",BI=120$
$LK,"ICModr2",A="FL:::/Compiler/BackLib.CPP.Z,217",BI=120$ $LK,"ICModr2",A="FL:::/Compiler/BackLib.CPP.Z,213",BI=121$
$LK,"SLASH_OP_FMUL",A="FL:::/Compiler/BackLib.CPP.Z,261"$ $LK,"SLASH_OP_FMUL",A="FL:::/Compiler/BackLib.CPP.Z,257"$
$LK,"ICPreIncDec",A="FL:::/Compiler/BackB.CPP.Z,305",BI=121$ $LK,"ICPreIncDec",A="FL:::/Compiler/BackB.CPP.Z,304",BI=122$
$LK,"PrsUnaryTerm",A="FL:::/Compiler/PrsExp.CPP.Z,588",BI=122$ $LK,"PrsUnaryTerm",A="FL:::/Compiler/PrsExp.CPP.Z,588",BI=123$
$LK,"MemberLstDel",A="FL:::/Compiler/LexLib.CPP.Z,157",BI=123$ $LK,"MemberLstDel",A="FL:::/Compiler/LexLib.CPP.Z,157",BI=124$
$LK,"SLASH_OP_FSUB",A="FL:::/Compiler/BackLib.CPP.Z,259"$ $LK,"SLASH_OP_FSUB",A="FL:::/Compiler/BackLib.CPP.Z,255"$
$LK,"ICAndAnd",A="FL:::/Compiler/BackB.CPP.Z,30",BI=124$ $LK,"ICAndAnd",A="FL:::/Compiler/BackB.CPP.Z,30",BI=125$
$LK,"InstEntriesCompare",A="FL:::/Compiler/UAsm.CPP.Z,1",BI=125$ $LK,"InstEntriesCompare",A="FL:::/Compiler/UAsm.CPP.Z,1",BI=126$
$LK,"SLASH_OP_IMUL",A="FL:::/Compiler/BackLib.CPP.Z,253"$ $LK,"SLASH_OP_IMUL",A="FL:::/Compiler/BackLib.CPP.Z,249"$
$LK,"SLASH_OP_FSTP",A="FL:::/Compiler/BackLib.CPP.Z,265"$ $LK,"SLASH_OP_FSTP",A="FL:::/Compiler/BackLib.CPP.Z,261"$
$LK,"COCDel",A="FL:::/Compiler/PrsLib.CPP.Z,186",BI=126$ $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,502",BI=127$ $LK,"ICFAdd",A="FL:::/Compiler/BackFB.CPP.Z,504",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=128$ $LK,"CmdLinePmt",A="FL:::/Compiler/CMisc.CPP.Z,88",BI=129$
$LK,"AsmMakeArgMask",A="FL:::/Compiler/Asm.CPP.Z,177",BI=129$ $LK,"AsmMakeArgMask",A="FL:::/Compiler/Asm.CPP.Z,177",BI=130$
$LK,"COCHeaderPut",A="FL:::/Compiler/PrsLib.CPP.Z,229",BI=130$ $LK,"COCHeaderPut",A="FL:::/Compiler/PrsLib.CPP.Z,229",BI=131$
$LK,"PrsGlblInit",A="FL:::/Compiler/PrsVar.CPP.Z,206",BI=131$ $LK,"PrsGlblInit",A="FL:::/Compiler/PrsVar.CPP.Z,206",BI=132$
$LK,"ICAndEqu",A="FL:::/Compiler/BackC.CPP.Z,540",BI=132$ $LK,"ICAndEqu",A="FL:::/Compiler/BackC.CPP.Z,536",BI=133$
$LK,"LexD2I32",A="FL:::/Compiler/CMisc.CPP.Z,52",BI=133$ $LK,"LexD2I32",A="FL:::/Compiler/CMisc.CPP.Z,52",BI=134$
$LK,"MemberLstNew",A="FL:::/Compiler/LexLib.CPP.Z,150",BI=134$ $LK,"MemberLstNew",A="FL:::/Compiler/LexLib.CPP.Z,150",BI=135$
$LK,"LexD3I32",A="FL:::/Compiler/CMisc.CPP.Z,68",BI=135$ $LK,"LexD3I32",A="FL:::/Compiler/CMisc.CPP.Z,68",BI=136$
$LK,"OptClassFwd",A="FL:::/Compiler/OptLib.CPP.Z,9",BI=136$ $LK,"OptClassFwd",A="FL:::/Compiler/OptLib.CPP.Z,9",BI=137$
$LK,"ICFCmp",A="FL:::/Compiler/BackFA.CPP.Z,515",BI=137$ $LK,"ICFCmp",A="FL:::/Compiler/BackFA.CPP.Z,515",BI=138$
$LK,"PrsSwitch",A="FL:::/Compiler/PrsStmt.CPP.Z,574",BI=138$ $LK,"PrsSwitch",A="FL:::/Compiler/PrsStmt.CPP.Z,574",BI=139$
$LK,"ICFDiv",A="FL:::/Compiler/BackFB.CPP.Z,491",BI=139$ $LK,"ICFDiv",A="FL:::/Compiler/BackFB.CPP.Z,493",BI=140$
$LK,"AOTStoreCodeU8At",A="FL:::/Compiler/AsmLib.CPP.Z,106",BI=140$ $LK,"AOTStoreCodeU8At",A="FL:::/Compiler/AsmLib.CPP.Z,106",BI=141$
$LK,"PE_PUSH_LOWER",A="FL:::/Compiler/PrsExp.CPP.Z,11"$ $LK,"PE_PUSH_LOWER",A="FL:::/Compiler/PrsExp.CPP.Z,11"$
$LK,"OptPass6Lag",A="FL:::/Compiler/OptPass6.CPP.Z,28",BI=141$ $LK,"OptPass6Lag",A="FL:::/Compiler/OptPass6.CPP.Z,28",BI=142$
$LK,"OptLag1",A="FL:::/Compiler/OptLib.CPP.Z,51",BI=142$ $LK,"OptLag1",A="FL:::/Compiler/OptLib.CPP.Z,51",BI=143$
$LK,"OptLag2",A="FL:::/Compiler/OptLib.CPP.Z,62",BI=143$ $LK,"OptLag2",A="FL:::/Compiler/OptLib.CPP.Z,62",BI=144$
$LK,"StreamPrint",A="FL:::/Compiler/CMisc.CPP.Z,29",BI=144$ $LK,"StreamPrint",A="FL:::/Compiler/CMisc.CPP.Z,29",BI=145$
$LK,"ICFCvt",A="FL:::/Compiler/BackFA.CPP.Z,123",BI=145$ $LK,"ICFCvt",A="FL:::/Compiler/BackFA.CPP.Z,123",BI=146$
$LK,"StreamDir",A="FL:::/Compiler/CMisc.CPP.Z,43",BI=146$ $LK,"StreamDir",A="FL:::/Compiler/CMisc.CPP.Z,43",BI=147$
$LK,"PrsOffsetOf",A="FL:::/Compiler/PrsExp.CPP.Z,348",BI=147$ $LK,"PrsOffsetOf",A="FL:::/Compiler/PrsExp.CPP.Z,348",BI=148$
$LK,"GetOption",A="FL:::/Compiler/CMisc.CPP.Z,6",BI=148$ $LK,"GetOption",A="FL:::/Compiler/CMisc.CPP.Z,6",BI=149$
$LK,"PrsDoWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,502",BI=149$ $LK,"PrsDoWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,502",BI=150$
$LK,"ICShift",A="FL:::/Compiler/BackA.CPP.Z,609",BI=150$ $LK,"ICShift",A="FL:::/Compiler/BackA.CPP.Z,609",BI=151$
$LK,"ICFMod",A="FL:::/Compiler/BackFA.CPP.Z,242",BI=151$ $LK,"ICFMod",A="FL:::/Compiler/BackFA.CPP.Z,242",BI=152$
$LK,"COCPop",A="FL:::/Compiler/PrsLib.CPP.Z,121",BI=152$ $LK,"COCPop",A="FL:::/Compiler/PrsLib.CPP.Z,121",BI=153$
$LK,"PrsExpression2",A="FL:::/Compiler/PrsExp.CPP.Z,65",BI=153$ $LK,"PrsExpression2",A="FL:::/Compiler/PrsExp.CPP.Z,65",BI=154$
$LK,"SLASH_OP_PUSH",A="FL:::/Compiler/BackLib.CPP.Z,256"$ $LK,"SLASH_OP_PUSH",A="FL:::/Compiler/BackLib.CPP.Z,252"$
$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=154$ $LK,"LexPopRestore",A="FL:::/Compiler/LexLib.CPP.Z,23",BI=155$
$LK,"ICUnaries",A="FL:::/Compiler/BackB.CPP.Z,1",BI=155$ $LK,"ICUnaries",A="FL:::/Compiler/BackB.CPP.Z,1",BI=156$
$LK,"ICFMul",A="FL:::/Compiler/BackFB.CPP.Z,475",BI=156$ $LK,"ICFMul",A="FL:::/Compiler/BackFB.CPP.Z,477",BI=157$
$LK,"ICShiftEqu",A="FL:::/Compiler/BackA.CPP.Z,639",BI=157$ $LK,"ICShiftEqu",A="FL:::/Compiler/BackA.CPP.Z,639",BI=158$
$LK,"LexExpression2Bin",A="FL:::/Compiler/PrsExp.CPP.Z,1110",BI=158$ $LK,"LexExpression2Bin",A="FL:::/Compiler/PrsExp.CPP.Z,1110",BI=159$
$LK,"ICFPow",A="FL:::/Compiler/BackFA.CPP.Z,266",BI=159$ $LK,"ICFPow",A="FL:::/Compiler/BackFA.CPP.Z,266",BI=160$
$LK,"MapFileWrite",A="FL:::/Compiler/CHash.CPP.Z,90",BI=160$ $LK,"MapFileWrite",A="FL:::/Compiler/CHash.CPP.Z,90",BI=161$
$LK,"ICFSub",A="FL:::/Compiler/BackFB.CPP.Z,538",BI=161$ $LK,"ICFSub",A="FL:::/Compiler/BackFB.CPP.Z,540",BI=162$
$LK,"ICFModEqu",A="FL:::/Compiler/BackFA.CPP.Z,545",BI=162$ $LK,"ICFModEqu",A="FL:::/Compiler/BackFA.CPP.Z,545",BI=163$
$LK,"CmpF1PushPop",A="FL:::/Compiler/OptLib.CPP.Z,528",BI=163$ $LK,"CmpF1PushPop",A="FL:::/Compiler/OptLib.CPP.Z,535",BI=164$
$LK,"OptFree",A="FL:::/Compiler/OptLib.CPP.Z,33",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=165$ $LK,"LexDollar",A="FL:::/Compiler/Lex.CPP.Z,93",BI=166$
$LK,"AsmUnresolvedAdd",A="FL:::/Compiler/AsmResolve.CPP.Z,188",BI=166$ $LK,"AsmUnresolvedAdd",A="FL:::/Compiler/AsmResolve.CPP.Z,188",BI=167$
$LK,"AOTStoreCodeU8",A="FL:::/Compiler/AsmLib.CPP.Z,1",BI=167$ $LK,"AOTStoreCodeU8",A="FL:::/Compiler/AsmLib.CPP.Z,1",BI=168$
$LK,"ICBitOps",A="FL:::/Compiler/BackB.CPP.Z,202",BI=168$ $LK,"ICBitOps",A="FL:::/Compiler/BackB.CPP.Z,202",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,567"$ $LK,"CSwitchCase",A="FL:::/Compiler/PrsStmt.CPP.Z,567"$
$LK,"AsmResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,1",BI=169$ $LK,"AsmResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,1",BI=170$
$LK,"PrsAsmInst",A="FL:::/Compiler/Asm.CPP.Z,395",BI=170$ $LK,"PrsAsmInst",A="FL:::/Compiler/Asm.CPP.Z,395",BI=171$
$LK,"COCCompile",A="FL:::/Compiler/PrsLib.CPP.Z,249",BI=171$ $LK,"COCCompile",A="FL:::/Compiler/PrsLib.CPP.Z,249",BI=172$
$LK,"Cmp",A="FL:::/Compiler/CMain.CPP.Z,419",BI=172$ $LK,"Cmp",A="FL:::/Compiler/CMain.CPP.Z,419",BI=173$
$LK,"PrsPush2",A="FL:::/Compiler/PrsLib.CPP.Z,11",BI=173$ $LK,"PrsPush2",A="FL:::/Compiler/PrsLib.CPP.Z,11",BI=174$
$LK,"ICArgPut",A="FL:::/Compiler/CExcept.CPP.Z,141",BI=174$ $LK,"ICArgPut",A="FL:::/Compiler/CExcept.CPP.Z,141",BI=175$
$LK,"UndefinedExtern",A="FL:::/Compiler/CExcept.CPP.Z,98",BI=175$ $LK,"UndefinedExtern",A="FL:::/Compiler/CExcept.CPP.Z,98",BI=176$
$LK,"OptIC4",A="FL:::/Compiler/OptPass4.CPP.Z,1",BI=176$ $LK,"OptIC4",A="FL:::/Compiler/OptPass4.CPP.Z,1",BI=177$
$LK,"OptIC6",A="FL:::/Compiler/OptPass6.CPP.Z,1",BI=177$ $LK,"OptIC6",A="FL:::/Compiler/OptPass6.CPP.Z,1",BI=178$
$LK,"ICCmpAndBranch",A="FL:::/Compiler/BackB.CPP.Z,469",BI=178$ $LK,"ICCmpAndBranch",A="FL:::/Compiler/BackB.CPP.Z,468",BI=179$
$LK,"ICDivEqu",A="FL:::/Compiler/BackA.CPP.Z,408",BI=179$ $LK,"ICDivEqu",A="FL:::/Compiler/BackA.CPP.Z,408",BI=180$
$LK,"PrsWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,482",BI=180$ $LK,"PrsWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,482",BI=181$
$LK,"ICFCmpAndBranch",A="FL:::/Compiler/BackFB.CPP.Z,217",BI=181$ $LK,"ICFCmpAndBranch",A="FL:::/Compiler/BackFB.CPP.Z,219",BI=182$
$LK,"Lex",A="FL:::/Compiler/Lex.CPP.Z,443",BI=182$ $LK,"Lex",A="FL:::/Compiler/Lex.CPP.Z,443",BI=183$
$LK,"ICTestAndBranch",A="FL:::/Compiler/BackB.CPP.Z,635",BI=183$ $LK,"ICTestAndBranch",A="FL:::/Compiler/BackB.CPP.Z,634",BI=184$
$LK,"uasm",A="FL:::/Compiler/Compiler.PRJ.Z,21"$ $LK,"uasm",A="FL:::/Compiler/Compiler.PRJ.Z,21"$
$LK,"MODR_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,131"$ $LK,"MODR_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,127"$
$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=184$ $LK,"AOTLocalsResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,42",BI=185$
$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=185$ $LK,"CmpFixUpAOTAsm",A="FL:::/Compiler/CMain.CPP.Z,302",BI=186$
$LK,"OptLabelFwd",A="FL:::/Compiler/OptLib.CPP.Z,1",BI=186$ $LK,"OptLabelFwd",A="FL:::/Compiler/OptLib.CPP.Z,1",BI=187$
$LK,"ICOrOr",A="FL:::/Compiler/BackB.CPP.Z,51",BI=187$ $LK,"ICOrOr",A="FL:::/Compiler/BackB.CPP.Z,51",BI=188$
$LK,"LexExcept",A="FL:::/Compiler/CExcept.CPP.Z,81",BI=188$ $LK,"LexExcept",A="FL:::/Compiler/CExcept.CPP.Z,81",BI=189$
$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,535",BI=189$ $LK,"CmpF2PushPop",A="FL:::/Compiler/OptLib.CPP.Z,542",BI=190$
$LK,"CmpJoin",A="FL:::/Compiler/CMain.CPP.Z,35",BI=190$ $LK,"CmpJoin",A="FL:::/Compiler/CMain.CPP.Z,35",BI=191$
$LK,"PrsPop2",A="FL:::/Compiler/PrsLib.CPP.Z,16",BI=191$ $LK,"PrsPop2",A="FL:::/Compiler/PrsLib.CPP.Z,16",BI=192$
$LK,"CMP_TEMPLATES",A="FL:::/Compiler/Templates.CPP.Z,4"$ $LK,"CMP_TEMPLATES",A="FL:::/Compiler/Templates.CPP.Z,4"$
$LK,"MODR_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,132"$ $LK,"MODR_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,128"$
$LK,"PrsAsmBlk",A="FL:::/Compiler/Asm.CPP.Z,904",BI=192$ $LK,"PrsAsmBlk",A="FL:::/Compiler/Asm.CPP.Z,904",BI=193$
$LK,"PrsAsmArg",A="FL:::/Compiler/Asm.CPP.Z,35",BI=193$ $LK,"PrsAsmArg",A="FL:::/Compiler/Asm.CPP.Z,35",BI=194$
$LK,"LexFirstRem",A="FL:::/Compiler/Lex.CPP.Z,277",BI=194$ $LK,"LexFirstRem",A="FL:::/Compiler/Lex.CPP.Z,277",BI=195$
$LK,"MemberClassBaseFind",A="FL:::/Compiler/LexLib.CPP.Z,87",BI=195$ $LK,"MemberClassBaseFind",A="FL:::/Compiler/LexLib.CPP.Z,87",BI=196$
$LK,"MemberFind",A="FL:::/Compiler/LexLib.CPP.Z,67",BI=196$ $LK,"MemberFind",A="FL:::/Compiler/LexLib.CPP.Z,67",BI=197$
$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=197$ $LK,"OptLag",A="FL:::/Compiler/OptLib.CPP.Z,40",BI=198$
$LK,"ICPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,346",BI=198$ $LK,"ICPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,345",BI=199$
$LK,"ICFPostIncDec",A="FL:::/Compiler/BackFB.CPP.Z,580",BI=199$ $LK,"ICFPostIncDec",A="FL:::/Compiler/BackFB.CPP.Z,582",BI=200$
$LK,"ICTest",A="FL:::/Compiler/BackLib.CPP.Z,398",BI=200$ $LK,"ICTest",A="FL:::/Compiler/BackLib.CPP.Z,394",BI=201$
$LK,"ICModU64",A="FL:::/Compiler/BackC.CPP.Z,464",BI=201$ $LK,"ICModU64",A="FL:::/Compiler/BackC.CPP.Z,460",BI=202$
$LK,"ICLastIns",A="FL:::/Compiler/BackLib.CPP.Z,59",BI=202$
$LK,"PrsAsmImm",A="FL:::/Compiler/Asm.CPP.Z,1",BI=203$ $LK,"PrsAsmImm",A="FL:::/Compiler/Asm.CPP.Z,1",BI=203$
$LK,"LexExtStr",A="FL:::/Compiler/LexLib.CPP.Z,218",BI=204$ $LK,"LexExtStr",A="FL:::/Compiler/LexLib.CPP.Z,218",BI=204$
$LK,"ICAddSubEctEqu",A="FL:::/Compiler/BackA.CPP.Z,478",BI=205$ $LK,"ICAddSubEctEqu",A="FL:::/Compiler/BackA.CPP.Z,478",BI=205$
$LK,"ICAddSubEctImm",A="FL:::/Compiler/BackA.CPP.Z,56",BI=206$ $LK,"ICAddSubEctImm",A="FL:::/Compiler/BackA.CPP.Z,56",BI=206$
$LK,"ICPush",A="FL:::/Compiler/BackLib.CPP.Z,297",BI=207$ $LK,"ICPush",A="FL:::/Compiler/BackLib.CPP.Z,293",BI=207$
$LK,"ICSwap",A="FL:::/Compiler/BackC.CPP.Z,491",BI=208$ $LK,"ICSwap",A="FL:::/Compiler/BackC.CPP.Z,487",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,389",BI=209$ $LK,"ICZero",A="FL:::/Compiler/BackLib.CPP.Z,385",BI=209$
$LK,"CmpCtrlDel",A="FL:::/Compiler/Lex.CPP.Z,58",BI=210$ $LK,"CmpCtrlDel",A="FL:::/Compiler/Lex.CPP.Z,58",BI=210$
$LK,"ICClassPut",A="FL:::/Compiler/CExcept.CPP.Z,117",BI=211$ $LK,"ICClassPut",A="FL:::/Compiler/CExcept.CPP.Z,117",BI=211$
$LK,"ICAssign",A="FL:::/Compiler/BackC.CPP.Z,159",BI=212$ $LK,"ICAssign",A="FL:::/Compiler/BackC.CPP.Z,159",BI=212$
$LK,"ICFTemplateFun",A="FL:::/Compiler/BackFB.CPP.Z,604",BI=213$ $LK,"ICFTemplateFun",A="FL:::/Compiler/BackFB.CPP.Z,606",BI=213$
$LK,"MemberAdd",A="FL:::/Compiler/LexLib.CPP.Z,103",BI=214$ $LK,"MemberAdd",A="FL:::/Compiler/LexLib.CPP.Z,103",BI=214$
$LK,"PrsPush",A="FL:::/Compiler/PrsLib.CPP.Z,1",BI=215$ $LK,"PrsPush",A="FL:::/Compiler/PrsLib.CPP.Z,1",BI=215$
$LK,"SLASH_OP_FDIVR",A="FL:::/Compiler/BackLib.CPP.Z,263"$ $LK,"SLASH_OP_FDIVR",A="FL:::/Compiler/BackLib.CPP.Z,259"$
$LK,"SLASH_OP_FISTTP",A="FL:::/Compiler/BackLib.CPP.Z,266"$ $LK,"SLASH_OP_FISTTP",A="FL:::/Compiler/BackLib.CPP.Z,262"$
$LK,"CmpCtrlSize",A="FL:::/Compiler/Lex.CPP.Z,70",BI=216$ $LK,"CmpCtrlSize",A="FL:::/Compiler/Lex.CPP.Z,70",BI=216$
$LK,"ICLocalVarInit",A="FL:::/Compiler/BackC.CPP.Z,762",BI=217$ $LK,"ICLocalVarInit",A="FL:::/Compiler/BackC.CPP.Z,758",BI=217$
$LK,"PrsFor",A="FL:::/Compiler/PrsStmt.CPP.Z,525",BI=218$ $LK,"PrsFor",A="FL:::/Compiler/PrsStmt.CPP.Z,525",BI=218$
$LK,"PassTrace",A="FL:::/Compiler/CMisc.CPP.Z,11",BI=219$ $LK,"PassTrace",A="FL:::/Compiler/CMisc.CPP.Z,11",BI=219$
$LK,"PrsPopDeref",A="FL:::/Compiler/PrsLib.CPP.Z,21",BI=220$ $LK,"PrsPopDeref",A="FL:::/Compiler/PrsLib.CPP.Z,21",BI=220$
@@ -282,141 +282,159 @@ $LK,"PrsFun",A="FL:::/Compiler/PrsStmt.CPP.Z,132",BI=223$
$LK,"LexIncludeStr",A="FL:::/Compiler/Lex.CPP.Z,299",BI=224$ $LK,"LexIncludeStr",A="FL:::/Compiler/Lex.CPP.Z,299",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,"MODR_SIB_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,135"$ $LK,"MODR_SIB_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,131"$
$LK,"cmp_type_flags_src_code",A="FL:::/Compiler/Lex.CPP.Z,328"$ $LK,"cmp_type_flags_src_code",A="FL:::/Compiler/Lex.CPP.Z,328"$
$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,393"$ $LK,"asm_seg_prefixes",A="FL:::/Compiler/Asm.CPP.Z,393"$
$LK,"ICMinMax",A="FL:::/Compiler/BackC.CPP.Z,419",BI=229$ $LK,"ICMinMax",A="FL:::/Compiler/BackC.CPP.Z,415",BI=229$
$LK,"CmpLoadDefines",A="FL:::/Compiler/CInit.CPP.Z,205",BI=230$ $LK,"CmpLoadDefines",A="FL:::/Compiler/CInit.CPP.Z,205",BI=230$
$LK,"PrsIf",A="FL:::/Compiler/PrsStmt.CPP.Z,455",BI=231$ $LK,"PrsIf",A="FL:::/Compiler/PrsStmt.CPP.Z,455",BI=231$
$LK,"ICBuiltInFloatConst",A="FL:::/Compiler/BackLib.CPP.Z,408",BI=232$ $LK,"ICBuiltInFloatConst",A="FL:::/Compiler/BackLib.CPP.Z,404",BI=232$
$LK,"ICFUnaryMinus",A="FL:::/Compiler/BackFA.CPP.Z,194",BI=233$ $LK,"ICFUnaryMinus",A="FL:::/Compiler/BackFA.CPP.Z,194",BI=233$
$LK,"LexDocRead",A="FL:::/Compiler/Lex.CPP.Z,311",BI=234$ $LK,"LexDocRead",A="FL:::/Compiler/Lex.CPP.Z,311",BI=234$
$LK,"CmpFixUpJITAsm",A="FL:::/Compiler/CMain.CPP.Z,174",BI=235$ $LK,"CmpFixUpJITAsm",A="FL:::/Compiler/CMain.CPP.Z,174",BI=235$
$LK,"COCPopNoFree",A="FL:::/Compiler/PrsLib.CPP.Z,114",BI=236$ $LK,"COCPopNoFree",A="FL:::/Compiler/PrsLib.CPP.Z,114",BI=236$
$LK,"ParenWarning",A="FL:::/Compiler/CExcept.CPP.Z,110",BI=237$ $LK,"ParenWarning",A="FL:::/Compiler/CExcept.CPP.Z,110",BI=237$
$LK,"PrsFunCall",A="FL:::/Compiler/PrsExp.CPP.Z,378",BI=238$ $LK,"PrsFunCall",A="FL:::/Compiler/PrsExp.CPP.Z,378",BI=238$
$LK,"ICDerefPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,385",BI=239$ $LK,"ICDerefPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,384",BI=239$
$LK,"Option",A="FL:::/Compiler/CMisc.CPP.Z,1",BI=240$ $LK,"Option",A="FL:::/Compiler/CMisc.CPP.Z,1",BI=240$
$LK,"ExeFile2",A="FL:::/Compiler/CMain.CPP.Z,655",BI=241$ $LK,"ExeFile2",A="FL:::/Compiler/CMain.CPP.Z,651",BI=241$
$LK,"COptMemberVar",A="FL:::/Compiler/OptLib.CPP.Z,549"$ $LK,"COptMemberVar",A="FL:::/Compiler/OptLib.CPP.Z,556"$
$LK,"PE_CHECK_BINARY_OPS1",A="FL:::/Compiler/PrsExp.CPP.Z,6"$ $LK,"PE_CHECK_BINARY_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=242$ $LK,"LexBackupLastChar",A="FL:::/Compiler/LexLib.CPP.Z,1",BI=242$
$LK,"Trace",A="FL:::/Compiler/CMisc.CPP.Z,19",BI=243$ $LK,"Trace",A="FL:::/Compiler/CMisc.CPP.Z,19",BI=243$
$LK,"ICBrBitOps",A="FL:::/Compiler/BackC.CPP.Z,210",BI=244$ $LK,"ICBrBitOps",A="FL:::/Compiler/BackC.CPP.Z,206",BI=244$
$LK,"MODR_D32_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,133"$ $LK,"MODR_D32_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,129"$
$LK,"LexGetChar",A="FL:::/Compiler/Lex.CPP.Z,107",BI=245$ $LK,"LexGetChar",A="FL:::/Compiler/Lex.CPP.Z,107",BI=245$
$LK,"LexSkipEol",A="FL:::/Compiler/Lex.CPP.Z,270",BI=246$ $LK,"LexSkipEol",A="FL:::/Compiler/Lex.CPP.Z,270",BI=246$
$LK,"ICFlagBranch",A="FL:::/Compiler/BackB.CPP.Z,683",BI=247$ $LK,"ICFlagBranch",A="FL:::/Compiler/BackB.CPP.Z,682",BI=247$
$LK,"SLASH_OP_FSUBR",A="FL:::/Compiler/BackLib.CPP.Z,260"$ $LK,"SLASH_OP_FSUBR",A="FL:::/Compiler/BackLib.CPP.Z,256"$
$LK,"ICFPreIncDec",A="FL:::/Compiler/BackFB.CPP.Z,560",BI=248$ $LK,"ICFPreIncDec",A="FL:::/Compiler/BackFB.CPP.Z,562",BI=248$
$LK,"MODR_SIB_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,134"$ $LK,"MODR_SIB_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,130"$
$LK,"ExeFile",A="FL:::/Compiler/CMain.CPP.Z,616",BI=249$ $LK,"ExeFile",A="FL:::/Compiler/CMain.CPP.Z,614",BI=249$
$LK,"COCMiscNew",A="FL:::/Compiler/PrsLib.CPP.Z,143",BI=250$ $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=251$ $LK,"CmpOffset2Reg",A="FL:::/Compiler/OptLib.CPP.Z,83",BI=251$
$LK,"PrsFunNew",A="FL:::/Compiler/PrsLib.CPP.Z,62",BI=252$ $LK,"PrsFunNew",A="FL:::/Compiler/PrsLib.CPP.Z,62",BI=252$
$LK,"StreamExePrint",A="FL:::/Compiler/CMain.CPP.Z,665",BI=253$ $LK,"StreamExePrint",A="FL:::/Compiler/CMain.CPP.Z,661",BI=253$
$LK,"COCGoToLabelFind",A="FL:::/Compiler/PrsLib.CPP.Z,152",BI=254$ $LK,"COCGoToLabelFind",A="FL:::/Compiler/PrsLib.CPP.Z,152",BI=254$
$LK,"OptMVCompare",A="FL:::/Compiler/OptLib.CPP.Z,555",BI=255$ $LK,"OptMVCompare",A="FL:::/Compiler/OptLib.CPP.Z,562",BI=255$
$LK,"ICToBool",A="FL:::/Compiler/BackB.CPP.Z,290",BI=256$ $LK,"ICToBool",A="FL:::/Compiler/BackB.CPP.Z,289",BI=256$
$LK,"PrsFunJoin",A="FL:::/Compiler/PrsStmt.CPP.Z,68",BI=257$ $LK,"PrsFunJoin",A="FL:::/Compiler/PrsStmt.CPP.Z,68",BI=257$
$LK,"PrsNoUnusedWarn",A="FL:::/Compiler/PrsStmt.CPP.Z,787",BI=258$ $LK,"OptFixSizeOf",A="FL:::/Compiler/OptLib.CPP.Z,484",BI=258$
$LK,"OptFixSizeOf",A="FL:::/Compiler/OptLib.CPP.Z,484",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=260$ $LK,"LexAttachDoc",A="FL:::/Compiler/Lex.CPP.Z,331",BI=259$
$LK,"PrsStreamBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,801",BI=261$ $LK,"PrsStreamBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,801",BI=260$
$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=262$ $LK,"InstEntryFind",A="FL:::/Compiler/UAsm.CPP.Z,66",BI=261$
$LK,"PrsDotDotDot",A="FL:::/Compiler/PrsVar.CPP.Z,381",BI=263$ $LK,"PrsDotDotDot",A="FL:::/Compiler/PrsVar.CPP.Z,381",BI=262$
$LK,"ICMulEqu",A="FL:::/Compiler/BackA.CPP.Z,322",BI=264$ $LK,"ICMulEqu",A="FL:::/Compiler/BackA.CPP.Z,322",BI=263$
$LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CPP.Z,1",BI=265$ $LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CPP.Z,1",BI=264$
H2@g#g#p#v#‘#–#Á#Ã#ö#à#$ $$1$¨®Ô¾\¾\Ô\Ü\ç\ó\]õ\"](](]R]Y]„]’]’]¿]á]ù]æ]^4^!^K^R^}^}^„^¨^¾^¾^¾^È^H>L&ø&ø@øJøNøRøWøYøqø‰ø‰ø“øp©Á6ü6ü`übüiüoüuüwü}üƒü™ü¬ü»üÀüÂüÇüÑüæüüüı ı1ı8ãã'ã,ã7ã@ãGãIãNãd`µfÖfÖ„ÖˆÖ•Ö—Ö¤Ö¦Ö²Ö²Ö¿ÖÁÖÎÖĞÖÜÖÜÖòÖûÖûÖ× ××'×-×2×4×@×G×V×a×g×l×n×zת×Ğ×à×ğרØØ"Ø2Ø2Ø7ØQØXØ_Ø_Ø_Ø_ØfØ|؈Ø�ؚؔØ�Ø�Ø�ØËØÒØèØôØúØÙÙÙÙÙDÃÙÙ,Ù/Ù2Ù?ÙEÙRÙUÙXÙ^Ù`ÙjÙ,cj°ˆ°ˆ¾ˆÈˆÓˆŞˆäˆêˆ hl..<QW $LK,"PrsNoWarn",A="FL:::/Compiler/PrsStmt.CPP.Z,787",BI=265$
P ×5×5å5ô5 66$6$6/686>6E6K6 œ;^¶I¶I¾IÂIÛIîIJJ?JHJYJ}J”J”J³JÂJËJØJßJK"K&K.K.KAKQKUKYK Œ×ö��¾ÆÊØŞää&:H_eqv„ ©¹»ÂÂÈÈØ |1Ç"Ç"İ"æ"ñ" # #####,#.#4#=#?#E#O#V#Y#Y#c#0 'ø†ø†‡&‡,‡2‡2‡8‡„“°XŸXŸlŸsŸzŸ~Ÿ¢ŸµŸ¼ŸÍŸòŸıŸ  H2@_#_#h#n#‰#�#¹#»#ğ#Ú#$$$+$¨­Ón`n`„`Œ`—`£`Ã`¥`Ò`Ø`Ø`a a4aBaBaoa‘a©a–a¸aäaÑaûab-b-b4bXbnbnbnbxbH>L®û®ûÈûÒûÖûÚûßûáûùûüüüp©Á¾ÿ¾ÿèÿêÿñÿ÷ÿıÿÿÿ !4CHJOYn„—¼Î(äää;ä?ä?äGä8ÖãÖãßãäãïãøãÿãääd`µ¶××Ôר×å×ç×ô×ö×ØØØØØ Ø,Ø,ØGØUØUØ`ØgØvØ�؇،Ø�ؚءذػØÁØÆØÈØÔØÙ*Ù:ÙJÙZÙ\ÙlÙ|ٌٌّ٤٫ٲٲٲٲٹÙÏÙÛÙáÙçÙíÙñÙñÙñÙÚ%Ú;ÚGÚMÚSÚYÚ[Ú[ÚiÚDÃnÚnÚ„Ú‡ÚŠÚ—Ú�ÚªÚ­Ú°Ú¶Ú¸ÚÂÚ ,cj؉؉æ‰ğ‰û‰Š ŠŠ
  : E P R Y b d o v   ("�Ş�Ş�Ş´ŞÏŞÏŞÕŞ .Ş.Ş=ŞSŞYŞ ˆà±à±² ²#²/²:²L²]²N²L²}²˜²¤²«²±²½²Ç²Î²Õ²Ù²Û²á²í²÷²ş²³ ³ ³³³#³5³F³7³5³f³‡³“³š³ ³¬³¶³½³Ä³È³Ê³Ğ³Ü³æ³í³ô³ø³ø³´´#´5´F´7´5´f´‡´“´š´ ´¬´¶´½´Ä´È´Ê´Ğ´Ü´æ´í´ô´ø´ø´µµ$µ5µ&µ$µUµ\µbµnµxµµ†µŠµŒµ’µ�µ¨µ¯µ¶µºµºµÄµÒµÛµôµ†¶Ôîî €T¦€%€A€L€^€e€v€~€†€‰€—€ÀÀØ€Ú€Ú€æ€î€õ€�����*�*�*�F�Q�b�b�g����“�™�¤�©�©�®�Æ�Õ�Ú�à�ë�ğ�ğ�ş�‚‚‚#‚+‚.‚4‚9‚B‚T‚]‚n‚~‚~‚ƒ‚‹‚“‚–‚œ‚œ‚¡‚¡‚¡‚§‚ª‚±‚¼‚Ñ‚ö‚ ƒƒ"ƒ*ƒ6ƒBƒHƒOƒXƒ\ƒ_ƒkƒqƒxƒ}ƒ}ƒ‹ƒ›ƒ›ƒ¨ƒ¨ƒ°ƒ¸ƒÁƒЃÕƒÕƒ܃çƒíƒõƒûƒ„ „ „„%„7„=„E„K„P„[„m„s„{„�„†„†„š„ „«„±„³„ÄɄɄ…….…4…J…[…a…f…………•…�…¥…«…°…°…Ä…Ê…à…ñ…÷…ü…††+†3†;†A†F†F†\†b†x†‰†�†”†£†©†º††ʆІ׆܆܆ò†ø†‡ ‡%‡'‡6‡<‡F‡N‡V‡\‡c‡c‡c‡u‡~‡�‡Ÿ‡Ÿ‡¤‡¤‡²‡º‡ˇއå‡ë‡ó‡ù‡ ˆˆˆˆˆˆ"ˆ"ˆ"ˆ"ˆ"ˆAˆMˆRˆRˆhˆqˆ|ˆ…ˆ�ˆ›ˆ ˆ ˆ¶ˆ¼ˆÒˆãˆéˆîˆ‰‰ ‰$‰B‰B‰G‰G‰S‰[‰^‰d‰j‰o‰o‰“‰›‰£‰³‰¹‰¿‰¿‰Љî‰î‰ó‰ó‰ÿ‰Š hl&&4IO P Ÿ6Ÿ6­6¼6Ø6Ş6ğ6ğ6û67
ŠŠŠŠŠ<ŠDŠTŠZŠaŠŠ‘Š™Š´Š¼Š¿ŠÆŠÌŠçŠïŠ 777 ”;\®J®J¶JºJÓJíJ
‹‹‹‹"‹"‹"‹A‹Q‹]‹e‹h‹o‹u‹…‹—‹£‹Á‹É‹Ì‹Ó‹Ù‹ô‹ŒŒ&Œ)Œ0Œ6Œ6Œ6Œ6Œ;Œ;ŒDŒTŒjŒpŒˆŒ›Œ¡Œ¦Œ¸Œ¾ŒÃŒߌåŒñŒùŒüŒ� �2�:�J�P�W�W�W�\�\�e�}�“�™�±�Ä�Ê�Ï�ú���J�\�y���‡�Œ�Œ�¦�²�¾�É�É�Î�Î�è�ô�� � ���*�6�B�M�M�R�R�h�n�z�€�…�—���¢�±�½�É�Ï�Õ�Ü�ï�ú����� �&�+�?�Q�Y�t�|��…�‹�¦�®�Ñ�î�ö�ù�ÿ�‘‘‘ ‘+‘3‘6‘=‘C‘H‘Z‘l‘t‘�‘—‘š‘¡‘§‘‘Ê‘ì‘ ’’’’!’!’1’:’F’N’Q’W’]’b’v’ˆ’�’­’µ’¸’¾’Ä’ß’ç’ “+“3“6“<“B“B“S“\“h“p“s“z“€“…“—“©“±“Ï“דÚ“á“ç“” K+K4KEKiK€K€KŸK®K·KÄKËKıKLLLL-L=LALEL Œ×ö��¾ÆÊØŞää&:H_eqv„ ©¹»ÂÂÈÈØ|1¿"¿"Õ"Ş"é"#####$#&#,#5#7#=#G#N#Q#Q#[#0 ' ˆ ˆ.ˆNˆTˆZˆZˆ`ˆ„“°¨ ¨ ¼ Ã Ê Î ò ¡ ¡¡B¡M¡X¡Z¡e¡Š¡•¡ ¡¢¡©¡²¡´¡¿¡Æ¡ğ¡(">Ş>ŞMŞdŞŞŞ…Ş ŞİŞİíİŞ Ş ˆ0³0³U³\³s³³Š³œ³­³�³œ³Í³è³ô³û³´ ´´´%´)´+´1´=´G´N´U´Y´Y´c´h´s´…´–´‡´…´¶´×´ã´ê´ğ´ü´µ µµµµ µ,µ6µ=µDµHµHµUµcµsµ…µ–µ‡µ…µ¶µ×µãµêµğµüµ,¶6¶=¶D¶H¶H¶R¶b¶t¶…¶v¶t¶¥¶¬¶²¶¾¶È¶Ï¶Ö¶Ú¶Ü¶â¶î¶ø¶ÿ¶·
”/”O”W”Z”a”g”g”g”g”g”l”l”‚”ˆ”””š”Ÿ”±”·”¼”ʔ֔ߔë”ó”ö”ı”•••,•4•O•W•Z•a•g•‚•Š•¬•ɕѕԕەá•á•á•ò•û•–––– –6–H–T–r–z–}–„–Š–¥–±–Ö–ö–ş–—————————&—A—G—R—W—W—j—€—†—‘—“—“—¦—É—Ï—Ú—Ú—ì—õ—˜ ˜˜-˜-˜2˜2˜E˜[˜a˜o˜~˜ƒ˜ƒ˜–˜¬˜²˜À˜ϘÔ˜Ô˜ê˜ğ˜ ™%™%™O™U™Z™f™o™~™~™ƒ™ƒ™™™Ÿ™¼™Ô™Ô™ş™š ššš-š-š2š2šHšNškšƒšƒš­š³š¸šÄšÍšÜšÜšášáš÷šıš›2›2›\›b›d›p›y›„›„›„›„›‰›—› ›±›³›Å›Ò›Ò›Ò›â›ò›÷›œ'œ(œ-œBœ_œoœ“œ£œ©œ©œ©œ®œ³œÈœÛœ�)�/�1�6�G�V�ˆ���–�˜���¤�¤�­�¿�Ò�Û�ê�ê�ï�ô�� ���"�-�-�N�U�[�c�n�t�„�Š�’���£�£�¨�­�´�»�Â�É�Ò�á�á�á�æ�æ�æ�ø�ı�ı�ŸŸ"Ÿ*Ÿ0Ÿ0Ÿ0Ÿ5Ÿ5Ÿ@ŸQŸTŸ`ŸiŸuŸ|Ÿ‚Ÿ‡Ÿ‡Ÿ’Ÿ£Ÿ¦Ÿ²Ÿ»ŸÇŸΟԟٟٟٟٟޟãŸãŸîŸòŸòŸşŸ  ·
  ··"·+·D·P·T·T·W·`·Ö·Ø æ€æ€�Ѧ ��=�H�Z�a�r�z�~�����“�¿�¿�Ô�Ö�Ö�â�ê�î�û�û�‚‚‚ ‚ ‚ ‚<‚G‚X‚X‚]‚u‚„‚‰‚�‚š‚Ÿ‚Ÿ‚¤‚¼‚Ë‚Ğ‚Ö‚á‚æ‚æ‚ô‚ı‚ ƒƒƒ!ƒ$ƒ*ƒ/ƒ8ƒJƒSƒdƒtƒtƒyƒ�ƒ‰ƒŒƒ’ƒ’ƒ—ƒ—ƒ—ƒ�ƒ ƒ§ƒ²ƒǃ샄„„ „,„8„>„E„N„R„U„a„g„n„s„s„�„‘„‘„�„�„¦„®„·„Ƅ˄˄݄҄ã„ë„ñ„ü„…………-…3…;…A…F…Q…c…i…q…w…|…|…�…–…¡…§…©…¹…¿…¿…ä… †††$†*†@†Q†W†\†u†{†‹†“†›†¡†¦†¦†º†À†Ö†ç†í†ò† ‡‡!‡)‡1‡7‡<‡<‡R‡X‡n‡‡…‡Ї™‡Ÿ‡°‡¸‡À‡Ƈ͇Ò‡Ò‡è‡î‡ˆˆˆˆ,ˆ2ˆ<ˆDˆLˆRˆYˆYˆYˆkˆtˆ…ˆ•ˆ•ˆšˆšˆ¨ˆ°ˆÁˆÔˆÛˆáˆéˆïˆÿˆ‰ ‰‰‰‰‰‰‰‰‰7‰C‰H‰H‰W‰`‰k‰t‰‰Љ�‰�‰¥‰«‰Á‰Ò‰؉݉ï‰õ‰ú‰Š1Š1Š6Š6ŠBŠJŠMŠSŠYŠ^Š^Š‚ŠŠŠ’Š¢Š¨Š®Š®Š¿ŠİŠİŠâŠâŠîŠöŠùŠ‹‹ ‹ ‹+‹3‹C‹I‹P‹n‹}‹…‹�‹¥‹¨‹¯‹µ‹Í‹Õ‹í‹õ‹ø‹ÿ‹ŒŒŒ$Œ4Œ@ŒHŒKŒRŒXŒhŒwŒƒŒ�Œ¦Œ©Œ°Œ¶ŒÎŒÚŒõŒıŒ�� � � � ����+�A�G�_�r�x�}���•�š��¼�È�Ğ�Ó�Ú�à� ��!�'�.�.�.�3�3�<�T�j�p�ˆ�›�¡�¦�Ñ�×�ê�!�3�P�X�^�c�c�}�‰�•� � �¥�¥�¿�Ë�×�â�â�ç�ç�� ��$�$�)�)�?�E�Q�W�\�n�t�y�ˆ�”� �¦�¬�³�Æ�Ñ�Ú�æ�î�ñ�÷�ı�‘‘%‘-‘E‘M‘P‘V‘\‘t‘|‘œ‘¶‘¾‘Á‘Ǒ͑͑ޑç‘ó‘û‘ş‘’ ’’"’1’9’Q’Y’\’c’i’�’‰’¨’Â’Ê’Í’Ô’Ú’Ú’ê’ó’ÿ’“
   - 4 : I T _ e q u u � Š � � ˜ š ° · ½ Å Ğ Û á ë î ò ò ú ¡¡¡¡¡¡!¡!¡,¡.¡L¡S¡^¡i¡l¡r¡w¡w¡‚¡†¡†¡’¡›¡�¡�¡©¡«¡Á¡È¡Ρİ¡è¡ó¡ù¡¢ ¢ ¢¢¢!¢!¢,¢.¢D¢K¢Q¢Y¢d¢o¢u¢¢‚¢†¢†¢�¢•¢˜¢š¢¥¢©¢²¢µ¢µ¢À¢¢à¢ç¢ò¢ı¢££ £ ££!£!£-£6£9£9£D£F£\£c£i£{£†£‘£—£œ£œ£§£¬£¬£·£¼£¼£Ç£Ê£ΣÕ£Ú£ߣä£ä£ø£ı£ı£ ““““/“>“F“`“h“k“q“w“�“—“¹“Õ“İ“à“æ“ì“ì“ı“””””$”*”/”A”P”X”s”{”~”…”‹”£”«”Í”ê”ò”õ”ü”••••••••#•/•5•:•L•R•W•e•q•z•†•�•‘•˜•�•£•µ•ĕ̕ä•ì•ï•ö•ü•––;–U–]–`–g–m–m–m–~–‡–“–›–�–¥–«––Ñ–İ–ø–——
¤¤ ¤'¤+¤?¤F¤J¤J¤W¤c¤k¤q¤�¤…¤–¤¨¤³¤·¤·¤Ĥ̤Ô¤Ú¤Ú¤Ú¤Ú¤Ú¤ܤܤê¤ñ¤ş¤ ——(—4—V—s—{—~—…—‹—‹—‹—‹—‹—�—�—£—¾—Ä—Ï—Ô—Ô—ç—ı—˜˜˜˜#˜F˜L˜W˜W˜i˜r˜ƒ˜ˆ˜š˜ª˜ª˜¯˜¯˜˜ؘޘì˜û˜™™™)™/™=™L™Q™Q™g™m™Š™¢™¢™Ì™Ò™×™ã™ì™û™û™šššš9šQšQš{š�š†š’š›šªšªš¯š¯šÅšËšèš››*›0›5›A›J›Y›Y›^›^›t›z›—›¯›¯›Ù›ß›á›í›ö›œœœœœœœ.œ0œBœOœOœOœ_œoœtœ˜œ¤œ¥œªœ¿œÜœìœ� �&�&�&�+�0�E�X�–�¦�¬�®�³�Ä�Ó�� ����!�!�*�<�O�X�g�g�l�q�€�‰�”�–�Ÿ�ª�ª�Ë�Ò�Ø�à�ë�ñ�ŸŸŸŸ Ÿ Ÿ%Ÿ*Ÿ1Ÿ8Ÿ?ŸFŸOŸ^Ÿ^Ÿ^ŸcŸcŸcŸuŸzŸzŸŒŸ—ŸŸŸ§Ÿ­Ÿ­Ÿ­Ÿ²Ÿ²Ÿ½ŸΟÑŸİŸæŸòŸùŸÿŸ     # / 8 D K Q V V V V [ ` ` k o o { „ ‡ ‡ ’ ” ª ± · Æ Ñ Ü â î ò ò ş ¡
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥1¥9¥E¥E¥f¥u¥�¥�¥›¥¨¥¨¥Ë¥Ø¥ã¥ì¥õ¥¦¦¦¦¦¦&¦D¦P¦P¦¨x¿Ù·3·3É3Ë3Ï3Ø3ä3ğ3444484=4I4\4f4i4t4w44‰4lcz¶x¶xÌxÛxàxõxâxyyyy)yy8y>yWypy‰y¢y»yÅy„�ÎhÎhìhôhúhii ¡
i iiii,i0i6i6iKiUiUi]ivi™iºi¿iàiåiñiüijjj(j.j3j9j;jAjDjJjOjRjZjcjsj–j¤j¼jÁjÅjêjıjkk(k-k1kVkfk‰kœk¡k§k¬k¯k±k·k½kÃkÈkÎkÖkÖkàkék÷klll=lMlplƒlˆl˜l»lÉlálælêlm"m"m=m=m=mKmcmemememsm‹m�m�m›m³m³mÅmÅmÎmÛmñmn+n3n>nQnUnUnUn\nbn|n„n�nªn¬n²nÌnÔnßnínønønoH…“H„H„_„u„…„Œ„£„¾„ЄԄ…L“¢ÖzÖzêz÷z {ùz{{7{P{[{f{n{4IRîÕîÕ÷Õ÷ÕúÕÖÖÖÖì=öö.ö1öOöföwöwö’ö˜ö�ö�ö¸ö¾öÃöÃöÌöÚö÷ö÷÷÷!÷#÷@÷P÷U÷\÷b÷d÷d÷w÷}÷}÷}÷�÷‚÷�÷®÷À÷Å÷Å÷Å÷Ì÷Ó÷Ú÷ï÷ö÷øø$øÌL»¤¤2¤=¤H¤Q¤Y¤\¤c¤g¤p¤ƒ¤‡¤�¤›¤¸¤Å¤Ô¤Ù¤å¤ê¤ñ¤ı¤¥¥¥¥ ¥(¥9¥7¥/¥G¥P¥V¥V¥d¥g¥{¥„¥�¥”¥˜¥�¥´¥Ì¥Õ¥ã¥ÿ¥ ¦ ¦#¦4¦4¦;¦T¦`¦h¦{¦‚¦–¦Ÿ¦¦¦ª¦µ¦º¦Á¦Ş¦ §§§§#§/§3§H§J§[§e§p§z§‰§˜§±§±§´§¼§Á§C¨Xs….L.LKL\LiLsLŠL§LÂLÈLÑLßLåLèLôLŒ H`H`X`|`|`Š`Š`Š`Š`“`“`š`µ`Ê`Ò`Ò`İ`İ`ë`û`û` aaa'a'a-aSa(kqğˆğˆşˆ ¡¡¡-¡4¡:¡B¡M¡X¡^¡h¡k¡o¡o¡w¡~¡�¡ƒ¡�¡’¡›¡�¡�¡©¡«¡É¡Ğ¡Û¡æ¡é¡ï¡ô¡ô¡ÿ¡¢¢¢¢¢¢&¢(¢>¢E¢K¢Z¢e¢p¢v¢‚¢†¢†¢’¢›¢�¢�¢©¢«¢Á¢È¢΢Ö¢á¢ì¢ò¢ü¢ÿ¢££ ££££"£&£/£2£2£=£?£]£d£o£z£}£ƒ£ˆ£ˆ£š£�£�£ª£³£¶£¶£Á£ãÙ£à£æ£ø£¤¤¤¤¤$¤)¤)¤4¤9¤9¤D¤G¤K¤R¤W¤\¤a¤a¤u¤z¤z¤‡¤‹¤œ¤¤¤¨¤¼¤äǤǤÔ¤à¤è¤î¤ş¤¥¥%¥0¥4¥4¥A¥I¥Q¥W¥W¥W¥W¥W¥Y¥Y¥g¥n¥{¥‡¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥•¥—¥—¥®¥¶¥Â¥Â¥ã¥ò¥
‰‰!‰'‰ @O[¦è¦è´è¼èÃèâèïèïèòèôèúè $/46ß6ßCßXß]ßcß!$).ßßß(ß-ß3ß"$#(ÖŞÖŞåŞûŞßß#€ğL__iy�—¡¼ÁÑçïù  / 9 C M W a k u  ‰ “ � § ± Ç Ñ Û å ï ù   - 7 A W a k u  ‰ “ � § ± » Å Ï Ù ã í ÷ ! !! !)!3!=!G!Q![!e!o!y!ƒ!‘!$¤CX›X›n›u›Š›››­›¯›¶›¼›Ì›×›á›ì›œœœœ œ0œ:œDœKœVœkœsœsœ‰œ‰œ‰œ�œ%$5:fßfßt߉ß�ß”ß&¤Di œ œ¶œ½œÒœãœõœ÷œşœ�� �)�4�K�N�P�b�i�y�ƒ���”�Ÿ�³�»�»�Ñ�Ñ�Ñ�æ�'(&,_/_/m/t/~/„/Š/(0_g^K^KtK‡K–KœKŸK§K)  ßş"ş" #(#.#;#B#^#d#d#d#q#s#~#ˆ#�#�#©#¯#¹#Ã#Ô#Ô#ß#é#é#û#$$$$#$#$D$J$\$o$u$x$~$~$€$†$Œ$�$�$�$Ÿ$©$®$®$Ã$Í$Í$á$ê$ğ$ö$ %%%/%3%3%;%A%G%Q%X%_%h%z%z%Ÿ%£%©%¯%Á%Ô%Ú%Ş%ä%ê%ğ%ğ%ò%ö%ü%&& & & & &8&I&I&`&m&q&y&‹&«&«&±&´&¸&¾&¾&Ğ&á&ö& ¦ ¦¦%¦%¦H¦U¦`¦i¦r¦}¦„¦„¦�¦�¦‘¦£¦Á¦ͦͦü¨x¿Ùw4w4‰4‹4�4˜4¤4°4Å4Å4ô4ø4ı4 55&5)54575?5I5l_v>|>|T|c|h|}|j|Œ|�|�|œ|±|�|À|Æ|ß|ø|}*}C}M}„�~l~lœl¤lªl±l¸lºl½lÄlËlËlÜlàlælælûlmm m&mImjmom�m•m¡m¬m±mÁmÄmØmŞmãmémëmñmômúmÿmn
''#'''8'<'B'[']'c'p'r'~'œ'¢'­'Ğ'Û'á'ç'í'ö'ü'( ('(+(<(@(F(_(a(g(t(v(‚( (¦(¬(²(»(Á(Ş(Ñ(ø())))!)!)()2)G)L)L)L)i)k)ˆ)Š)§)­)µ)¹)À)ã)é)ï)û)** ***/*/*6*:*D*R*T*\*a*i*t*z*‰*�*”*™*¡*¦*µ*Ğ*à*í*ü*++6+6+=+R+W+`+m+r+x+}+}+„+ˆ+’+ +¢+ª+®+²+¼+È+Ï+Ó+Û+ã+ë+ı+ ,,,,$,$,G,G,U,[,`,d,i,i,i,i,o,q,q,”,š, ,§,½,¿,¿,¿,Ê,Ê,Ê,Ï,ø-*4.wÆÇÆÇàÇäÇüÇÈ ÈÈÈ!È'È;ÈCÈHÈKÈVÈaÈiÈtÈÈ�È—È�ȥȰȻȽÈÈÈÓÈÕÈáÈêÈêÈÉ É#É)É2ÉCÉIÉRÉdÉjÉjÉrÉvÉ�ɆɘɣɧɵɷɻÉÊÉÊÉÊÉÛÉÛÉàÉòÉøÉfÊ+Ô@NäNädäkänä’ä’ä¯äÂäÕäèäíäíä åå,å?åGåGåIåIåIå\å^å^å^åeåxå‹å‹å‹å�å©å¼åÒå×åÛåâå÷å nn#nFnTnlnqnunšn­n²nÀnØnİnánoo9oLoQoWo\o_oaogomosoxo~o†o†o�o™o§o¿oÄoÈoíoıo p3p8pHpkpyp‘p–pšp¿pÒpÒpípípípûpqqqq#q;q=q=qKqcqcququq~q‹q¡qÁqÛqãqîqrrrr rr,r4r?rZr\rbr|r„r�r�r¨r¨rÂrH…“p…p…‡…�…­…´…Ë…æ…ø…ü…?†L��^~^~r~~•~�~¤~¦~¿~Ø~ã~î~ö~4IR>×>×G×G×J×X×f×i×n×ì=�ù�ù¶ù¹ù×ùîùÿùÿùú ú%ú%ú@úFúKúKúTúbúú—úœú£ú©ú«úÈúØúİúäúêúìúìúÿúûûûû
ææææ9æ,LAP7$7$E$V$b$}$‚$¢$¤$¿$Ú$Ú$â$é$%-P~�x‰x‰†‰“‰¡‰³‰¾‰Ì‰Ù‰ç‰ù‰ŠŠŠŠ.4 û&û6ûHûMûMûMûTû[ûbûwû~ûšûšû¬ûÌL»h¥h¥‚¥�¥˜¥¡¥©¥¬¥³¥·¥À¥Ó¥×¥İ¥ë¥¦¦$¦)¦5¦:¦A¦M¦R¦U¦_¦W¦o¦x¦‰¦‡¦¦—¦ ¦¦¦¦¦´¦·¦Ë¦Ô¦İ¦ä¦è¦í¦§§%§3§O§[§[§s§„§„§‹§¤§°§¸§Ë§Ò§æ§ï§ö§ú§¨
55�5™5ª5¼5Å5Ï5Õ5/|ºU> > ` g u € ¦ ¦ ¯ ± ± ¸ ß æ æ õ  ¨¨.¨[¨b¨f¨h¨s¨¨ƒ¨˜¨š¨«¨µ¨À¨Ê¨Ù¨è¨©©© ©©“©Pq�MM2MCMVMmMŠM¥M«M´MÂMÈMËM×MŒ papa€a¤a¤a²a²a²a²a»a»aÂaİaòaúaúabbb#b#b1b7b7bObObUb{b (kqŠŠ&Š2ŠBŠIŠOŠ @KW6è6èDèLèSèrèèè‚è„èŠè!$/4æŞæŞóŞß ßß"$).¶Ş¶ŞÃŞØŞİŞãŞ#$#(†Ş†Ş•ޫް޶Ş$€ğLWWaq‡�™´¹Éßçñ  ' 1 ; E O Y c m w � ‹ • Ÿ © ¿ É Ó İ ç ñ û  % / 9 O Y c m w � ‹ • Ÿ © ³ ½ Ç Ñ Û å ï ù ! !!!!+!5!?!I!S!]!g!q!{!‰!%¤C¨œ¨œ¾œÅœÚœëœıœÿœ� ��'�1�<�S�V�X�j�p�€�Š�”�›�¦�»�Ã�Ã�Ù�Ù�Ù�í�&$5:ßß$ß9ß>ßDß'¤Diğ�ğ�� �"�3�E�G�N�T�d�o�y�„�›��� �²�¹�É�Ó�İ�ä�ï�Ÿ Ÿ Ÿ!Ÿ!Ÿ!Ÿ6Ÿ((&, 0 0-040>0D0J0)0]eFLFL\LoL~L„L‡L�L*  ßş#ş# $($.$;$B$^$d$d$d$q$s$~$ˆ$�$�$©$¯$¹$¿$Ğ$Ğ$Û$å$å$÷$ı$ %%% % %@%F%X%k%q%t%z%z%|%‚%ˆ%Š%Š%Š%›%¥%ª%ª%¿%É%É%İ%æ%ì%ò%& &&+&/&/&7&=&C&M&T&[&d&v&v&›&Ÿ&¥&«&½&Ğ&Ö&Ú&à&æ&ì&ì&î&ò&ø&ş&' ' ' ' '4'E'E'\'i'm'u'‡'§'§'­'°'´'º'º'Ì'İ'ò'(( (#(4(8(>(W(Y(_(l(n(z(˜(�(©(Ì(×(İ(ã(é(ò(ø(
 ))#)')8)<)B)[)])c)p)r)~)œ)¢)¨)®)·)½)Ú)Í)ô)ı)*****$*.*C*H*H*H*e*g*„*†*£*©*±*µ*¼*ß*å*ë*÷*+++&+++++2+6+@+N+P+X+]+e+p+v+…+Š+�+•+�+¢+±+È+Ø+å+ğ+ ,,*,*,1,F,K,T,a,f,l,q,q,x,|,†,”,–,�,¢,¦,°,¼,Ã,Ç,Ï,×,ß,ñ,ÿ,-----;-;-I-O-T-X-]-]-]-]-c-e-e-ˆ-�-”-›-±-³-³-³-¾-¾-¾-Ã-ì.+4.wÉÉ0É4ÉLÉTÉ\ÉfÉjÉqÉwɋɓɘɛɦɱɹÉÄÉÏÉÑÉçÉîÉõÉÊ Ê ÊÊ#Ê%Ê1Ê:Ê:ÊPÊ[ÊsÊyʂʓʙʢʴʺʺÊÂÊÆÊÑÊÖÊèÊóÊ÷ÊËË ËËËË+Ë+Ë0ËBËH˶Ë,Ô@NåNådåkånå’å’å¯åÂåÕåèåíåíå ææ,æ?æGæGæIæIæIæ\æ^æ^æ^æeæxæ‹æ‹æ‹æ�æ©æ¼æÒæ×æÛæâæ÷æ
+ çççç9ç-LAP/$/$=$N$Z$u$z$š$œ$·$Ò$Ò$Ú$á$%.P~� Š Š®Š»ŠÉŠÛŠæŠôŠ‹‹!‹,‹:‹@‹F‹/4
+ ?6?6M6Y6j6|6…6“6™60|ºU>
7 >
? `
P g
Y u
w €
‚ ¦
„ ¦
� ¯
£ ±
® ±
¾ ¸
Ğ ß
Ù æ
ä æ
é õ
ï   + + 7 ? P Y w ‚ „ � £ ® ¾ Ğ Ù ä é ï ö  # 1 : : A P g g v  “ š ¡ ¦ ± · ¿ å î õ ú    4 9 A M _ _ v } … • § ­ Å Ë ß ä ô *=EYw�’�µÑãéô %..@DPgƒ•›¦²ÂÒäêêïññöö �1ŒÄãÆÚÆÚâÚîÚòÚöÚıÚÛÛÛ$Û)Û+Û7Û>ÛFÛLÛRÛVÛVÛeÛlÛtÛzÛ€Û‚Û‚Û�Û28 W/W/e/k/w/‚/“/�/¤/ª/3@t€–é–é¤é¯é¶éÕéâéâéåéçéíé4ÌS>>dw~…Œ’”›¢¥¥··ÉÔèğù "2GLe}��†�™­µ¾ÆËÒäô  $<@@T\emrx��³¸Ñéí    ' I T Z r Š � š ® ¿ Ç É Ï á ñ 
ö 
 # 1 : : A P g g v  “ š ¡ ¦ ± · ¿ å î õ ú    4 9 A M _ _ v } … • § ­   Å Ë ß è ø   " 2 E M a  – š ¦ ½ Ù ë ñ ü (-66HLXo‹�£®ºÊÚìòò÷ùùşş –0ŒÄãnÙnيٖٚÙ�Ù¥Ù¬Ù»ÙÆÙÌÙÑÙÓÙßÙæÙîÙôÙúÙşÙşÙ ÚÚÚ"Ú(Ú*Ú*Ú6Ú18 —.—.¥.«.·.Â.Ó.İ.ä.ê.2@x„êêê ê&êEêRêRêUêWê]ê3ÌS¦¦Ìßæíôúü !
    1<PXaintŠš¯´Íåééî÷&.3:L\qsŒ¤¨¨¼ÄÍÕÚàö 9QUhhhm�±¼ÂÚò÷'/17IYnp‰¡¥¥¹ÁÊÒתô7OSfffk�¯ºÀØğğğü )9Pg~••¨ÃÃÃäô    " < J Q d f … ” � ¬ ¼ Ö Ö ï 4D{ˆÆÚãéûûÿ 9
5\Obˆˆ(ˆ7ˆ@ˆIˆMˆQˆ]ˆbˆgˆgˆxˆ|ˆ„ˆœˆŸˆ«ˆ60üöâöâÿâã ãããã7lØffˆ�–¡··Éââíñü)8O`tx}’ª¯·»æÀì b<q�š ´ÌÑåíöş =
,BD]uyy�¦«³·ß¹åùı     %/6Idd€���²ÀÎãöû)"AQXi‹€µãããî,1<BMo‰v˜¯ÀÛïóø +`Mo�˜�²ÊÏãëôü*@B[sww™²ÆÊÙÙÙìòü111M]kk�›¹ÌÑğÿø'8VVxx¢¢¢Â8Dmz^^n‚‹‘££§ª²9l{’ÆyÆyÜyëyğyzòyzzz$z9z&zHzNzgz€z™z²zËzÕz:<‰”/8>BM;”)şìşìí =
íí'í)í9íDíVíaílí{íŒí“í¬í°íÁíÁíËíÒíåíîíüíî,î1îNî<d(=8‡8‡D‡X‡[‡o‡w‡{‡…‡�‡—‡š‡ ‡=$uº0E0ETEWE[EhEqE|EŒE”E�EÆEÆEÖEÛEÛEëEğEğEFFFFFF*F/F/F?FDFDFTFYFYFiFnFnFnFqFqFŠF˜F¯FÂFÂFÄFÄFÓFÙFŞFŞFäFôFôFÿFGG4G<GBGBGVGVG_GbG H>Ğ q†¨†¨£¨«¨®¨¼¨ʨߨ訩©.©9©J©N©`©c©n©w©ƒ©–©Ç©¼©¢©שªª=ªRªvªŠªŒª­ª“ªȪ˪ЪÓªÓªÚªñªøª« Q
««&«9«9«M«Q«~«~«–«›«›«««³«Ä«Ϋß«é«ü«¬ ¬ ¬¬%¬6¬@¬Q¬[¬n¬z¬¬¬¬¡¬²¬¼¬Á¬άã¬ã¬è¬ò¬­­ ­­­­ ­/­4­:­?­?­E­K­P­P­X­k­w­„­�­Ÿ­§­­­¶­Í­á­ò­ÿ­®®/®F®S®[®j®r®x®�®Š®Š®�®�®�®�®�®›®›®›®³®É®Ñ®ì®ı® Y
¯ ¯¯¯¯¯)¯7¯<¯<¯C¯Q¯V¯n¯z¯�¯›¯¡¯©¯¯¯¸¯ޯê¯ğ¯ö¯° °°B°S°`°b°p°p°u°u°|°а�°¢°®°º°À°ưϰÔ°Ô°Ô°Ô°Ô°ì°ñ°ñ°ñ°ñ°ñ°±±±±±±±±±±±0±8±S±d±q±s±€±Œ±‘±‘±‘±š±´±À±űç±ó±ó±ø±ø±ø±ø±ø±ø±ø±ø± ²²²²#².²3²3²>²P²h²}²�²¿²ʲÛ²à²à²à²é² ³³%³+³C³S³[³c³n³˜³¡³§³¿³ϳϳϳϳϳñ³*´3´9´?´D´M´V´[´[´[´[´j´~´œ´¬´²´·´·´Ê´Ş´µµµµ"µ"µ1µEµcµsµyµ~µ~µ‘µ¥µ˵޵äµäµéµéµéµ:¶K¶X¶Z¶i¶k¶k¶k¶k¶k¶��¨¶ª¶ª¶³¶µ¶µ¶ɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶ˶˶â¶ê¶ö¶ö¶ú¶ÿ¶·+·C·R·^·t·�·‘·›·§·Í·í· ¸1¸3¸F¸t¸L¸�¸�¸’¸¢¸ª¸ŸÖ¸Ù¸ó¸¹ ¹%¹%¹P¹S¹b¹v¹—¹«¹ǹ³¹ã¹ø¹ºKºIº>º3º$ºYºYºYº\ºaºdº~ºŒºººܺܺ» b
»»-»N»b»~»j»š»š»¸»í»ë»à»Õ»Æ»û»û»û»ş»¼¼
¼¼;¼G¼ ¿?”£Ä¶Ä¶ÄÌÄĞÄÛÄâÄíÄÅÅ ÅÅ$Å1Å=ÅJÅRÅcÅcÅlÅqÅyʼnŗŦűÅÄÅÄÅ×Å×ÅíÅÆÆ-Æ/Æ/Æ9ÆAÆAÆKÆSÆSÆSÆdÆdÆdÆjÆrÆxÆ}Æ}ƃƋÆ�ƕƚƚưÆÀÆÊÆÙÆŞÆæÆæÆëÆëÆòÆÇÇ"Ç*Ç0Ç?ÇDÇLÇRÇRÇ^ÇiÇ�ǬǶǾÇÄÇÙÇßÇäÇäÇäÇäÇäÇäÇäÇäÇäÇïÇıÇ ÈÈÈ*È/È<ÈDÈIÈIÈIÈQÈZÈcÈpÈxÈ„È�ÈÃÈËÈÚÈäÈşÈÉ É ÉÉ#É+É@ÉHÉPÉeÉgÉrÉzÉ�É�ɗɨɰɷɽÉÃÉÇÉĞÉÕÉùÉÊ Ê"Ê.Ê3Ê?ÊJÊOÊOÊOÊeʂʇÊ�ʠʨʰÊÅÊÊÊÕÊİÊòÊ÷Ê÷ÊË'Ë/ËDËPËUËaËlËqËqËqËqËqËqË|Ë|Ë|Ë|Ë|Ë|Ë|Ë|Ë|Ë|Ë|Ë|ˇ˖ˤ˴˺ËÂËÑËÖËŞËæËèËğËÿËÌ ÌÌÌ4Ì<ÌEÌMÌUÌZÌ_ÌqÌ¥Ì­Ì¼ÌÆÌàÌèÌíÌíÌíÌöÌÿÌÍ ÍÍ,Í.Í@ÍRÍRÍRÍ]ÍbÍ̈́̈́Í�Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í�Í©ÍÁÍÔÍÜÍëÍğÍøÍÿÍ ÎÎÎ&Î-Î2Î2Î:ÎBÎ`ÎhÎkÎmÎ}···ΉÎ�ίβενÎÂÎÂÎËÎĞÎØÎßÎìÎÏÏÏ%ÏBÏ[ÏpυόόϑϑϑϑϑϑϑϙϤϰϿÏÄÏÄÏÌÏÔÏáÏæÏæÏæÏêÏïÏïÏÿÏĞĞĞĞĞĞ'Ğ,ĞCĞRĞZĞkĞsЖМУХЫвввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввддĞÏĞÙĞçĞçĞìĞ÷ĞşĞÑ'Ñ'Ñ'Ñ+Ñ6ÑTÑbÑZÓ@ôz^Ó^ÓtÓӆӑӜӳӾÓÅÓÕÓèÓòÓòÓÔ(Ô/Ô8Ô?ÔBÔNÔWÔ^ÔaÔfÔqÔ{Ô�Ô“Ô©Ô°Ô¸ÔÎÔÕÔÕÔÕÔÚÔßÔéÔìÔñÔûÔşÔÕÕ Õ0Õ3Õ8ÕHÕKÕOÕXÕ`ÕrÕzÕzÕzÕ…Õ�Õ¡Õ§Õ½ÕÄÕÌÕÓÕèÕùÕùÕÖÖÖÖ
ÖÖÖÖ&Ö)ÖAÖFÖKÖ[Ö^ÖcÖsÖvÖzÖƒÖ‹Ö�Ö¥Ö¥Ö¥Ö³Ö»Ö»Ö¾ÖÉÖçÖõÖ>×Ax`ºNÚNÚfÚvÚ}Ú„Ú�Ú¢Ú¥Ú­Ú´Ú·ÚÇÚÕÚàÚëÚîÚùÚÛÛ%Û0Û;ÛFÛ]ÛiÛ†Û�Û—ÛŸÛ¿ÛÂÛÈÛÍÛÜÛâÛêÛùÛÿÛÜÜÜ!Ü0Ü8ÜGÜOÜrÜxÜ~܀܆܌܌܌ܱܶÜÓÜÖÜÖÜİÜêÜîÜùÜİ İ/İBİ^İsİ{݅ݤݸݸİ,ŞB Î.Î.Ø.à.å.CÉÆ&W&WCWNWaWNW{W‰W‰W™W¢W©W­W¶W¶W¾WÂWâWğWüWX X1X1XDXOXUX\XaXaXtXXŠX‘X›X¨X¨XºX¿X¿XÏXÔXÔXÔXçXìXÿXYY#Y7Y7Y<Y<YLYQYQYVY]YeYlYnYvY}Y}YŒY’YŸY¦Y©YÍYÍYÕYäYïYöYøY ZZ Z%Z%Z%Z8Z=ZLZSZ\ZqZ…Z…ZŠZŠZ’Z¨Z­ZÁZÈZÍZÍZÙZèZúZ [[ [/[=[K[Z[y[„[‰[˜[¬[³[º[Í[Ï[İ[ğ[ò[\\\%\<\C\O\`\w\y\…\�\’\’\�\±\¾\Æ\È\Ü\î\õ\]]6]=]I]g]g]g]o]z]~]†]Š]’]™]©]´]Ò]×]à]ë]ô]ü]^^^^+^6^A^O^U^[^a^j^p^^Œ^”^ ^®^Å^Ç^Ğ^Û^İ^é^_ ___"_3_Z_b_l_z_’_™_¥_´_É_É_Ö_Û_í_ó_ó_ó_ó_µ`DDUb6x6xJxWxmxYx|x~x–x®x¶xEœfÉvNvN˜N¢NÊNÙNäNıNOOOO&O-O6O;OPOaO€OˆOŠO©O±OÀOÇOÓOØOßOçOíOïOPPPP*P0P0P8PAPPPoPvPxP—P�P�P�PµP¾PÊPÎPÜPòPçP
QQ Q%Q;Q'QJQPQWQ_QeQgQxQ}Q“QQ¢Q¨Q¨Q°Q¹Q¹QÃQÃQÛQ RR R$R2RHR=R`R`RrRFôE~ÖßÖßõßàà7àUàdà‚à–à®àµàÛàùàá%á6áMáQáQáUáZá_áiálává{á”á—á—á—áœá¢á¾áÌáØáááõáıáâ"â-â9âBâVâVâeâjâjâxâGP‡—F<F<g<T<‰<v<˜<§<¯<º<¼<Ç<Ò<Ò<ô<ú<HP…•VõVõjõoõ~õ~õ…õ²õÈõ´õåõ×õıõöIŒe„ÎóÎóô-ô-ô@ôDôfôzôôô†ô�ô–ô«ô·ôÈôÍôŞôòô÷ôùôùôùôõ3õ3õPõJP�­Ş:Ş:; ;;;8;G;V;e;s;~;�;‘;Kè7V)V)�)„)‡)�)’)©)À)×)û)**9*S*e*r*ˆ*›* *«*³*³*½*½*È*Í*â*è*+&+(+=+C+b+�+‰+”+”+�+�+°+î+,,L$!.V.VYVBVcVkVMLx‡fÊfÊxÊ�Ê�ʯʶʾÊÎÊÙÊêÊğÊ"ËNTHYccccc&c4c9cBcEcJcXcbcecocO¨!GXaXahaqa„a‘a�a©aµaÁaØaØaçaòaûab b"b9b>bPb_bkb}b}b†b©b©b«b¾bÀbÚbæbébcPhî„ğmğm nn$nmntnˆn�n—nŸn¨n°n¸nºnÂnÊnÑnØn÷noooMowo€o¢o¼oÙopp1p3p:pApApdp€p§pÃpêpq-qIqpqŒq³qÏqöqöqrrrr&r3r8r8r?rJr\rtrŒr¤r¦r¦r¦r­r­rºr¿r¿r¿rĞrŞrñrsBsIsIsIsQsns|sšs£s¬s¹sÇsásısısıstt:tXtXtXtctft•t—t®t´tÅtÎtĞtİtßtìtîtûtût u!u(u9uBuDuRuTubudururu’u’u’u’u²uæu vvv v$v2v@vBvJvNvRvZvhvvvvv�v›v±vÅvåvşv www3w?wFw_w_wqwvwxw~w�w w¯w¶wÇwĞwÒwàwâwğwòwxxx$x$xCxJxQxTx`xcxqxuxƒx‡x•x™x™x²x¹x¾xÌxßxæxy!y4yCyEyTyVyeyoyoy}y†yœy£yÈyÍyöy&z+z9z;zIzRzlznzpzwzˆz‘z“z¡z£z±z³zÁzÁzázázázázáz{{{ {'{L{e{j{j{j{Œ{‘{‘{‘{±{¶{¶{¶{Õ{Ú{Ú{á{ã{ã{ë{í{í{ô{ô{÷{ü{|1|V|r|†|‹|‹|¦|³|µ|Ä|Í|ç|é|é|î|é|}}}}}T}T}T}s}s}s}”}™}™}™}»}À}À}À}à}å}å}å}~ ~ ~$~2~4~C~L~f~h~h~m~h~�~�~�~˜~“~Ó~Ó~Ó~Ş~Ş~2Jbmƒ—°Èàş€€.€E€L€D„Q| (ŞåŞåüå
æ æ:æRæ]æyæyæyæ†æ¡æ£æ£æ£æ°æËæÍæÍæÛæèæççç%çRæd6Ú6ÚPÚYÚyÚyÚÚ‡Ú�Ú—Ú¥Ú«Ú¸Ú¸ÚÒÚ×Ú×ÚİÚâÚâÚèÚíÚíÚóÚøÚøÚÛ#Û)Û.Û.Û7ÛWÛWÛWÛ^Û`Û`ÛgÛiÛiÛoÛoÛvÛxÛxÛ~Û~Û…Û‡Û‡Û�Û�۔۔ۜۢۨ۰۰۰۰ۼÛÄÛÌÛÔÛÜÛêÛøÛşÛÜ%Ü/Ü2Ü2Ü<ÜEÜKÜKÜOÜWÜaÜeÜsÜ{Ü�܉ܓܡܩܭܾܳÜÄÜÕÜáÜçÜïÜóÜıÜ İİİİ%İ/İ=İEİIİOİZİ_İxİ’İ—İšİ@ŞSL”£……1…3…:…P…`…f…~…–…™…«…ó…TÔ*[NîNîbîwî†îŠî˜î¡î°î°î¿îÊîÕîàîçî÷îï%ï+ï0ï4ïGïGï]ï_ïiï�ï˜ïšï³ï·ïÅïÊïÊïÑïàïèïûïeğU$îUîUVV#V+VVPÍİn?n?�?|?±?�?À?Ï?×?â?ä?ï?ú?ú?@"@W,ÎÔÎÔ×ÔİÔåÔîÔ÷ÔüÔX …ÆŠÆŠçŠüŠ‹‹2‹<‹K‹e‹r‹r‹|‹|‹ƒ‹–‹”‹¤‹¤‹¯‹¹‹¿‹Å‹È‹Ö‹İ‹õ‹ü‹ÿ‹ŒŒ!Œ,ŒFŒ`ŒtŒzŒ€Œ‡Œ¥Œ�Œ®Œ´ŒºŒÂŒâŒÊŒëŒñŒ÷ŒÿŒÿŒ�$� �-�3�9�A�a�I�j�p�v�~�~�”�”�”�”�Ÿ�©�²�Ò�Ş�ì�ñ�ÿ����#�+�3�<�H�\�i�x�‡�¡�¦�¦�±�¹�Æ�Ñ�Ş�ê���(�3�8�8�C�Y�n�z�ˆ���›�¯�¯�º�¯�Ò�×�×�æ�ë�ë�ú�ÿ�ÿ����&�+�+�>�M�R�R�e�t�y�‡�y�›� �®� �Â�Ç�Õ�Ç�é�î�ü�î�‘‘‘2‘7‘Y‘^‘l‘^‘€‘…‘…‘¢‘§‘É‘ΑÜ‘Αğ‘õ‘õ‘’’9’>’L’>’`’e’e’‚’‡’©’®’¼’®’Ğ’Õ’Õ’ğ’õ’õ’“““0“5“5“P“U“U“p“u“u“�“•“•“°“µ“µ“ГՓՓæ“ë“ë“ü“”” ””-”2”2”>”W”\”‚”‰”“”˜”©”³”ȔӔؔé”ô”ü”••• •••$•$•7•<•<•<•@•V•_•_•…•ЕЕ’•¦•¯•ɕ֕á•ì•÷• –––#–#–#–4–Q–\–f–q–v–�–‰–�–�–™–¡–ª–µ–Å–İ–õ– ————,—6—A—b—n—|—�—�—“—˜—˜—¨—³—»—À—Ë—Ø—ä—ş—˜"˜-˜2˜=˜E˜J˜U˜b˜n˜ˆ˜š˜¬˜¬˜¬˜¬˜±˜¶˜¶˜˜Ó˜Ó˜ø˜ú˜™™!™5™?™A™M™U™r™ƒ™�™˜™»™Ì™İ™î™ù™š!š&š&š1š6š6š>šIšNšNšVšašfšfšnš�šxšvš§š¬š¬š´šÕš¾š¼šíšòš›òš›#›#›0›5›5›=›B›B›T›f›k›k››k›—›œ›œ›¤›©›©›¼›Á›Á›Ô›Ù›Ù›ó›œœœ"œ2œ7œ7œQœaœfœfœ€œ�œ•œ¬œ•œÄœÉœÉœÔœÙœ��ñœÙœ-�2�n�\�J�2�†�‹�‹�š�ª�¯�¯�¾�Î�Ó�Ó�â�ğ�õ�� �õ�5�:�b�P�:�z��§�•��¿�Ä�Ä�á�Ë� ŸŸ Ÿ Ÿ;Ÿ'ŸeŸuŸzŸzŸ†Ÿ‹Ÿ‹Ÿ—ŸœŸœŸ¯Ÿ¿ŸÄŸÄŸןçŸìŸìŸÿŸ   ' 7 < < D I I Q V V ^ c c k p p ƒ ˆ ˆ ›   î Ü Ê ¸   û ¡N¡<¡*¡¡¡[¡`¡`¡o¡Š¡�¡�¡ ¡»¡À¡À¡Ñ¡ß¡ä¡ä¡ì¡ñ¡ñ¡ù¡ş¡ş¡¢ ¢ ¢C¢1¢ ¢¢b¢}¢‚¢‚¢º¢¨¢–¢‰¢Ù¢ô¢ù¢.£££ù¢F£K£€£n£c£K£˜£�£·£¡£�£Ï£Ô£ñ£Û£Ô£ ¤¤¤¤3¤C¤T¤T¤y¤{¤‘¤—¤—¤´¤Á¤ò¤#¥¥F¥N¥N¥N¥Z¥_¥_¥r¥}¥‡¥Œ¥—¥¡¥¦¥¦¥À¥Å¥Å¥Í¥Ò¥æ¥Ò¥õ¥¦¦¦¦(¦3¦8¦8¦C¦T¦Y¦Y¦d¦o¦t¦t¦…¦ЦЦ›¦ ¦ ¦º¦ŦʦÕ¦ʦä¦é¦ı¦é¦ §§§§+§0§D§0§S§X§X§l§X§{§{§{§€§Œ§€§Ÿ§¤§¤§°§¤§çȧȧÔ§ȧç§ì§ì§ø§ì§ ¨¨$¨¨3¨?¨J¨U¨Z¨n¨Z¨}¨‰¨”¨Ÿ¨¤¨¸¨¤¨ϨǨبݨݨå¨ê¨ê¨ó¨ø¨ø¨©©©©©© ©$©$©/©4©4©?©D©D©O©T©T©_©d©d©o©t©t©©„©˜©„©§©²©½©È©Í©Í©שܩܩæ©ë©ë©õ©ú©ú©ª ª ªªªª#ª(ª(ª5ª:ª:ª:ª:ª:ªBªGªGªOªTªTª\ªaªaªiªnªnªvª{ª�ª{ª�ª¯ª´ª´ª»ªƪæªëª« «%««4«?«J«O«O«V«a«�«†«œ«§«À«¬«Ï«Ú«å«ê«ê«ñ«ü«¬!¬7¬BLine truncated
¾J¾JĞJæJKK&K9KDKYKFKhKpK{K‘K‡K©K¯K_øAö5ö5666%6,6062696@6D6H6[6ƒ6�6‹6¶6»6ß6ß6ë6ó67<7A7n7v7{7„7�7˜7Ÿ7Á7Ç7é7ë7 88;8A8H8H8N8Q8U8f8‰8›8`$^Ş^ŞmވވŞ�Şa|\wşèşèéDéDécéséuéuéuéué|é„éŸé¸éºéºéºéÂéİéßéßéééééêb”"&3&3H3R3^3c3s3y3�3¢3²3À3Î3å3í3÷3444#4&4&4&4(474A4J4R4U4g4côÍŞ2Ş2333 3&3=3T3k3v3¬3Ì3Ñ3Ö3á3û3 4404F4]4b4t4y4|4œ4¼4Ä4Ì4Ñ4ñ455!5#5C5K5P5U5`5`5k5k5w5w5‰5É5â5â5ò5dd¤¹ĞŠĞŠàŠçŠóŠùŠ‹‹"‹.‹H‹U‹U‹X‹f‹v‹�‹”‹œ‹e ¸÷Ÿ*Ÿ*µ*º*Î*ı* +++*+*+;+B+S+Z+c+z+z+�+�+¦+¦+¼+¼+Ò+Ò+è+è+ş+ş+,,*,*,A,A,X,X,o,o,†,†,�,�,´,´,Ë,Ë,â,ê,õ,--"-%-'->-E-M.f¬÷ŞŞøş #55LSVXduux€–™§ª­´¸ÀÎàóöEg(ÉÏ}}-}}<}N}V}hCşNşN!O6O;OCOKOSO`OfOoOuOzO‚O�O¤O¦O¨OµOµOÂO·OÓOÙOÛOİOêOêOêOïOøOP PPPP#P+P8P>PIPPP`PkPzP›P¢P­P¶PÇPËPÓPÓPçP÷PÿPQhQi8-7�/�/£/§/¬/·/Â/Å/É/Ñ/jˆ[ùƃƃàƒûƒ„„„„4„9„D„b„L„q„„„–„Ÿ„§„±„Ï„á„ê„ò„ü„……&…8…B…J…b…L…‡…q…–…¨…²…º…º…Ã…Ë…á…ú… †† † †&†+†I†K†P†[†q†q†q†u†�†¢†¬†¶†¿†à†ê†ô†ö†ö†‡!‡/‡2‡K‡O‡j‡n‡�‡‘‡¬‡°‡°‡°‡¶‡ć·ç‡í‡ø‡ˆˆˆˆ-ˆ8ˆFˆPˆiˆlˆtˆ€ˆ‚ˆŠˆ�ˆ¦ˆ¨ˆ´ˆ¶ˆ¾ˆĈ݈õˆ‰‰‰0‰@‰Y‰j‰j‰u‰€‰˜‰¤‰¹‰¾‰Ó‰ã‰ü‰ Š ŠŠŠ&Š4Š;ŠMŠkeãFŞFŞ`ŞiމމŞ�ޗޟާ޵޻ŞÈŞÈŞÖŞÛŞÛŞáŞæŞæŞìŞñŞñŞ÷ŞüŞüŞß'ß-ß2ß2ß;ß[ß[ß[ßbßdßdßkßmßmßsßsßzß|ß|߂߂߉ߋߋߑߑߘߘߠߦ߬ߴߴߴߴßÀßÈßĞߨßàßîßüßàà)à3à6à6à@àIàOàOàSà[àeàsà{àà…à�à—à¥à­à±à·àÂàÈàÙàåàëàóà÷àáááá!á)á3áAáIáMáSá^ácá|á–á›á�áDâl`—!—! !§!»!Ï!Ô!ò!÷!""5"7"N"b"k"m"�"‘"Â"m�2Òè’è’ş’“ “1“B“S“f“n“|“𓥓«“¸“͓͓à“ñ“÷“ ”'”'”3”;”C”I”^”f”j”r”€”†”‹”‹” ”µ”¼”Ĕ̔Ҕõ”•••"•;•A•C•P•R•d•d•k•s•…•…•”•¢•µ•¹•ÕǕӕוã•ç•ó•÷•÷• – –&–*–4–8–G–K–Z–^–q–u–u–u–u–Œ–š–§–¯–Æ–Ö–ä–ï–——!—)—6—Q—a—q—v—v—v—v—ƒ—’—š— —µ—Ä—Ù—ê—ú—˜˜˜˜˜$˜*˜7˜R˜b˜n˜t˜�˜“˜¡˜Ã˜OšnÔ¼ílll#l.l9lOlalyl~l�l”l¡l¨l¶l½l¿lÂlÇlÉlÏlélmm1m6mEmLmYmpm�m•m—mšmŸmÂmàmìmo$hmG&G&U&i&p&Š&pxKe†M†M®MšM½MØMÄMçMìMóMûMN NN N(N3N>NTNINlNtNqFƒşpşpq!q9qQq[qfqfqkqvq‚q�q›q«q»qÂqÈqİqòqòqrrr+r:rGrXrirwr…rŒr’r§r¼r¼rĞrİrîrşrssss,s=sJsZs¼sr8«µ®N®N²N·N¼NÍNÛNäNéNîNğNs88B×/×/ë/ï/ô/ÿ/ 0 000t0†�öLöL M M,M2M5M=MuÜtNNp{†�Ÿ±·½ÃÙÈíúıLine truncated
3<<BKKjjwzƒŒ”Ÿ±·ÂÂÏÒÛäì÷ '*3<>`sˆ�™«±¹¹¹¹Ä= {”�¾¿2¿2Ó2×2à2ã2ì2õ2333373<3?3H3X3_3b3j3m3z3‚3Š3’3™3©3©3µ3|`2¶K¶KŞKÊKíKLşK!L&L-L5L<LGLOLZLpLeLˆL�L}À-ˆeˆe¦e¶eÀeÀeÊeÊeÔeæeóeöeøeffff0f0fTfafafqf~f~f¡f®f®fÃfåfúfg%g2g2gUg_g_g’gÅgËgËgËgİg~¸ºä ‹ ‹¸‹º‹Æ‹Ê‹×‹Ú‹ô‹ô‹ô‹ú‹ş‹ŒŒ%Œ1Œ3Œ3Œ<Œ>Œ>ŒGŒIŒIŒRŒTŒTŒ]Œ]ŒfŒlŒoŒyŒŠŒ�ŒœŒœŒ�œö##$#5#M#T#p#e#ˆ#¨#”#·#È#Í#î#Ú#$#$*$F$;$^$~$j$�$�$´$ $Ì$Ù$Ù$ñ$ñ$û$€œX{f1f1r1‚1�1·1ç1ø1 22"2)2=2D2R2j2y2†2‰2¢2¥2ª2Á2Ñ2á2å2ì2"3�x± ¸®¸®Î®Õ®Ü®û®
¯¯(¯7¯F¯P¯P¯U¯\¯o¯~¯ƒ¯�¯¸¯¸¯Î¯à¯ä¯ò¯ù¯ş¯ş¯°° °"°0°B°B°B°T°_°q°|°‰°�°�°£°³°¿°Ä°Ñ°Ö°æ°ë°û°ı° ±± ±!±2±;±;±=±M±T±d±d±±‘±£±µ±Å±Å±Å±È±Û±‚\åø��#�*�/�=�R�Y�c�q�t�v�€�’�’�™�Ï�ƒ0ÎÖ&&>~rHF’š„`0Ö€Ö€ì€ş€���7�;�A�W�t�v�v�§�•�v�Æ�Ğ�…L4CŞ/Ş/ì/ş/0 00$0-0?0E0H0„0†(–œ�2�2�2¬2°2³2¹2‡\DW†0†0”0¦0¬0´0Æ0Ì0Õ0ç0í0ö0111_1ˆ, ¦Ô¦Ô´Ô»ÔÃÔÈÔÎÔ‰„ ö ö 
&
-
4
C
H
j
j j
o o
‘ v
¦ Œ
“ œ
µ ±
Ä 
Æ Ï
è ç
è ë
è ş
÷ ş
  + 5 Š`>~e~e›e£eªeÏeİeßeíeúef f"f1f<f@fKfWfbfnf…fœf¯fÆfĞfŞfğfòfgggg,g2gBgBgZgZggg„g„g�g™g¦g²gÇgŞgígøg ş
hh-hEhfhfhohthththth„h�h•hšh¨h¶hÆhËhËhÙhÙhŞhŞhèhóhi ii'i2i<i@iIibieiui|iši£i£i²iÂiÒiÙißiëióişij jj"j/j:j@jPj`j`j�j«j·j¿jÊjÑjÜjìjüjüj kkkk&k8k>kLkYkfkpktk}k–k™k©k°kµkµkÉkÉkÎkÒkâkëkıklllll"l3l<lHlXlXlXl]lulul„l‡l›l¹lÄlílÿl  % G R X p ˆ ˆ ˆ ” š ¤ ¯ Á Ñ è ÿ  - - @ [ [ [ | Œ š š £ ­ º Ô â é ü ş  , % D T n n ‡ 5D{ˆ®®¾ÒÛáóó÷ú6\Ob0‰0‰P‰_‰h‰q‰u‰y‰…‰Š‰�‰�‰ ‰¤‰¬‰Ä‰Ç‰Ó‰70ü®ã®ã·ã¼ãÅãÌãÎãÓã8tÚşş '.9OOazz…‰”Á›Ğçø *BGOSeX„˜œœ¡²úÔ '28Ldi}…�–›¢´ÄÚÜõ &>CKO^Q}‘•¤¤¤¤·½ÇÎáüü(66JXf{�“²ÁºÙéğ'MO{{{†ÄÉÔÚå!0GXs‡‹�¡Ãøå%06Jbg{ƒŒ”™ ²ÂØÚó 1J^bqqq„Š”›®ÉÉÉåõ%>3Qdiˆ—�¯¿Ğîî:::Z9DmzVVfzƒ‰››Ÿ¢ª:lw�N}N}d}s}x}�}z}œ}Ÿ}Ÿ}¬}Á}®}Ğ}Ö}ï}~!~:~S~]~;<‰”'06:E<”)şíşíî
mm m%m,m>mNmimpmtmzm‚m�m§n‹8ëõn"n"ˆ"�"¦"Ç"´"ß"÷"÷"#Œ`j~è�è����"�,�7�?�N�X�[�€�‚�’�’� ��_VØVØxØØ†Ø‹Ø¢Ø´Ø¾ØÄØÖØÛØçØïØòØôØşØÙÙ ÙÙÙ$Ù.Ù7Ù?ÙBÙKÙfÙwÙ~Ù�نٕٛ٣٣٪٭ٲÙÁÙÇÙÏÙÏÙİÙàÙåÙôÙÿÙÚÚÚ&Ú-Ú4ÚKÚ�83=†Õ†Õ�Õ�Õ�Õ¡Õ¯Õ²Õ·Õ�8>H¾Õ¾ÕÇÕÇÕÕÕÙÕàÕãÕèÕ�D*æ.æ.///$/0/H/Q/U/g/m/Œ/‘Ä{¨ÎúÎúøúûúûû ûûûûû,û3ûIû\ûkûqûsûzû€ûŠûŠû�û û§û­û·û·û·ûÎûàûçûöûøûü!ü!ü3ü’0+3�/�/—/½/Î/Ô/Ô/Ü/“„\yfğfğxğ�ğ—ğ ğ¢ğ©ğ¹ğÄğÆğĞğĞğÙğêğíğíğñññ7ñ>ñBñQñdñ·ñ”  îî'î)î9îDîVîaîlî{îŒî“î¬î°îÁîÁîËîÒîåîîîüîï,ï1ïNï=d(=`ˆ`ˆlˆ€ˆƒˆ—ˆŸˆ£ˆ­ˆ·ˆ¿ˆÂˆÈˆ>$uºXFXF|FFƒF�F™F¤F´F¼FÆFîFîFşFGGGGG(G-G-G=GBGBGRGWGWGgGlGlG|G�G�G‘G–G–G–G™G™G²GÀG×GêGêGìGìGûGHHH HHH'H7HDH\HdHjHjH~H~H‡HŠHHI?È oş¨ş¨©#©&©4©B©W©`©{©”©¦©±©©Æ©Ø©Û©æ©ï©û©ª?ª4ªªOªfªzª†ª”ªµªʪ«%« «@«C«H«K«K«R«h«o«|«�«�«�«°«°«È«Ì«ù«ù«¬¬¬&¬*¬;¬E¬V¬`¬s¬x¬x¬ˆ¬Œ¬�¬§¬¸¬¬Õ¬á¬æ¬æ¬æ¬­­­+­@­@­E­O­^­c­i­n­n­s­}­Œ­‘­—­œ­œ­¢­¨­­­­­µ­È­Ô­á­í­ü­® ®®,®@®Q®^®c®{®�®¥®²®º®É®Ó®Ù®â®ë®ë®ğ®ğ®ğ®ğ®ğ®¯¯¯¯.¯6¯Q¯b¯o¯q¯~¯ƒ¯ƒ¯ƒ¯�¯œ¯¡¯¡¯¨¯¶¯»¯Ó¯߯ñ¯ı¯° °°°@°L°R°X°g°o°w°¤°µ°°İÒ°Ò°×°×°ްì°ñ°±±±"±(±1±6±6±6±6±6±N±S±S±S±S±S±d±d±d±d±d±d±d±d±d±d±|±’±š±µ±ƱÓ±Õ±â±ò±÷±÷±÷±²²&²+²M²Y²Y²^²^²^²^²^²^²^²^²s²x²x²x²‰²�²•²•² ²²²ʲß²³!³,³=³B³B³B³K³q³z³‹³‘³²³˳ӳ۳鳴´"´C´\´\´\´\´\´~´·´À´Æ´Ì´Ñ´Ú´ã´è´è´è´è´÷´ µ)µ9µ?µDµDµWµkµ‘µ¤µªµªµ¯µ¯µ¾µÒµğµ  2¶X¶k¶q¶q¶v¶v¶v¶�¤¶¬¶Ƕضå¶ç¶ö¶ø¶ø¶ø¶ø¶ø¶ · · · · · · · · · · · · · · · ··*·5·7·7·@·B·B·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·V·X·X·o·w·ƒ·ƒ·‡·Œ·œ·¸·Ğ·ß·ë·¸¸¸(¸4¸Z¸z¸š¸¾¸À¸Ó¸¹Ù¸¹¹ ¹/¹7¹R¹c¹f¹€¹�¹š¹²¹²¹ݹà¹ï¹º$º8ºTº@ºpº…º£ºغÖº˺Àº±ºæºæºæºéºîºñº »»G»i»i»”»—»¦»º»Û»ï» ¼÷»'¼'¼E¼z¼x¼m¼b¼S¼ˆ¼ˆ¼ˆ¼‹¼�¼�¼—¼§¼ȼÔ¼)À@Ä„±®Ä®ÄÄÄÈÄÓÄÚÄåÄùÄùÄÅÅÅ)Å5ÅBÅFÅWÅWÅ`ÅeÅmÅ}ŋŚťŸŸÅĞÅĞÅëÅÆÆ+Æ-Æ-Æ7Æ?Æ?ÆIÆQÆQÆQÆbÆbÆbÆhÆpÆvÆ{Æ{Æ�ƉÆ�ƓƘƘƮƾÆÈÆׯÜÆäÆäÆéÆéÆğÆÇÇ Ç(Ç.Ç=ÇBÇJÇPÇPÇUÇ\ÇgǛǪǴǼÇÂÇ×ÇİÇâÇâÇâÇâÇâÇâÇâÇâÇâÇíÇûÇ ÈÈÈ(È-È:ÈBÈGÈGÈGÈOÈXÈaÈnÈvÈ‚È�ÈÁÈÉÈØÈâÈüÈÉÉÉÉ!É)É>ÉFÉNÉcÉeÉpÉxÉ�É�ɕɦɮɵɻÉÁÉÅÉÎÉÓÉ÷ÉÊ Ê Ê,Ê1Ê=ÊHÊMÊMÊMÊcʀʅÊ�Ê�ʦʮÊÃÊÈÊÓÊÛÊğÊõÊõÊË%Ë-ËBËNËSË_ËjËoËoËoËoËoËoËzËzËzËzËzËzËzËzËzËzËzËz˅˔˗˥˵˻ËÃËÒË×ËßËçËéËñËÌÌÌÌÌ Ì=ÌFÌNÌVÌ]ÌqÌz̵̧̟̺̃̋̿̕ÌÑÌÍ ÍÍ&Í@ÍHÍMÍMÍMÍVÍ_ÍbÍlÍzÍŒÍ�͠ͲͲͲͽÍÂÍßÍäÍäÍíÍòÍòÍòÍòÍòÍòÍòÍòÍòÍòÍòÍòÍòÍòÍòÍòÍıÍ Î!Î4Î<ÎKÎPÎXÎ_ÎlÎuÎ~ΆÎ�ΒΒΚ΢ÎÀÎÈÎËÎÍÎİÎçÎçÎçÎéÎşÎÏÏÏÏ"Ï"Ï+Ï0Ï8Ï?ÏLÏaÏhÏyυϢϻÏĞÏåÏìÏìÏñÏñÏñÏñÏñÏñÏñÏùÏĞĞ Ğ$Ğ$Ğ,Ğ4ĞAĞFĞFĞFĞJĞOĞOĞ_ĞdĞdĞdĞpĞwĞ}ЇЌУвкĞËĞÓĞöĞüĞÑÑ ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑLine truncated
....7.T.Y.•hö ÖbÖbìb÷bccc$c5c>cOcUcacxcxcŠc›c¨c±cÂcÈcd–„a~^F^F�F”F�F©F±F¸F¼FÅFÅFÊFÑFéFGG<GDGFG^GvGšG¹GËG—lò æşæşşşÿÿÿ@ÿBÿdÿyÿfÿ›ÿˆÿªÿªÿ¼ÿÃÿåÿåÿíÿ˜ y}X‰X‰a‰m‰r‰™(A>æ>æ`æhænævæxæxæ‰æ‰æ‰æ‘æ™æ«æºæ«æÏæÑæÑæëæíæíæøæıæçççç1ç3ç@çBçOçQç^çfçnçuç„ç‘ç“ç¤ç±ç±ç±çºçÌçßçåçíçïçüçüçèèèè&è>èCèCèCèQèWè\èdèoè�èŒè‘è‘è˜èœèªè®è·è¾èÜèéèğèùèééééé"é-é;é;é[é[é[ébépéé’é¥é§é§é§éºéºéÁéÈéÍéÓéåéïé ê5ê;ê;êOêTêxêê‹ê©ê¼êÇêÎêÒêÒêÒêÒêİêçêõêë"ë?ëIëIëWëuë¥ë¸ëÉëàëóëøëøëøëì ìì(ì-ì-ì-ì?ìiìoìoìoìzì„ì�ì›ì�ì�ì�ì¢ì®ì®ìøìšH%ï.ï.ı.///(/0/0/H/R/X/^/›0 FJFJmJZJ|J˜J�J°J¸JœLÛê~!~!˜!Ÿ!¶!×!Ä!ï!ñ!"0""H"`"`"j"�ğ·ÎGÎGH HH H+HJHJHTHVHqHYH€H€H�H˜HŸH¿HÁHÛHâHâHşHşH%I*IIIbII‚IŠI‘I±I³IÍIÔIÔIğIğI J J4JFJ�TVg––¬¹¿ÅÖäò )Ÿ0 UUU U%U'U8U=USU?UbUhUhUpUyUyUƒUƒU›UËUÔUàUäUòUVıU V V2VG ;zFßFßeßnßq߃ߙߛߤߩßÊßèß÷ßà)àAàHànàŒà›à¸àÉàààäàäàèàíàòàüàÿà áá'á*á*á*á*á/á5áQá_ákátáˆá�á™áµáÀáÌáÕáéáéáøáıáıá âHP‡—@@'@@I@6@X@g@o@z@|@‡@’@’@´@º@IPÅÕŞøŞøòø÷øùù ù:ùPù<ùmù_ù…ù�ùJŒ¥ÄV÷V÷‰÷µ÷µ÷È÷Ì÷î÷øøøøøø3ø?øPøUøføzøø�ø�ø�ø�ø»ø»øØøKP�­Ö;Ö;ÿ;<<<0<?<N<]<k<v<y<‰<Lè7--A-D-G-M-R-i-€-—-»-×-Ú-ù-.%.2.H.[.`.k.s.s.}.}.ˆ.�.¢.¨.Ç.æ.è.ı./"/A/I/T/T/^/^/p/®/Æ/Ø/M$ ŞYŞY ZòYZZNLx‡¶Ë¶ËÈËİËîËÿËÌÌÌ)Ì:Ì@ÌrÌOTHY(d(d:d<dEdNd\dadjdmdrd€dŠd�d—dP¨!G€b€b�b™b¬b¹bÅbÑbİbébcccc#c*c3cJcacfcxc‡c“c¥c¥c®cÑcÑcÓcæcècddd(dQhî„oo1o<oLo•oœo°o·o¿oÇoĞoØoàoâoêoòoùop p7p@p@pupŸp¨pÊpäpq+q7qYq[qbqiqiqŒq¨qÏqëqr.rUrqr˜r´rÛr÷rss-s:s?s?sNs[s`s`sgsrs„sœs´sÌsÎsÎsÎsÕsÕsâsçsçsçsøstt.tjtqtqtqtyt–t¤tÂtËtÔtátït u%u%u%u7uEuauuuuŠu�u¼u¾uÕuÛuìuõu÷uvvvv"v"vFvHvOv`vivkvyv{v‰v‹v™v™v¹v¹v¹v¹vÙv w3w;w?wGwKwYwgwiwqwuwyw�w�w�w�w·wÂwØwìw x%x0x:xAxZxfxmx†x†x˜x�xŸx¥x¶xÇxÖxİxîx÷xùxy yyy'y'y'yKyKyjyqyxy{y‡yŠy˜yœyªy®y¼yÀyÀyÙyàyåyóyz z(zHz[zjzlz{z}zŒz–z–z¤z­zÃzÊzïzôz{M{R{`{b{p{y{“{•{—{�{¯{¸{º{È{Ê{Ø{Ú{è{è{|||||'|'|'|2|N|s|Œ|‘|‘|‘|³|¸|¸|¸|Ø|İ|İ|İ|ü|}}}
Rîÿîÿ>*aMp|���¤±¼ÈÓÛàìñ  +DMY^ry}}‚› ¹Îàåğøøøú(3=HJU]]mb…¥ àZ�pcpcŠc˜c�cªc¸cÁcÜcêcdd(dCdNd^d`dbdldxd|d‰d•d§d¯dÇdËdËdËdËdĞdîdeeeee&e/e…e¡d/ş$ş$%4%E%L%h%]%€% %Œ%¯%À%Ö%Â%î%û%û%&&&¢ü!\6 6 N ` k ˜ ~ r § È İ Ê  ø ì ! > > > P m m ¢ ¹ ­ ë ğ  ÷ +  : [ s ` � ‚ ¤ Å â â â ô 29[[c£(NãNã\ãã…ãŠãŠã�ã¤(!'.Õ.Õ7ÕEÕKÕMÕRÕ¥D]jl8l8†8�8–8¢8·8¿8Å8Ë8Í8Í8Ü8¦„¼ÙH¨H¨{¨‡¨‹¨“¨›¨Ÿ¨ª¨®¨²¨¶¨¾¨Ã¨Ç¨Ø¨é¨ë¨ï¨©© ©3©;©F©F©F©X©§€PšPšišpšwš~š„š”šŸš©š´šËšÎšĞšëšõšÿš››#›+›+›A›A›S›¨Ê }
vRvRœR¹RÁRÌRÜRåRéRSS3S9SASDSYS^SpS’S˜S S¥S«S®SÄSÍSÏSñSùSTT"TDTJTOTOTOT\TmTxT…T‘T¤T±T¾TÕTéTóTõT U U%U8U;UBUeUeUeUwU©°)    Ã Ğ Õ Ù â ñ ı ¡¡¡&¡.¡1¡=¡E¡_¡…¡¡•¡�¡Ó¡¿¡ã¡ã¡û¡¢"¢)¢M¢†¢†¢†¢†¢ç¢ª˜‹-��«¶²¶º¶Å¶Ü¶æ¶æ¶ı¶·"·8·F·J·j·~·’·™·�·¶·À·Ñ·Ş·Ş·å·ì·ñ·ö·û·¸ ¸#¸*¸:¸>¸>¸H¸^¸b¸b¸s¸†¸™¸™¸Ÿ¸ª¸±¸¹¸Ä¸Ë¸Ó¸Ş¸å¸å¸ğ¸¹¹*¹¹E¹E¹K¹R¹a¹k¹y¹€¹„¹†¹˜¹˜¹˜¹ª¹²¹Ø¹æ¹æ¹ê¹ÿ¹ºº"º7º<ºJºYºcºqº|º€º…º�º‘º º¢º±º³ºÂºÄºÓºÚºŞºòºüº }}}}}}}#}B}X}}}™}­}²}²}Í}Ú}Ü}ë}ô}~~~~~6~8~8~@~;~{~{~{~š~š~š~»~À~À~À~â~ç~ç~ç~   +00KY[js���”�µ··¿ºúúú€€/€/€Y€q€‰€”€ª€¾€×€ï€�%�'�8�U�l�s�k…R| $nånåŒåšå°åÊåâåíå æ æ ææ1æ3æ3æ3æ@æ[æ]æ]ækæxæ“æ“æ£æµæSæd�Û�Û¨Û±ÛÑÛÑÛ×ÛßÛçÛïÛ÷ÛıÛ
»»»%»0»5»S»]»k»r»v»€»�»•»™»£»·»¿»Ê»Î»Î»Î»Ù»ä»ô»¼¼¼)¼8¼@¼K¼P¼X¼c¼o¼s¼~¼ƒ¼—¼Ÿ¼ª¼ª¼ª¼ª¼Ç¼ä¼ğ¼ø¼½½6½:½i½^½O½y½y½ƒ½Š½™½¨½²½À½Ç½Ë½Í½Ü½æ½ô½û½ÿ½ÿ½¾¾¾%¾%¾%¾7¾I¾Q¾i¾•¾£¾§¾Å¾Ì¾Ó¾Ş¾ô¾ù¾¿¿¿+¿2¿6¿8¿K¿U¿c¿j¿n¿n¿n¿n¿|¿‡¿–¿ ¿®¿¹¿½¿½¿Â¿Ê¿Î¿İ¿ß¿î¿ğ¿ÿ¿ÀÀÀÀ/À9ÀGÀNÀRÀbÀmÀrÀ�ÀšÀ¨À¯À³À½ÀËÀÒÀÖÀàÀôÀüÀÁ Á Á ÁÁÁ+ÁEÁUÁ`ÁuÁzÁ…Á•Á¡Á·Á¿ÁÊÁÙÁáÁìÁñÁùÁ Â$Â8Â@ÂKÂKÂKÂKÂ_Âo„‘•©ºÂÏÂÜÂàÂîÂÃÃ*ÃCÃ\Ã^ÃiÃqÃqÃzÃ—Ã¨Ã¿ÃØÃæÃñÃıÃÄÄÄÄÄÄ7ÄEÄSÄjÄ�Ä�Ä�ĽÄÄÄÄÄÔÄèÄÅÅÅÅ+ÅFÅQÅhÅpÅpŕŕŨÅÃÅÌÅãÅıÅ ÆÆ9ÆGÆ]ÆyƉơơƹƹÆÅÆàÆøÆÇÇÇ ÇÇ6Ç?Ç?ÇFÇOÇUÇaÇÀÇ«0ùAĞ�Ğ�õ�� ���&�,�6�D�N�`�j�p�z�€�Š�‘���£�¬�×�æ�é�ë�õ���#�-�B�B�E�O�d�i�y�„�‰���°�º�Ï�İ�æ�î�ü� ��.�;�;�H�H�P�^�¥�¬l£:DD7DOD_DD‘D©DÄDÄDîDöDúDıDEEEEE E'E-E1E6E@EQEXE_EaEeEnExE{E†E’E•E¦E±E·E¾EÇEàEñEúEF FF!F-F>FOF[FiFkFrFyF~F‚F�F–F¹FÇFÑFÛFäFıFGG G(G1G7G;G@GDGQGXGfGpG…G�G˜G±GÂGËGÔGÜGåGëGïGôGúGHH-H;HAHFHNHVH^HkHsH’H…H§H°HËHßHòHùHI III$I-IFI6IVIZI´I­  P†P†^†€†††®¸�·¯'¯'¸'Ù'¿'((7(b(b(r(w(w(‹(�(�(¬(±(±(Ñ(Ö(Ö(ê(ï(ï( ) ))>)d)„)–)¨)º)Ê)Ê)Ê)Ê)Ê)Ÿ*¯$bgÿ%ÿ%&&-&G&°”¢¦¿¦¿À¿Ï¿Ï¿Ò¿Û¿ç¿ç¿ı¿À%À,À0À@À`ÀrÀxÀ‡À�À”ÀšÀ£À¹À½ÀÚÀøÀ Ü
ÁÁ Á1Á=Á?ÁKÁSÁWÁ]ÁfÁfÁfÁxÁƒÁ‰ÁŸÁ¦Á®ÁÄÁËÁËÁËÁĞÁÕÁßÁâÁçÁñÁôÁ ÂÂÂ&Â)Â.Â>ÂAÂEÂNÂVÂhÂpÂy„Š §¯¶ÂËÂÜÂÜÂãÂãÂãÂèÂíÂ÷ÂúÂÿ à Ã$Ã)Ã.Ã>ÃAÃFÃVÃYÃ]ÃfÃnÀÈÑÑÜãñõÃÁÃÙÃáÃçÃöÃÿÃÄ ÄÄÄ"Ä*Ä0ÄMÄVÄ^ÄdÄjÄjÄjÄqÄxćÄ�ĕěěÄ�įıx>×>×L×a×h×s׉׳×Ï×Ö×î×ôר ØØØØ$Ø*Ø9ØAØGØIØOز¤ÕzÎ^Î^ñ^ù^ __5_L_P_X_`_f_o_{_ƒ_ƒ_‹_»_ú_Õ_`"`*`:`<`j`p`y`€`ˆ`�`œ`¤`¬`¿`Ç`Ì`Ö`ö`ı`ÿ` aa8a?aAaaahahahaqaxa‘a—aŸaŸa¤a¨a´a½aÆaÒaõab1b4bPb]bqb‹b�b®b¼bÈböbübşb,c/c/cKcXclc†c�c’c�c¥cµc·cåcècğcdd0d6d6d@d@dKd|d„d„d„d„d�d™d¯dÈdÛdâdîdõdõde e e eee+e2e>eEeEe_eaefeye€eŒe“e“e eªeªe¯eÒeÒeäe³à˜Ìş<ş<=1==f=L=@=u=„=Œ=—=™=¤=¯=¯=´=é=î=#>;>(>]>J>q>l>�>œ>¤>¯>±>¼>Ç>Ç>Ì>í>ï>????>?@?b?b?b?j?´\âõæaæaüabb b-b9bPbPbbbhbsbƒb�bœb©bÕbµÙÚÆÆä÷ş  $$,EOOcn|�‘–ª®·»ÀÆããñ &7;;;@KU\osxŒ”�¡£ª¼Ìãåş)-6:?Ebbp‡Œ¥ºÌÌÌÑà&17M^cn‚†�“•›´´ÂÙÛô  #'9>RZcgls‰™°µÎáå÷÷÷÷ü-Q\bx‰‰‰�£¼¼¼ËËŞõ    & ( 4 4 ; F [ ] h } ‰ ‹ – ¢ ² ¹ À Ê Ò Ö Ú Ü á é í ÿ        * @ ` z ˆ ” › › ® ² ² ² ¹ ¾ Ø æ ò ù ù !!!4!B!N!U!U!b!l!l!~!˜ »� H H=HLHLHLHiHiHxHxH~H€H€H†HˆHˆH�H�H�H—H›H H H H H H H¨HÀHÀHÕHàHêH÷HII0I2IQIVIuIzI€I€I™IœIÃIĞIèIJJJJ4J"J:JIJNJUJ^JqJyJ�J†J†J†J�J¨J®J®JÇJÕJòJ K KKK#K(K(K.K.K7KHKJK_KaKiKoKwK|K|K|K|KŠK¡K£K·K·K¿KÅKÍKÒKÛKãKìKòKøKúKúKúKLLL'L+L-L9L;LVL\LdLiLrL}L€L†LŒL•L˜L˜L¦L·L¹LßLüLM Ü$Ü)Ü)Ü/Ü4Ü4Ü:Ü?Ü?ÜEÜJÜJÜbÜuÜ{܀܀܉ܩܩܩܹܻܻܰܲܲÜÁÜÁÜÈÜÊÜÊÜĞÜĞÜ×ÜÙÜÙÜßÜßܿܿÜîÜôÜúÜİİİİİİİ&İ.İ6İ>İDİ\İkİuİxİx݂݈İ�İ�ݒݚݡݥݭݵݻİÃİÊİÒİÚİŞİäİïİõİŞŞŞŞ Ş'Ş/Ş7Ş;ŞAŞIŞPŞXŞ`ŞdŞjŞuŞzŞ�ޡަީŞOßTL”£@†@†Y†[†b†x†ˆ†�†¦†¾†Á†Ó†‡UÔ*[NïNïbïwï†ïŠï˜ï¡ï°ï°ï¿ïÊïÕïàïçï÷ïğ%ğ+ğ0ğ4ğGğGğ]ğ_ğiğ�ğ˜ğšğ³ğ·ğÅğÊğÊğÑğàğèğûğeñV$�Y�YÉY²YÓYÛYWPÍİ.C.COC<CqC^C€C�C—C¢C¤C¯CºCºCÜCâCX,ÖÖ'Ö-Ö5Ö>ÖGÖLÖY …N�N�o�„�’�Ÿ�Ò�ß�ñ��!�!�.�.�5�H�F�V�V�a�k�q�w�z�ˆ���§�®�±�Æ�Ë�Ö�á�û��&�,�2�9�W�?�`�f�l�t�”�|���£�©�±�±�¸�Ö�¾�ß�å�ë�ó�‘û�‘"‘(‘0‘0‘0‘F‘F‘F‘F‘Q‘[‘d‘„‘�‘¡‘¦‘·‘ˑББۑã‘î‘÷‘’’'’<’Q’n’s’s’~’†’“’�’®’½’Ú’ï’““““ “5“J“V“g“l“}“‘“‘“œ“‘“´“¹“¹“ȓ͓͓ܓá“á“ò“÷“÷“” ” ” ”/”4”4”G”V”[”i”[”}”‚”�”‚”¤”©”·”©”˔ДޔДò”÷”÷”••;•@•N•@•b•g•g•„•‰•«•°•¾•°•Ò•ווô•ù•– –.– –B–G–G–d–i–‹–�–�–�–²–·–·–Ò–×–×–ò–÷–÷–———2—7—7—R—W—W—r—w—w—’—————²—·—·—È—Í—Í—Ş—ã—ã—ï—ú—˜˜˜ ˜9˜>˜d˜k˜u˜z˜‹˜•˜ª˜µ˜º˜˘Ö˜ޘã˜ã˜ç˜ë˜ò˜ü˜™™™™™™"™;™D™D™j™o™o™w™‹™”™®™»™Æ™Ñ™Ü™î™ú™ššššš6šAšKšVš[šfšnšsšsš~š†š�šššªššÚšîšóšóšşš››&›G›S›d›i›z›~›ƒ›ƒ›“›�›¦›«›¶›Æ›Õ›ò›œœ'œ,œ7œ?œDœOœ_œnœ‹œ œµœµœµœµœºœ¿œ¿œËœÜœÜœ�� � �*�>�H�J�V�^�{�Œ�–�¡�Ä�Õ�æ�÷���*�/�/�:�?�?�G�R�W�W�_�j�o�o�w�˜����°�µ�µ�½�Ş�Ç�Å�ö�û�Ÿû�'Ÿ,Ÿ,Ÿ9Ÿ>Ÿ>ŸFŸKŸKŸ]ŸoŸtŸtŸˆŸtŸ Ÿ¥Ÿ¥Ÿ­Ÿ²Ÿ²ŸÅŸÊŸÊŸİŸâŸâŸüŸ    + ; @ @ Z j o o ‰ ™ � µ � Í Ò Ò İ â ¡ ¡ú â 6¡;¡w¡e¡S¡;¡�¡”¡”¡£¡³¡¸¡¸¡Ç¡סܡܡë¡ù¡ş¡&¢¢ş¡>¢C¢k¢Y¢C¢ƒ¢ˆ¢°¢�¢ˆ¢È¢Í¢Í¢ê¢Ô¢£$£)£)£D£0£n£~£ƒ£ƒ£�£”£”£ £¥£¥£¸£È£Í£Í£à£ğ£õ£õ£¤¤¤¤0¤@¤E¤E¤M¤R¤R¤Z¤_¤_¤g¤l¤l¤t¤y¤y¤Œ¤‘¤‘¤¤¤©¤÷¤å¤Ó¤Á¤©¤¥ ¥W¥E¥3¥!¥ ¥d¥i¥i¥x¥“¥˜¥˜¥©¥Ä¥É¥É¥Ú¥è¥í¥í¥õ¥ú¥ú¥¦¦¦¦¦¦L¦:¦(¦¦k¦†¦‹¦‹¦æ±¦Ÿ¦’¦â¦ı¦§7§%§§§O§T§‰§w§l§T§¡§¦§À§ª§¦§اݧú§ä§ݧ¨¨¨#¨<¨L¨]¨]¨‚¨„¨š¨ ¨ ¨½¨ʨû¨,©©O©W©W©W©c©h©h©{©†©�©•© ©ª©¯©¯©É©ΩΩÖ©Û©ï©Û©ş© ªª"ªª1ª<ªAªAªLª]ªbªbªmªxª}ª}ª�ª“ª“ª¤ª©ª©ªêΪÓªުÓªíªòª«òª««%««4«9«M«9«\«a«a«u«a«„«„«„«‰«•«‰«¨«­«­«¹«­«Ì«Ñ«Ñ«İ«Ñ«ğ«õ«õ«¬õ«¬¬-¬¬<¬H¬S¬^¬c¬w¬c¬†¬’¬�¬¨¬­¬Á¬­¬جЬá¬æ¬æ¬î¬ó¬ó¬ü¬­­
MMMMM"M$M,M,MGMYM^MjMpMsMŠMŒM�MŸM£MªM³MÂMĞMÖMŞMãMëMğMğMøMNN"N,NTN_NjNuN€N‹N–N¡N¬N¬N¬N´N´NÍNÛNøNOOOOO"O$O$O*O0O0O8OAOGOSOSOZO]O|O‡O�O—OœOœO£O§O¬O¾OÃOÍO×O×OäO P PP"P3P?PFPTPcPyPP„P„P‰PŸP«P³PÃPÍPÖPäPëPíPöPöPQQQ1QGQ^QdQfQ}Q‚Q‚Q¢Q¢Q´QºQÃQÉQÒQàQåQåQüQRRR!R7R7RKR[RmRrR~R„R‡R�R R£R³R½RÀRÀRÏRæRøRıR SSS)S+S.S>SBSJSXS]SbSbShSpSuSuS{S{S‰S�S•SŸS©S·SÌSÏSÑSÛSÛSİSåSêSïSôSôSúSTTT TTT!T,T1TWTYT^TcThTmTrTwT|T|T�T†T¢T¬TÀTÔTÚTâTâTğTöTüTUUU3U6U8UBUQUVUVUVU^UcUlUlUqUqUwUU„U„U‰U”U™U�U£U²U²UÃUÉUÉU×UİUãUíU÷UVVV V)V8V=V=V=VEVJVSVXVXV^VfVkVkVpV{V€V…VŠV™V™VªV°V°V¾VÄVÊVÔVŞVìVWWWW W$W$W$W,W1W:W?W?WEWMWRWRW_WeWeWsWyWW‰W“W¡W¶W¹W»WÅWÔWÙWÙWÙWáWæWïWôWôWúWXXXXXX(X.X4X>XHXVXkXnXpXzX‰X�X�X�X–X›X¤X©X©X³X»XÀXÀXÀXÆXĞXÖXêXïXïXõXÿXY ­­­­­­(­-­-­8­=­=­H­M­M­X­]­]­h­m­m­x­}­}­ˆ­�­¡­�­°­»­Æ­Ñ­Ö­Ö­à­å­å­ï­ô­ô­ş­®® ®®®® ® ®,®1®1®>®C®C®C®C®C®K®P®P®X®]®]®e®j®j®r®w®w®®„®˜®„®§®¸®½®½®Ä®Ï®ï®ô®
Y ¯¯.¯¯=¯H¯S¯X¯X¯_¯j¯Н�¯¥¯°¯ɯµ¯دã¯î¯ó¯ó¯ú¯°%°*°@°K°d°P°s°~°‰°�°�°©°•°¸°ذݰó°ş°±±:±&±I±T±Y±Y±t±`±ƒ±£±¨±¾±ɱâ±α²ñ±² ²$²$²?²+²N²n²s²‰²”²­²™²в¼²ß²ê²ï²ï²ş²³³³³³³³"³"³"³,³.³.³8³?³b³d³d³n³n³n³n³n³p³p³‡³�³™³™³¤³ª³±³¼³dzÒ³̳í³
YY!Y*Y8Y=Y=YFYTY`YqY~Y…Y�Y—Y¥Y¥YªYªYµYµYµY¹Y¾Y¾YÄYÈYÍYÕYÛYİYæYõYıYZZZZZ'Z2Z7Z=ZEZJZJZJZJZJZJZJZJZJZJZcZiZrZxZ€Z…ZŠZ“Z�Z§Z¯Z´Z´Z´ZºZÂZÇZÇZËZĞZĞZÙZçZóZ[[[[#[#[)[2[F[F[O[Q[W[`[t[t[}[}[}[‚[‡[‡[�[”[”[±[¿[Ë[Ô[Ú[ä[ì[ñ[ñ[ñ[\\\&\0\0\8\8\@\B\B\[\e\n\p\p\p\v\z\|\|\|\|\�\‡\�\‘\ ´ÿ³"´"´0´*´V´K´n´n´n´w´~´‘´–´¤´·´·´Ö´á´ø´µµµ9µIµ^µpµ€µ€µ¥µ¬µ»µ͵͵ѵÖµݵíµ  '¶.¶3¶3¶7¶B¶N¶\¶‰¶’¶£¶±¶ä¶ğ¶õ¶ ·#·/·@·E·V·u·£·Ì·Ï·ß·á·á·å·¸¸¸¸#¸T¸w¸w¸w¸z¸£ºZ, NÖNÖ\ÖbÖfÖoÖxÖ~Ö[`BV^†^†t†‚†‰†�†œ†µ†¹†¿†Õ†ò†ô†ô†%‡‡ô†D‡N‡\8
`·Ì{ªæeæeff)fEfRfif|f‡f�f‰f¬f´f´fÃfÃfËf×fífggg/g5g5g5g:g?gNgYgsgugzg‰g”g¡g«g«g¹g¸”*Kè¢è¢££££££ £$£)£K£8£[£c£k£n£p£€£‰£’£˜£›£¬£Ã£Ô£ß£¤¹à.¢.@.@L@W@h@k@o@x@@�@œ@²@Ã@Ô@æ@ø@AA'A6A6ADAHALAQAUAbAiAwA‹A”AšA¨AÁAÃAÇAÑAÑAÖAÖAÖAÛAÛAêAóAûABBBBB.B:BEBJBJBMBRBRBqB}BŠBŒBŒB�B’B’B±B½BÉBËBËBÎBĞBĞBİBßBßBâBâBëBñBöBCCCCCCCCCCCCC%C7CFCUCUCYCYCaCzC~CƒCDº,~Ô~ԌԓԛԠԦԻl3J–L–L¬LÆL²LÕLúLæL MMMMMM"M*MBMMMcMXM{M…M¼PQa%%%%3%:%J%[%`%}%ƒ%Š%‘%Ÿ%«%½%ù%½D$–ã–ãªã¸ã¾ãáãçãíãäää$ä$ä,ä¾ô#œn4n4v4…4‰4–4£4·4Æ4ã4ğ45$5D5R5n5€5˜5¯5º5Û5ù56#6.6I6b6b6}6¦6À6Û6í6ü6 7 77)7:7M7]7j7v7…7¢7¢7ª7ª7ª7»7È7Ï7î7÷78 88 878O8X8h8p8u8™8©8¹8Ä8Ø8İ8å8 9 99K9e9e9}9Œ9”9£9¬9´9Æ9è9ğ9ø9:::-:E:]:u:‡:�:§:°:Â:Ğ:Ô:Ø:¿ ˆ†ˆ†‘†°†µ†À\ˆ[&Ë&Ë@ËGËTË_ËdËjË|˂˚ˠ˾ËÔËßËåËÌÌÌ,Ì.Ì1Ì=ÌEÌMÌUÌcÌiÌrÌ~Ì~̘̀̒Ì�Ì�Ì´Ì´ÌÒÌÒÌåÌòÌ÷Ì÷ÌÍÍ&Í<ÍGÍUÍ`ÍpÍ}Í�͕ͫ͟͸ͺͺÍÂÍÇÍÇÍÏÍÔÍÔÍÜÍáÍáÍéÍîÍîÍôÍùÍùÍÎÎÎ ÎÎÎÎ!Î!Î,Î1Î1Î<ÎAÎAÎLÎLÎgÎnÎtÎw΂΅ΙΦεμοÎÑÎÓÎÙÎíÎúÎ Ï Ï Ï ÏÏ-ÏBÏTÏeÏnÏυϊϕϧϸÏÇÏÍÏŞÏéÏóÏĞĞĞ#Ğ)Ğ>ĞDĞUĞ`ĞfĞvĞvІЙХЭнĞÄĞÊĞÛĞæĞëĞÑÑ+Ñ;ÑGÑYÑdÑsÑuчÑ�єћџѭѷѽÑÇÑÍÑØÑŞÑàÑíÑúÑÒÒ+Ò+Ò1Ò8Ò|ÔÁD#°ˆªˆª§ªÉªÑªÑªßªòª «««4«4«4«<«>«>«F«H«H«P«R«R«Z«Z«c«i«n«n«w«†«Š«�«•«š«š«š«š«¢«««±«¶«¶«»«È«á«¬¬¬8¬8¬8¬@¬B¬B¬B¬J¬L¬L¬L¬T¬V¬V¬V¬^¬`¬`¬k¬k¬q¬v¬v¬v¬v¬}¬ˆ¬š¬¨¬¶¬À¬À¬À¬Ğ¬Ğ¬×¬Û¬á¬ù¬­­'­P­S­\­c­w­­ˆ­“­“­�­¤­©­©­©­°­¶­Ë­Ó­Ù­ä­û­®®$®)®)®0®;®;®@®R®X®X®X®X®´®Âd*BB6B@BCBCBMB`BbBoBqB|B�B˜B¨B­B³B»B¾BĞBÃLWf‡0‡0›0Ÿ0¤0¯0¯0¹0¿0¿0Ã0Ë0Ä\CV 0 0505090>0Q0T0Y0Y0c0i0i0w0y0ƒ0Å8(2VÕVÕ_Õ_ÕmÕqÕxÕ{Õ€ÕÆ¨Z€ÆXÆXŞXæXñXYøX6YšY€YuY[YDY YµY¥YÕYÚY÷YüYZşY Z&Z&Z-ZWZ‚ZeZ™Z·Z·Z·ZÃZÇlD[>'>'X'�'c'�'°'Ì'Â'ä'ü'é' ($(D(V(o(o(v(˜(˜(¢(È4�—¾ê¾êÒê×êİêáêåêë ëÉxĞêV}V}�}n}�}š}¡}·}¼}Á}Å}Ç}Í}Ó}é}Ö}ø}~~+~N~D~]~i~Ê4;D–ߖߟ߫ßÊßÏßÑßÑßÖßË”"X©X©f©x©|©„©Œ©—©¢©ª©µ©À©Å©Û©â©é©ô©ÿ©ª ªªª%ª0ª;ªDªLªLªPª‡ªÌ€Úö�4�4­4±4µ4½4Ë4Î4Ñ4ç4í4ï455 555%5:5K5R5Y5Y5f5{5ÍŞ`&@&@V@a@†@h@ @Ö@Û@Û@Ş@è@AAAA;A\AnA{A–AªA¯AÉAÓAÕAÚAñAB*B7BRBrBhBŒB’B’B›B»BÇBÊBÌBçBÑBöBöBCCC CKCACeCeCjCmCƒC�C¤CÈCÒCØCèCDÿC D!D3DGD[DQDpDvD…D­DœD¼D¾DĞDÚDîDøDEE"E$ELine truncated .Y.YOY<Y^YiYtYYŠY–YœY]\’ğŸğŸşŸ     ) 4 6 L L ^ j s v ¥ ^øª¤^ë^ëƒëˆë•ëÁëÁëÌëÙë÷ëÿë,ì1ìZìzì–ìœì ìÃìéìîìí4íZíqíwí{í”íœí¡í²íºíÙíßíãíüíî#î(î9îAî`îeîmîsîwî{î�î•îšî¸î½îÊîÏîÏîÜîôîïï0ï0ïGïLïLïcïeïeïyï{ï{ï’ï”ï”ï«ï­ï­ïÄïÄïÙïŞïŞïíïíï&ğ?ğ?ğRğWğWğWğWğ†ğ�ğºğºğºğÇğŞğàğàğàğíğññññ*ñ*ñAñCñ^ñzñzñzñ~ñ€ñ€ñ€ñ…ñ‡ñ‡ñŒñŒñ–ñ›ñ›ñ·ñ·ñ·ñ¿ñÄñÄñÄñÌñÑñÑñÙñÙñÛñòò'òGòGòGòGòGòaòdòyò€ò‚ò‹ò�ò ò¬ò¬ò´òÆòÆòÒòåòüòó.ó@ó\ó|ó�ó±óÏóôóô&ôLôeôtôŠô¦ô«ô«ôßôäôäô÷ô÷ôõõõõ.õLõqõ„õ£õÉõêõùõ'ö9öCöeögögögösösösö‘öÁöÃöÃöÒöÒö×ö×ö×ö×ö×öîöóö÷U÷_\
èèèèèèèè0è0è0è0èGèIèIèIèIèdèoè¤èĞĞën~n~„~�~•~•~¡~¦~«~¶~»~»~»~ğ~İ~ÿ~&&?XqŠ��¨ÁÚóøø€*€C€\€^€^€w€�€©€€€€Ô€Ñ0…�^ê^êlêrêvê•ê¶ê¶ê¼êÒ<:Eo7o7x7ƒ7‘7�7©7²7»7Ä7Ê7Ï7ÓluŒß&ß&í&÷&ş&''''('2'@']'_'o'o't'v'}'¯'ÔØŸÑoo*oToIo5otoo“o†oÅoÊoöoöoûopp#p:pWp°p˜p„p¶pÁpípòpúpq!qFq;q'qYqrq^q•q�q¬q³qßqßqßqßqçqÕL\k¦(¦(Ä(Ö(İ(ÿ(ÿ()).)$)F)P)ÖÈg•Ï0Ï0ó0÷0181D1K1V1d1q1z1z11‰1¡1¬1¼1È1Ï1Ú1ë1í1ş12222 ~N~N�N¦NÂNÏNæNùNOOO(O0O;OQOGOiOoO`øA¶9¶9Ô9×9Ş9å9ì9ğ9ò9ù9::::C:^:K:v:{:Ÿ:Ÿ:«:³:Â:ü:;.;6;;;D;P;X;_;�;‡;©;«;Í;Ù;û;<<<<<<&<I<[<a$ŞŞŞ8Ş8Ş>Şb|Xs�è�è¨èÔèÔèóèééééé éé/éHéJéJéJéRéméoéoéyéyé‘éc”"4484B4N4S4c4i4~4’4¢4°4¾4Õ4İ4ç4ö4ş4 555555'515:5B5E5W5dôÍ�6�6Ç6Ô6×6à6æ6ı67+767l7Œ7‘7–7¡7»7Í7Ú7ğ788"84898<8\8|8„8Œ8‘8±8Ñ8Ù8á8ã89 999 9 9+9+97979I9‰9¢9¢9²9ed¤¹ø‹ø‹ŒŒŒ!Œ)Œ7ŒJŒVŒpŒ}Œ}Œ€Œ�Œ�Œ¸Œ¼ŒÄŒf(¸şŸ*Ÿ*µ*º*Î*ı* ++$+0+7+G+e+�+ +®+®+µ+Å+Ñ+á+ê+,,,,-,-,C,C,Y,Y,o,o,…,…,›,›,±,±,È,È,ß,ß,ö,ö, - -$-$-;-;-R-R-i-q-|-�-˜-©-¬-®-Å-Ì-/g¬÷ŞŞøş #55LSVXduux€–™§ª­´¸ÀÎàóöE h(ÅË�€�€µ€¢€Ä€Ö€Ş€iCŞOŞOPPP#P+P3P@PFPOPUPZPbP~P„P†PˆP•P•P¢P—P³P¹P»P½PÊPÊPÊPÏPØPàPéPñPóPûPQ QQQ)Q0Q@QKQZQ{Q‚Q�Q–Q§Q«Q³Q³QÇQ×QßQâQHRj8-7O0O0c0g0l0w0‚0…0‰0‘0kˆWõN‡N‡h‡ƒ‡‰‡�‡�‡—‡¼‡Á‡̇ê‡Ô‡ù‡ ˆˆ'ˆ/ˆ9ˆWˆiˆrˆzˆ„ˆŸˆ‰ˆ®ˆÀˆʈÒˆêˆÔˆ‰ùˆ‰0‰:‰B‰B‰K‰S‰i‰‚‰”‰£‰§‰§‰®‰³‰щÓ‰؉ã‰ù‰ù‰ù‰ı‰ Š*Š4Š>ŠGŠhŠrŠ|Š~Š~Š›Š©Š·ŠºŠÓŠ׊òŠöŠ‹‹4‹8‹8‹8‹>‹L‹V‹o‹u‹€‹Œ‹�‹–‹œ‹µ‹À‹΋Ø‹ñ‹ô‹ü‹Œ
2 ŒŒŒ.Œ0Œ<Œ>ŒFŒLŒeŒ}Œ‰Œ�Œ£Œ¸ŒÈŒáŒòŒòŒıŒ� �,�A�F�[�k�„�•�•�›�¦�®�¼�Ã�Õ�leãVßVßpßyߙߙߟߧ߯߷߿ßÅßÒßÒßàßåßåßëßğßğßößûßûßàààà1à7à<à<àEàeàeàeàlànànàuàwàwà}à}à„à†à†àŒàŒà“à•à•à›à›à¢à¢àªà°à¶à¾à¾à¾à¾àÊàÒàÚàâàêàòàúàáá'á1á4á4á>áDáJáJáNáVá]áeámáqáwáá†á�á–ášá á«á±á¾áÊáĞáØáÜáãáëáóá÷áıáâ âââ â&â1â6âLâ]âbâeâ ãm`�!�!˜!Ÿ!³!Ç!Ì!ê!ï! ""-"/"F"Z"c"e"y"‰"º"n�2Ò””&”7”H”Y”j”{”�”–”¤””͔Ӕà”õ”õ”•• •4•O•O•[•c•k•q•†•�•’•𕍕®•³•³•ȕݕä•ì•ô•ú•–0–<–@–J–c–i–k–x–z–Œ–Œ–“–›–­–­–Ş–ì–ÿ–— ———!—-—1—=—A—A—W—j—p—t—~—‚—‘—•—¤—¨—»—¿—¿—¿—¿—Ö—ä—ñ—ù—˜ ˜.˜9˜O˜\˜k˜s˜€˜›˜«˜»˜À˜À˜À˜À˜Í˜Ü˜ä˜ê˜ÿ˜™#™4™D™J™J™J™\™b™n™t™�™œ™¬™¸™¾™Ë™İ™ë™ š™›oÔ¼í(m(m:mKmVmamzmŒm¤m©m¸m¿mÌmÓmámèmêmímòmômúmn.nDn\nanpnwn„n›n¹nÀnÂnÅnÊnín oop$hm?&?&M&a&h&‚&qxKeFQFQnQZQ}Q˜Q„Q§Q¬Q³Q»QÂQÍQØQàQèQóQşQR R,R4RrFƒöqöqrr1rIrSr^r^rcrnrzr…r“r£r³rºrÀrÕrêrêrşrss#s2s?sPsasos}s„sŠsŸs´s´sÈsÕsæsösÿsttt$t5tBtRt´ts8§±�O�O’O—OœO­O»OÄOÉOÎOĞOt88B—0—0«0¯0´0¿0É0Ì0Ğ0Ø0u0‚ŠŞMŞMôMNNNN%NvÜtFFhs~‡—©¯µ»ÑÀåòõı=PTZqw‡�™§¬ºÓáêúü/=Ic‚‰“¢¨®´ºĞñ(3BP_l|Š¡­²ÀÜî $*ALY``n}�œ®®Ùäw`-A^…^…t…†…�…‘… …¿…Ã…É…ß…ü…ş…ş…/††ş…N†X†xD‡Ôââ â(â3â9â?âCâGâsâsâzâ}â‚â”â˜â¿âÃâÈâÈâÏâÒâ×âãâôâøâ ãã ã!ã3ã7ãSãWã\ã\ãpãsã�ã‹ã’ã¸ãÃãÇãÌãää&ä*ä;äFäJäLäWä[ä[äoäsäuäuä€ä„ä˜äœäœäœä äÂäyˆÕóÆäÆäÚäğäğäğäòäòäùäûäûäåååååå å'å)å)å6å=å?å?åWå\å\ålåz°0X�Z�Z¦Z®Z¹Z[[øZŞZÇZ#[5[%[U[U[l[`[�[£[¯[Ä[±[Ó[Ù[à[\ó[ç[\\9\9\@\j\j\j\v\{ÄL¹îúîú ûû"ûHûHûJûWûbûhûyûˆû—û¤û¤ûªû¯û´ûÊûİûèûìûşû üüüü5üCüCüCüNüiüTüqü„ü†ü¢ü�üªü¸ü¸üºüÖüÖüİüãüìüóüöüı,ı ı4ı:ıCıCıCıVı[ı[ıcıcınıƒıŒıŒıŒıŒı¨ı¿ıÅıÊıÊıßıåıêıêıöış3ş8ş=ş=şIşfşuş„şŒş‘ş—şœşœş£şªşÍşêşìş ÿÿÿ$ÿ$ÿ1ÿ:ÿ:ÿXÿnÿyÿ~ÿ‹ÿ–ÿŸÿ§ÿ·ÿÎÿÎÿŞÿŞÿğÿöÿ ((*166CNT]]p}�š¨±àéôù05<IPbw~„��–°·¼ÊÚèèîõşş#&&7?GSpw„†�¡°°°ÚÚÚççü&1?JY``yŒ��²´Â××İææóù  &8?JOW^inƒ…Ÿ´´´½ÃÔâôôú
2222$2,24282B2�2× ø…ø…††#†Ø`FZÏ7Ï7ß7æ7è7í7ü7888%8%818:8=8K8U8X8`8Ù<úNŠNŠWŠbŠmŠxŠƒŠ�ЫжЯŠÚ  1dd.d@dFdRd]dkdwd�d™d©d»dÁdÇdÍdàdædïdõde ee e.e;exeÛ, ^.^.l.}.–.ª.­.³.Ü4¸†¸†Æ†Ğ†Ù†à†ç†ñ†ñ†÷†İÄMz–ø–øÂøÅøÊø×øÜøîøğøôøøøûøù'ùMùVùaùhù�ù§ù¬ùÅùëùğù÷ùú6ú8úQúwúwúwú�ú©ú¸úÊúބ¾s¾sÜsßsåsùstt t%t*t*t7t@tFtVtdtft…t™t t¬t¼t¼tÊtİtètìtıtıtıtuuuu0u6u;uOuUu]uouuuwu†u“u™uŸu¤uªu°u·uÃuÊuÌuÑuÙuÛuàuìuîuóuûuıuv 3<<BKKjjwzƒŒ”Ÿ±·ÂÂÏÒÛäì÷ '*3<>`sˆ�™«±¹¹¹¹Ä=
v vvvv v(v(v(v8v8v8vOvUv[vfvkvsvŒv’v�v¡v§v²vËvÖvávçvôvùvşvşvww#wDwOwZwfw`wowxw}w‚w—w�w§w³w¹wÅwÉwÎwÓwŞwéwôwöwüw xxx,x7xBxBxHxUxWx\xex~x‰x”xšx§x§x«x°x°xÁxÃxÃxÖxØxØxëxíxíxyyyyyy)y)y/y4y4yKy_yTylyty{y�y‰yœy§y�y·y·y¹yÑyÔyÖyåy÷yzz*zDzIz]zmz€z…z…z�z¢z´z¿zÇzÏzÓzázçzìzìzòz{{{{!{'{,{,{,{2{A{T{a{e{j{j{n{s{s{x{ƒ{�{©{¿{Ë{Ë{Ñ{Ş{à{í{ù{|||(|4|4|4|4|8|=|N|`|k|s|{|}|�|”|¢|±|·|Ä|Ä|Û|ë|ë|ÿ| } }}"}9}9}?}L}N}`}`}k}k}k}k}k}çß „È^S^S|SŠS�S¢SÀSÆSËSÑSßSæSõSúSTTT6TATTT[TuT’T�T¹TÑTíTöTU UU#U(U8UFUfUkUsUŒU�U®U´U¿UÈUÎUVşUïU$V_VIV:VoVrV’V&Wà<+6ÔBÔBõBûBCC/C7CMCYCá„ |FFhsz‚……•  £ª±·½ÃÊĞááãìøş# ' * : B G G N W h n w ‚ “ “ œ ¡ « ² ¹ Á Ç É × î ñ        2 ; L m ~ – � § ¯ ¿ Æ Ò â í í í !!%!(!ã!â„9O6O6k6z6�6›6Á6×6è6ñ6ÿ67*7*7<7R7Z7]7i7ãX{Í&&Q[ny‹™Ÿ°·¿Õİğ !1AJPU\bhny„‡�¨°Êßìï÷û '/F_cls…�”˜¡£µÌÚàäæóóóõ $ä  |”�¾33“3—3 3£3¬3µ3Ç3Ç3ó3÷3ü3ÿ344 4"4*4-4:4B4J4R4Y4i4i4u4}`2vOvO�OŠO­OÒO¾OáOæOíOõOüOPPP0P%PHPPP~À-°f°fÎfŞfèfèfòfòfüfggg g)g6g6gDgXgXg|g‰g‰g™g¦g¦gÉgÖgÖgëg h"hDhMhZhZh}h‡h‡hºhíhóhóhóhi¸ºäȌȌàŒâŒîŒòŒÿŒ����"�&�.�9�M�Y�[�[�d�f�f�o�q�q�z�|�|�…�…���”�—�¡�²�¸�Ä�Ä�,�€œøÆ&Æ&ä&õ& ''0'%'H'h'T'w'ˆ'�'®'š'Æ'ã'ê'(û'(>(*(M(^(t(`(Œ(™(™(±(±(»(�œX{V2V2b2r2}2§2×2è2ù2 333-343B3Z3i3v3y3’3•3š3±3Á3Ñ3Õ3Ü34‚x± °°°%°,°K°Z°i°x°‡°–° ° °¥°¬°¿°Î°Ó°î°±±±0±4±B±I±N±N±U±g±p±r±€±’±’±’±¤±¯±Á±Ì±Ù±Ş±î±ó±²²²!²&²6²;²K²M²]²_²o²q²‚²‹²‹²�²�²¤²´²´²Ï²á²ó²³³³³³+³ƒ\åø0�0�K�R�W�e�z���‹�™�œ���¨�º�º�Á�÷�„0ÎÖ&&>~rHF’š…`,^„^„t„†„�„—„¦„¿„ÄɄ߄ü„ş„ş„/……ş„N…X…†L4CÎ0Î0Ü0î0ô0ü0111/15181t1‡(–œO3O3]3l3p3s3y3ˆ\DWv1v1„1–1œ1¤1¶1¼1Å1×1İ1æ1ø1ş12O2‰, öÕöÕÖ ÖÖÖÖŠ„ � � ¬ ¾ Å Ì Û à )>+M\^€€€�«¡ÃÍ‹`>~f~f›f£fªfÏfİfßfífúfg g"g1g<g@gKgWg^gjg�g˜g«gÂgÌgÚgìgîgüghhh(h.h>h>hVhVh{h{h€h€h‰h•h¢h®hÃhÚhéhôhii)iAibibikipipipipi€i‰i‘i–i¤i²iÂiÇiÇiÕiÕiÚiÚiäiïijjj#j.j8j<jEj^jajqjxj–jŸjŸj®j¾jÎjÕjÛjçjïjújkkkk+k6k<kLk\k\k‰k§k³k»kÆkÍkØkèkøkøkl l ll"l4l:lHlUlblllplyl’l•l¥l¬l±l±lÅlÅlÊlÎlŞlçlùlÿlmmmmm/m8mDmTmTmTmYmqmqm€mƒm—mµmÀmémûmnnn!n(n:nJnenlnpnvn~n‰n˜oŒ8í÷&&&&@&U&k&Œ&y&¤&¼&¼&Æ&�`j~8Ÿ8ŸXŸ_ŸgŸrŸ|Ÿ‡Ÿ�Ÿ�Ÿ¨Ÿ«ŸĞŸÒŸâŸâŸğŸ�_ØØ8Ø?ØFØKØbØtØ~؄ؖ؛ادزشؾØÈØÈØÌØÔØÜØäØîØ÷ØÿØÙ Ù&Ù7Ù>ÙAÙFÙUÙ[ÙcÙcÙjÙmÙrÙ�Ù‡Ù�Ù�Ù�٠٥ٴٿÙÇÙÇÙÒÙæÙíÙôÙ Ú�83=ÖÖÖÖßÖßÖíÖñÖÿÖ××�8>H××××%×)×0×3×8בD*Ö/Ö/ğ/0 00 080A0E0W0]0|0’Ä{¨VşVş€şƒşŠş�ş•ş—şœş¢ş¢ş´ş»şÑşäşóşùşûşÿÿÿÿ&ÿ(ÿ/ÿ5ÿ?ÿ?ÿ?ÿVÿhÿoÿ~ÿ€ÿ–ÿ©ÿ©ÿ»ÿ“0+3~0~0‡0­0¾0Ä0Ä0Ì0”„\yfñfñxñ�ñ—ñ ñ¢ñ©ñ¹ñÄñÆñĞñĞñÙñêñíñíñòòò7ò>òBòQòdò·ò• 
(†(†1†E†J†å¤£Èn{n{Š{�{¢{§{­{°{´{´{×{Ü{ |õ{|1||@|V|B|e|m|r|x|{||�|š|†|©|©|©|Ä|ó|ÿ|æ˜Íï /*>9HWWffuu„„““¢±ÀÀÏŞíXçxÇá¶`¶`Ô`æ`ì`ø`aa!a'a2aBaNaWa]acana|a‰a•a£a²a²aâaèd˜­ëëë%ë%ë?ëFëRëRëiëië€ë€ë—ë—ë®ë®ëÅëÇëÇëËëéÌÂñ6ı6ıXı_ıjı€ı€ı’ı�ı±ıµıºı¾ıÀıÆıØıäıùıûış#ş'ş'ş'ş:şOşOş[şaşkşvş„ş‹şšşœşµşÏşÏşáşêP7G\C\CrC~C†CŠC›C©C¯C»CÃCÎCÔC×CáCë ®-–;–;°;»;¿;È;Ï;Ö;ì;ı;< <2<A<P<a<p<p<w<{<„<‘<˜<¡<¨<¬<Ì<Ì<Ì<Ì<Ì<Ø<Ü<ß<ç<õ<ı< //'/D/I/–hö ÖcÖcìc÷cddd$d5d>dOdUdadxdxdŠd›d¨d±dÂdÈde—„a~JJNJTJ]JiJqJxJ|J…J…JŠJ‘J©JÓJØJüJKKK6KZKyK‹K˜lò ~~–¨¯ØÚüş3 BBT[}}…™ y}€Š€Š‰Š•ŠšŠš(A>ç>ç`çhçnçvçxçxç‰ç‰ç‰ç‘ç™ç«çºç«çÏçÑçÑçëçíçíçøçıçèèèè1è3è@èBèOèQè^èfènèuè„è‘è“è¤è±è±è±èºèÌèßèåèíèïèüèüèéééé&é>éCéCéCéQéWé\édéoé�éŒé‘é‘é˜éœéªé®é·é¾éÜéééğéùéêêêêê"ê-ê;ê;ê[ê[ê[êbêpêê’ê¥ê§ê§ê§êºêºêÁêÈêÍêÓêåêïê ë5ë;ë;ëOëTëxëë‹ë©ë¼ëÇëÎëÒëÒëÒëÒëİëçëõëì"ì?ìIìIìWìuì¥ì¸ìÉìàìóìøìøìøìí íí(í-í-í-í?íiíoíoíoízí„í�í›í�í�í�í¢í®í®íøí›H%¯/¯/½/Ä/Ï/Ü/ç/ï/ï/0000œ0 NN-NN<NXNNNpNxN�Lİì%%0%E%[%|%i%”%™%Ä%å%Ò%ı%&& &�ğ·�K�KÃKÌKØKàKëK
===+=6=;=;=H=N=]=t=v=�=�=�= =¦=¢=º=Ñ=Ó=á=ã=î=ô=ô=ü=ü=>>+>+>+>0>0>H>V>a>f>f>i>n>n>�>›>¨>ª>ª>®>°>°>Ï>İ>é>ë>ë>î>ğ>ğ>ı>ÿ>ÿ>????? ???!?A?N?\?c?+@ì(rx(‰(‰6‰=‰M‰P‰V‰í(nt�&�&˜&¢&³&¾&¾&Ü&îTzK¾ñ¾ñÜñâñåñîñøñò ò)ò/ò2ò6ò8òPò`òmòsòwò}òò‚ò†ò†ò©ò­ò³ò³òºòÜòñòóóó$ó/ó9ó=ó@óGóMóQóWóhónósóxó…ó‡ó™ó›ó¢ó¯ó±óÃóÃóÃóÃóÃóçóòóşóôô*ô6ôSôwô‘ô–ô­ô²ôÀô×ôÜôâôóôõõõ+õCõJõVõnõzõzõzõ€õƒõ†õŸõ¥õ¹õ¿õÄõÏõÏõÔõáõîõîõôõöö ö"ö%ö,ö5ö<ö<öAöNö[ö[öaöoö†öŒö�ö’ö™ö™öªö±ö¾öËöËöÒöÜöãöéöğöûö÷÷)÷.÷5÷=÷D÷T÷X÷a÷y÷~÷…÷§÷²÷¸÷À÷Ù÷í÷í÷øø"ø0ø7ø>ø`øsø—ø™ø£øÅøÅøÅøŞøêøûøùùíùïÀ�­ÆZÆZŞZâZçZöZ[ [.[[=[B[B[g[˜[{[n[»[À[é[î[ú[\ü[*\/\H\O\r\ˆ\ˆ\®\®\º\ğ ş-ş- .&.,.ñ4�˜>M>MWMzM‡M�M“M–M·Mò8 O.O.].d.o.w.~.„.Š.Š.�.ó ¶.¶.À.È.Í.ôÒTîqîq rr'r=rZrir�r»rÁrÇrÏrÑrÙrîrñrürss;sJsnsœs¢s¨s°sµs½sÒsÕsàsìsñs÷sıst tt%t=tKtytt„tŒtœtÂtğtötûtût uu"u?uWucukuyuyu~u‘u¨uªuÇußuëuóuvvvv&v0vGv^vwv‰v–v¸vÏvævôvöv w$w$w-w9wOwhw{w†w™w�w�w�w¤w©w¼wÇwáwãwèwûwxxxx/xõ˜k Ü8Ü8ò8ş8ş89 9!9@9@9@9G9Q9U9Y9\9\9e9i999µ9Á9Ì9Ü9ì9ñ9ô9ù9ù9ù9::":):1:6:6:K:W:_:d:d:y:†:�:“:“:¨:´:½:Å:Í:Ù:ï:ú:;!;/;7;<;<;Q;k;u;�;‰;�;�;­;¹;Ä;É;Ş;ê;ù;ş; << < < < <"<'<'<'<F<R<]<_<b<g<g<g<q<y<€<ˆ<‘<œ<¢<°<¾<¾<È<Ñ<Ù<===*=@=E=E=X=`=`=b=b=b=g=g=n=t=x==ƒ=ƒ=ƒ=ƒ=’=’=·=À=À=Ä=ßAö(äAäAòAûA BB÷�«Ë¾g¾gÜgägğghh)h4hChIhIhIhNhShahlh…h‡hŒhšh¥h²h¹hÇhø\0C&&8&]&?&l&ˆ&~& &µ&¢&Ä&İ&ï&'''1'1';'ù8hr®K®KÇKÖKêKùKÿKLL)Lú0�— Š Š4Š@ŠNŠQŠiŠlŠtŠû0S[ÖÖ2Ö:ÖGÖQÖdÖüP>N ‡ ‡¬‡À‡Ã‡×‡ß‡ã‡í‡÷‡ÿ‡ˆˆıT™ª¾M¾MØMëMîMøMNNN.N8NLNLNRNUN©Nş<˜£xŠxŠŒŠ“ŠŸŠ«Š»ŠÀŠÃŠÇŠÏŠÿ +/.ä.ä<äHäH"0nVnV‚V�V¤V�V³VµV¼VÇVÓVÛV DƒnQnQ’Q™Q�Q¦QÀQÉQËQØQØQÚQôQúQüQşQ R R R RRR'R/R8R@RGRMRORkRoR�R”RšR®R³RÀRÀRÔRÛRâRëRùRS%S+S/S4S9S<SFSISYSD ®n®n¼nÆnĞnànånînúnünooo@oläûFâFâZâwâˆâ–âšâ¡â¥â®âÀâÂâÂâÙâÛâçâíâíâíâíâõâ´KtğCğCD'D,D3D=D=DEDXD\DaDvDxD{DD†DšD�D¦D²D¹D½DÅDÇDÏDİDåDçDêDÿDEEE!E/E !EFoFoVobono~o–oœoªo»oÃoÊoàop p-p:pJpPpRpcp…pŒp’p p¨p¾pÉpÏpÕpøpôB»àgàgúgıghhh h+h:h:hGhUhXhZhZh_hdhmhxh~h‡hšhŸh´h¿hÉhÉhßhßh i i7i=iBiIiOiVi[i[iaigiLine truncated L
LLL1LL@L@LNLXL_LL�L›L¢L¢L¾L¾LåLêL M"M?MBMJMQMqMsM�M”M”M°M°MÍMÍMôMNŸTVg��¤±·½ÎÜêü! 0
R††µªÖÂùå%5<IT`ksx„‰�¤¨³¸ÃÜåñö
38Qfx}ˆ���’«ÀËÕàâíõõú=¡àZ�˜d˜d²dÀdÅdÒdàdédee7e@ePekeve†eˆeŠe”e e¤e±e½eÏe×eïeóeóeóeóeøef0f0f7f:fBfNfWf­f¢d1¾(¾(Ü(ô() )())@)`)L)o)€)–)‚)®)»)»)Ó)Ó)İ)£ü!\ÎÎæø0
?`ubª�„¹ÖÖÖè:QEƒˆ›�ñÒó ø&N<]zzzŒ©©ÊÑóóû¤(NäNä\ää…äŠäŠä�ä¥(!'~Ö~Ö‡Ö•Ö›Ö�Ö¢Ö¦D]j<9<9V9]9f9r9‡9�9•9›9�9�9¬9§„¼Ù˜©˜©Ë©×©Û©ã©ë©ï©ú©ş©ªªªªª(ª9ª;ª?ªPªaªpªƒª‹ª–ª–ª–ª¨ª¨€ › ›¹›À›Ç›Î›Ô›ä›ï›ù›œœœ œ;œEœOœVœaœsœ{œ{œ‘œ‘œ£œ© Ê 6V6V\VyV�VŒVœV¥V©VÄVÚVóVùVWWWW0WRWXW`WeWkWnW„W�W�W±W¹WÎWÓWâWX
XXXXX-X8XEXQXdXqX~X•X©X³XµXÌXàXåXğX÷XYYY,Yª°)ğ¡ğ¡¢ ¢%¢)¢2¢A¢M¢X¢c¢k¢v¢~¢�¢�¢•¢¯¢Õ¢Ï¢å¢î¢#££3£3£K£V£r£y£�£Ö£Ö£Ö£Ö£7¤«˜‹-Ş·Ş·û·¸
¸¸,¸6¸6¸M¸W¸r¸ˆ¸–¸š¸º¸Î¸â¸é¸í¸¹¹!¹.¹.¹5¹<¹A¹F¹K¹R¹Y¹s¹z¹Š¹�¹�¹˜¹®¹²¹²¹Ã¹Ö¹é¹é¹ï¹ú¹º ººº#º.º5º5º@º^ºbºzºkº•º•º›º¢º±º»ºÉºĞºÔºÖºèºèºèºúº»(»6»6»:»O»W»g»r»‡»Œ»š»©»³»Á»Ì»Ğ»Õ»İ»á»ğ»ò»¼¼¼¼#¼*¼.¼B¼L¼Z¼a¼e¼u¼€¼…¼£¼­¼»¼Â¼Æ¼Ğ¼Ş¼å¼é¼ó¼½½½½½½)½4½D½P½f½n½y½ˆ½�½›½ ½¨½³½¿½Ã½Î½Ó½ç½ï½ú½ú½ú½ú½¾4¾@¾H¾X¾h¾†¾Š¾¹¾®¾Ÿ¾É¾É¾Ó¾Ú¾é¾ø¾¿¿¿¿¿,¿6¿D¿K¿O¿O¿Q¿c¿c¿u¿u¿u¿‡¿™¿¡¿¹¿å¿ó¿÷¿ÀÀ#À.ÀDÀIÀPÀcÀmÀ{À‚À†ÀˆÀ›À¥À³ÀºÀ¾À¾À¾À¾ÀÌÀ×ÀæÀğÀşÀ Á Á ÁÁÁÁ-Á/Á>Á@ÁOÁQÁ`ÁgÁkÁÁ‰Á—Á�Á¢Á²Á½ÁÂÁàÁêÁøÁÿÁ ÂÂ"Â&Â0ÂDÂLÂWÂ[Â[Â[ÂfÂmÂ{•¥°ÂÅÂÊÂÕÂåÂñÂÃÃÃ)Ã1Ã<ÃAÃIÃTÃ`ÃdÃoÃtÈÃ�ÛÛÛÛïÿÃÔÃáÃåÃùÃ
Ä Ä,Ä0Ä>ÄSÄcÄzēĬĮĹÄÁÄÁÄÊÄçÄøÄÅ(Å6ÅAÅMÅUÅWÅbÅjÅjÅjŇŕţźÅÑÅàÅíÅ ÆÆÆ$Æ8ÆRÆRÆVÆlÆ{ƖơƸÆÀÆÀÆåÆåÆøÆÇÇ3ÇMÇ\ÇiljǗǭÇÉÇÙÇñÇñÇ È ÈÈ0ÈHÈQÈQÈQÈ]ÈnȆÈ�È�ȖȟȥȱÈɬ0ùAø�ø��)�4�>�D�N�T�^�l�v�ˆ�’�˜�¢�¨�²�¹�Å�Ë�Ô�ÿ�����/�9�K�U�j�j�m�w�Œ�‘�¡�¬�±�Å�Ø�â�÷�‘‘‘$‘5‘E‘V‘c‘c‘p‘p‘x‘†‘Í‘­l£:EE/EGEWEwE‰E¡E¼E¼EæEîEòEõEùEşEF FFF F%F)F.F8FIFPFWFYF]FfFpFsF~FŠF�F�F©F¯F¶F¿FØFéFòFûFGGG%G6GGGSGaGcGjGqGvGzG‡G�G±G¿GÉGÓGÜGõGHHH H)H/H3H8H<HIHPH^HhH}H‡H�H©HºHÃHÌHÔHİHãHçHìHòHüHI%I3I9I>IFINIVIcIkIŠI}IŸI¨IÃI×IêIñIúIJ
JJJ%J>J.JNJRJ¬J®  x‡x‡†‡¨‡®‡¯¸�·§'§'µ'º'õ'÷',(W(W(g(l(l(€(…(…(¡(¦(¦(Æ(Ë(Ë(ß(ä(ä()))3)Y)y)‹)�)¯)¿)¿)¿)¿)Æ)Ÿ*°$bg÷%÷%û%&%&?&±ƒ.À.À@ÀOÀOÀRÀ[ÀgÀgÀ}À“À¥À¬À°ÀÀÀàÀòÀøÀÁÁÁÁ#Á9Á=ÁZÁxÁŠÁ�ÁŸÁ±Á½Á¿ÁËÁÓÁ×ÁİÁæÁæÁæÁøÁ  Â&Â.ÂDÂKÂKÂKÂY€‰‘£«´¿ÂÅÂÛÂâÂêÂñÂÃÃÃÃÃÃ,ÃSÃ`ÃiÃqÃËÔÔßæôøÃÄÃÜÃäÃêÃùÃÄÄÄÄÄ%Ä-Ä3ÄPÄYÄaÄgÄmÄmÄmÄtÄ{ĊĒĘÄ�Ä�ĠĪIJxşÖşÖ ×!×(×3×I×s×�×–×®×´×Ã×Ì×Ô×Üת×ä×ê×ù×ØØ ØØ³¤Ôy~b~b¡b©b¹bÁbåbübcccc c+c3c3c;ckcªc…cÍcÒcÚcêcìcd d)d0d8d@dLdTd\dodwd|d†d¦d­d¯d¹dÈdèdïdñdeeee!e(eAeGeOeOeTeXedemeve‚e¥e³eáeäef f!f;f?f^flfxf¦f¬f®fÜfßfßfûfgg6g>gBgMgUgeggg•g˜g g°g²gàgægægğgğgûg,h4h4h4h4h=hIh_hxh‹h’h�h¥h¥h¸h¼h¼h¼hÃhÈhÛhâhîhõhõhiii)i0i<iCiCiPiZiZi_i‚i‚i”i´à˜Ì¾@¾@Ó@ñ@Ş@&A AA5ADALAWAYAdAoAoAtA©A®AãAûAèAB
B1B,BMB\BdBoBqB|B‡B‡BŒB­B¯BĞBĞB×BÜBşBC"C"C"C*Cµ\âõæbæbübcc c-c9cPcPcbchcscƒc�cœc©cÕcÛÜ^^|�–�¤¨ª±¸¼¼Äİççû%).BFOSX^{{‰ ¥¾ÏÓÓÓØãíô $,59;BTd{}–©­­­ÁÅÎÒ×İúú  $ = N R d d d i x œ ¾ É Ï å ö û    ' + - 3 L L Z q s Œ � ¡ ¡ ¨ » ¿ Ñ Ö ê ò û ÿ ! !!!1!H!M!f!y!}!�!�!�!�!”!¶!Å!é!ô!ú!"!"!"!"(";"T"T"T"c"c"v"�"˜"©"®"´"¾"À"Ì"Ì"Ó"Ş"ó"õ"##!###.#:#J#Q#X#b#j#n#r#t#y#�#…#—#™#�#¦#ª#¬#¬#µ#Â#Ø#ø#$ $,$3$3$F$J$J$J$Q$V$p$~$Š$‘$‘$«$­$²$Ì$Ú$æ$í$í$ú$%%%·˜ »�HIHIeItItItI‘I‘I¢I¢I¨IªIªI°I²I²I¸IºIºIÁIÅIÊIÊIÊIÊIÊIÊIÒIêIêIÿI
JJ!J9J;JZJ\J{J€JŸJ¤JªJªJÃJÆJíJúJK2K2K;K@K^KLKdKsKxKKˆK›K£K«K°K°K°K¹KÒKØKØKñKÿKL5L7L?LELMLRLRLXLXLaLrLtL‰L‹L“L™L¡L¦L¦L¦L¦L´LËLÍLáLáLéLïL÷LüLM MMM"M$M$M$M,M,M:MQMUMWMcMeM€M†M�M“MœM§MªM°M¶M¿MÂMÂMĞMáMãM N&N,N4N9NBNGNGNLNNNVNVNqNƒNˆN”NšN�N´N¶N¹NÉNÍNÔNİNìNúNOO OOOO"O/OGOLOVO~O‰O”OŸOªOµOÀOËOÖOÖOÖOŞOŞO÷OP"P;P;P=P=PFPLPNPNPTPZPZPbPkPqP}P}P„P‡P¦P±P¹PÁPÆPÆPÍPÑPÖPèPíP÷PQQQ5Q5Q>QLQ]QiQpQ~Q�Q£Q©Q®Q®Q³QÉQÕQİQíQ÷QRRRR R R*R8RDR[RqRˆR�R�R§R¬R¬RÌRÌRŞRäRíRóRüR
SSS&S,S.S9SKSaSaSuS…S—SœS¨S®S±SÈSÊSÍSİSçSêSêSùST"T'T3T9T<TSTUTXThTlTtT‚T‡TŒTŒT’TšTŸTŸT¥T¥T³T¹T¿TÉTÓTáTöTùTûTUUUUUUUU$U,U1U1U6UAUFUKUVU[U�UƒUˆU�U’U—UœU¡U¦U¦U«U°UÌUÖUêUşUV V VV V&V0V:VHV]V`VbVlV{V€V€V€VˆV�V–V–V›V›V¡V©V®V®V³V¾VÃVÈVÍVÜVÜVíVóVóVWW WW!W/WDWGWIWSWbWgWgWgWoWtW}W‚W‚WˆW�W•W•WšW¥WªW¯W´WÃWÃWÔWÚWÚWèWîWôWşWXX+X.X0X:XIXNXNXNXVX[XdXiXiXoXwX|X|X‰X�X�X�X£X©X³X½XËXàXãXåXïXşXYYY YYYYY$Y,Y1Y1Y>YDYDYRYXY^YhYrY€Y•Y˜YšY¤Y³Y¸Y¸Y¸YÀYÅYÎYÓYÓYİYåYêYêYêYğYúYZZZZ Z)Z/Z4Z4Z=ZKZTZbZgZgZpZ~ZŠZ›Z¨Z¯Z·ZÁZÏZÏZÔZÔZßZßZßZãZèZèZïZóZøZ[[[[ [([-[3[3[;[D[R[][b[h[p[u[u[u[u[u[u[u[u[u[u[�[”[�[£[«[°[µ[¾[É[Ò[Ú[ß[ß[ß[å[í[ò[ò[ö[û[û[\\\'\-\-\6\L\L\R\[\q\q\z\|\‚\‹\¡\¡\ª\ª\ª\³\¸\¸\À\Å\Å\â\ğ\ü\]]]]]]]2];]A]S]]]]]e]e]m]o]o]ˆ]’]›]�]�]�]£]§]©]©]©]©]®]´]º]¾]7a¸Ìz©–i–i¸iÃiÙiõijj,j7jMj9j\jdjdjsjsj{j‡j�j²jÁjÌjßjåjåjåjêjïjşj k#k%k*k9kDkQk[k[kik¹”*K8¤8¤P¤W¤^¤a¤j¤m¤p¤t¤y¤›¤ˆ¤«¤³¤»¤¾¤À¤Ğ¤Ù¤â¤è¤ë¤ü¤¥+¥6¥h¥ºà.¢&A&ADAOA`AcAgApAwA…A”AªA»AÌAŞAğAÿAB B.B.B<B@BDBIBMBZBaBoBƒBŒB’B B¹B»B¿BÉBÉBÎBÎBÎBÓBÓBâBëBóB C C CCC&C2C=CBCBCECJCJCiCuC‚C„C„CˆCŠCŠC©CµCÁCÃCÃCÆCÈCÈCÕC×C×CÚCÚCãCéCîC
D
D
D
D
D
D
D
D
D
D
D
D DD/D>DMDMDQDQDYDrDvD{DE»,ÎÕÎÕÜÕãÕëÕğÕöÕ¼l3JVPVPlP†PrP•PºP¦PÉPÎPÕPÕPÛPŞPâPêPQ Q#QQ;QEQ½PQa%%%+%2%B%S%X%u%{%‚%‰%—%£%µ%ñ%¾D+–ä–äªä¸ä¾äáäçäíäååå$å$å,å¿ô#œ^5^5f5u5y5†5“5§5¶5Ó5à5ò56<6J6f6x6�6§6²6Ó6ñ677&7A7Z7Z7u7�7¸7Ó7å7ô7888!828E8U8b8n8}8š8š8¢8¢8¢8³8À8Ç8æ8ï899 99/9G9P9`9h9m9‘9¡9±9¼9Ğ9Õ9İ9:::C:]:]:u:„:Œ:›:¤:¬:¾:à:è:ğ:û:ı: ;%;=;U;m;;–;Ÿ;¨;º;È;Ì;Ğ;À °‡°‡¹‡Ø‡İ‡Á\ˆ[vÌvÌ�̴̗̤̯̺ÌÌÌÒÌêÌğÌÍ$Í/Í5ÍWÍWÍgÍ|Í~Í�Í�Í•Í�ͥͳ͹ÍÂÍÎÍÎÍĞÍâÍèÍíÍíÍÎÎ"Î"Î5ÎBÎGÎGÎ^ÎgÎvΌΗΥΰÎÀÎÍÎßÎåÎïÎûÎÏ
Ï
ÏÏÏÏ Ï$Ï$Ï,Ï1Ï1Ï9Ï>Ï>ÏDÏIÏIÏPÏUÏUÏ\ÏaÏaÏlÏqÏqÏ|Ï�Ï�όϑϑϜϜϷϾÏÄÏÇÏÒÏÕÏéÏöÏĞ ĞĞ!Ğ#Ğ)Ğ=ĞJĞYĞYĞYĞYĞcĞ}ВФеоĞÏĞÕĞÚĞåĞ÷ĞÑÑÑ.Ñ9ÑCÑSÑbÑhÑsÑyÑ�Ñ”Ñ¥Ñ°Ñ¶ÑÆÑÆÑÖÑéÑõÑıÑ ÒÒÒ+Ò6Ò;ÒXÒmÒ{Ò‹Ò—Ò©Ò´ÒÃÒÅÒ×ÒßÒäÒëÒïÒıÒÓ ÓÓÓ(Ó.Ó0Ó=ÓJÓTÓmÓ{Ó{Ó�ÓˆÓÌÕÂD#°Ø«Ø«÷«¬!¬!¬/¬B¬\¬_¬h¬„¬„¬„¬Œ¬�¬�¬–¬˜¬˜¬ ¬¢¬¢¬ª¬ª¬³¬¹¬¾¬¾¬Ç¬Ö¬Ú¬ß¬å¬ê¬ê¬ê¬ê¬ò¬û¬­­­ ­­1­P­S­i­ˆ­ˆ­ˆ­�­’­’­’­š­œ­œ­œ­¤­¦­¦­¦­®­°­°­»­»­Á­Æ­Æ­Æ­Æ­Í­Ø­ê­ø­®®®® ® ®'®+®1®I®W®j®w® ®£®¬®³®Ç®Ï®Ø®ã®ã®î®ô®ù®ù®ù®¯¯¯#¯)¯4¯K¯b¯n¯t¯y¯y¯€¯‹¯‹¯�¯¢¯¨¯¨¯¨¯¨¯°Ãd*,C,CNCXC[C[CeCxCzC‡C‰C”C¨C°CÀCÅCËCÓCÖCèCÄLWfG1G1[1_1d1o1o1y111ƒ1‹1Å\CVß0ß0õ0õ0ù0ş01111#1)1)17191C1Æ8(2¦Ö¦Ö¯Ö¯Ö½ÖÁÖÈÖËÖĞÖǨYv\v\�\–\¡\´\¨\æ\J]0]%] ]ô\P]e]U]…]Š]§]¬]Á]®]Ğ]Ö]Ö]İ]^2^^I^g^g^g^s^ÈlF]ş*ş*+A+#+P+p+Œ+‚+¤+¼+©+Ë+ä+,,/,/,6,X,X,b,É4Š“NêNêbêgêmêqêuê”êœêÊxÌæŞ€Ş€ �ö€�"�)�?�D�I�M�O�U�[�q�^�€�™�¡�³�Ö�Ì�å�ñ�Ë”"¨ª¨ª¶ªÈªÌªÔªÜªçªòªúª«««+«2«9«D«O«Q«\«g«i«u«€«‹«”«œ«œ« «×«Ì€ÚöO5O5m5q5u5}5‹5�5‘5§5­5¯5Á5Å5É5Ñ5Ù5å5ú5 6666&6;6ÍŞ`æCæCD!DFD(D`D–D›D›D�D¨DÀDÏDÑDÙDûDE.E;EVEjEoE‰E“E•EšE±EØEêE÷EF2F(FLFRFRF[F{F‡FŠFŒF§F‘F¶F¶FÈFÈFÖFàF GG%G%G*G-GCGOGdGˆG’G˜G¨GĞG¿GßGáGóGHHH0H6HEHmH\H|H~H�HšH®H¸HÁHØHâHäHøHII!I'I'I'I0IPIxIgI‡IŒI�I¦IÑIÇIæIæIæI J JJÎ`8ÌŞ/Ş/00$0-080?0W0\0_0b0k0y0ƒ0ˆ0°0µ0Â0î0ó01 1%141`1h1m1‚1®1¶1»1»1Î1á1õ1ù12,21212]2]2]2]2]2q2‰2�2‘2”2”2Á2Æ2Ï2Ü2ä2ÿ23$3/3K3K3K3X3o3q3q3q3~3•3—3—3¤3»3»3Ë3Ğ3÷34 4<4<4<4I4`4b4b4b4o4†4ˆ4ˆ4•4¬4¬4¼4Ä4É4é455.5.5.5;5R5T5T5a5x5x5Œ5�5œ5¾5Ü5á5ï5ı56 6 6 6&6.60606X6�6Ϥ%J¶æ¶æĞæüæüæç+ç0ç0ç?çQçkçsçzççšç¢ç¢ç¢ç¤ç¤ç¤ç¤çÀçÀçÀçÀç×çÙçÙçÙçÙçôçÿç4èĞĞçö�ö� ‚‚‚‚)‚.‚3‚>‚C‚C‚C‚x‚e‚‡‚®‚®‚Ç‚à‚ù‚ƒƒƒ0ƒIƒbƒ{ƒ€ƒ€ƒ™ƒ²ƒ˃äƒæƒæƒÿƒ„1„J„J„J„\„Ñ0�‰îéîéüéêê%êFêFêLêÒ<:E?8?8H8S8a8m8y8‚8‹8”8š8Ÿ8ÓluŒ×&×&å&ï&ö& ' ''' '*'8'U'W'g'g'l'n'u'§'ÔÈŸÍÆrÆrÚrsùrår$sVs<s/s�s†s‘sŸs®sÅsâs;t#ttAtLtxt}t…t¤t¬tÑtÆt²tätıtét u u7u>ujujujujuruÕL^mf,f,„,–,�,¿,¿,Ñ,Ş,î,ä,--ÖÈg•�1�1³1·1Ö1ø12 22$212:2:2?2I2a2l2|2ˆ2�2š2«2­2¾2À2Â2Â2Â2Ê2Ê2Ô2Ô2Ü2ä2ì2ô2ø23O3×  ‡ ‡.‡E‡K‡Ø`FZŸ8Ÿ8¯8¶8¸8½8Ì8Ò8ç8ç8õ8õ89
9 99%9(909Ù<öÖ�Ö�ß�ê�õ�� ��3�>�N�Ú  1ee.e@eFeRe]ekewe�e™e©e»eÁeÇeÍeàeæeïeõef ff f.f;fxfÛ, N/N/\/m/†/š/�/£/Ü4à‡à‡î‡ø‡ˆˆˆˆˆ ˆİÄMzüüJüMüRü_üdüvüxü|ü€üƒü–ü¯üÕüŞüéüğü ı/ı4ıMısıxıı˜ı¾ıÀıÙıÿıÿıÿış1ş@şRşŞ„¶t¶tÔt×tİtñtùt
uuu"u"u/u8u>uNu\u^u}u‘u˜u¤u´u´uÂuÕuàuäuõuõuõuúuúuvv(v.v3vGvMvUvgvmvov~v‹v‘v—vœv¢v¨v¯v»vÂvÄvÉvÑvÓvØvävævëvóvõvúvww wwww w w w0w0w0wGwMwSw^wcwkw„wŠw•w™wŸwªwÃwÎwÙwßwìwñwöwöw xxx<xGxRx^xXxgxpxuxzx�x–xŸx«x±x½xÁxÆxËxÖxáxìxîxôxyy y$y/y:y:y@yMyOyTy]yvy�yŒy’yŸyŸy£y¨y¨y¹y»y»yÎyĞyĞyãyåyåyøyúyúy zzz!z!z'z,z,zCzWzLzdzlzszyz�z”zŸz–z¯z¯z±zÉzÌzÎzİzïzÿz {"{<{A{U{e{x{}{}{†{š{¬{·{¿{Ç{Ë{Ù{ß{ä{ä{ê{ş{|||| |$|$|$|*|9|L|Y|]|b|b|f|k|k|p|{|‡|¡|·|Ã|Ã|É|Ö|Ø|å|ñ|}}} },},},},}0}5}F}X}c}k}s}u}‡}Œ}š}©}¯}¼}¼}Ó}ã}ã}÷}~~~~1~1~7~D~F~X~X~c~c~c~c~c~߀ß „È>T>T\TjT�T†T«T±T¶T¼TÊTÑTàTåTñTUU!U,U?UFU`U}U‰U¤U¼UØUáUğUøUVVV#V1VQVVV^VwV‰V™VŸVªV³V¹VÿVéVÚVWJW4W%WZW]W‚WXà<+6ìCìC DDD.DGDODiDuDá„ |F F h s z ‚ … … •     £ ª ± · ½ à Ê Ğ á á ã ì ø ş # ' * : B G G N W h n w ‚ “ “ œ ¡ « ² ¹ Á Ç É × î ñ ! !!!!! !2!;!L!m!~!–!�!§!¯!¶!¶!¿!Æ!Ò!â!í!í!í!""%"("ã"â„97737B7I7c7�7¦7·7À7Î7à7ù7ù7 8%8-808<8ãX{ÍISfqƒ‘—¨¯·ÍÕèı )9BHMTZ`fq|† ¨Â×äçïó#>[_ho�‰�”�Ÿ±ÈÖÜàâïïïñ ä 
P‡P‡Y‡m‡r‡å¤ŸÄö~ö~*/58<<_d‘} ¹¥ÈŞÊíõú€€€ €"€€1€1€1€L€{€‡€æ˜Íï'"61@OO^^mm||‹‹š®©¸¸ÇÖåPçxÇá¶a¶aÔaæaìaøabb!b'b2bBbNbWb]bcbnb|b‰b•b£b²b²bâbèd”©�ê�ê¢êµêµêÏêÖêâêâêùêùêëë'ë'ë>ë>ëUëWëWë[ëéÌÂñÎÎğ÷*5IMRVX^p|‘“¬»¿¿¿Òççóù#24MggyêP7G|D|D’D�D¦DªD»DÉDÏDÛDãDîDôD÷DEë ®-�<�<¨<³<·<À<Ç<Î<ä<õ<==*=9=H=Y=h=h=o=s=|=‰=�=™= =¤=Ä=Ä=Ä=Ä=Ä=Ğ=Ô=×=ß=í=õ=>
>>#>.>3>3>@>F>U>l>n>y>†>‘>”>š>–>®>Å>Ç>Õ>×>â>è>è>ğ>ğ>? ? ? ? ?$?$?<?J?U?Z?Z?]?b?b?�?�?œ?�?�?¢?¤?¤?Ã?Ñ?İ?ß?ß?â?ä?ä?ñ?ó?ó?ö?ö?ö?ö?ö?ÿ?@ @@5@B@P@W@ Aì(rxPŠPŠ^ŠeŠuŠxŠ~Ší(nt‡&‡&�&š&«&¶&¶&Ô&îTzK¾ò¾òÜòâòåòîòøòó ó)ó/ó2ó6ó8óPó`ómósówó}óó‚ó†ó†ó©ó­ó³ó³óºóÜóñóôôô$ô/ô9ô=ô@ôGôMôQôWôhônôsôxô…ô‡ô™ô›ô¢ô¯ô±ôÃôÃôÃôÃôÃôçôòôşôõõ*õ6õSõwõ‘õ–õ­õ²õÀõ×õÜõâõóõööö+ö?öFöRöjövövövö|öö‚ö›ö¡öµö»öÀöËöËöĞöİöêöêöğöşö÷÷÷!÷(÷1÷8÷8÷=÷J÷W÷W÷]÷k÷‚÷ˆ÷‹÷�÷•÷•÷¦÷­÷º÷Ç÷Ç÷Î÷Ø÷ß÷å÷ì÷÷÷ ø ø%ø*ø1ø9ø@øPøTø]øuøzø�ø£ø®ø´ø¼øÕøéøéøùùù,ù3ù:ù\ùoù“ù•ùŸùÁùÁùÁùÚùæù÷ùúúéúïÀ€¬v^v^�^’^—^¦^±^½^Ş^¿^í^ò^ò^_H_+__k_p_™_�_ª_Ë_¬_Ú_ß_ø_ÿ_"`8`8`^`^`j`ğ î.î.ı.//ñ4‹”&N&N>NaNnNtNzN}N�Nò8 ///$///7/>/D/J/J/P/ó ¦/¦/°/¸/½/ôÎPvuvu”u¤u¯uÅuâuñuvCvIvOvWvYvavvvyv„v�v¦vÃvÒvöv$w*w0w8w=wEwZw]whwtwyww…w�w•w�w­wÅwÓwxx xx$xJxxx~xƒxƒx”xŸxªxÇxßxëxóxyyyy0y2yOygysy{y‰y‰y�y¡y®y¸yÏyæyÿyzz@zWznz|z~z•z¬z¬zµzÁz×zğz{{!{%{%{%{,{1{D{O{i{k{p{ƒ{�{›{¥{¥{·{õ˜k ¬9¬9Â9Î9Î9ä9ï9ñ9::::":&:*:-:-:6:::P:P:†:’:¤:´:Ë:Ğ:Ó:Ø:Ø:Ø:ô:û:;;;;;8;D;L;Q;Q;m;z;‚;‡;‡;£;¯;¸;À;È;Ô;ê;õ;<<*<2<7<7<S<m<w<ƒ<‹<�<�<¯<»<Í<Ò<î<ú< ===*=/=/=/=/=2=7=7=7=V=b=t=v=y=~=~=~=ˆ=�=—=Ÿ=¨=³=¹=Æ=Ô=Ô=Ş=ç=ï=$>*>1>@>Z>_>_>r>z>z>|>|>|>�>�>ˆ>�>’>™>�>�>�>�>¬>¬>Ñ>Ú>Ú>Ş>ùBö(üBüB
CC!C'C÷�ªÊnknkŒk”k k¶kËkÙkäkókùkùkùkşklll5l7l<lJlUlblilwlø\2EŞ)Ş)ø)*ÿ),*H*>*`*u*b*„*�*¯*È*È*Ï*ñ*ñ*û*ù8fp–L–L®L½LÑLàLæLìLïLMú0�—H‹H‹\‹h‹v‹y‹‘‹”‹œ‹û0S[n×nׂ׊חס״×üP>NȈȈԈèˆëˆÿˆ‰ ‰‰ ‰'‰*‰0‰ıT•¦�N�N¸NËNÎNØNåNúNüNOO,O,O2O5O‰Oş<˜£ ‹ ‹´‹»‹Ç‹Ó‹ã‹è‹ë‹ï‹÷‹ÿ 26.å.å<åHåH!/ZZ2Z>ZTZ@ZcZeZlZwZƒZ‹Z DƒNRNRrRyR~R†R R©R«R¸R¸RºRÔRÚRÜRŞRëRëRëRëRïRşRSSS S'S-S/SKSOSaStSzS�S“S S S´S»SÂSËSÙSâST TTTTT&T)T9Tläûãã"ã8ãFãQãUã\ã`ãiãxãzãzã�ã�ã™ãŸãŸãŸãŸã§ã´KtEE6EGELESE]E]EeExE|E�E–E˜E›EŸE¦EºE¾EÆEÒEÙEİEåEçEïEıEFF
F#F+F3FAFEFSF !E6p6pFpRp^pnp†pŒpšp«p³pºpÓpqq'q4qDqJqLq]qq†qŒqšq¢q¸qÃqÉqÏqòqôB»ii"i%i,i7iFiHiSibibioi}i€i‚i‚i‡iŒi•i i¦i¯iÂiÇiÜiçiñiñijj4jHj_jejjjqjwj~jƒjƒj‰j�j”j”j§jµjÍjÓjØjìjöjıjıjk5k;k@k@kkkpkpk›kÂkÇkÇkÇkÊkÑk×kŞkãkãkékïkôkôk l l%lHlNl^ljlpl~l…l‡l›l¡l¨l¨lªlªlªl¯lµlºl¾lÀlÃlÎlİlàlâlælælëlëlùl#m˜}Ÿæ"æ"#####)#9#A#I#N#Y#c#i#t#„#Œ#œ#£#«#³#»#Ã#È#Ó#á#á#÷# B†^<^<v<}<�<¸<Ã<Ğ<Ş<Ò<====*=d=f=“=›=›=Ğ=è=Õ= >÷=>>->B>D>O>W>W>x>}>†>’>š>¸>¥>í>Ó>Ç>ü>??9?Q?>?s?`?”?‚?£?µ?«?Ì?Ì?Ì?õ?õ?@Ğ1ББä‘ä‘
’
’*’.’3’3’3’?’D’T’Y’Y’Y’^’^’w’~’�’›’¤’´’½’¿’¿’¿’¿’Æ’Í’Ô’Û’â’é’ğ’÷’÷’ù’ù’ÿ’“ ” D �o�o¬o¶oÀoĞoÕoŞoêoìoşoşop0p
+48 -48
View File
@@ -237,54 +237,54 @@ class CIntermediateStruct
#define IC_ATAN 0xB9 #define IC_ATAN 0xB9
#define IC_NUM_ENTRIES 0xBA #define IC_NUM_ENTRIES 0xBA
#define KW_INCLUDE 0 #define KW_INCLUDE 0
#define KW_DEFINE 1 #define KW_DEFINE 1
#define KW_UNION 2 #define KW_UNION 2
#define KW_CATCH 3 #define KW_CATCH 3
#define KW_CLASS 4 #define KW_CLASS 4
#define KW_TRY 5 #define KW_TRY 5
#define KW_IF 6 #define KW_IF 6
#define KW_ELSE 7 #define KW_ELSE 7
#define KW_FOR 8 #define KW_FOR 8
#define KW_WHILE 9 #define KW_WHILE 9
#define KW_EXTERN 10 #define KW_EXTERN 10
#define KW__EXTERN 11 #define KW__EXTERN 11
#define KW_RETURN 12 #define KW_RETURN 12
#define KW_SIZEOF 13 #define KW_SIZEOF 13
#define KW__INTERN 14 #define KW__INTERN 14
#define KW_DO 15 #define KW_DO 15
#define KW_ASM 16 #define KW_ASM 16
#define KW_GOTO 17 #define KW_GOTO 17
#define KW_EXE 18 #define KW_EXE 18
#define KW_BREAK 19 #define KW_BREAK 19
#define KW_SWITCH 20 #define KW_SWITCH 20
#define KW_SUB_SWITCH_START 21 #define KW_START 21
#define KW_SUB_SWITCH_END 22 #define KW_END 22
#define KW_CASE 23 #define KW_CASE 23
#define KW_DFT 24 #define KW_DFT 24
#define KW_PUBLIC 25 #define KW_PUBLIC 25
#define KW_OFFSET 26 #define KW_OFFSET 26
#define KW_IMPORT 27 #define KW_IMPORT 27
#define KW__IMPORT 28 #define KW__IMPORT 28
#define KW_IFDEF 29 #define KW_IFDEF 29
#define KW_IFNDEF 30 #define KW_IFNDEF 30
#define KW_IFAOT 31 #define KW_IFAOT 31
#define KW_IFJIT 32 #define KW_IFJIT 32
#define KW_ENDIF 33 #define KW_ENDIF 33
#define KW_ASSERT 34 #define KW_ASSERT 34
#define KW_REG 35 #define KW_REG 35
#define KW_NOREG 36 #define KW_NOREG 36
#define KW_LASTCLASS 37 #define KW_LASTCLASS 37
#define KW_NOUNUSEDWARN 38 #define KW_NO_WARN 38
#define KW_HELP_INDEX 39 #define KW_HELP_INDEX 39
#define KW_HELP_FILE 40 #define KW_HELP_FILE 40
#define KW_STATIC 41 #define KW_STATIC 41
#define KW_LOCK 42 #define KW_LOCK 42
#define KW_DEFINED 43 #define KW_DEFINED 43
#define KW_INTERRUPT 44 #define KW_INTERRUPT 44
#define KW_HASERRCODE 45 #define KW_HASERRCODE 45
#define KW_ARGPOP 46 #define KW_ARGPOP 46
#define KW_NOARGPOP 47 #define KW_NOARGPOP 47
#define AKW_ALIGN 64 #define AKW_ALIGN 64
#define AKW_MODULE_ORG 65 #define AKW_MODULE_ORG 65
+4 -4
View File
@@ -1,12 +1,12 @@
#help_index "Compiler" #help_index "Compiler"
extern U0 CInit(Bool first); extern U0 CInit(Bool first);
public extern I64 ExeFile(U8 *name,Bool just_load=FALSE); public extern I64 ExeFile(U8 *name,I64 ccf_flags=0);
public extern I64 ExeFile2(U8 *name,Bool just_load=FALSE); public extern I64 ExeFile2(U8 *name,I64 ccf_flags=0);
public extern I64 ExePrint(U8 *fmt,...); public extern I64 ExePrint(U8 *fmt,...);
public extern I64 ExePrint2(U8 *fmt,...); public extern I64 ExePrint2(U8 *fmt,...);
public extern I64 ExePutS(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE, public extern I64 ExePutS(U8 *buf,U8 *filename=NULL,I64 ccf_flags=0,
CLexHashTableContext *htc=NULL); CLexHashTableContext *htc=NULL);
public extern I64 ExePutS2(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE); public extern I64 ExePutS2(U8 *buf,U8 *filename=NULL,I64 ccf_flags=0);
public extern CCmpGlbls cmp; public extern CCmpGlbls cmp;
#help_index "Compiler/Directive" #help_index "Compiler/Directive"
+3 -3
View File
@@ -158,8 +158,8 @@ KEYWORD goto 17;
KEYWORD exe 18; KEYWORD exe 18;
KEYWORD break 19; KEYWORD break 19;
KEYWORD switch 20; KEYWORD switch 20;
KEYWORD sub_switch_start 21; KEYWORD start 21;
KEYWORD sub_switch_end 22; KEYWORD end 22;
KEYWORD case 23; KEYWORD case 23;
KEYWORD default 24; KEYWORD default 24;
KEYWORD public 25; KEYWORD public 25;
@@ -175,7 +175,7 @@ KEYWORD assert 34;
KEYWORD reg 35; KEYWORD reg 35;
KEYWORD noreg 36; KEYWORD noreg 36;
KEYWORD lastclass 37; KEYWORD lastclass 37;
KEYWORD nounusedwarn 38; KEYWORD no_warn 38;
KEYWORD help_index 39; KEYWORD help_index 39;
KEYWORD help_file 40; KEYWORD help_file 40;
KEYWORD static 41; KEYWORD static 41;
+11 -4
View File
@@ -260,7 +260,7 @@ CIntermediateCode *OptBrZero(CCmpCtrl *cc,CIntermediateCode *tempi)
case IC_CALL_END: case IC_CALL_END:
tempii2=OptLag(tempii); tempii2=OptLag(tempii);
switch (tempii2->ic_code) { switch (tempii2->ic_code) {
sub_switch_start: start:
case IC_CARRY: case IC_CARRY:
tempii2->ic_code=IC_BR_NOT_CARRY; tempii2->ic_code=IC_BR_NOT_CARRY;
break; break;
@@ -282,7 +282,7 @@ CIntermediateCode *OptBrZero(CCmpCtrl *cc,CIntermediateCode *tempi)
case IC_BTC: case IC_BTC:
tempii2->ic_code=IC_BR_NOT_BTC; tempii2->ic_code=IC_BR_NOT_BTC;
break; break;
sub_switch_end: end:
tempii2->ic_data=tempi->ic_data; tempii2->ic_data=tempi->ic_data;
tempii->ic_code=IC_CALL_END2; tempii->ic_code=IC_CALL_END2;
OptSetNOP1(tempi); OptSetNOP1(tempi);
@@ -387,7 +387,7 @@ CIntermediateCode *OptBrNotZero(CCmpCtrl *cc,CIntermediateCode *tempi)
case IC_CALL_END: case IC_CALL_END:
tempii2=OptLag(tempii); tempii2=OptLag(tempii);
switch (tempii2->ic_code) { switch (tempii2->ic_code) {
sub_switch_start: start:
case IC_CARRY: case IC_CARRY:
tempii2->ic_code=IC_BR_CARRY; tempii2->ic_code=IC_BR_CARRY;
break; break;
@@ -409,7 +409,7 @@ CIntermediateCode *OptBrNotZero(CCmpCtrl *cc,CIntermediateCode *tempi)
case IC_BTC: case IC_BTC:
tempii2->ic_code=IC_BR_BTC; tempii2->ic_code=IC_BR_BTC;
break; break;
sub_switch_end: end:
tempii2->ic_data=tempi->ic_data; tempii2->ic_data=tempi->ic_data;
tempii->ic_code=IC_CALL_END2; tempii->ic_code=IC_CALL_END2;
OptSetNOP1(tempi); OptSetNOP1(tempi);
@@ -525,6 +525,13 @@ I64 CmpRawTypePointed(CHashClass *tempc)
return 0; return 0;
} }
U0 CmpMinTypePointed(CIntermediateCode *tempi,I64 pt1)
{
I64 pt;
if ((pt=tempi->a1_type_pointed_to) && pt!=RT_F64 && 0<pt1<pt)
tempi->a1_type_pointed_to=pt;
}
U0 CmpF1PushPop(CIntermediateCode *tempi,CIntermediateCode *tempi2) U0 CmpF1PushPop(CIntermediateCode *tempi,CIntermediateCode *tempi2)
{ {
if (intermediate_code_table[tempi2->ic_code].fpop|| if (intermediate_code_table[tempi2->ic_code].fpop||
+13 -12
View File
@@ -43,7 +43,8 @@ args.
tempc=tempi->ic_class; tempc=tempi->ic_class;
tempi->ic_class2=tempc; tempi->ic_class2=tempc;
tempi_push=tempi; tempi_push=tempi;
MemSet(&tempi->a1,0,sizeof(CICArg)*4); MemSet(&tempi->a1,0,3*sizeof(CICArg));
tempi->a1_type_pointed_to=0;
switch [intermediate_code_table[code].arg_cnt] { switch [intermediate_code_table[code].arg_cnt] {
case IS_V_ARG: case IS_V_ARG:
ps->ptr-=tempi->ic_data>>2; ps->ptr-=tempi->ic_data>>2;
@@ -158,7 +159,7 @@ args.
} }
tempi_push->ic_class2=cmp.internal_types[RT_I64]; tempi_push->ic_class2=cmp.internal_types[RT_I64];
break; break;
sub_switch_start: start:
case IC_NOT: case IC_NOT:
if (tempc->raw_type==RT_F64) { if (tempc->raw_type==RT_F64) {
if (tempi1->ic_code==IC_IMM_F64) { if (tempi1->ic_code==IC_IMM_F64) {
@@ -263,7 +264,7 @@ args.
OptSetNOP1(tempi2); OptSetNOP1(tempi2);
} }
break; break;
sub_switch_end: end:
if (!tempi_push->ic_class->ptr_stars_cnt) { if (!tempi_push->ic_class->ptr_stars_cnt) {
if (tempi_push->ic_class->raw_type==RT_F64) if (tempi_push->ic_class->raw_type==RT_F64)
tempi_push->ic_class2=cmp.internal_types[RT_F64]; tempi_push->ic_class2=cmp.internal_types[RT_F64];
@@ -303,7 +304,7 @@ args.
tempi2->ic_flags|=ICF_R_TO_F64; tempi2->ic_flags|=ICF_R_TO_F64;
tempi_push->ic_class2=cmp.internal_types[RT_F64]; tempi_push->ic_class2=cmp.internal_types[RT_F64];
break; break;
sub_switch_start: start:
case IC_MUL: case IC_MUL:
if (i=OptFixupBinaryOp1(tempi,tempi1,tempi2,&is_unsigned)) { if (i=OptFixupBinaryOp1(tempi,tempi1,tempi2,&is_unsigned)) {
if (i==FBO1_INT) { if (i==FBO1_INT) {
@@ -710,7 +711,7 @@ args.
} }
tempi->ic_class=cmp.internal_types[RT_I64]; tempi->ic_class=cmp.internal_types[RT_I64];
break; break;
sub_switch_end: end:
if (!tempi_push->ic_class->ptr_stars_cnt) { if (!tempi_push->ic_class->ptr_stars_cnt) {
if (tempi_push->ic_class->raw_type==RT_F64) if (tempi_push->ic_class->raw_type==RT_F64)
tempi_push->ic_class2=cmp.internal_types[RT_F64]; tempi_push->ic_class2=cmp.internal_types[RT_F64];
@@ -720,7 +721,7 @@ args.
tempi_push->ic_class2=cmp.internal_types[RT_I64]; tempi_push->ic_class2=cmp.internal_types[RT_I64];
} }
break; break;
sub_switch_start: start:
case IC_EQU_EQU: 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;
@@ -805,7 +806,7 @@ args.
tempi->ic_flags|=ICF_USE_F64; tempi->ic_flags|=ICF_USE_F64;
} }
break; break;
sub_switch_end: end:
tempi->ic_flags&=~ICF_R_TO_INT; tempi->ic_flags&=~ICF_R_TO_INT;
if (!tempi_push->ic_class->ptr_stars_cnt) { if (!tempi_push->ic_class->ptr_stars_cnt) {
if (tempi_push->ic_class->raw_type==RT_F64) if (tempi_push->ic_class->raw_type==RT_F64)
@@ -820,10 +821,10 @@ args.
else else
tempi->ic_class=cmp.internal_types[RT_I64]; tempi->ic_class=cmp.internal_types[RT_I64];
break; break;
sub_switch_start: start:
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: start:
case IC_MUL_EQU: case IC_MUL_EQU:
if (tempi2->ic_code==IC_IMM_I64 && tempc->raw_type!=RT_F64 && if (tempi2->ic_code==IC_IMM_I64 && tempc->raw_type!=RT_F64 &&
tempc2->raw_type!=RT_F64) { tempc2->raw_type!=RT_F64) {
@@ -854,7 +855,7 @@ args.
case IC_ADD_EQU: case IC_ADD_EQU:
case IC_SUB_EQU: case IC_SUB_EQU:
break; break;
sub_switch_end: end:
if (tempi2->ic_class->raw_type==RT_F64) if (tempi2->ic_class->raw_type==RT_F64)
tempi->ic_flags=tempi->ic_flags|ICF_USE_F64; tempi->ic_flags=tempi->ic_flags|ICF_USE_F64;
if (tempc->raw_type==RT_F64) { if (tempc->raw_type==RT_F64) {
@@ -892,7 +893,7 @@ args.
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;
sub_switch_end: end:
break; break;
case IC_ENTER: case IC_ENTER:
case IC_LEAVE: case IC_LEAVE:
@@ -1257,7 +1258,7 @@ args.
LexExcept(cc,"Compiler Optimization Error at "); LexExcept(cc,"Compiler Optimization Error at ");
} }
if (intermediate_code_table[code].arg_cnt==IS_2_ARG) { if (intermediate_code_table[code].arg_cnt==IS_2_ARG) {
if (tempi_push->ic_precedence.u8[0]&~ASSOC_MASK==PREC_ASSIGN) if (tempi_push->ic_precedence&~ASSOC_MASK==PREC_ASSIGN)
OptFixSizeOf(tempi2,tempi_push,tempi1->ic_class-1); OptFixSizeOf(tempi2,tempi_push,tempi1->ic_class-1);
else { else {
OptFixSizeOf(tempi1,tempi_push,tempi2->ic_class); OptFixSizeOf(tempi1,tempi_push,tempi2->ic_class);
+10 -12
View File
@@ -74,7 +74,6 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets)
else else
tempc2=tempi->t.a2c; tempc2=tempi->t.a2c;
tempi->a2.type=MDF_STK+CmpRawType(tempc2); tempi->a2.type=MDF_STK+CmpRawType(tempc2);
tempi->a2.type_pointed_to=CmpRawTypePointed(tempc2);
tempi->ic_flags|=ICF_A2_WAS_STK; tempi->ic_flags|=ICF_A2_WAS_STK;
case IS_1_ARG: case IS_1_ARG:
tempi1=PrsPop(ps); tempi1=PrsPop(ps);
@@ -85,7 +84,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets)
else else
tempc1=tempi->t.a1c; tempc1=tempi->t.a1c;
tempi->a1.type=MDF_STK+CmpRawType(tempc1); tempi->a1.type=MDF_STK+CmpRawType(tempc1);
tempi->a1.type_pointed_to=CmpRawTypePointed(tempc1); tempi->a1_type_pointed_to=CmpRawTypePointed(tempc1);
tempi->ic_flags|=ICF_A1_WAS_STK; tempi->ic_flags|=ICF_A1_WAS_STK;
break; break;
case IS_0_ARG: //nobound switch case IS_0_ARG: //nobound switch
@@ -93,7 +92,6 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets)
} }
if (intermediate_code_table[code].res_cnt) { if (intermediate_code_table[code].res_cnt) {
tempi->r.type=MDF_STK+CmpRawType(tempc); tempi->r.type=MDF_STK+CmpRawType(tempc);
tempi->r.type_pointed_to=CmpRawTypePointed(tempc);
tempi->ic_flags|=ICF_R_WAS_STK; tempi->ic_flags|=ICF_R_WAS_STK;
PrsPush(ps,tempi); PrsPush(ps,tempi);
} }
@@ -119,13 +117,13 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets)
tempi->a1.reg=REG_RBP; tempi->a1.reg=REG_RBP;
break; break;
case IC_DEREF: case IC_DEREF:
tempi->a1.type_pointed_to=tempi->r.type.raw_type; tempi->a1_type_pointed_to=tempi->r.type.raw_type;
if (tempi1->ic_code==IC_LEA) { if (tempi1->ic_code==IC_LEA) {
tempi->ic_flags|=tempi1->ic_flags; tempi->ic_flags|=tempi1->ic_flags;
tempi->a1.reg=tempi1->a1.reg; tempi->a1.reg=tempi1->a1.reg;
tempi->a1.disp=tempi1->a1.disp; tempi->a1.disp=tempi1->a1.disp;
tempi->a1.type=MDF_DISP+tempi->r.type.raw_type; tempi->a1.type=MDF_DISP+tempi->r.type.raw_type;
tempi->a1.type_pointed_to=tempi->r.type_pointed_to; tempi->a1_type_pointed_to=CmpRawTypePointed(tempc);
tempi->ic_code=IC_MOV; tempi->ic_code=IC_MOV;
OptFree(tempi1); OptFree(tempi1);
if (tempi->a1.reg==REG_RBP) if (tempi->a1.reg==REG_RBP)
@@ -141,7 +139,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets)
tempi->a1.reg=tempil2->a1.reg; tempi->a1.reg=tempil2->a1.reg;
tempi->a1.disp=tempi->ic_data; tempi->a1.disp=tempi->ic_data;
tempi->a1.type=MDF_DISP+tempi->r.type.raw_type; tempi->a1.type=MDF_DISP+tempi->r.type.raw_type;
tempi->a1.type_pointed_to=tempi->r.type_pointed_to; tempi->a1_type_pointed_to=CmpRawTypePointed(tempc);
tempi->ic_code=IC_MOV; tempi->ic_code=IC_MOV;
OptFree(tempil2); OptFree(tempil2);
OptFree(tempil1); OptFree(tempil1);
@@ -152,7 +150,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets)
case IC__MM: case IC__MM:
case IC_PP_: case IC_PP_:
case IC_MM_: case IC_MM_:
tempi->r.type_pointed_to=CmpRawTypePointed(tempi->t.a1c); CmpMinTypePointed(tempi,CmpRawTypePointed(tempi->t.a1c));
case IC_DEREF_PP: case IC_DEREF_PP:
case IC_DEREF_MM: case IC_DEREF_MM:
if (tempi1->ic_code==IC_LEA && tempi1->a1.type&MDF_DISP && if (tempi1->ic_code==IC_LEA && tempi1->a1.type&MDF_DISP &&
@@ -163,7 +161,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets)
mv[i].score++; mv[i].score++;
break; break;
} }
tempi->a1.type_pointed_to=tempi->r.type.raw_type; tempi->a1_type_pointed_to=tempi->r.type.raw_type;
break; break;
case IC_MUL: case IC_MUL:
case IC_DIV: case IC_DIV:
@@ -183,7 +181,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets)
tempi->t.a1c=tempi->t.a2c; tempi->t.a1c=tempi->t.a2c;
tempi->ic_data=tempi1->ic_data; tempi->ic_data=tempi1->ic_data;
tempi->ic_code=IC_ADD_CONST; tempi->ic_code=IC_ADD_CONST;
tempi->a1.type_pointed_to=tempi->r.type.raw_type; tempi->a1_type_pointed_to=tempi->r.type.raw_type;
tempi->a2.type=MDF_NULL; tempi->a2.type=MDF_NULL;
OptFree(tempi1); OptFree(tempi1);
if (tempil2->ic_code==IC_REG && tempil2->a1.reg==REG_RBP) { if (tempil2->ic_code==IC_REG && tempil2->a1.reg==REG_RBP) {
@@ -245,8 +243,8 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets)
mv[i].score++; mv[i].score++;
break; break;
} }
tempi->a1.type_pointed_to=tempi->r.type.raw_type; tempi->a1_type_pointed_to=tempi->r.type.raw_type;
tempi->r.type_pointed_to=CmpRawTypePointed(tempi->t.a1c); CmpMinTypePointed(tempi,CmpRawTypePointed(tempi->t.a1c));
break; break;
case IC_RETURN_VAL: case IC_RETURN_VAL:
case IC_RETURN_VAL2: case IC_RETURN_VAL2:
@@ -369,7 +367,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets)
mv[i].score++; mv[i].score++;
break; break;
} }
tempi->a1.type_pointed_to=CmpRawType(tempc); tempi->a1_type_pointed_to=CmpRawType(tempc);
goto here1; goto here1;
case IC_BR_LESS: case IC_BR_LESS:
case IC_BR_GREATER_EQU: case IC_BR_GREATER_EQU:
+29 -48
View File
@@ -1,6 +1,6 @@
Bool OptIC4(CIntermediateCode *tempi) Bool OptIC4(CIntermediateCode *tempi)
{ {
I64 i,ty,pt,ty1,pt1; I64 i;
CIntermediateCode *tempil1,*tempil2; CIntermediateCode *tempil1,*tempil2;
if (tempi->ic_code<IC_IMM_I64) return FALSE; if (tempi->ic_code<IC_IMM_I64) return FALSE;
@@ -57,25 +57,9 @@ Bool OptIC4(CIntermediateCode *tempi)
else else
tempil1->ic_flags|=ICF_A2_TO_F64; tempil1->ic_flags|=ICF_A2_TO_F64;
} }
tempil1->a2.type=tempil2->a1.type&MDG_MASK+
ty=tempil1->a2.type.raw_type; MinI64(tempil1->a2.type.raw_type,
ty1=tempil2->a1.type.raw_type; MinI64(tempil2->r.type.raw_type,tempil2->a1.type.raw_type));
if (ty1 && ty1<ty)
ty=ty1;
ty1=tempil2->r.type.raw_type;
if (ty1 && ty1<ty)
ty=ty1;
tempil1->a2.type=tempil2->a1.type&MDG_MASK+ty;
pt=tempil1->a2.type_pointed_to;
pt1=tempil2->a1.type_pointed_to;
if (pt1 && pt1<pt && pt!=RT_F64)
pt=pt1;
pt1=tempil2->r.type_pointed_to;
if (pt1 && pt1<pt && pt!=RT_F64)
pt=pt1;
tempil1->a2.type_pointed_to=pt;
tempil1->a2.reg=tempil2->a1.reg; tempil1->a2.reg=tempil2->a1.reg;
tempil1->a2.disp=tempil2->a1.disp; tempil1->a2.disp=tempil2->a1.disp;
tempil1->ic_flags|=tempil2->ic_flags&ICG_NO_CVT_MASK; tempil1->ic_flags|=tempil2->ic_flags&ICG_NO_CVT_MASK;
@@ -97,25 +81,10 @@ Bool OptIC4(CIntermediateCode *tempi)
} else } else
tempil1->ic_flags|=ICF_A1_TO_F64; tempil1->ic_flags|=ICF_A1_TO_F64;
} }
tempil1->a1.type=tempil2->a1.type&MDG_MASK+
ty=tempil1->a1.type.raw_type; MinI64(tempil1->a1.type.raw_type,
ty1=tempil2->a1.type.raw_type; MinI64(tempil2->r.type.raw_type,tempil2->a1.type.raw_type));
if (ty1 && ty1<ty) CmpMinTypePointed(tempil1,tempil2->a1_type_pointed_to);
ty=ty1;
ty1=tempil2->r.type.raw_type;
if (ty1 && ty1<ty)
ty=ty1;
tempil1->a1.type=tempil2->a1.type&MDG_MASK+ty;
pt=tempil1->a1.type_pointed_to;
pt1=tempil2->a1.type_pointed_to;
if (pt1 && pt1<pt && pt!=RT_F64)
pt=pt1;
pt1=tempil2->r.type_pointed_to;
if (pt1 && pt1<pt && pt!=RT_F64)
pt=pt1;
tempil1->a1.type_pointed_to=pt;
tempil1->a1.reg=tempil2->a1.reg; tempil1->a1.reg=tempil2->a1.reg;
tempil1->a1.disp=tempil2->a1.disp; tempil1->a1.disp=tempil2->a1.disp;
tempil1->ic_flags|=tempil2->ic_flags&ICG_NO_CVT_MASK; tempil1->ic_flags|=tempil2->ic_flags&ICG_NO_CVT_MASK;
@@ -131,7 +100,7 @@ Bool OptIC4(CIntermediateCode *tempi)
!Bt(&cmp.non_ptr_vars_mask,tempil2->a1.reg)) { !Bt(&cmp.non_ptr_vars_mask,tempil2->a1.reg)) {
tempil1->ic_flags|=tempil2->ic_flags; tempil1->ic_flags|=tempil2->ic_flags;
tempil1->ic_code=IC_MOV; tempil1->ic_code=IC_MOV;
tempil1->a1.type=MDF_DISP+tempil1->a1.type_pointed_to; tempil1->a1.type=MDF_DISP+tempil1->a1_type_pointed_to;
tempil1->a1.reg=tempil2->a1.reg; tempil1->a1.reg=tempil2->a1.reg;
tempil1->a1.disp=i; tempil1->a1.disp=i;
OptSetNOP2(tempil2,-1); OptSetNOP2(tempil2,-1);
@@ -141,7 +110,7 @@ Bool OptIC4(CIntermediateCode *tempi)
if (tempil2->ic_code==IC_LEA && tempil1->a1.type&MDF_STK) { if (tempil2->ic_code==IC_LEA && tempil1->a1.type&MDF_STK) {
tempil1->ic_flags|=tempil2->ic_flags; tempil1->ic_flags|=tempil2->ic_flags;
tempil1->ic_code=IC_MOV; tempil1->ic_code=IC_MOV;
tempil1->a1.type=tempil2->a1.type&MDG_MASK+tempil1->a1.type_pointed_to; tempil1->a1.type=tempil2->a1.type&MDG_MASK+tempil1->a1_type_pointed_to;
tempil1->a1.reg=tempil2->a1.reg; tempil1->a1.reg=tempil2->a1.reg;
tempil1->a1.disp=tempil2->a1.disp; tempil1->a1.disp=tempil2->a1.disp;
OptFree(tempil2); OptFree(tempil2);
@@ -151,7 +120,7 @@ Bool OptIC4(CIntermediateCode *tempi)
} }
if (tempil1->ic_code==IC_DEREF) { if (tempil1->ic_code==IC_DEREF) {
if (tempil1->a1.type&MDF_REG) { if (tempil1->a1.type&MDF_REG) {
tempil1->a1.type=MDF_DISP+tempil1->a1.type_pointed_to; tempil1->a1.type=MDF_DISP+tempil1->a1_type_pointed_to;
tempil1->a1.disp=0; tempil1->a1.disp=0;
tempil1->ic_code=IC_MOV; tempil1->ic_code=IC_MOV;
return TRUE; return TRUE;
@@ -220,7 +189,7 @@ U0 OptPass4(CCmpCtrl *cc,COptReg *reg_offsets,I64 *_type)
case IC_IMM_F64: case IC_IMM_F64:
tempi->a1.type=MDF_IMM+RT_I64; tempi->a1.type=MDF_IMM+RT_I64;
tempi->a1.disp=tempi->ic_data; tempi->a1.disp=tempi->ic_data;
tempi->a1.type_pointed_to=RT_F64; tempi->a1_type_pointed_to=RT_F64;
tempi->ic_code=IC_MOV; tempi->ic_code=IC_MOV;
break; break;
case IC_MOV: case IC_MOV:
@@ -246,7 +215,8 @@ U0 OptPass4(CCmpCtrl *cc,COptReg *reg_offsets,I64 *_type)
OptFree(tempi1); OptFree(tempi1);
} }
} }
} else if ((tempi1->ic_code==IC_ABS_ADDR || tempi1->ic_code==IC_MOV && } else if ((tempi1->ic_code==IC_ABS_ADDR ||
tempi1->ic_code==IC_MOV &&
tempi1->a1.type==MDF_IMM+RT_I64 && tempi1->a1.type==MDF_IMM+RT_I64 &&
0<=tempi1->a1.disp<=MAX_I32)&& !(tempi1->ic_flags&ICF_NO_RIP)) { 0<=tempi1->a1.disp<=MAX_I32)&& !(tempi1->ic_flags&ICF_NO_RIP)) {
if (tempi1->ic_code==IC_ABS_ADDR) if (tempi1->ic_code==IC_ABS_ADDR)
@@ -255,7 +225,7 @@ U0 OptPass4(CCmpCtrl *cc,COptReg *reg_offsets,I64 *_type)
tempi->a1.disp=tempi1->a1.disp; tempi->a1.disp=tempi1->a1.disp;
tempi->ic_flags|=tempi1->ic_flags; tempi->ic_flags|=tempi1->ic_flags;
tempi->ic_code=IC_MOV; tempi->ic_code=IC_MOV;
tempi->a1.type=MDF_RIP_DISP32+tempi->a1.type_pointed_to; tempi->a1.type=MDF_RIP_DISP32+tempi->a1_type_pointed_to;
tempi->a1.reg=REG_RIP; tempi->a1.reg=REG_RIP;
OptFree(tempi1); OptFree(tempi1);
} }
@@ -298,7 +268,7 @@ p4_lea_gone:
tempi->a1.disp=tempi1->ic_data; tempi->a1.disp=tempi1->ic_data;
else else
tempi->a1.disp=tempi1->a1.disp; tempi->a1.disp=tempi1->a1.disp;
tempi->a1.type=MDF_RIP_DISP32+tempi->a1.type_pointed_to; tempi->a1.type=MDF_RIP_DISP32+tempi->a1_type_pointed_to;
tempi->a1.reg=REG_RIP; tempi->a1.reg=REG_RIP;
tempi->ic_flags|=ICF_BY_VAL; tempi->ic_flags|=ICF_BY_VAL;
OptFree(tempi1); OptFree(tempi1);
@@ -324,7 +294,7 @@ p4_sib:
tempi->ic_code=IC_LEA; tempi->ic_code=IC_LEA;
tempi->a1.type=MDF_SIB+RT_I64; tempi->a1.type=MDF_SIB+RT_I64;
tempi->a1.type_pointed_to=RT_I64; tempi->a1_type_pointed_to=RT_I64;
tempi->a2.type=MDF_NULL+tempi->a2.type.raw_type; tempi->a2.type=MDF_NULL+tempi->a2.type.raw_type;
} }
@@ -391,6 +361,7 @@ p4_sib:
case IC_SUB_EQU: case IC_SUB_EQU:
if (tempi1->ic_code==IC_LEA) { if (tempi1->ic_code==IC_LEA) {
if (tempi1->a1.type&(MDF_DISP|MDF_SIB)) { if (tempi1->a1.type&(MDF_DISP|MDF_SIB)) {
tempi2=tempi->next;
if (tempi1->a1.type&MDF_DISP && tempi1->a1.reg==REG_RBP) { if (tempi1->a1.type&MDF_DISP && tempi1->a1.reg==REG_RBP) {
i=CmpOffset2Reg(tempi1->a1.disp,reg_offsets); i=CmpOffset2Reg(tempi1->a1.disp,reg_offsets);
if (i>=0) { if (i>=0) {
@@ -407,12 +378,22 @@ p4_sib:
OptSetNOP2(tempi1); OptSetNOP2(tempi1);
} }
} else { } else {
tempi->a1.type=tempi1->a1.type&MDG_MASK+tempi->a1.type.raw_type;
tempi->ic_flags|=tempi1->ic_flags; tempi->ic_flags|=tempi1->ic_flags;
tempi->a1.type=tempi1->a1.type&MDG_MASK+tempi->a1.type.raw_type;
tempi->a1.reg=tempi1->a1.reg; tempi->a1.reg=tempi1->a1.reg;
tempi->a1.disp=tempi1->a1.disp; tempi->a1.disp=tempi1->a1.disp;
OptSetNOP2(tempi1); OptSetNOP2(tempi1);
} }
if (tempi->r.type&MDF_STK && tempi2->a2.type&MDF_STK &&
code!=IC_ASSIGN_PP && code!=IC_ASSIGN_MM) {
tempi->r.type=tempi->a1.type;
tempi->r.reg=tempi->a1.reg;
tempi->r.disp=tempi->a1.disp;
tempi2->a2.type=tempi->a1.type;
tempi2->a2.reg=tempi->a1.reg;
tempi2->a2.disp=tempi->a1.disp;
CmpMinTypePointed(tempi2,tempi->a1_type_pointed_to);
}
tempi->ic_flags|=ICF_BY_VAL; tempi->ic_flags|=ICF_BY_VAL;
} }
} else if ((tempi1->ic_code==IC_ABS_ADDR || } else if ((tempi1->ic_code==IC_ABS_ADDR ||
+8 -39
View File
@@ -1,7 +1,7 @@
U0 OptPass5(CCmpCtrl *cc) U0 OptPass5(CCmpCtrl *cc)
{ {
CIntermediateCode *tempi,*tempi1; CIntermediateCode *tempi,*tempi1;
I64 code,i,ty,pt,ty1,pt1; I64 code,i;
CPrsStk *ps=cc->ps; CPrsStk *ps=cc->ps;
ps->ptr=0; ps->ptr=0;
ps->ptr2=0; ps->ptr2=0;
@@ -40,25 +40,9 @@ U0 OptPass5(CCmpCtrl *cc)
else else
tempi->ic_flags|=ICF_A2_TO_F64; tempi->ic_flags|=ICF_A2_TO_F64;
} }
tempi->a2.type=tempi1->a1.type&MDG_MASK+
ty=tempi->a2.type.raw_type; MinI64(tempi->a2.type.raw_type,
ty1=tempi1->a1.type.raw_type; MinI64(tempi1->r.type.raw_type,tempi1->a1.type.raw_type));
if (ty1 && ty1<ty)
ty=ty1;
ty1=tempi1->r.type.raw_type;
if (ty1 && ty1<ty)
ty=ty1;
tempi->a2.type=tempi1->a1.type&MDG_MASK+ty;
pt=tempi->a2.type_pointed_to;
pt1=tempi1->a1.type_pointed_to;
if (pt1 && pt1<pt && pt!=RT_F64)
pt=pt1;
pt1=tempi1->r.type_pointed_to;
if (pt1 && pt1<pt && pt!=RT_F64)
pt=pt1;
tempi->a2.type_pointed_to=pt;
tempi->a2.reg=tempi1->a1.reg; tempi->a2.reg=tempi1->a1.reg;
tempi->a2.disp=tempi1->a1.disp; tempi->a2.disp=tempi1->a1.disp;
tempi->ic_flags|=tempi1->ic_flags&ICG_NO_CVT_MASK; tempi->ic_flags|=tempi1->ic_flags&ICG_NO_CVT_MASK;
@@ -83,25 +67,10 @@ U0 OptPass5(CCmpCtrl *cc)
} else } else
tempi->ic_flags|=ICF_A1_TO_F64; tempi->ic_flags|=ICF_A1_TO_F64;
} }
tempi->a1.type=tempi1->a1.type&MDG_MASK+
ty=tempi->a1.type.raw_type; MinI64(tempi->a1.type.raw_type,
ty1=tempi1->a1.type.raw_type; MinI64(tempi1->r.type.raw_type,tempi1->a1.type.raw_type));
if (ty1 && ty1<ty) CmpMinTypePointed(tempi,tempi1->a1_type_pointed_to);
ty=ty1;
ty1=tempi1->r.type.raw_type;
if (ty1 && ty1<ty)
ty=ty1;
tempi->a1.type=tempi1->a1.type&MDG_MASK+ty;
pt=tempi->a1.type_pointed_to;
pt1=tempi1->a1.type_pointed_to;
if (pt1 && pt1<pt && pt!=RT_F64)
pt=pt1;
pt1=tempi1->r.type_pointed_to;
if (pt1 && pt1<pt && pt!=RT_F64)
pt=pt1;
tempi->a1.type_pointed_to=pt;
tempi->a1.reg=tempi1->a1.reg; tempi->a1.reg=tempi1->a1.reg;
tempi->a1.disp=tempi1->a1.disp; tempi->a1.disp=tempi1->a1.disp;
tempi->ic_flags|=tempi1->ic_flags&ICG_NO_CVT_MASK; tempi->ic_flags|=tempi1->ic_flags&ICG_NO_CVT_MASK;
+3 -4
View File
@@ -10,14 +10,14 @@ Bool OptIC6(CIntermediateCode *tempi)
if (tempil1->a1.type&MDF_REG) { if (tempil1->a1.type&MDF_REG) {
tempi->ic_flags=tempi->ic_flags&~ICF_A1_WAS_STK | tempil1->ic_flags; tempi->ic_flags=tempi->ic_flags&~ICF_A1_WAS_STK | tempil1->ic_flags;
tempi->ic_code=IC_MOV; tempi->ic_code=IC_MOV;
tempi->a1.type=MDF_DISP+tempi->a1.type_pointed_to; tempi->a1.type=MDF_DISP+tempi->a1_type_pointed_to;
tempi->a1.reg=tempil1->a1.reg; tempi->a1.reg=tempil1->a1.reg;
tempi->a1.disp=tempil1->ic_data; tempi->a1.disp=tempil1->ic_data;
OptSetNOP2(tempil1,-1); OptSetNOP2(tempil1,-1);
} else { } else {
tempil1->ic_code=IC_MOV; tempil1->ic_code=IC_MOV;
tempi->ic_code=IC_MOV; tempi->ic_code=IC_MOV;
tempi->a1.type=MDF_DISP+tempi->a1.type_pointed_to; tempi->a1.type=MDF_DISP+tempi->a1_type_pointed_to;
tempi->a1.disp=tempil1->ic_data; tempi->a1.disp=tempil1->ic_data;
} }
return TRUE; return TRUE;
@@ -123,8 +123,7 @@ U0 OptPass6(CCmpCtrl *cc)
tempil2->ic_code!=IC_SET_RAX && tempil2->ic_code!=IC_SET_RAX &&
!(tempi->ic_flags&(ICF_A2_TO_F64|ICF_A2_TO_INT)) && !(tempi->ic_flags&(ICF_A2_TO_F64|ICF_A2_TO_INT)) &&
!(tempil2->ic_flags&(ICF_R_TO_F64|ICF_R_TO_INT))) { !(tempil2->ic_flags&(ICF_R_TO_F64|ICF_R_TO_INT))) {
tempil2->r.type =tempi->a1.type&MDG_MASK+tempi->a1.type_pointed_to; tempil2->r.type =tempi->a1.type&MDG_MASK+tempi->a1_type_pointed_to;
tempil2->r.type_pointed_to=tempi->a1.type_pointed_to;
tempil2->r.reg =tempi->a1.reg; tempil2->r.reg =tempi->a1.reg;
tempil2->r.disp =tempi->a1.disp; tempil2->r.disp =tempi->a1.disp;
tempil2->ic_flags=tempil2->ic_flags tempil2->ic_flags=tempil2->ic_flags
+15 -15
View File
@@ -8,7 +8,7 @@ cc->pass==10 is final pass, code is placed into buf.
*/ */
CIntermediateCode *tempi,*tempi_next; CIntermediateCode *tempi,*tempi_next;
I64 i,cnt,num_lines=cc->max_line+1-cc->min_line,ip=0,ip2; I64 i,cnt,num_lines=cc->max_line+1-cc->min_line,ip=0,ip2;
U8 *ptr; U8 *ptr,saved_a1_a2_r[3*sizeof(CICArg)];
CCodeMisc *lb; CCodeMisc *lb;
CAOT *tempaot; CAOT *tempaot;
CAOTAbsAddr *tempa; CAOTAbsAddr *tempa;
@@ -18,7 +18,6 @@ cc->pass==10 is final pass, code is placed into buf.
CDbgInfo *dbg_info; CDbgInfo *dbg_info;
CAOTCtrl *aotc=cc->aotc; CAOTCtrl *aotc=cc->aotc;
Bool short_jmp; Bool short_jmp;
CICArg saved_p123[3];
CHashClass *tempc; CHashClass *tempc;
CHashFun *tempf; CHashFun *tempf;
CHashGlblVar *tempg; CHashGlblVar *tempg;
@@ -42,8 +41,8 @@ cc->pass==10 is final pass, code is placed into buf.
cc->last_float_op_ic=NULL; cc->last_float_op_ic=NULL;
tempi=&cc->coc.coc_root; tempi=&cc->coc.coc_root;
tempi->ic_last_start=-1;
tempi->ic_cnt=0; tempi->ic_cnt=0;
tempi->ic_last_cnt=-1;
tempi=tempi->next; tempi=tempi->next;
while (tempi->ic_code) { while (tempi->ic_code) {
tempi_next=tempi->next; tempi_next=tempi->next;
@@ -60,9 +59,9 @@ cc->pass==10 is final pass, code is placed into buf.
~(ICF_PREV_DELETED|ICF_DONT_RESTORE)|ICF_CODE_FINAL; ~(ICF_PREV_DELETED|ICF_DONT_RESTORE)|ICF_CODE_FINAL;
if (cc->pass==7) if (cc->pass==7)
cc->dont_push_float=Btr(&tempi->ic_flags,ICf_DONT_PUSH_FLOAT0); cc->dont_push_float=Btr(&tempi->ic_flags,ICf_DONT_PUSH_FLOAT0);
MemCpy(saved_p123,&tempi->a1,3*sizeof(CICArg)); MemCpy(saved_a1_a2_r,&tempi->a1,3*sizeof(CICArg));
tempi->ic_cnt=0; tempi->ic_cnt=0;
tempi->ic_last_cnt=-1; tempi->ic_last_start=-1;
if (tempi->a2.type.mode) { if (tempi->a2.type.mode) {
if (tempi->ic_flags & ICF_A2_TO_F64) { if (tempi->ic_flags & ICF_A2_TO_F64) {
ICFCvt(cc,tempi,REG_RAX, ICFCvt(cc,tempi,REG_RAX,
@@ -93,9 +92,10 @@ cc->pass==10 is final pass, code is placed into buf.
tempi->a1.disp=0; tempi->a1.disp=0;
} }
} }
switch [tempi->ic_code] { switch [tempi->ic_code] {
sub_switch_start: start:
sub_switch_start: start:
case IC_ABS_ADDR: case IC_ABS_ADDR:
ICU16(tempi,0xB848); ICU16(tempi,0xB848);
ICU64(tempi,tempi->ic_data); ICU64(tempi,tempi->ic_data);
@@ -145,7 +145,7 @@ cc->pass==10 is final pass, code is placed into buf.
tempa->ip=ip2+tempi->ic_cnt-8; tempa->ip=ip2+tempi->ic_cnt-8;
} }
break; break;
sub_switch_end: end:
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
MDF_REG+RT_I64,REG_RAX,0,ip2); MDF_REG+RT_I64,REG_RAX,0,ip2);
break; break;
@@ -381,7 +381,7 @@ cc->pass==10 is final pass, code is placed into buf.
} }
} }
break; break;
sub_switch_end: end:
tempi->ic_flags&=~ICF_CODE_FINAL; tempi->ic_flags&=~ICF_CODE_FINAL;
break; break;
case IC_LEAVE: case IC_LEAVE:
@@ -613,14 +613,14 @@ cc->pass==10 is final pass, code is placed into buf.
ICAssignPostIncDec(tempi,SLASH_OP_DEC,ip2); ICAssignPostIncDec(tempi,SLASH_OP_DEC,ip2);
break; break;
case IC_SHL_EQU: case IC_SHL_EQU:
ICShiftEqu(tempi,tempi->a1.type_pointed_to, ICShiftEqu(tempi,tempi->a1_type_pointed_to,
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_EQU: case IC_SHR_EQU:
ICShiftEqu(tempi,tempi->a1.type_pointed_to, ICShiftEqu(tempi,tempi->a1_type_pointed_to,
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,
@@ -655,7 +655,7 @@ cc->pass==10 is final pass, code is placed into buf.
break; break;
case IC_ADD_EQU: case IC_ADD_EQU:
if (tempi->ic_flags&ICF_USE_INT) if (tempi->ic_flags&ICF_USE_INT)
ICAddSubEctEqu(tempi,tempi->a1.type_pointed_to, ICAddSubEctEqu(tempi,tempi->a1_type_pointed_to,
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,
@@ -665,7 +665,7 @@ cc->pass==10 is final pass, code is placed into buf.
break; break;
case IC_SUB_EQU: case IC_SUB_EQU:
if (tempi->ic_flags&ICF_USE_INT) if (tempi->ic_flags&ICF_USE_INT)
ICAddSubEctEqu(tempi,tempi->a1.type_pointed_to, ICAddSubEctEqu(tempi,tempi->a1_type_pointed_to,
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,
@@ -1069,7 +1069,7 @@ cc->pass==10 is final pass, code is placed into buf.
cnt=tempi->ic_cnt; cnt=tempi->ic_cnt;
if (tempi->ic_flags&ICF_DEL_PREV_INS) { if (tempi->ic_flags&ICF_DEL_PREV_INS) {
if (cc->pass>8) if (cc->pass>8)
cnt=tempi->ic_last_cnt; cnt=tempi->ic_last_start;
tempi->ic_flags&=~ICF_DEL_PREV_INS; tempi->ic_flags&=~ICF_DEL_PREV_INS;
} }
if (cnt && buf) if (cnt && buf)
@@ -1090,7 +1090,7 @@ op789A_skip_copy:
"$$FG$$"; "$$FG$$";
} }
if (!(tempi->ic_flags&(ICF_CODE_FINAL|ICF_DONT_RESTORE))) if (!(tempi->ic_flags&(ICF_CODE_FINAL|ICF_DONT_RESTORE)))
MemCpy(&tempi->a1,saved_p123,3*sizeof(CICArg)); MemCpy(&tempi->a1,saved_a1_a2_r,3*sizeof(CICArg));
ip+=cnt; ip+=cnt;
if (tempi->ic_cnt>=IC_BODY_SIZE && tempi->ic_code!=IC_ASM) if (tempi->ic_cnt>=IC_BODY_SIZE && tempi->ic_code!=IC_ASM)
throw('Compiler'); throw('Compiler');
+10 -10
View File
@@ -601,16 +601,16 @@ I64 PrsUnaryTerm(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,
*_local_var=NULL; *_local_var=NULL;
*paren_prec=PREC_NULL; *paren_prec=PREC_NULL;
switch (cc->token) { switch (cc->token) {
sub_switch_start: start:
if (PREC_UNARY_PRE>*max_prec) if (PREC_UNARY_PRE>*max_prec)
*max_prec=PREC_UNARY_PRE; *max_prec=PREC_UNARY_PRE;
*unary_pre_prec=PREC_UNARY_PRE; *unary_pre_prec=PREC_UNARY_PRE;
sub_switch_start: start:
case '~': i=IC_COM; break; case '~': i=IC_COM; break;
case '!': i=IC_NOT; break; case '!': i=IC_NOT; break;
case '-': i=IC_UNARY_MINUS; break; case '-': i=IC_UNARY_MINUS; break;
case '*': i=IC_DEREF; break; case '*': i=IC_DEREF; break;
sub_switch_end: end:
Lex(cc); //Skip op Lex(cc); //Skip op
break; break;
case '&': case '&':
@@ -665,12 +665,12 @@ I64 PrsUnaryTerm(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,
} }
i=IC_ADDR; i=IC_ADDR;
break; break;
sub_switch_end: end:
PrsPush(ps,tempc); PrsPush(ps,tempc);
PrsPush(ps,PREC_UNARY_PRE<<16+i); PrsPush(ps,PREC_UNARY_PRE<<16+i);
return PE_UNARY_TERM2; return PE_UNARY_TERM2;
sub_switch_start: start:
case TK_I64: case TK_I64:
case TK_CHAR_CONST: case TK_CHAR_CONST:
case TK_INS_BIN_SIZE: case TK_INS_BIN_SIZE:
@@ -714,7 +714,7 @@ I64 PrsUnaryTerm(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,
} }
Lex(cc); Lex(cc);
break; break;
sub_switch_end: end:
if (PREC_TERM>*max_prec) if (PREC_TERM>*max_prec)
*max_prec=PREC_TERM; *max_prec=PREC_TERM;
return PE_MAYBE_MODIFIERS; return PE_MAYBE_MODIFIERS;
@@ -741,11 +741,11 @@ I64 PrsUnaryTerm(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,
return PE_UNARY_MODIFIERS; return PE_UNARY_MODIFIERS;
} }
sub_switch_start: start:
case '+': break; case '+': break;
case TK_PLUS_PLUS: cc->flags|=CCF_PREINC; break; case TK_PLUS_PLUS: cc->flags|=CCF_PREINC; break;
case TK_MINUS_MINUS: cc->flags|=CCF_PREDEC; break; case TK_MINUS_MINUS: cc->flags|=CCF_PREDEC; break;
sub_switch_end: end:
if (PREC_UNARY_PRE>*max_prec) if (PREC_UNARY_PRE>*max_prec)
*max_prec=PREC_UNARY_PRE; *max_prec=PREC_UNARY_PRE;
*unary_pre_prec=PREC_UNARY_PRE; *unary_pre_prec=PREC_UNARY_PRE;
@@ -1091,14 +1091,14 @@ I64 PrsUnaryModifier(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,
ICAdd(cc,IC_ADD,0,tempc); ICAdd(cc,IC_ADD,0,tempc);
cc->flags&=~(CCF_RAX|CCF_ARRAY); cc->flags&=~(CCF_RAX|CCF_ARRAY);
return PE_UNARY_MODIFIERS; return PE_UNARY_MODIFIERS;
sub_switch_start: start:
case TK_PLUS_PLUS: case TK_PLUS_PLUS:
cc->flags|=CCF_POSTINC; cc->flags|=CCF_POSTINC;
break; break;
case TK_MINUS_MINUS: case TK_MINUS_MINUS:
cc->flags|=CCF_POSTDEC; cc->flags|=CCF_POSTDEC;
break; break;
sub_switch_end: end:
if (!*unary_post_prec) if (!*unary_post_prec)
*unary_post_prec=PREC_UNARY_POST; *unary_post_prec=PREC_UNARY_POST;
Lex(cc); Lex(cc);
+18 -18
View File
@@ -186,7 +186,7 @@ U0 PrsFun(CCmpCtrl *cc,CHashClass *temp_return,U8 *name,I64 fsp_flags)
while (tempm) { while (tempm) {
if (tempm->flags & MLF_NO_UNUSED_WARN) { if (tempm->flags & MLF_NO_UNUSED_WARN) {
if (tempm->use_cnt>1&&StrCmp(tempm->str,"_anon_")) if (tempm->use_cnt>1&&StrCmp(tempm->str,"_anon_"))
PrintWarn("Unneeded nounusedwarn\n $$LK,\"FL:%s,%d\"$$ '%s' in '%s'\n", PrintWarn("Unneeded no_warn\n $$LK,\"FL:%s,%d\"$$ '%s' in '%s'\n",
cc->lex_include_stk->full_name,cc->lex_include_stk->line_num, cc->lex_include_stk->full_name,cc->lex_include_stk->line_num,
tempm->str,cc->htc.fun->str); tempm->str,cc->htc.fun->str);
} else if (!tempm->use_cnt && GetOption(OPTf_WARN_UNUSED_VAR)) } else if (!tempm->use_cnt && GetOption(OPTf_WARN_UNUSED_VAR))
@@ -618,9 +618,9 @@ U0 PrsSwitch(CCmpCtrl *cc,I64 try_cnt)
while (cc->token && cc->token!='}') { while (cc->token && cc->token!='}') {
sw_cont: sw_cont:
switch (PrsKeyWord(cc)) { switch (PrsKeyWord(cc)) {
case KW_SUB_SWITCH_END: case KW_END:
goto sw_sub_end; goto sw_sub_end;
case KW_SUB_SWITCH_START: case KW_START:
if (Lex(cc)==':') if (Lex(cc)==':')
Lex(cc); Lex(cc);
else else
@@ -636,10 +636,10 @@ sw_cont:
tempi_start=ICAdd(cc,IC_LABEL,tempss->lb_start,0); tempi_start=ICAdd(cc,IC_LABEL,tempss->lb_start,0);
while (cc->token && cc->token!='}') { while (cc->token && cc->token!='}') {
switch (PrsKeyWord(cc)) { switch (PrsKeyWord(cc)) {
case KW_SUB_SWITCH_END: case KW_END:
OptFree(tempi_jmp); OptFree(tempi_jmp);
goto sw_sub_end; goto sw_sub_end;
case KW_SUB_SWITCH_START: case KW_START:
case KW_CASE: case KW_CASE:
case KW_DFT: case KW_DFT:
if (cc->coc.coc_root.last==tempi_start) { if (cc->coc.coc_root.last==tempi_start) {
@@ -749,8 +749,8 @@ sw_sub_end:
} else { } else {
QueRem(tempss); QueRem(tempss);
Free(tempss); Free(tempss);
if (PrsKeyWord(cc)!=KW_SUB_SWITCH_END) if (PrsKeyWord(cc)!=KW_END)
LexExcept(cc,"Missing 'sub_switch_end' at "); LexExcept(cc,"Missing 'end' at ");
if (Lex(cc)==':') if (Lex(cc)==':')
Lex(cc); Lex(cc);
else else
@@ -784,7 +784,7 @@ sw_sub_end:
mc_jt->range=range; mc_jt->range=range;
} }
U0 PrsNoUnusedWarn(CCmpCtrl *cc) U0 PrsNoWarn(CCmpCtrl *cc)
{ {
CMemberLst *tempm; CMemberLst *tempm;
while (cc->token==TK_IDENT) { while (cc->token==TK_IDENT) {
@@ -936,7 +936,7 @@ Bool PrsStmt(CCmpCtrl *cc,I64 try_cnt=0,
case KW_NUM_KEYWORDS-1: //nobound switch case KW_NUM_KEYWORDS-1: //nobound switch
default: //A keyword that is not valid here is just a symbol. default: //A keyword that is not valid here is just a symbol.
goto sm_not_keyword_afterall; goto sm_not_keyword_afterall;
sub_switch_start: start:
case KW_ASM: case KW_ASM:
if (cc->htc.fun) { if (cc->htc.fun) {
if (tempaot=CmpJoin(cc,CMPF_ASM_BLK)) if (tempaot=CmpJoin(cc,CMPF_ASM_BLK))
@@ -956,7 +956,7 @@ Bool PrsStmt(CCmpCtrl *cc,I64 try_cnt=0,
fsp_flags=FSF_ASM; fsp_flags=FSF_ASM;
} }
break; break;
sub_switch_start: start:
Lex(cc); Lex(cc);
case KW_LOCK: case KW_LOCK:
cc->lock_cnt++; cc->lock_cnt++;
@@ -981,11 +981,11 @@ Bool PrsStmt(CCmpCtrl *cc,I64 try_cnt=0,
case KW_SWITCH: case KW_SWITCH:
PrsSwitch(cc,try_cnt); PrsSwitch(cc,try_cnt);
break; break;
sub_switch_end: end:
sub_switch_end: end:
if (cc->token!=',') goto sm_done; if (cc->token!=',') goto sm_done;
break; break;
sub_switch_start: start:
if (cc->htc.fun) if (cc->htc.fun)
LexExcept(cc,"Not allowed in fun"); LexExcept(cc,"Not allowed in fun");
Lex(cc); Lex(cc);
@@ -1055,10 +1055,10 @@ sm_import:
Lex(cc); Lex(cc);
PrsGlblVarLst(cc,PRS0__INTERN|PRS1_NULL,tempex,i,fsp_flags); PrsGlblVarLst(cc,PRS0__INTERN|PRS1_NULL,tempex,i,fsp_flags);
break; break;
sub_switch_end: end:
fsp_flags&=FSF_ASM; fsp_flags&=FSF_ASM;
break; break;
sub_switch_start: start:
case KW_STATIC: case KW_STATIC:
fsp_flags=FSF_STATIC|fsp_flags&FSF_ASM; fsp_flags=FSF_STATIC|fsp_flags&FSF_ASM;
break; break;
@@ -1078,7 +1078,7 @@ sm_import:
case KW_PUBLIC: case KW_PUBLIC:
fsp_flags=FSF_PUBLIC|fsp_flags&(FSG_FUN_FLAGS2|FSF_ASM); fsp_flags=FSF_PUBLIC|fsp_flags&(FSG_FUN_FLAGS2|FSF_ASM);
break; break;
sub_switch_end: end:
Lex(cc); Lex(cc);
break; break;
case KW_RETURN: case KW_RETURN:
@@ -1131,9 +1131,9 @@ sm_import:
LexExcept(cc,"'break' not allowed\n"); LexExcept(cc,"'break' not allowed\n");
ICAdd(cc,IC_JMP,lb_break,0); ICAdd(cc,IC_JMP,lb_break,0);
goto sm_semicolon; goto sm_semicolon;
case KW_NOUNUSEDWARN: case KW_NO_WARN:
Lex(cc); Lex(cc);
PrsNoUnusedWarn(cc); PrsNoWarn(cc);
goto sm_semicolon; goto sm_semicolon;
case KW_UNION: case KW_UNION:
case KW_CLASS: case KW_CLASS:
Loaded 100 of 258 files, more files were not shown because too many files have changed in this diff. Show more