TempleOSCDV4.10.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:47:44 +02:00
1 parent c5954d3371
commit 9206246147
181 files changed
+4468 -4313

No files matched your search

Binary file not shown.
+21 -21
View File
@@ -30,7 +30,7 @@ class CFMUncollapsedLst
CFMUncollapsedLst *FMCollectUncollapsedLst(CDoc *doc) CFMUncollapsedLst *FMCollectUncollapsedLst(CDoc *doc)
{ {
CDocEntry *doc_e=doc->root.next; CDocEntry *doc_e=doc->head.next;
CFMUncollapsedLst *res=NULL,*tempc; CFMUncollapsedLst *res=NULL,*tempc;
CDirEntry *tempde; CDirEntry *tempde;
while (doc_e!=doc) { while (doc_e!=doc) {
@@ -52,7 +52,7 @@ CFMUncollapsedLst *FMCollectUncollapsedLst(CDoc *doc)
U0 FMMarkUncollapsed(CDoc *doc,CFMUncollapsedLst *tempc, U0 FMMarkUncollapsed(CDoc *doc,CFMUncollapsedLst *tempc,
U8 *cur_entry,U8 *next_entry) U8 *cur_entry,U8 *next_entry)
{ {
CDocEntry *doc_e=doc->root.next; CDocEntry *doc_e=doc->head.next;
CFMUncollapsedLst *tempc1; CFMUncollapsedLst *tempc1;
CDirEntry *tempde; CDirEntry *tempde;
while (doc_e!=doc) { while (doc_e!=doc) {
@@ -112,7 +112,7 @@ U0 FMDelUncollapsedLst(CFMUncollapsedLst *tempc)
} }
} }
CDirEntry *FMRebuildDocDrv(U8 drv_let,CDoc *doc,CDirEntry **_root,Bool init) CDirEntry *FMRebuildDocDrv(U8 drv_let,CDoc *doc,CDirEntry **_head,Bool init)
{ {
CDirEntry *tempde,*tempde1; CDirEntry *tempde,*tempde1;
U8 *st; U8 *st;
@@ -126,8 +126,8 @@ CDirEntry *FMRebuildDocDrv(U8 drv_let,CDoc *doc,CDirEntry **_root,Bool init)
tempde1=NULL; tempde1=NULL;
Free(st); Free(st);
tempde->user_data=DocPrint(doc,"$$TR,\"%s\",U=0x%X$$",tempde->full_name,tempde); tempde->user_data=DocPrint(doc,"$$TR,\"%s\",U=0x%X$$",tempde->full_name,tempde);
tempde->next=*_root; tempde->next=*_head;
*_root=tempde; *_head=tempde;
DocPrint(doc,"\n$$ID,+2$$"); DocPrint(doc,"\n$$ID,+2$$");
DocBottom(doc); DocBottom(doc);
if (init) { if (init) {
@@ -141,7 +141,7 @@ CDirEntry *FMRebuildDocDrv(U8 drv_let,CDoc *doc,CDirEntry **_root,Bool init)
return tempde; return tempde;
} }
U0 FMRebuildDoc(CDoc **_doc,CDirEntry **_root,I64 mode) U0 FMRebuildDoc(CDoc **_doc,CDirEntry **_head,I64 mode)
{ {
CDrv *dv; CDrv *dv;
I64 i; I64 i;
@@ -192,9 +192,9 @@ U0 FMRebuildDoc(CDoc **_doc,CDirEntry **_root,I64 mode)
tempc=FMCollectUncollapsedLst(doc); tempc=FMCollectUncollapsedLst(doc);
DocDel(doc); DocDel(doc);
} }
if (*_root) { if (*_head) {
DirTreeDel(*_root); DirTreeDel(*_head);
*_root=NULL; *_head=NULL;
} }
doc=DocNew; doc=DocNew;
doc->desc='FileMan'; doc->desc='FileMan';
@@ -219,13 +219,13 @@ U0 FMRebuildDoc(CDoc **_doc,CDirEntry **_root,I64 mode)
dv=&blkdev.drvs[i]; dv=&blkdev.drvs[i];
if (dv->bd->type==BDT_ATAPI) { if (dv->bd->type==BDT_ATAPI) {
if (dv->bd->flags&BDF_INITIALIZED) if (dv->bd->flags&BDF_INITIALIZED)
tempde=FMRebuildDocDrv(Drv2Let(dv),doc,_root,TRUE); tempde=FMRebuildDocDrv(Drv2Let(dv),doc,_head,TRUE);
else { else {
tempde=FMRebuildDocDrv(Drv2Let(dv),doc,_root,FALSE); tempde=FMRebuildDocDrv(Drv2Let(dv),doc,_head,FALSE);
tempde->flags|=DEF_NOT_INITIALIZED; tempde->flags|=DEF_NOT_INITIALIZED;
} }
} else if (dv->fs_type==FSt_REDSEA || dv->fs_type==FSt_FAT32) } else if (dv->fs_type==FSt_REDSEA || dv->fs_type==FSt_FAT32)
FMRebuildDocDrv(Drv2Let(dv),doc,_root,TRUE); FMRebuildDocDrv(Drv2Let(dv),doc,_head,TRUE);
} }
DocTop(doc); DocTop(doc);
FMMarkUncollapsed(doc,tempc,cur_entry,next_entry); FMMarkUncollapsed(doc,tempc,cur_entry,next_entry);
@@ -437,7 +437,7 @@ U0 FMCopy(CDoc *doc)
CDocEntry *doc_ce=doc->cur_entry,*doc_e; CDocEntry *doc_ce=doc->cur_entry,*doc_e;
CDirEntry *tempde,*tempde1=NULL,*tempde2; CDirEntry *tempde,*tempde1=NULL,*tempde2;
Bool unlock_doc2=DocLock(doc2); Bool unlock_doc2=DocLock(doc2);
doc_e=doc2->root.next; doc_e=doc2->head.next;
tempde1=doc_ce->user_data; tempde1=doc_ce->user_data;
if (doc_ce->type_u8==DOCT_MENU_VAL) if (doc_ce->type_u8==DOCT_MENU_VAL)
@@ -580,7 +580,7 @@ U0 FMFinalScreenUpdate(CDC *dc)
public U8 *FileMgr(I64 mode=FM_NORMAL,CTask *mem_task=NULL) public U8 *FileMgr(I64 mode=FM_NORMAL,CTask *mem_task=NULL)
{//File manager. Also, used to choose files and dirs. {//File manager. Also, used to choose files and dirs.
CDirEntry *root=NULL,*tempde,*tempde1,*tempde2; CDirEntry *head=NULL,*tempde,*tempde1,*tempde2;
I64 sc,ch,a1,a2,msg_code; I64 sc,ch,a1,a2,msg_code;
CDoc *doc=NULL,*old_put_doc=DocPut,*old_display_doc=DocDisplay; CDoc *doc=NULL,*old_put_doc=DocPut,*old_display_doc=DocDisplay;
U8 *res=NULL,*st,*st2,*old_cur_dir=CurDir; U8 *res=NULL,*st,*st2,*old_cur_dir=CurDir;
@@ -590,8 +590,8 @@ public U8 *FileMgr(I64 mode=FM_NORMAL,CTask *mem_task=NULL)
SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$ SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$
fp_old_final_screen_update=gr.fp_final_screen_update; fp_old_final_screen_update=gr.fp_final_screen_update;
MenuFilePush("::/Doc/FileMgrPullDown.TXT"); MenuFilePush("::/Doc/FileMgrPullDown.TXT");
FMRebuildDoc(&doc,&root,mode); FMRebuildDoc(&doc,&head,mode);
if (tempde1=Cd2DirEntry(root,old_cur_dir)) if (tempde1=Cd2DirEntry(head,old_cur_dir))
doc->cur_entry=tempde1->user_data; doc->cur_entry=tempde1->user_data;
while (tempde1) { while (tempde1) {
if (tempde1->attr&RS_ATTR_DIR) if (tempde1->attr&RS_ATTR_DIR)
@@ -636,7 +636,7 @@ public U8 *FileMgr(I64 mode=FM_NORMAL,CTask *mem_task=NULL)
Silent; Silent;
Move(tempde->full_name,st2); Move(tempde->full_name,st2);
Silent(OFF); Silent(OFF);
FMRebuildDoc(&doc,&root,mode); FMRebuildDoc(&doc,&head,mode);
} else if (st2 && doc_ce->type_u8==DOCT_TREE) { } else if (st2 && doc_ce->type_u8==DOCT_TREE) {
tempde=doc_ce->user_data; tempde=doc_ce->user_data;
okay=TRUE; okay=TRUE;
@@ -659,7 +659,7 @@ public U8 *FileMgr(I64 mode=FM_NORMAL,CTask *mem_task=NULL)
CopyTree(tempde->full_name,st); CopyTree(tempde->full_name,st);
DelTree(tempde->full_name); DelTree(tempde->full_name);
Silent(OFF); Silent(OFF);
FMRebuildDoc(&doc,&root,mode); FMRebuildDoc(&doc,&head,mode);
} }
Free(st); Free(st);
} }
@@ -721,7 +721,7 @@ public U8 *FileMgr(I64 mode=FM_NORMAL,CTask *mem_task=NULL)
FMFmtDrv(doc); FMFmtDrv(doc);
break; break;
end: end:
FMRebuildDoc(&doc,&root,mode); FMRebuildDoc(&doc,&head,mode);
break; break;
case CH_SHIFT_ESC: case CH_SHIFT_ESC:
break; break;
@@ -757,7 +757,7 @@ public U8 *FileMgr(I64 mode=FM_NORMAL,CTask *mem_task=NULL)
default: default:
if (sc.u8[0]==SC_INS && sc&SCF_SHIFT && !(sc&SCF_CTRL)) { if (sc.u8[0]==SC_INS && sc&SCF_SHIFT && !(sc&SCF_CTRL)) {
FMCopy(doc); FMCopy(doc);
FMRebuildDoc(&doc,&root,mode); FMRebuildDoc(&doc,&head,mode);
} else if (sc.u8[0]==SC_F5) { } else if (sc.u8[0]==SC_F5) {
if (doc->cur_entry->type_u8==DOCT_MENU_VAL) { if (doc->cur_entry->type_u8==DOCT_MENU_VAL) {
tempde=doc->cur_entry->user_data; tempde=doc->cur_entry->user_data;
@@ -783,7 +783,7 @@ fm_regular_key:
Fs->display_doc=old_display_doc; Fs->display_doc=old_display_doc;
SettingsPop; SettingsPop;
DocDel(doc); DocDel(doc);
DirTreeDel(root); DirTreeDel(head);
Cd(old_cur_dir); Cd(old_cur_dir);
Free(old_cur_dir); Free(old_cur_dir);
if (mode!=FM_NORMAL && !res) if (mode!=FM_NORMAL && !res)
+4 -4
View File
@@ -4,7 +4,7 @@ I64 Mount2(U8 boot_drv_let,CDoc *_doc,Bool repartition)
I64 cnt,res=0,num_hints,drv_let,type,unit; I64 cnt,res=0,num_hints,drv_let,type,unit;
U8 blks_buf[STR_LEN],addr_buf[STR_LEN],base0_buf[STR_LEN],base1_buf[STR_LEN], U8 blks_buf[STR_LEN],addr_buf[STR_LEN],base0_buf[STR_LEN],base1_buf[STR_LEN],
*filename=NULL,*filename2=NULL; *filename=NULL,*filename2=NULL;
CATARep *root=NULL,*tempha; CATARep *head=NULL,*tempha;
Bool one_drv,make_free; Bool one_drv,make_free;
CDoc *doc; CDoc *doc;
boot_drv_let=ToUpper(boot_drv_let); boot_drv_let=ToUpper(boot_drv_let);
@@ -45,7 +45,7 @@ I64 Mount2(U8 boot_drv_let,CDoc *_doc,Bool repartition)
break; break;
case BDT_ATA: case BDT_ATA:
case BDT_ATAPI: case BDT_ATAPI:
num_hints=ATARep(,,&root); num_hints=ATARep(,,&head);
if (type==BDT_ATAPI && boot_drv_let) if (type==BDT_ATAPI && boot_drv_let)
"<ENTER> to use booted CD/DVD\n"; //Only $LK,"::/Kernel/KCfg.CPP"$ "<ENTER> to use booted CD/DVD\n"; //Only $LK,"::/Kernel/KCfg.CPP"$
do { do {
@@ -57,7 +57,7 @@ I64 Mount2(U8 boot_drv_let,CDoc *_doc,Bool repartition)
GetS(base0_buf,STR_LEN); GetS(base0_buf,STR_LEN);
} while (!Str2I64(base0_buf) && (type!=BDT_ATAPI || !boot_drv_let)); } while (!Str2I64(base0_buf) && (type!=BDT_ATAPI || !boot_drv_let));
if (1<=Str2I64(base0_buf)<=num_hints) { if (1<=Str2I64(base0_buf)<=num_hints) {
tempha=ATARepFind(root,Str2I64(base0_buf)); tempha=ATARepFind(head,Str2I64(base0_buf));
StrPrint(base0_buf,"0x%X",tempha->base0); StrPrint(base0_buf,"0x%X",tempha->base0);
StrPrint(base1_buf,"0x%X",tempha->base1); StrPrint(base1_buf,"0x%X",tempha->base1);
unit=tempha->unit; unit=tempha->unit;
@@ -75,7 +75,7 @@ I64 Mount2(U8 boot_drv_let,CDoc *_doc,Bool repartition)
} while (!(0<=unit<=1)); } while (!(0<=unit<=1));
'\n'; '\n';
} }
LinkedLstDel(root); LinkedLstDel(head);
break; break;
} }
DocPrint(doc,"bd=BlkDevNextFreeSlot(\'%C\',%d);bd->unit=%d;\n", DocPrint(doc,"bd=BlkDevNextFreeSlot(\'%C\',%d);bd->unit=%d;\n",
+11 -11
View File
@@ -18,7 +18,7 @@ public I64 PrtDsk(U8 drv_let=0)
//drv_let=0 means add new drive that //drv_let=0 means add new drive that
//is not already mounted. //is not already mounted.
CBlkDev *bd; CBlkDev *bd;
CPlannedDrv root,*temppp; CPlannedDrv head,*temppp;
CMasterBoot mbr; CMasterBoot mbr;
Bool pri=TRUE; Bool pri=TRUE;
I64 ext_base,drv_let2,pri_cnt=0, I64 ext_base,drv_let2,pri_cnt=0,
@@ -45,7 +45,7 @@ public I64 PrtDsk(U8 drv_let=0)
return 0; return 0;
drv_dsk_dsk_size=bd->max_blk+1; drv_dsk_dsk_size=bd->max_blk+1;
QueInit(&root); QueInit(&head);
drv_let2=bd->first_drv_let; drv_let2=bd->first_drv_let;
remaining=FloorU64(bd->max_blk+1,ROUND_DRV_TO); remaining=FloorU64(bd->max_blk+1,ROUND_DRV_TO);
while (FloorU64(remaining,ROUND_DRV_TO)>=ROUND_DRV_TO) { while (FloorU64(remaining,ROUND_DRV_TO)>=ROUND_DRV_TO) {
@@ -68,15 +68,15 @@ public I64 PrtDsk(U8 drv_let=0)
temppp->size=CeilU64(GetI64("Size in Blocks :", temppp->size=CeilU64(GetI64("Size in Blocks :",
remaining-DRV_HEADER)+DRV_HEADER,ROUND_DRV_TO); remaining-DRV_HEADER)+DRV_HEADER,ROUND_DRV_TO);
} while (!(ROUND_DRV_TO<=temppp->size<=FloorU64(remaining,ROUND_DRV_TO))); } while (!(ROUND_DRV_TO<=temppp->size<=FloorU64(remaining,ROUND_DRV_TO)));
QueIns(temppp,root.last); QueIns(temppp,head.last);
remaining-=temppp->size; remaining-=temppp->size;
drv_let2++; drv_let2++;
} }
"\n\n!!! Repartition Drive !!!\n\n"; "\n\n!!! Repartition Drive !!!\n\n";
temppp=root.next; temppp=head.next;
drv_let2=bd->first_drv_let; drv_let2=bd->first_drv_let;
while (temppp!=&root) { while (temppp!=&head) {
"Drive %C:%08X ",drv_let2,temppp->size; "Drive %C:%08X ",drv_let2,temppp->size;
if (temppp->pri) if (temppp->pri)
"Primary\n"; "Primary\n";
@@ -89,7 +89,7 @@ public I64 PrtDsk(U8 drv_let=0)
goto pd_done; goto pd_done;
remaining=FloorU64(bd->max_blk+1,ROUND_DRV_TO)-ROUND_DRV_TO; remaining=FloorU64(bd->max_blk+1,ROUND_DRV_TO)-ROUND_DRV_TO;
temppp=root.next; temppp=head.next;
MemSet(&mbr,0,BLK_SIZE); MemSet(&mbr,0,BLK_SIZE);
mbr.signature=0xAA55; mbr.signature=0xAA55;
offset=0; offset=0;
@@ -107,7 +107,7 @@ public I64 PrtDsk(U8 drv_let=0)
temppp=temppp->next; temppp=temppp->next;
} }
if (!i) i++; if (!i) i++;
if (temppp!=&root) { if (temppp!=&head) {
mbr.p[i].active=0x80; mbr.p[i].active=0x80;
mbr.p[i].start_head=0; mbr.p[i].start_head=0;
mbr.p[i].start_cyl=0x101; mbr.p[i].start_cyl=0x101;
@@ -120,7 +120,7 @@ public I64 PrtDsk(U8 drv_let=0)
} }
ATAWriteBlks(bd,&mbr,0,1); ATAWriteBlks(bd,&mbr,0,1);
while (temppp!=&root) { while (temppp!=&head) {
start_offset=offset; start_offset=offset;
MemSet(&mbr,0,BLK_SIZE); MemSet(&mbr,0,BLK_SIZE);
mbr.signature=0xAA55; mbr.signature=0xAA55;
@@ -135,7 +135,7 @@ public I64 PrtDsk(U8 drv_let=0)
mbr.p[0].size=temppp->size-DRV_HEADER; mbr.p[0].size=temppp->size-DRV_HEADER;
offset+=temppp->size; offset+=temppp->size;
temppp=temppp->next; temppp=temppp->next;
if (temppp!=&root) { if (temppp!=&head) {
mbr.p[1].active=0x80; mbr.p[1].active=0x80;
mbr.p[1].start_head=0; mbr.p[1].start_head=0;
mbr.p[1].start_cyl=0x101; mbr.p[1].start_cyl=0x101;
@@ -154,8 +154,8 @@ public I64 PrtDsk(U8 drv_let=0)
Fmt(i,,FALSE); Fmt(i,,FALSE);
pd_done: pd_done:
while (root.next!=&root) { while (head.next!=&head) {
temppp=root.next; temppp=head.next;
QueRem(temppp); QueRem(temppp);
Free(temppp); Free(temppp);
} }
+3 -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","121,410"); $ID,4$DefinePrint("DD_TEMPLEOS_LOC","121,488");
DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","81,046"); DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","81,126");
$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;
@@ -30,6 +30,7 @@ $ID,-4$
DefinePrint("DD_SYS_HEAP_BASE","%08X",sys_heap_base); DefinePrint("DD_SYS_HEAP_BASE","%08X",sys_heap_base);
DefinePrint("DD_SYS_HEAP_LIMIT","%08X",sys_heap_limit); DefinePrint("DD_SYS_HEAP_LIMIT","%08X",sys_heap_limit);
DefinePrint("DD_MEM_MIN_MEG","%d Meg",MEM_MIN_MEG); DefinePrint("DD_MEM_MIN_MEG","%d Meg",MEM_MIN_MEG);
DefinePrint("DD_UNCACHED_ALIAS","%010X",dev.uncached_alias);
DefinePrint("DD_MEM_MAPPED_SPACE_GIG","%d Gig",MEM_MAPPED_SPACE/0x40000000); DefinePrint("DD_MEM_MAPPED_SPACE_GIG","%d Gig",MEM_MAPPED_SPACE/0x40000000);
DefinePrint("DD_MEM_MAPPED_SPACE_END","%010X",MEM_MAPPED_SPACE-1); DefinePrint("DD_MEM_MAPPED_SPACE_END","%010X",MEM_MAPPED_SPACE-1);
DefinePrint("DD_JIFFY_HZ","%d Hz",JIFFY_FREQ); DefinePrint("DD_JIFFY_HZ","%d Hz",JIFFY_FREQ);
+3 -3
View File
@@ -248,7 +248,7 @@ U8 *idx=NULL,CDoc *doc=NULL)
last_idx=StrNew(cur_idx); last_idx=StrNew(cur_idx);
if (i) if (i)
DocPrint(doc,"\n\n"); DocPrint(doc,"\n\n");
DocPrint(doc,"$$WW,0$$$$PURPLE$$$$TX+CX,\"%Q\"$$$$FG$$\n",cur_idx); DocPrint(doc,"$$WW,0$$$$PURPLE$$$$TX+CX,\"%$$Q\"$$$$FG$$\n",cur_idx);
} }
} }
@@ -315,7 +315,7 @@ U8 *idx=NULL,CDoc *doc=NULL)
wh_done: wh_done:
if (doc) { if (doc) {
if (doc->root.next==doc) if (doc->head.next==doc)
DocPrint(doc,"No Match"); DocPrint(doc,"No Match");
else else
DocRecalc(doc); DocRecalc(doc);
@@ -387,7 +387,7 @@ public U0 MapFileLoad(U8 *filename)
base=temph(CHashGeneric *)->user_data0+sizeof(CBinFile); base=temph(CHashGeneric *)->user_data0+sizeof(CBinFile);
if (!doc) return; if (!doc) return;
doc_e=doc->root.next; doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
if (doc_e->type_u8==DOCT_LINK) { if (doc_e->type_u8==DOCT_LINK) {
if (*doc_e->tag) if (*doc_e->tag)
+1 -1
View File
@@ -20,7 +20,7 @@ $$ --> $$$$
CDoc *doc; CDoc *doc;
CDocEntry *doc_e; CDocEntry *doc_e;
if (doc=DocRead(in_name,DOCF_PLAIN_TEXT_TABS|DOCF_DBL_DOLLARS)) { if (doc=DocRead(in_name,DOCF_PLAIN_TEXT_TABS|DOCF_DBL_DOLLARS)) {
doc_e=doc->root.next; doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
if (doc_e->type_u8==DOCT_TEXT) { if (doc_e->type_u8==DOCT_TEXT) {
src=dst=doc_e->tag; src=dst=doc_e->tag;
+1 -1
View File
@@ -126,7 +126,7 @@ U0 ACPutChoices(CDoc *focus_l,CDocEntry *doc_e,CTask *focus_task,
temph->src_link) { temph->src_link) {
if (temph->type&HTF_PUBLIC) if (temph->type&HTF_PUBLIC)
"$$RED$$"; "$$RED$$";
"$$TX+UL+L+PU,\"%Q\",A=\"%s\"$$$$FG$$\n",st,temph->src_link; "$$TX+UL+L+PU,\"%$$Q\",A=\"%s\"$$$$FG$$\n",st,temph->src_link;
} else } else
"%s\n",st; "%s\n",st;
} }
+8 -8
View File
@@ -15,7 +15,7 @@ public U0 PCIDevFileGen()
Bool first=TRUE,del=FALSE,del2=FALSE,cont=FALSE; Bool first=TRUE,del=FALSE,del2=FALSE,cont=FALSE;
CDoc *doc=DocRead(PCI_DEV_FILE, CDoc *doc=DocRead(PCI_DEV_FILE,
DOCF_PLAIN_TEXT|DOCF_DBL_DOLLARS|DOCF_NO_CURSOR); DOCF_PLAIN_TEXT|DOCF_DBL_DOLLARS|DOCF_NO_CURSOR);
CDocEntry *doc_e=doc->root.next,*doc_e2; CDocEntry *doc_e=doc->head.next,*doc_e2;
while (doc_e!=doc) { while (doc_e!=doc) {
doc_e2=doc_e->next; doc_e2=doc_e->next;
if (first) { if (first) {
@@ -53,7 +53,7 @@ U0 PCILookUpSingle(CDoc *doc,I64 m,I64 d,U8 **_vendor,U8 **_dev)
{ {
Bool first=TRUE; Bool first=TRUE;
U8 buf[8],*vendor=NULL,*dev=NULL; U8 buf[8],*vendor=NULL,*dev=NULL;
CDocEntry *doc_e=doc->root.next; CDocEntry *doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
if (first) { if (first) {
if (doc_e->type_u8==DOCT_TEXT && doc_e->tag[0]!=';' && if (doc_e->type_u8==DOCT_TEXT && doc_e->tag[0]!=';' &&
@@ -120,7 +120,7 @@ U0 PCILookUpDevs()
CPCIDev *temppci; CPCIDev *temppci;
I64 w1,w2,b,d,f,timeout=32*8*2; I64 w1,w2,b,d,f,timeout=32*8*2;
CDoc *doc; CDoc *doc;
if (dev.pci_root.next!=&dev.pci_root) if (dev.pci_head.next!=&dev.pci_head)
return; return;
doc=DocRead(PCI_DEV_FILE,DOCF_PLAIN_TEXT|DOCF_NO_CURSOR); doc=DocRead(PCI_DEV_FILE,DOCF_PLAIN_TEXT|DOCF_NO_CURSOR);
for (b=0;b<sys_pci_busses;b++) for (b=0;b<sys_pci_busses;b++)
@@ -137,7 +137,7 @@ U0 PCILookUpDevs()
temppci->sub_code=PCIReadU8(b,d,f,0xA); temppci->sub_code=PCIReadU8(b,d,f,0xA);
temppci->base_code=PCIReadU8(b,d,f,0xB); temppci->base_code=PCIReadU8(b,d,f,0xB);
PCILookUpSingle(doc,w1,w2,&temppci->vendor_str,&temppci->dev_id_str); PCILookUpSingle(doc,w1,w2,&temppci->vendor_str,&temppci->dev_id_str);
QueIns(temppci,dev.pci_root.last); QueIns(temppci,dev.pci_head.last);
timeout=32*8*2; timeout=32*8*2;
} else if (sys_pci_busses==256 && --timeout<=0) } else if (sys_pci_busses==256 && --timeout<=0)
goto lud_done; goto lud_done;
@@ -155,8 +155,8 @@ public U0 PCIRep()
return; return;
} }
PCILookUpDevs; PCILookUpDevs;
temppci=dev.pci_root.next; temppci=dev.pci_head.next;
while (temppci!=&dev.pci_root) { while (temppci!=&dev.pci_head) {
"%02X:%02X:%01X %02X%02X $$GREEN$$%s $$CYAN$$%s$$FG$$\n", "%02X:%02X:%01X %02X%02X $$GREEN$$%s $$CYAN$$%s$$FG$$\n",
temppci->bus,temppci->dev,temppci->fun, temppci->bus,temppci->dev,temppci->fun,
temppci->base_code,temppci->sub_code, temppci->base_code,temppci->sub_code,
@@ -183,8 +183,8 @@ public U0 MemBIOSRep()
"32 Bit Device Mem\n"; "32 Bit Device Mem\n";
while (LBts(&sys_semas[SYS_SEMA_DEV_MEM],0)) while (LBts(&sys_semas[SYS_SEMA_DEV_MEM],0))
Yield; Yield;
tempmr=dev.mem32_root.next; tempmr=dev.mem32_head.next;
while (tempmr!=&dev.mem32_root) { while (tempmr!=&dev.mem32_head) {
"%02X:0x%016X-0x%016X\n", "%02X:0x%016X-0x%016X\n",
tempmr->type,tempmr->base,tempmr->base+tempmr->size-1; tempmr->type,tempmr->base,tempmr->base+tempmr->size-1;
tempmr=tempmr->next; tempmr=tempmr->next;
+10 -10
View File
@@ -2,8 +2,8 @@
CDocBin *DocBinFindNum(CDoc *haystack_doc,I64 needle_num) CDocBin *DocBinFindNum(CDoc *haystack_doc,I64 needle_num)
{ {
CDocBin *b=haystack_doc->bin_root.next; CDocBin *b=haystack_doc->bin_head.next;
while (b!=&haystack_doc->bin_root) { while (b!=&haystack_doc->bin_head) {
if (b->num==needle_num) if (b->num==needle_num)
return b; return b;
b=b->next; b=b->next;
@@ -15,8 +15,8 @@ CDocBin *DocBinFindTag(CDoc *haystack_doc,U8 *needle_tag)
{ {
CDocBin *b; CDocBin *b;
if (needle_tag) { if (needle_tag) {
b=haystack_doc->bin_root.next; b=haystack_doc->bin_head.next;
while (b!=&haystack_doc->bin_root) { while (b!=&haystack_doc->bin_head) {
if (b->tag && !StrCmp(b->tag,needle_tag)) if (b->tag && !StrCmp(b->tag,needle_tag))
return b; return b;
b=b->next; b=b->next;
@@ -31,8 +31,8 @@ U0 DocBinsValidate(CDoc *doc)
CDocBin *b,*b1; CDocBin *b,*b1;
CDocEntry *doc_e,*doc_e2; CDocEntry *doc_e,*doc_e2;
I64 renum_num=0; I64 renum_num=0;
b=doc->bin_root.next; b=doc->bin_head.next;
while (b!=&doc->bin_root) { while (b!=&doc->bin_head) {
b->use_cnt=0; b->use_cnt=0;
b->temp_use_cnt=0; b->temp_use_cnt=0;
b->renum_num=-1; b->renum_num=-1;
@@ -40,7 +40,7 @@ U0 DocBinsValidate(CDoc *doc)
b->tag=NULL; b->tag=NULL;
b=b->next; b=b->next;
} }
doc_e=doc->root.next; doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
doc_e2=doc_e->next; doc_e2=doc_e->next;
if (doc_e->de_flags & DOCEF_HAS_BIN) { if (doc_e->de_flags & DOCEF_HAS_BIN) {
@@ -61,9 +61,9 @@ U0 DocBinsValidate(CDoc *doc)
doc_e=doc_e2; doc_e=doc_e2;
} }
b=doc->bin_root.next; b=doc->bin_head.next;
doc->cur_bin_num=1; doc->cur_bin_num=1;
while (b!=&doc->bin_root) { while (b!=&doc->bin_head) {
b1=b->next; b1=b->next;
if (!b->use_cnt) { if (!b->use_cnt) {
QueRem(b); QueRem(b);
@@ -128,7 +128,7 @@ I64 DocBinPtrRst(CDoc *doc,CDocEntry *doc_e)
tempb->tag=StrNew(doc_e->tag,doc->mem_task); tempb->tag=StrNew(doc_e->tag,doc->mem_task);
else else
tempb->tag=NULL; tempb->tag=NULL;
QueIns(tempb,doc->bin_root.last); QueIns(tempb,doc->bin_head.last);
} else } else
bin_num=0; bin_num=0;
DocDel(doc2); DocDel(doc2);
+5 -5
View File
@@ -540,7 +540,7 @@ ic_overstrike:
goto ic_done; goto ic_done;
} }
doc_ne=DocEntryNewTag(doc,doc_ce,&ch); doc_ne=DocEntryNewTag(doc,doc_ce,&ch);
doc_ne->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8; doc_ne->type=DOCT_TEXT | doc->settings_head.dft_text_attr<<8;
doc_ne->de_flags=doldoc.dft_de_flags[DOCT_TEXT]; doc_ne->de_flags=doldoc.dft_de_flags[DOCT_TEXT];
QueIns(doc_ne,doc_ce->last); QueIns(doc_ne,doc_ce->last);
} else if (ch=='\n') { } else if (ch=='\n') {
@@ -557,10 +557,10 @@ ic_not_overstrike:
if (ch=='\n') { if (ch=='\n') {
if (sc&SCF_CTRL && !(sc&SCF_SHIFT)) { if (sc&SCF_CTRL && !(sc&SCF_SHIFT)) {
doc_ne=DocEntryNewBase(doc, doc_ne=DocEntryNewBase(doc,
DOCT_PAGE_BREAK|doc->settings_root.dft_text_attr<<8); DOCT_PAGE_BREAK|doc->settings_head.dft_text_attr<<8);
} else { } else {
doc_ne=DocEntryNewBase(doc, doc_ne=DocEntryNewBase(doc,
DOCT_NEW_LINE|doc->settings_root.dft_text_attr<<8); DOCT_NEW_LINE|doc->settings_head.dft_text_attr<<8);
} }
DocInsEntry(doc,doc_ne); DocInsEntry(doc,doc_ne);
} else if (ch=='\t') { } else if (ch=='\t') {
@@ -574,7 +574,7 @@ ic_form_tab:
DocFormFwd(doc); DocFormFwd(doc);
goto ic_done; goto ic_done;
} else { } else {
doc_ne=DocEntryNewBase(doc,DOCT_TAB|doc->settings_root.dft_text_attr<<8); doc_ne=DocEntryNewBase(doc,DOCT_TAB|doc->settings_head.dft_text_attr<<8);
DocInsEntry(doc,doc_ne); DocInsEntry(doc,doc_ne);
} }
} else { } else {
@@ -616,7 +616,7 @@ ic_form_tab:
doc->cur_col++; doc->cur_col++;
} else { } else {
doc_ne=DocEntryNewTag(doc,doc_ce,&ch); doc_ne=DocEntryNewTag(doc,doc_ce,&ch);
doc_ne->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8; doc_ne->type=DOCT_TEXT | doc->settings_head.dft_text_attr<<8;
doc_ne->de_flags=doldoc.dft_de_flags[DOCT_TEXT]; doc_ne->de_flags=doldoc.dft_de_flags[DOCT_TEXT];
doc_ne->x=doc_ce->x+1; doc_ne->x=doc_ce->x+1;
QueIns(doc_ne,doc_ce->last); QueIns(doc_ne,doc_ce->last);
+6 -6
View File
@@ -12,14 +12,14 @@ public U0 EdCopyToClipboard(CDoc *doc)
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->head.next,*doc_ne;
ClipboardDel; ClipboardDel;
while (doc_e!=doc) { while (doc_e!=doc) {
if (doc_e->type & DOCET_SEL) { if (doc_e->type & DOCET_SEL) {
doc_e->type&=~DOCET_SEL; 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->head.last);
} }
} }
doc_e=doc_e->next; doc_e=doc_e->next;
@@ -35,7 +35,7 @@ public U0 EdCutToClipboard(CDoc *doc)
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_e1,*doc_ne,*doc_e2=NULL; CDocEntry *doc_e=doc->head.next,*doc_e1,*doc_ne,*doc_e2=NULL;
ClipboardDel; ClipboardDel;
while (doc_e!=doc) { while (doc_e!=doc) {
doc_e1=doc_e->next; doc_e1=doc_e->next;
@@ -43,7 +43,7 @@ public U0 EdCutToClipboard(CDoc *doc)
doc_e->type&=~DOCET_SEL; 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->head.last);
} }
if (doc_e==doc->cur_entry || doc_e==doc_e2) if (doc_e==doc->cur_entry || doc_e==doc_e2)
doc_e2=doc_e->next; doc_e2=doc_e->next;
@@ -69,7 +69,7 @@ public U0 EdPasteClipboard(CDoc *doc)
unlock_doc2=DocLock(doc2); unlock_doc2=DocLock(doc2);
CDocEntry *doc_ce=doc->cur_entry,*doc_e; CDocEntry *doc_ce=doc->cur_entry,*doc_e;
if (doc_ce->type_u8==DOCT_DATA) { if (doc_ce->type_u8==DOCT_DATA) {
doc_e=doc2->root.next; doc_e=doc2->head.next;
while (doc_e!=doc2) { while (doc_e!=doc2) {
if (doc_e->de_flags&DOCEF_TAG) if (doc_e->de_flags&DOCEF_TAG)
DocPrintPartial(doc,"%s",doc_e->tag); DocPrintPartial(doc,"%s",doc_e->tag);
@@ -111,7 +111,7 @@ public CDoc *DocCopy(CDoc *doc,CDocEntry *start,CDocEntry *end)
while (start!=doc) { while (start!=doc) {
if (!Bt(doldoc.type_flags_data,start->type_u8)) { if (!Bt(doldoc.type_flags_data,start->type_u8)) {
doc_ne=DocEntryCopy(doc2,start); doc_ne=DocEntryCopy(doc2,start);
QueIns(doc_ne,doc2->root.last); QueIns(doc_ne,doc2->head.last);
} }
if (start==end) if (start==end)
break; break;
+9 -9
View File
@@ -343,7 +343,7 @@ I64 EdRAGetU8(CDoc *doc)
return res; return res;
} }
U0 EdRACollect(CDoc *doc,CRenum *root) U0 EdRACollect(CDoc *doc,CRenum *head)
{ {
I64 ch,i; I64 ch,i;
CRenum *tempr; CRenum *tempr;
@@ -373,7 +373,7 @@ U0 EdRACollect(CDoc *doc,CRenum *root)
ch=EdRAGetU8(doc); ch=EdRAGetU8(doc);
tempr=MAlloc(sizeof(CRenum)); tempr=MAlloc(sizeof(CRenum));
StrCpy(tempr->label,buf); StrCpy(tempr->label,buf);
QueIns(tempr,root->last); QueIns(tempr,head->last);
} }
} }
} }
@@ -388,16 +388,16 @@ U0 EdRenumAsm(CDoc *doc)
{ {
Bool unlock=DocLock(doc); Bool unlock=DocLock(doc);
I64 num=0; I64 num=0;
CRenum root,*tempr,*tempr1; CRenum head,*tempr,*tempr1;
U8 buf[sizeof(CEdFindText.find_text)], U8 buf[sizeof(CEdFindText.find_text)],
buf2[sizeof(CEdFindText.find_text)]; buf2[sizeof(CEdFindText.find_text)];
QueInit(&root); QueInit(&head);
EdSelFun(doc,TRUE); EdSelFun(doc,TRUE);
EdRACollect(doc,&root); EdRACollect(doc,&head);
tempr=root.next; tempr=head.next;
while (tempr!=&root) { while (tempr!=&head) {
tempr1=tempr->next; tempr1=tempr->next;
num+=ASM_RENUM_SPACING; num+=ASM_RENUM_SPACING;
StrPrint(buf,"@#%02d",num); StrPrint(buf,"@#%02d",num);
@@ -531,7 +531,7 @@ U0 EdCodeTools2(CDoc *doc,I64 tool_action,Bool beep=TRUE)
x=doc_e->x+1; x=doc_e->x+1;
while (i>8) { while (i>8) {
doc_ne=DocEntryNewBase(doc, doc_ne=DocEntryNewBase(doc,
DOCT_TAB|doc->settings_root.dft_text_attr<<8,, DOCT_TAB|doc->settings_head.dft_text_attr<<8,,
x,doc_e->y,doc_e->page_line_num); x,doc_e->y,doc_e->page_line_num);
MemCpy(&doc_ne->settings, MemCpy(&doc_ne->settings,
&doc_e->settings,sizeof(CDocSettings)); &doc_e->settings,sizeof(CDocSettings));
@@ -544,7 +544,7 @@ U0 EdCodeTools2(CDoc *doc,I64 tool_action,Bool beep=TRUE)
MemSet(b,CH_SPACE,i); MemSet(b,CH_SPACE,i);
b[i]=0; b[i]=0;
doc_ne=DocEntryNewBase(doc, doc_ne=DocEntryNewBase(doc,
DOCT_TEXT|doc->settings_root.dft_text_attr<<8,, DOCT_TEXT|doc->settings_head.dft_text_attr<<8,,
x,doc_e->y,doc_e->page_line_num); x,doc_e->y,doc_e->page_line_num);
doc_ne->tag=b; doc_ne->tag=b;
doc_ne->max_col=1; doc_ne->max_col=1;
+1 -1
View File
@@ -159,7 +159,7 @@ public Bool DocEd(CDoc *doc,I64 dof_flags=0)
DocLock(doc); DocLock(doc);
if (res) { if (res) {
doc_e=doc->root.next; doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
if (doc_e->type_u8==DOCT_DATA || doc_e->type_u8==DOCT_CHECK_BOX) if (doc_e->type_u8==DOCT_DATA || doc_e->type_u8==DOCT_CHECK_BOX)
DocDataScan(doc,doc_e); DocDataScan(doc,doc_e);
+27 -24
View File
@@ -20,7 +20,7 @@ public U0 DocLoad(CDoc *doc,U8 *src2,I64 size)
MemCpy(tempb->data,src,tempb->size); MemCpy(tempb->data,src,tempb->size);
src+=tempb->size; src+=tempb->size;
} }
QueIns(tempb,doc->bin_root.last); QueIns(tempb,doc->bin_head.last);
if (tempb->num>=doc->cur_bin_num) if (tempb->num>=doc->cur_bin_num)
doc->cur_bin_num=tempb->num+1; doc->cur_bin_num=tempb->num+1;
} }
@@ -37,16 +37,19 @@ public CDoc *DocRead(U8 *name=NULL,I64 flags=0)
CDoc *doc=DocNew; CDoc *doc=DocNew;
U8 *src,*name2; U8 *src,*name2;
I64 size=0; I64 size=0;
CDirContext *dirc;
if (!name) name=blkdev.temp_filename; if (!name) name=blkdev.temp_filename;
doc->flags|=flags; doc->flags|=flags;
name2=FileNameAbs(name); name2=FileNameAbs(name);
StrCpy(doc->filename.name,name2); StrCpy(doc->filename.name,name2);
src=FileRead(name2,&size,&doc->file_attr); if (src=FileRead(name2,&size,&doc->file_attr)) {
Free(name2); if (dirc=DirContextNew(name2)) {
if (src) { DocLoad(doc,src,size);
DocLoad(doc,src,size); DirContextDel(dirc);
}
Free(src); Free(src);
} }
Free(name2);
return doc; return doc;
} }
@@ -64,10 +67,10 @@ public U8 *DocSave(CDoc *doc,I64 *_size=NULL)
DocRecalc(doc); DocRecalc(doc);
else { else {
DocRecalc(doc,RECALCF_ADD_CURSOR); DocRecalc(doc,RECALCF_ADD_CURSOR);
if (doc->root.next->type_u8==DOCT_CURSOR) if (doc->head.next->type_u8==DOCT_CURSOR)
DocEntryDel(doc,doc->root.next); //If no cursor, $LK,"DocLoad",A="MN:DocLoad"$() puts at top. DocEntryDel(doc,doc->head.next); //If no cursor, $LK,"DocLoad",A="MN:DocLoad"$() puts at top.
} }
for (doc_e=doc->root.next;doc_e!=doc;doc_e=doc_e->next) { for (doc_e=doc->head.next;doc_e!=doc;doc_e=doc_e->next) {
if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) { if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) {
switch (doc_e->type_u8) { switch (doc_e->type_u8) {
case DOCT_TAB: case DOCT_TAB:
@@ -100,12 +103,12 @@ public U8 *DocSave(CDoc *doc,I64 *_size=NULL)
} }
} }
} }
for (b=doc->bin_root.next;b!=&doc->bin_root;b=b->next) for (b=doc->bin_head.next;b!=&doc->bin_head;b=b->next)
if (b->use_cnt>b->temp_use_cnt) if (b->use_cnt>b->temp_use_cnt)
cnt+=offset(CDocBin.end)-offset(CDocBin.start)+b->size; cnt+=offset(CDocBin.end)-offset(CDocBin.start)+b->size;
res=MAlloc(cnt); res=MAlloc(cnt);
dst=res; dst=res;
doc_e=doc->root.next; doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
doc_e1=doc_e->next; doc_e1=doc_e->next;
if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) if (!Bt(doldoc.type_flags_data,doc_e->type_u8))
@@ -151,8 +154,8 @@ public U8 *DocSave(CDoc *doc,I64 *_size=NULL)
doc_e=doc_e1; doc_e=doc_e1;
} }
*dst++=0; *dst++=0;
b=doc->bin_root.next; b=doc->bin_head.next;
if (b!=&doc->bin_root) { if (b!=&doc->bin_head) {
do { do {
if (b->use_cnt>b->temp_use_cnt) { if (b->use_cnt>b->temp_use_cnt) {
MemCpy(dst,&b->start,offset(CDocBin.end)-offset(CDocBin.start)); MemCpy(dst,&b->start,offset(CDocBin.end)-offset(CDocBin.start));
@@ -161,7 +164,7 @@ public U8 *DocSave(CDoc *doc,I64 *_size=NULL)
dst+=b->size; dst+=b->size;
} }
b=b->next; b=b->next;
} while (b!=&doc->bin_root); } while (b!=&doc->bin_head);
} else } else
cnt--; //No terminator cnt--; //No terminator
if (_size) *_size=cnt; if (_size) *_size=cnt;
@@ -189,7 +192,7 @@ public U0 DocInsDoc(CDoc *doc=NULL,CDoc *doc2)
//TODO: $LK,"DocRst",A="MN:DocRst"$ //TODO: $LK,"DocRst",A="MN:DocRst"$
U8 *dst; U8 *dst;
Bool unlock_doc,unlock_doc2=DocLock(doc2); Bool unlock_doc,unlock_doc2=DocLock(doc2);
CDocEntry *doc_ne,*doc_e=doc2->root.next,*doc_ce; CDocEntry *doc_ne,*doc_e=doc2->head.next,*doc_ce;
if (!doc) doc=DocPut; if (!doc) doc=DocPut;
unlock_doc=DocLock(doc), unlock_doc=DocLock(doc),
DocRemSoftNewLines(doc,NULL); DocRemSoftNewLines(doc,NULL);
@@ -227,7 +230,7 @@ public U0 StreamDoc(CDoc *doc)
{//Inject doc into compile stream. Use inside #exe{}. {//Inject doc into compile stream. Use inside #exe{}.
//TODO: $LK,"DocRst",A="MN:DocRst"$ //TODO: $LK,"DocRst",A="MN:DocRst"$
Bool unlock_doc=DocLock(doc); Bool unlock_doc=DocLock(doc);
CDocEntry *doc_e=doc->root.next; CDocEntry *doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
if (doc_e->type_u8==DOCT_TEXT) if (doc_e->type_u8==DOCT_TEXT)
StreamPrint("%s",doc_e->tag); StreamPrint("%s",doc_e->tag);
@@ -251,7 +254,7 @@ Bool DocCaptureUndo(CDoc *doc,Bool force=FALSE)
unlock=DocLock(doc); unlock=DocLock(doc);
time_stamp=GetTSC; time_stamp=GetTSC;
if (doc->flags&DOCF_UNDO_DIRTY && if (doc->flags&DOCF_UNDO_DIRTY &&
time_stamp>doc->undo_root.last->time_stamp+cnts.time_stamp_freq<<4 || time_stamp>doc->undo_head.last->time_stamp+cnts.time_stamp_freq<<4 ||
force) { force) {
u=CAlloc(sizeof(CDocUndo),doc->mem_task); u=CAlloc(sizeof(CDocUndo),doc->mem_task);
u->time_stamp=time_stamp; u->time_stamp=time_stamp;
@@ -259,7 +262,7 @@ Bool DocCaptureUndo(CDoc *doc,Bool force=FALSE)
doc->flags&=~DOCF_NO_CURSOR; doc->flags&=~DOCF_NO_CURSOR;
u->body=DocSave(doc,&u->size); u->body=DocSave(doc,&u->size);
doc->flags=flags; doc->flags=flags;
QueIns(u,doc->undo_root.last); QueIns(u,doc->undo_head.last);
doc->flags&=~DOCF_UNDO_DIRTY; doc->flags&=~DOCF_UNDO_DIRTY;
doc->undo_cnt++; doc->undo_cnt++;
u->doc_flags=doc->flags; u->doc_flags=doc->flags;
@@ -274,19 +277,19 @@ Bool DocCaptureUndo(CDoc *doc,Bool force=FALSE)
U0 DocUndoRestore(CDoc *doc) U0 DocUndoRestore(CDoc *doc)
{ {
Bool unlock=DocLock(doc); Bool unlock=DocLock(doc);
CDocUndo *u=doc->undo_root.last,*u_next,*u_last; CDocUndo *u=doc->undo_head.last,*u_next,*u_last;
if (u!=&doc->undo_root) { if (u!=&doc->undo_head) {
QueRem(u); QueRem(u);
u_next=doc->undo_root.next; u_next=doc->undo_head.next;
u_last=doc->undo_root.last; u_last=doc->undo_head.last;
QueInit(&doc->undo_root); QueInit(&doc->undo_head);
DocRst(doc,TRUE); DocRst(doc,TRUE);
doc->flags=u->doc_flags&~DOCF_NO_CURSOR; doc->flags=u->doc_flags&~DOCF_NO_CURSOR;
DocLoad(doc,u->body,u->size); DocLoad(doc,u->body,u->size);
doc->flags=u->doc_flags; doc->flags=u->doc_flags;
DocUndoDel(doc,u); DocUndoDel(doc,u);
doc->undo_root.next=u_next; doc->undo_head.next=u_next;
doc->undo_root.last=u_last; doc->undo_head.last=u_last;
} }
DocUndoCntSet(doc); DocUndoCntSet(doc);
doc->flags&=~DOCF_UNDO_DIRTY; doc->flags&=~DOCF_UNDO_DIRTY;
+6 -6
View File
@@ -28,7 +28,7 @@ U8 *needle,I64 match=1)
unlock=DocLock(haystack_doc); unlock=DocLock(haystack_doc);
if (start_line_num==MIN_I64) { if (start_line_num==MIN_I64) {
res=TRUE; res=TRUE;
doc_e=haystack_doc->root.next; doc_e=haystack_doc->head.next;
} else { } else {
res=DocLineNumGoTo(haystack_doc,start_line_num); res=DocLineNumGoTo(haystack_doc,start_line_num);
doc_e=haystack_doc->cur_entry; doc_e=haystack_doc->cur_entry;
@@ -69,7 +69,7 @@ public Bool DocAnchorFind(CDoc *haystack_doc,U8 *needle_str)
CDocEntry *doc_e; CDocEntry *doc_e;
if (haystack_doc) { if (haystack_doc) {
unlock=DocLock(haystack_doc); unlock=DocLock(haystack_doc);
doc_e=haystack_doc->root.next; doc_e=haystack_doc->head.next;
if (needle_str) if (needle_str)
while (doc_e!=haystack_doc) { while (doc_e!=haystack_doc) {
if (doc_e->type_u8==DOCT_ANCHOR && doc_e->de_flags & DOCEF_AUX_STR) { if (doc_e->type_u8==DOCT_ANCHOR && doc_e->de_flags & DOCEF_AUX_STR) {
@@ -170,7 +170,7 @@ fn_skip:
public U0 EdSelAll(CDoc *doc,Bool sel) public U0 EdSelAll(CDoc *doc,Bool sel)
{//Set state of $LK,"DOCET_SEL",A="MN:DOCET_SEL"$ 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->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
BEqu(&doc_e->type,DOCEt_SEL,sel); BEqu(&doc_e->type,DOCEt_SEL,sel);
doc_e=doc_e->next; doc_e=doc_e->next;
@@ -401,7 +401,7 @@ I64 EdFindReplace(CDoc *doc)
sf_flags|=SFG_WHOLE_LABELS; sf_flags|=SFG_WHOLE_LABELS;
if (i=doc->find_replace->filter_lines) { if (i=doc->find_replace->filter_lines) {
doc_ce=doc->root.next; doc_ce=doc->head.next;
while (doc_ce!=doc) { while (doc_ce!=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) &&
@@ -413,7 +413,7 @@ I64 EdFindReplace(CDoc *doc)
doc_ce=doc_ce->next; doc_ce=doc_ce->next;
} }
doc_ce=doc->root.next; doc_ce=doc->head.next;
while (doc_ce!=doc) { while (doc_ce!=doc) {
if (!(doc_ce->de_flags&DOCEF_FILTER_SKIP)) { if (!(doc_ce->de_flags&DOCEF_FILTER_SKIP)) {
found=FALSE; found=FALSE;
@@ -459,7 +459,7 @@ I64 EdFindReplace(CDoc *doc)
if (!plen) if (!plen)
goto fr_unlock_done; goto fr_unlock_done;
rlen=StrLen(doc->find_replace->replace_text); rlen=StrLen(doc->find_replace->replace_text);
if (doc->root.next!=doc) { if (doc->head.next!=doc) {
doc_e=doc_marker=DocSplitTag(doc,doc->cur_entry,doc->cur_col, doc_e=doc_marker=DocSplitTag(doc,doc->cur_entry,doc->cur_col,
doc->cur_entry->x+doc->cur_col,doc->cur_entry->y,DOCT_MARKER); doc->cur_entry->x+doc->cur_col,doc->cur_entry->y,DOCT_MARKER);
do { do {
+2 -2
View File
@@ -260,7 +260,7 @@ public Bool DocForm(U8 *_d,U8 *class_name=lastclass,
ml=ml->next; ml=ml->next;
} }
if (footer) DocPrint(doc,"%s",footer); if (footer) DocPrint(doc,"%s",footer);
if (doc->root.next!=doc) { if (doc->head.next!=doc) {
Fs->border_src=BDS_CONST; Fs->border_src=BDS_CONST;
DocRecalc(doc); DocRecalc(doc);
if (DocEd(doc,dof_flags)) { if (DocEd(doc,dof_flags)) {
@@ -273,7 +273,7 @@ public Bool DocForm(U8 *_d,U8 *class_name=lastclass,
} }
} }
} }
doc_e=doc->root.next; doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
if (doc_e->de_flags&DOCEF_REMALLOC_DATA) { if (doc_e->de_flags&DOCEF_REMALLOC_DATA) {
*doc_e->user_data(U8 **)=doc_e->data; *doc_e->user_data(U8 **)=doc_e->data;
+1 -1
View File
@@ -3,7 +3,7 @@
U0 EdUndoFilter(CDoc *doc) U0 EdUndoFilter(CDoc *doc)
{ {
Bool unlock=DocLock(doc); Bool unlock=DocLock(doc);
CDocEntry *doc_ce=doc->root.next; CDocEntry *doc_ce=doc->head.next;
while (doc_ce!=doc) { while (doc_ce!=doc) {
doc_ce->de_flags&=~DOCEF_FILTER_SKIP; doc_ce->de_flags&=~DOCEF_FILTER_SKIP;
doc_ce=doc_ce->next; doc_ce=doc_ce->next;
+25 -8
View File
@@ -7,9 +7,9 @@ U0 DocInit()
CHashGeneric *temph; CHashGeneric *temph;
DefineLstLoad("ST_DOC_CMDS", DefineLstLoad("ST_DOC_CMDS",
"TX\0CR\0SR\0CU\0MK\0TB\0CL\0PB\0PL\0LM\0RM\0HD\0FO\0ID\0FG\0" "TX\0CR\0SR\0TB\0PB\0CU\0MK\0PT\0CL\0PL\0LM\0RM\0HD\0FO\0ID\0FG\0"
"BG\0FD\0BD\0PT\0WW\0UL\0IV\0BK\0SX\0SY\0CM\0AN\0LK\0BT\0" "BG\0FD\0BD\0WW\0HL\0BK\0IV\0UL\0SX\0SY\0CM\0AN\0LK\0BT\0"
"DA\0CB\0LS\0MA\0MU\0HX\0TR\0SP\0IB\0IS\0SO\0HL\0HC\0ER\0"); "DA\0CB\0LS\0MA\0MU\0HX\0TR\0SP\0IB\0IS\0SO\0HC\0ER\0");
DefineLstLoad("ST_DOC_FLAGS", DefineLstLoad("ST_DOC_FLAGS",
"T\0LEN\0A\0D\0HTML\0LE\0LM\0RE\0RM\0BI\0BP\0RT\0SX\0SY\0SCX\0U\0" "T\0LEN\0A\0D\0HTML\0LE\0LM\0RE\0RM\0BI\0BP\0RT\0SX\0SY\0SCX\0U\0"
"LC\0LA\0RC\0RA\0LX\0CX\0RX\0TY\0CY\0BY\0" "LC\0LA\0RC\0RA\0LX\0CX\0RX\0TY\0CY\0BY\0"
@@ -52,6 +52,7 @@ U0 DocInit()
//Don't forget $LK,"cmp_type_flags_src_code",A="MN:cmp_type_flags_src_code"$. //Don't forget $LK,"cmp_type_flags_src_code",A="MN:cmp_type_flags_src_code"$.
doldoc.type_flags_nontag_invisible[0]= doldoc.type_flags_nontag_invisible[0]=
1<<DOCT_PMT|
1<<DOCT_PAGE_LEN| 1<<DOCT_PAGE_LEN|
1<<DOCT_LEFT_MARGIN| 1<<DOCT_LEFT_MARGIN|
1<<DOCT_RIGHT_MARGIN| 1<<DOCT_RIGHT_MARGIN|
@@ -62,18 +63,34 @@ U0 DocInit()
1<<DOCT_BACKGROUND| 1<<DOCT_BACKGROUND|
1<<DOCT_DFT_FOREGROUND| 1<<DOCT_DFT_FOREGROUND|
1<<DOCT_DFT_BACKGROUND| 1<<DOCT_DFT_BACKGROUND|
1<<DOCT_PMT|
1<<DOCT_WORD_WRAP| 1<<DOCT_WORD_WRAP|
1<<DOCT_UNDERLINE| 1<<DOCT_HIGHLIGHT|
1<<DOCT_INVERT|
1<<DOCT_BLINK| 1<<DOCT_BLINK|
1<<DOCT_INVERT|
1<<DOCT_UNDERLINE|
1<<DOCT_SHIFTED_X| 1<<DOCT_SHIFTED_X|
1<<DOCT_SHIFTED_Y| 1<<DOCT_SHIFTED_Y|
1<<DOCT_SPRITE| 1<<DOCT_SPRITE;
1<<DOCT_HIGHLIGHT;
doldoc.type_flags_data[0]=1<<DOCT_DATA|1<<DOCT_HEX_ED|1<<DOCT_CHECK_BOX; doldoc.type_flags_data[0]=1<<DOCT_DATA|1<<DOCT_HEX_ED|1<<DOCT_CHECK_BOX;
doldoc.type_flags_chk_dup[0]=
1<<DOCT_LEFT_MARGIN|
1<<DOCT_RIGHT_MARGIN|
1<<DOCT_HEADER|
1<<DOCT_FOOTER|
1<<DOCT_FOREGROUND|
1<<DOCT_BACKGROUND|
1<<DOCT_DFT_FOREGROUND|
1<<DOCT_DFT_BACKGROUND|
1<<DOCT_WORD_WRAP|
1<<DOCT_HIGHLIGHT|
1<<DOCT_BLINK|
1<<DOCT_INVERT|
1<<DOCT_UNDERLINE|
1<<DOCT_SHIFTED_X|
1<<DOCT_SHIFTED_Y;
Bts(doldoc.clean_scan_codes,SC_CURSOR_RIGHT); Bts(doldoc.clean_scan_codes,SC_CURSOR_RIGHT);
Bts(doldoc.clean_scan_codes,SC_CURSOR_LEFT); Bts(doldoc.clean_scan_codes,SC_CURSOR_LEFT);
Bts(doldoc.clean_scan_codes,SC_CURSOR_UP); Bts(doldoc.clean_scan_codes,SC_CURSOR_UP);
+16 -16
View File
@@ -5,11 +5,11 @@ StrCpy(captured_macro_name,"Test");
I64 sys_macro_repeat_n=1; I64 sys_macro_repeat_n=1;
U0 SysMacroStripKey(CSrvCmd *macro_root,I64 a1,I64 a2) U0 SysMacroStripKey(CSrvCmd *macro_head,I64 a1,I64 a2)
{ {
CSrvCmd *tempc,*tempc1; CSrvCmd *tempc,*tempc1;
tempc=macro_root->next; tempc=macro_head->next;
while (tempc!=macro_root) { while (tempc!=macro_head) {
tempc1=tempc->next; tempc1=tempc->next;
if (tempc->cmd_code==SVCT_MSG && if (tempc->cmd_code==SVCT_MSG &&
(tempc->msg_code==MSG_KEY_DOWN || tempc->msg_code==MSG_KEY_UP || (tempc->msg_code==MSG_KEY_DOWN || tempc->msg_code==MSG_KEY_UP ||
@@ -50,20 +50,20 @@ CMacroTemp *Cmd2MT(CSrvCmd *tempc)
return tempmt; return tempmt;
} }
U8 *SysMacro2Str(CSrvCmd *macro_root) U8 *SysMacro2Str(CSrvCmd *macro_head)
{ {
CSrvCmd *tempc; CSrvCmd *tempc;
I64 cnt=1; //terminating zero I64 cnt=1; //terminating zero
U8 *ptr,*m; U8 *ptr,*m;
CMacroTemp *tempmt,*tempmt1,root; CMacroTemp *tempmt,*tempmt1,head;
LBtr(&sys_semas[SYS_SEMA_RECORD_MACRO],0); LBtr(&sys_semas[SYS_SEMA_RECORD_MACRO],0);
QueInit(&root); QueInit(&head);
root.type=MT_NULL; head.type=MT_NULL;
tempc=macro_root->next; tempc=macro_head->next;
while (tempc!=macro_root) { while (tempc!=macro_head) {
tempmt=Cmd2MT(tempc); tempmt=Cmd2MT(tempc);
QueIns(tempmt,root.last); QueIns(tempmt,head.last);
cnt+=StrLen(tempmt->buf); cnt+=StrLen(tempmt->buf);
if (tempmt->type==MT_CHAR) { if (tempmt->type==MT_CHAR) {
if (tempmt->last->type!=MT_CHAR) if (tempmt->last->type!=MT_CHAR)
@@ -77,8 +77,8 @@ U8 *SysMacro2Str(CSrvCmd *macro_root)
m=MAlloc(cnt); m=MAlloc(cnt);
ptr=m; ptr=m;
tempmt=root.next; tempmt=head.next;
while (tempmt!=&root) { while (tempmt!=&head) {
tempmt1=tempmt->next; tempmt1=tempmt->next;
if (tempmt->type==MT_MSG) { if (tempmt->type==MT_MSG) {
StrCpy(ptr, tempmt->buf); StrCpy(ptr, tempmt->buf);
@@ -108,7 +108,7 @@ U0 PlaySysMacro(I64 n=1)
U8 *m; U8 *m;
if (TaskValidate(task)) { if (TaskValidate(task)) {
LBtr(&sys_semas[SYS_SEMA_RECORD_MACRO],0); LBtr(&sys_semas[SYS_SEMA_RECORD_MACRO],0);
m=SysMacro2Str(&sys_macro_root); m=SysMacro2Str(&sys_macro_head);
while (n-- && TaskValidate(task)) { while (n-- && TaskValidate(task)) {
if (task==Fs) if (task==Fs)
AutoStr("%s",m); AutoStr("%s",m);
@@ -121,9 +121,9 @@ U0 PlaySysMacro(I64 n=1)
U0 EdInsCapturedMacro() U0 EdInsCapturedMacro()
{ {
U8 *st=SysMacro2Str(&sys_macro_root); U8 *st=SysMacro2Str(&sys_macro_head);
if (sys_focus_task) { if (sys_focus_task) {
XTalk(sys_focus_task,"$$MA+LA,T=\"%s\",LM=\"%Q\"$$", XTalk(sys_focus_task,"$$MA+LA,T=\"%s\",LM=\"%$$Q\"$$",
captured_macro_name,st); captured_macro_name,st);
Free(st); Free(st);
} }
@@ -184,7 +184,7 @@ U0 MacroTask(I64)
switch (i) { switch (i) {
case SM_RECORD: case SM_RECORD:
LBtr(&sys_semas[SYS_SEMA_RECORD_MACRO],0); LBtr(&sys_semas[SYS_SEMA_RECORD_MACRO],0);
QueDel(&sys_macro_root,TRUE); QueDel(&sys_macro_head,TRUE);
LBts(&sys_semas[SYS_SEMA_RECORD_MACRO],0); LBts(&sys_semas[SYS_SEMA_RECORD_MACRO],0);
break; break;
case SM_PLAY: case SM_PLAY:
+20 -20
View File
@@ -123,9 +123,9 @@ U0 DocUndoDel(CDoc *,CDocUndo *u)
U0 DocUndoCntSet(CDoc *doc) U0 DocUndoCntSet(CDoc *doc)
{ {
Bool unlock=DocLock(doc); Bool unlock=DocLock(doc);
CDocUndo *u=doc->undo_root.next; CDocUndo *u=doc->undo_head.next;
doc->undo_cnt=0; doc->undo_cnt=0;
while (u!=&doc->undo_root) { while (u!=&doc->undo_head) {
doc->undo_cnt++; doc->undo_cnt++;
u=u->next; u=u->next;
} }
@@ -165,7 +165,7 @@ public CDocEntry *DocEntryCopy(CDoc *doc,CDocEntry *doc_e)
tempb->tag=StrNew(doc_e->tag,task); tempb->tag=StrNew(doc_e->tag,task);
else else
tempb->tag=NULL; tempb->tag=NULL;
QueIns(tempb,doc->bin_root.last); QueIns(tempb,doc->bin_head.last);
} }
if (doc_e->de_flags & DOCEF_REMALLOC_DATA) if (doc_e->de_flags & DOCEF_REMALLOC_DATA)
doc_ne->data=MAllocIdent(doc_e->data,task); doc_ne->data=MAllocIdent(doc_e->data,task);
@@ -179,7 +179,7 @@ U0 DocRemSoftNewLines(CDoc *doc=NULL,CDocEntry *doc_e=NULL)
if (!doc && !(doc=DocPut)) if (!doc && !(doc=DocPut))
return; return;
unlock=DocLock(doc); unlock=DocLock(doc);
if (!doc_e) doc_e=doc->root.next; if (!doc_e) doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
doc_e2=doc_e->next; doc_e2=doc_e->next;
if (doc_e->type_u8==DOCT_SOFT_NEW_LINE) { if (doc_e->type_u8==DOCT_SOFT_NEW_LINE) {
@@ -244,20 +244,20 @@ public U0 DocRst(CDoc *doc,Bool is_old)
return; return;
unlock=DocLock(doc); unlock=DocLock(doc);
if (is_old) { if (is_old) {
doc_e=doc->root.next; doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
doc_e2=doc_e->next; doc_e2=doc_e->next;
DocEntryDel(doc,doc_e); DocEntryDel(doc,doc_e);
doc_e=doc_e2; doc_e=doc_e2;
} }
u=doc->undo_root.next; u=doc->undo_head.next;
while (u!=&doc->undo_root) { while (u!=&doc->undo_head) {
u8=u->next; u8=u->next;
DocUndoDel(doc,u); DocUndoDel(doc,u);
u=u8; u=u8;
} }
b=doc->bin_root.next; b=doc->bin_head.next;
while (b!=&doc->bin_root) { while (b!=&doc->bin_head) {
b1=b->next; b1=b->next;
QueRem(b); QueRem(b);
Free(b->data); Free(b->data);
@@ -267,10 +267,10 @@ public U0 DocRst(CDoc *doc,Bool is_old)
} }
//Check $LK,"DocInsDoc",A="MN:DocInsDoc"$ //Check $LK,"DocInsDoc",A="MN:DocInsDoc"$
doc->flags&=DOCF_BREAK_UNLOCKED; doc->flags&=DOCF_BREAK_UNLOCKED;
doc->root.next=doc->root.last=doc; doc->head.next=doc->head.last=doc;
QueInit(&doc->bin_root); QueInit(&doc->bin_head);
QueInit(&doc->undo_root); QueInit(&doc->undo_head);
doc->undo_root.time_stamp=0; doc->undo_head.time_stamp=0;
doc->undo_cnt=0; doc->undo_cnt=0;
doc->cur_bin_num=1; doc->cur_bin_num=1;
doc->dollar_buf_ptr=0; doc->dollar_buf_ptr=0;
@@ -278,7 +278,7 @@ public U0 DocRst(CDoc *doc,Bool is_old)
doc->page_line_num=0; doc->page_line_num=0;
doc->best_d=MAX_I64; doc->best_d=MAX_I64;
s=&doc->settings_root; s=&doc->settings_head;
s->left_margin=DOC_DFT; s->left_margin=DOC_DFT;
s->right_margin=DOC_DFT; s->right_margin=DOC_DFT;
s->indent=0; s->indent=0;
@@ -293,7 +293,7 @@ public U0 DocRst(CDoc *doc,Bool is_old)
s->shifted_y=0; s->shifted_y=0;
s->cur_text_attr=s->dft_text_attr=DOC_ATTR_DFT_TEXT; s->cur_text_attr=s->dft_text_attr=DOC_ATTR_DFT_TEXT;
doc_e=&doc->root; doc_e=&doc->head;
doc_e->type=DOCT_ERROR; doc_e->type=DOCT_ERROR;
doc_e->de_flags=0; doc_e->de_flags=0;
doc_e->x=0; doc_e->x=0;
@@ -331,21 +331,21 @@ public I64 DocSize(CDoc *doc)
if (!doc || doc->doc_signature!=DOC_SIGNATURE_VAL) return 0; if (!doc || doc->doc_signature!=DOC_SIGNATURE_VAL) return 0;
unlock=DocLock(doc); unlock=DocLock(doc);
doc_e=doc->root.next; doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
res+=DocEntrySize(doc,doc_e); res+=DocEntrySize(doc,doc_e);
doc_e=doc_e->next; doc_e=doc_e->next;
} }
u=doc->undo_root.next; u=doc->undo_head.next;
while (u!=&doc->undo_root) { while (u!=&doc->undo_head) {
res+=MSize2(u->body); res+=MSize2(u->body);
res+=MSize2(u); res+=MSize2(u);
u=u->next; u=u->next;
} }
b=doc->bin_root.next; b=doc->bin_head.next;
while (b!=&doc->bin_root) { while (b!=&doc->bin_head) {
res+=MSize2(b->data); res+=MSize2(b->data);
res+=MSize2(b); res+=MSize2(b);
b=b->next; b=b->next;
+13 -3
View File
@@ -53,13 +53,23 @@ I64 DocOptDoc(CDoc *doc,I64 fuf_flags)
{//Optimize Doc. {//Optimize Doc.
Bool unlock=DocLock(doc); Bool unlock=DocLock(doc);
I64 res=0; I64 res=0;
CDocEntry *doc_e; CDocEntry *doc_e,*doc_e1,*doc_e_last;
DocRecalc(doc); DocRecalc(doc);
doc_e=doc->root.next; doc_e_last=NULL;
doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
doc_e1=doc_e->next;
if (res+=DocOptEntry(doc,doc_e,fuf_flags)) if (res+=DocOptEntry(doc,doc_e,fuf_flags))
res+=DocOptEntry(doc,doc_e,fuf_flags); res+=DocOptEntry(doc,doc_e,fuf_flags);
doc_e=doc_e->next; if (doc_e_last && doc_e_last->type&~0xFF00==doc_e->type&~0xFF00 &&
doc_e_last->de_flags==doc_e->de_flags &&
Bt(doldoc.type_flags_chk_dup,doc_e->type_u8) &&
doc_e_last->attr==doc_e->attr) {
DocEntryDel(doc,doc_e);
res++;
} else
doc_e_last=doc_e;
doc_e=doc_e1;
} }
DocRecalc(doc); DocRecalc(doc);
if (unlock) if (unlock)
+13 -13
View File
@@ -10,10 +10,10 @@ 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_SEL:
case DOCEf_UNDERLINE:
case DOCEf_INVERT:
case DOCEf_BLINK: case DOCEf_BLINK:
case DOCEf_INVERT:
case DOCEf_UNDERLINE:
case DOCEf_SEL:
BEqu(_type,res,turn_on); BEqu(_type,res,turn_on);
break; break;
} }
@@ -105,9 +105,9 @@ U8 *Doc2PlainText(CDoc *doc,CDocEntry *doc_e)
case DOCT_INDENT: case DOCT_INDENT:
case DOCT_WORD_WRAP: case DOCT_WORD_WRAP:
case DOCT_HIGHLIGHT: case DOCT_HIGHLIGHT:
case DOCT_UNDERLINE:
case DOCT_INVERT:
case DOCT_BLINK: case DOCT_BLINK:
case DOCT_INVERT:
case DOCT_UNDERLINE:
case DOCT_SHIFTED_X: case DOCT_SHIFTED_X:
case DOCT_SHIFTED_Y: case DOCT_SHIFTED_Y:
if (attr!=DOC_DFT) { if (attr!=DOC_DFT) {
@@ -273,9 +273,9 @@ CDocEntry *PrsDollarCmd(CDoc *doc,U8 *st)
case DOCT_DFT_BACKGROUND: case DOCT_DFT_BACKGROUND:
case DOCT_WORD_WRAP: case DOCT_WORD_WRAP:
case DOCT_HIGHLIGHT: case DOCT_HIGHLIGHT:
case DOCT_UNDERLINE:
case DOCT_INVERT:
case DOCT_BLINK: case DOCT_BLINK:
case DOCT_INVERT:
case DOCT_UNDERLINE:
case DOCT_SHIFTED_X: case DOCT_SHIFTED_X:
case DOCT_SHIFTED_Y: case DOCT_SHIFTED_Y:
while (cc->token==',') while (cc->token==',')
@@ -575,7 +575,7 @@ U0 DocEntryToggle(CDoc *doc)
st=Doc2PlainText(doc,doc_ce); st=Doc2PlainText(doc,doc_ce);
LBEqu(&doc->flags,DOCf_COLOR_NAMES,old_color_names); LBEqu(&doc->flags,DOCf_COLOR_NAMES,old_color_names);
DocEntryDel(doc,doc_ce); DocEntryDel(doc,doc_ce);
DocPrint(doc,"$$$$%Q$$$$",st); DocPrint(doc,"$$$$%$$Q$$$$",st);
} }
DocRecalc(doc); DocRecalc(doc);
} }
@@ -593,13 +593,13 @@ U0 DocFlagsToggle(CDoc *doc,I64 tog_flags)
doc->flags=doc->flags&~DOCF_NO_CURSOR|DOCF_COLOR_NAMES; doc->flags=doc->flags&~DOCF_NO_CURSOR|DOCF_COLOR_NAMES;
st=DocSave(doc,&size); st=DocSave(doc,&size);
u_next=doc->undo_root.next; u_next=doc->undo_head.next;
u_last=doc->undo_root.last; u_last=doc->undo_head.last;
doc->undo_root.next=doc->undo_root.last=&doc->undo_root; doc->undo_head.next=doc->undo_head.last=&doc->undo_head;
DocRst(doc,TRUE); DocRst(doc,TRUE);
doc->undo_root.next=u_next; doc->undo_head.next=u_next;
doc->undo_root.last=u_last; doc->undo_head.last=u_last;
DocUndoCntSet(doc); DocUndoCntSet(doc);
doc->flags=flags&~(DOCF_NO_CURSOR|DOCG_BL_IV_UL|DOCF_WORD_WRAP); doc->flags=flags&~(DOCF_NO_CURSOR|DOCG_BL_IV_UL|DOCF_WORD_WRAP);
DocLoad(doc,st,size); DocLoad(doc,st,size);
+3 -3
View File
@@ -97,7 +97,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
BEqu(&doc_ce->type,DOCEt_SEL,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->head.next;
doc->cur_col=doc_ce->min_col; doc->cur_col=doc_ce->min_col;
DocFormFwd(doc); DocFormFwd(doc);
} }
@@ -142,7 +142,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
(doc_ce->type_u8!=DOCT_HEX_ED && doc_ce->y>i || (doc_ce->type_u8!=DOCT_HEX_ED && doc_ce->y>i ||
doc_ce->type_u8==DOCT_HEX_ED && doc_ce->type_u8==DOCT_HEX_ED &&
doc_ce->y+doc->cur_col/3/doc_ce->hex_ed_width>i) && doc_ce->y+doc->cur_col/3/doc_ce->hex_ed_width>i) &&
doc_ce->y!=doc->root.next->y) { doc_ce->y!=doc->head.next->y) {
EdLineUp(doc,sc); EdLineUp(doc,sc);
//paranoid check for stuck on same node //paranoid check for stuck on same node
if (doc->cur_entry==doc_ce && doc_ce->type_u8!=DOCT_HEX_ED) if (doc->cur_entry==doc_ce && doc_ce->type_u8!=DOCT_HEX_ED)
@@ -256,7 +256,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
if (TaskValidate(sys_macro_task)) if (TaskValidate(sys_macro_task))
PostMsgWait(sys_macro_task, PostMsgWait(sys_macro_task,
MSG_KEY_DOWN_UP,CH_SHIFT_ESC,0); MSG_KEY_DOWN_UP,CH_SHIFT_ESC,0);
SysMacroStripKey(&sys_macro_root,ch,sc); SysMacroStripKey(&sys_macro_head,ch,sc);
PlaySysMacro; PlaySysMacro;
} else } else
EdMacroUtil; EdMacroUtil;
+12 -12
View File
@@ -27,7 +27,7 @@ CDocEntry *DocPutS(CDoc *doc,U8 *st)
if (!ch) { if (!ch) {
if (j=ptr-ptr2) { if (j=ptr-ptr2) {
doc_e=DocEntryNewBase(doc, doc_e=DocEntryNewBase(doc,
DOCT_TEXT|doc->settings_root.dft_text_attr<<8); DOCT_TEXT|doc->settings_head.dft_text_attr<<8);
if (doc->flags & DOCF_NO_CURSOR) { if (doc->flags & DOCF_NO_CURSOR) {
src=MAlloc(j+1); src=MAlloc(j+1);
MemCpy(src,ptr2,j+1); MemCpy(src,ptr2,j+1);
@@ -46,7 +46,7 @@ CDocEntry *DocPutS(CDoc *doc,U8 *st)
if (j=ptr-ptr2) { if (j=ptr-ptr2) {
*ptr=0; *ptr=0;
doc_e=DocEntryNewBase(doc, doc_e=DocEntryNewBase(doc,
DOCT_TEXT|doc->settings_root.dft_text_attr<<8); DOCT_TEXT|doc->settings_head.dft_text_attr<<8);
if (doc->flags & DOCF_NO_CURSOR) { if (doc->flags & DOCF_NO_CURSOR) {
src=MAlloc(j+1); src=MAlloc(j+1);
MemCpy(src,ptr2,j+1); MemCpy(src,ptr2,j+1);
@@ -72,19 +72,19 @@ CDocEntry *DocPutS(CDoc *doc,U8 *st)
switch (ch) { switch (ch) {
case CH_CURSOR: case CH_CURSOR:
doc_e=DocEntryNewBase(doc, doc_e=DocEntryNewBase(doc,
DOCT_CURSOR|doc->settings_root.dft_text_attr<<8); DOCT_CURSOR|doc->settings_head.dft_text_attr<<8);
DocInsEntry(doc,doc_e); DocInsEntry(doc,doc_e);
ptr++; ptr++;
break; break;
case CH_FORM_FEED: case CH_FORM_FEED:
doc_e=DocEntryNewBase(doc, doc_e=DocEntryNewBase(doc,
DOCT_PAGE_BREAK|doc->settings_root.dft_text_attr<<8); DOCT_PAGE_BREAK|doc->settings_head.dft_text_attr<<8);
DocInsEntry(doc,doc_e); DocInsEntry(doc,doc_e);
ptr++; ptr++;
break; break;
case '\t': case '\t':
doc_e=DocEntryNewBase(doc, doc_e=DocEntryNewBase(doc,
DOCT_TAB|doc->settings_root.dft_text_attr<<8); DOCT_TAB|doc->settings_head.dft_text_attr<<8);
DocInsEntry(doc,doc_e); DocInsEntry(doc,doc_e);
ptr++; ptr++;
break; break;
@@ -97,13 +97,13 @@ CDocEntry *DocPutS(CDoc *doc,U8 *st)
*ptr=0; //zero second dollar *ptr=0; //zero second dollar
if (ptr-1==ptr2 && *ptr2==CH_CURSOR) { if (ptr-1==ptr2 && *ptr2==CH_CURSOR) {
doc_e=DocEntryNewBase(doc, doc_e=DocEntryNewBase(doc,
DOCT_CURSOR|doc->settings_root.dft_text_attr<<8); DOCT_CURSOR|doc->settings_head.dft_text_attr<<8);
DocInsEntry(doc,doc_e); DocInsEntry(doc,doc_e);
ptr2++; ptr2++;
} }
if (ptr==ptr2) { if (ptr==ptr2) {
doc_e=DocEntryNewBase(doc, doc_e=DocEntryNewBase(doc,
DOCT_TEXT|doc->settings_root.dft_text_attr<<8); DOCT_TEXT|doc->settings_head.dft_text_attr<<8);
doc_e->max_col=1; doc_e->max_col=1;
if (doc->flags & DOCF_DBL_DOLLARS) if (doc->flags & DOCF_DBL_DOLLARS)
doc_e->tag=StrNew("$$$$",doc->mem_task); doc_e->tag=StrNew("$$$$",doc->mem_task);
@@ -117,11 +117,11 @@ CDocEntry *DocPutS(CDoc *doc,U8 *st)
while (ch=*ptr3++) { while (ch=*ptr3++) {
if (ch==CH_CURSOR) { if (ch==CH_CURSOR) {
doc_e=DocEntryNewBase(doc, doc_e=DocEntryNewBase(doc,
DOCT_CURSOR|doc->settings_root.dft_text_attr<<8); DOCT_CURSOR|doc->settings_head.dft_text_attr<<8);
DocInsEntry(doc,doc_e); DocInsEntry(doc,doc_e);
} else if (ch==CH_FORM_FEED) { } else if (ch==CH_FORM_FEED) {
doc_e=DocEntryNewBase(doc, doc_e=DocEntryNewBase(doc,
DOCT_PAGE_BREAK|doc->settings_root.dft_text_attr<<8); DOCT_PAGE_BREAK|doc->settings_head.dft_text_attr<<8);
DocInsEntry(doc,doc_e); DocInsEntry(doc,doc_e);
} else } else
*ptr4++=ch; *ptr4++=ch;
@@ -138,7 +138,7 @@ CDocEntry *DocPutS(CDoc *doc,U8 *st)
break; break;
default: default:
doc_e=DocEntryNewBase(doc, doc_e=DocEntryNewBase(doc,
DOCT_NEW_LINE|doc->settings_root.dft_text_attr<<8); DOCT_NEW_LINE|doc->settings_head.dft_text_attr<<8);
DocInsEntry(doc,doc_e); DocInsEntry(doc,doc_e);
if (ch=='\r') if (ch=='\r')
while (*ptr=='\r') while (*ptr=='\r')
@@ -214,7 +214,7 @@ public U0 DocPrintPartial(CDoc *doc=NULL,U8 *fmt,...)
doc_ce->tag=st; doc_ce->tag=st;
} else { } else {
doc_ne=DocEntryNewTag(doc,doc_ce,ptr2); doc_ne=DocEntryNewTag(doc,doc_ce,ptr2);
doc_ne->type=DOCT_TEXT|doc->settings_root.dft_text_attr<<8; doc_ne->type=DOCT_TEXT|doc->settings_head.dft_text_attr<<8;
doc_ne->de_flags=doldoc.dft_de_flags[DOCT_TEXT]; doc_ne->de_flags=doldoc.dft_de_flags[DOCT_TEXT];
QueIns(doc_ne,doc_ce->last); QueIns(doc_ne,doc_ce->last);
doc->cur_entry=doc_ne; doc->cur_entry=doc_ne;
@@ -263,7 +263,7 @@ U0 DocDump(CDoc *doc,I64 uS_delay=0)
U8 *st; U8 *st;
CDocEntry *doc_e,*doc_e2; CDocEntry *doc_e,*doc_e2;
Bool unlock=DocLock(doc); Bool unlock=DocLock(doc);
doc_e=doc->root.next; doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
st=DocScanLine(doc,doc_e,NULL,&doc_e2); st=DocScanLine(doc,doc_e,NULL,&doc_e2);
"%s",st; "%s",st;
+93 -93
View File
@@ -353,8 +353,8 @@ public Bool DocRecalc(CDoc *doc,I64 recalc_flags=RECALCt_NORMAL)
doc->line_start_col=0; doc->line_start_col=0;
recalc_flags&=~RECALCF_HAS_CURSOR; recalc_flags&=~RECALCF_HAS_CURSOR;
if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN) if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN)
doc->settings_root.cur_text_attr= doc->settings_head.cur_text_attr=
doc->settings_root.dft_text_attr=win_task->border_attr; doc->settings_head.dft_text_attr=win_task->border_attr;
} else { } else {
if (recalc_flags&RECALCF_HAS_CURSOR && full_refresh) { if (recalc_flags&RECALCF_HAS_CURSOR && full_refresh) {
if (Bt(&hss->flags,WSSf_SET_TO_POS)||Bt(&vss->flags,WSSf_SET_TO_POS)) { if (Bt(&hss->flags,WSSf_SET_TO_POS)||Bt(&vss->flags,WSSf_SET_TO_POS)) {
@@ -374,8 +374,8 @@ public Bool DocRecalc(CDoc *doc,I64 recalc_flags=RECALCt_NORMAL)
} }
} }
if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN) if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN)
doc->settings_root.cur_text_attr= doc->settings_head.cur_text_attr=
doc->settings_root.dft_text_attr=win_task->text_attr; doc->settings_head.dft_text_attr=win_task->text_attr;
} }
x0=doc->line_start_col; x0=doc->line_start_col;
y0=doc->top_line_num; y0=doc->top_line_num;
@@ -395,16 +395,16 @@ public Bool DocRecalc(CDoc *doc,I64 recalc_flags=RECALCt_NORMAL)
if (doc->cur_col<=doc->cur_entry->min_col) if (doc->cur_col<=doc->cur_entry->min_col)
doc->cur_col=doc->cur_entry->min_col; doc->cur_col=doc->cur_entry->min_col;
doc_e=doc->root.next; doc_e=doc->head.next;
doc_e->de_flags&=~(DOCG_BL_IV_UL|DOCEF_WORD_WRAP|DOCEF_HIGHLIGHT); doc_e->de_flags&=~(DOCG_BL_IV_UL|DOCEF_WORD_WRAP|DOCEF_HIGHLIGHT);
if (doc_e==doc->root.next) if (doc_e==doc->head.next)
s=&doc->settings_root; s=&doc->settings_head;
else else
s=&doc_e->last->settings; s=&doc_e->last->settings;
doc->flags=doc_e->de_flags& (DOCG_BL_IV_UL|DOCEF_WORD_WRAP) | doc->flags=doc_e->de_flags& (DOCG_BL_IV_UL|DOCEF_WORD_WRAP) |
doc->flags&~(DOCG_BL_IV_UL|DOCEF_WORD_WRAP); doc->flags&~(DOCG_BL_IV_UL|DOCEF_WORD_WRAP);
cur_u8_attr=s->cur_text_attr; cur_u8_attr=s->cur_text_attr;
if (doc_e==doc->root.next) { if (doc_e==doc->head.next) {
doc->flags&=~DOCF_BWD_MOVEMENT; doc->flags&=~DOCF_BWD_MOVEMENT;
if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN && full_refresh) if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN && full_refresh)
doc->flags&=~DOCF_HAS_SONG; doc->flags&=~DOCF_HAS_SONG;
@@ -412,14 +412,14 @@ public Bool DocRecalc(CDoc *doc,I64 recalc_flags=RECALCt_NORMAL)
doc->flags=doc_e->de_flags& DOCEF_HIGHLIGHT | doc->flags=doc_e->de_flags& DOCEF_HIGHLIGHT |
doc->flags&~DOCEF_HIGHLIGHT; doc->flags&~DOCEF_HIGHLIGHT;
if (doc->root.next==doc) { if (doc->head.next==doc) {
best_doc_e=doc; best_doc_e=doc;
best_col=0; best_col=0;
doc->cur_entry=doc; doc->cur_entry=doc;
doc->cur_col=0; doc->cur_col=0;
doc_e=doc; doc_e=doc;
} }
skipped_update= doc_e==doc && doc->root.next!=doc; skipped_update= doc_e==doc && doc->head.next!=doc;
if (full_refresh) { if (full_refresh) {
doc->min_x=MAX_I32; doc->min_y=MAX_I32; doc->min_x=MAX_I32; doc->min_y=MAX_I32;
@@ -716,41 +716,6 @@ public Bool DocRecalc(CDoc *doc,I64 recalc_flags=RECALCt_NORMAL)
x-=doc_e->hex_ed_width*3+k+9; x-=doc_e->hex_ed_width*3+k+9;
} }
break; break;
case DOCT_TAB:
k=(x+8) & ~7;
if (doc_e->de_flags & DOCEF_BORDER_PLOT &&
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER)) {
while (x<k) {
if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
!(doc_e->de_flags&DOCEF_DONT_DRAW))
TextChar(win_task,TRUE,x-x0,y-y0,temp_u32_attr+CH_SPACE);
if (find_cursor) {
d2=DocCharDist(doc,x,y);
if (d2<D)
D=d2;
}
x++;
}
} else {
k-=x;
if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
!(doc_e->de_flags&DOCEF_DONT_DRAW)) {
if (y_plot_top<=y<=y_plot_bottom)
TextLenStr(win_task,x-x0,y-y0,k,temp_u32_attr," ");
x+=k;
} else {
if (find_cursor) {
while (k--) {
d2=DocCharDist(doc,x,y);
if (d2<D)
D=d2;
x++;
}
} else
x+=k;
}
}
break;
case DOCT_NEW_LINE: case DOCT_NEW_LINE:
case DOCT_SOFT_NEW_LINE: case DOCT_SOFT_NEW_LINE:
if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN && if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
@@ -809,34 +774,68 @@ rc_adjust_xy:
} }
} }
break; break;
case DOCT_CURSOR_MOVEMENT: case DOCT_TAB:
doc->flags|=DOCF_BWD_MOVEMENT; k=(x+8) & ~7;
x+=doc_e->cursor_x_offset; if (doc_e->de_flags & DOCEF_BORDER_PLOT &&
if (doc_e->de_flags & DOCEF_PAGE_REL_Y) { !Bt(&win_task->display_flags,DISPLAYf_NO_BORDER)) {
i=doc->page_line_num; while (x<k) {
if (doc_e->de_flags & DOCEF_TOP_Y) if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
doc->page_line_num=0; !(doc_e->de_flags&DOCEF_DONT_DRAW))
else if (doc_e->de_flags & DOCEF_BOTTOM_Y) TextChar(win_task,TRUE,x-x0,y-y0,temp_u32_attr+CH_SPACE);
doc->page_line_num=s->page_len-1; if (find_cursor) {
else if (doc_e->de_flags & DOCEF_CENTER_Y) d2=DocCharDist(doc,x,y);
doc->page_line_num=s->page_len>>1; if (d2<D)
y+=doc->page_line_num-i; D=d2;
}
x++;
}
} else {
k-=x;
if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
!(doc_e->de_flags&DOCEF_DONT_DRAW)) {
if (y_plot_top<=y<=y_plot_bottom)
TextLenStr(win_task,x-x0,y-y0,k,temp_u32_attr," ");
x+=k;
} else {
if (find_cursor) {
while (k--) {
d2=DocCharDist(doc,x,y);
if (d2<D)
D=d2;
x++;
}
} else
x+=k;
}
} }
y+=doc_e->cursor_y_offset; break;
doc->page_line_num+=doc_e->cursor_y_offset;
goto rc_adjust_xy;
case DOCT_PAGE_BREAK: case DOCT_PAGE_BREAK:
doc->flags|=DOCF_BWD_MOVEMENT; doc->flags|=DOCF_BWD_MOVEMENT;
y+=s->page_len-doc_e->page_line_num; y+=s->page_len-doc_e->page_line_num;
doc->page_line_num=0; doc->page_line_num=0;
goto rc_start_of_line; goto rc_start_of_line;
case DOCT_INDENT: case DOCT_CURSOR:
if (doc_e->de_flags & DOCEF_LEFT_X) if (!find_cursor && !(doc->flags & DOCF_NO_CURSOR)) {
i=doc_e->attr; doc->cur_entry=doc_e->next;
doc->cur_col=doc->cur_entry->min_col;
}
if (doc_e!=added_cursor)
del_doc_e=TRUE;
break;
case DOCT_PMT:
cur_u8_attr=cur_u8_attr&0xF0|DOC_COLOR_PMT;
if (y==cursor_y) {
doc->cur_entry=doc_e->next;
doc->cur_col=doc->cur_entry->min_col;
}
break;
case DOCT_CLEAR:
next_clear_found=doc_e;
if (doc_e->de_flags&DOCEF_HOLD)
clear_holds=TRUE;
else else
i=s->indent+doc_e->attr; clear_holds=FALSE;
s->indent=i; break;
goto rc_start_of_line;
case DOCT_PAGE_LEN: case DOCT_PAGE_LEN:
s->page_len=doc_e->attr; s->page_len=doc_e->attr;
if (doc_e->de_flags & DOCEF_WIN_REL) if (doc_e->de_flags & DOCEF_WIN_REL)
@@ -861,6 +860,13 @@ rc_adjust_xy:
case DOCT_FOOTER: case DOCT_FOOTER:
s->footer=doc_e->attr; s->footer=doc_e->attr;
goto rc_adjust_xy; goto rc_adjust_xy;
case DOCT_INDENT:
if (doc_e->de_flags & DOCEF_LEFT_X)
i=doc_e->attr;
else
i=s->indent+doc_e->attr;
s->indent=i;
goto rc_start_of_line;
case DOCT_FOREGROUND: case DOCT_FOREGROUND:
cur_u8_attr&=0xF0; cur_u8_attr&=0xF0;
if (doc_e->attr==DOC_DFT) if (doc_e->attr==DOC_DFT)
@@ -895,13 +901,6 @@ rc_adjust_xy:
s->dft_text_attr=s->dft_text_attr&0x0F|cur_u8_attr&0xF0; s->dft_text_attr=s->dft_text_attr&0x0F|cur_u8_attr&0xF0;
s->cur_text_attr=cur_u8_attr; s->cur_text_attr=cur_u8_attr;
break; break;
case DOCT_PMT:
cur_u8_attr=cur_u8_attr&0xF0|DOC_COLOR_PMT;
if (y==cursor_y) {
doc->cur_entry=doc_e->next;
doc->cur_col=doc->cur_entry->min_col;
}
break;
case DOCT_WORD_WRAP: case DOCT_WORD_WRAP:
if (doc_e->attr) if (doc_e->attr)
doc->flags|=DOCF_WORD_WRAP; doc->flags|=DOCF_WORD_WRAP;
@@ -914,11 +913,11 @@ rc_adjust_xy:
else else
doc->flags&=~DOCF_HIGHLIGHT; doc->flags&=~DOCF_HIGHLIGHT;
break; break;
case DOCT_UNDERLINE: case DOCT_BLINK:
if (doc_e->attr) if (doc_e->attr)
doc->flags|=DOCF_UNDERLINE; doc->flags|=DOCF_BLINK;
else else
doc->flags&=~DOCF_UNDERLINE; doc->flags&=~DOCF_BLINK;
break; break;
case DOCT_INVERT: case DOCT_INVERT:
if (doc_e->attr) if (doc_e->attr)
@@ -926,11 +925,11 @@ rc_adjust_xy:
else else
doc->flags&=~DOCF_INVERT; doc->flags&=~DOCF_INVERT;
break; break;
case DOCT_BLINK: case DOCT_UNDERLINE:
if (doc_e->attr) if (doc_e->attr)
doc->flags|=DOCF_BLINK; doc->flags|=DOCF_UNDERLINE;
else else
doc->flags&=~DOCF_BLINK; doc->flags&=~DOCF_UNDERLINE;
break; break;
case DOCT_SHIFTED_X: case DOCT_SHIFTED_X:
s->shifted_x=doc_e->attr; s->shifted_x=doc_e->attr;
@@ -938,14 +937,22 @@ rc_adjust_xy:
case DOCT_SHIFTED_Y: case DOCT_SHIFTED_Y:
s->shifted_y=doc_e->attr; s->shifted_y=doc_e->attr;
break; break;
case DOCT_CURSOR: case DOCT_CURSOR_MOVEMENT:
if (!find_cursor && !(doc->flags & DOCF_NO_CURSOR)) { doc->flags|=DOCF_BWD_MOVEMENT;
doc->cur_entry=doc_e->next; x+=doc_e->cursor_x_offset;
doc->cur_col=doc->cur_entry->min_col; if (doc_e->de_flags & DOCEF_PAGE_REL_Y) {
i=doc->page_line_num;
if (doc_e->de_flags & DOCEF_TOP_Y)
doc->page_line_num=0;
else if (doc_e->de_flags & DOCEF_BOTTOM_Y)
doc->page_line_num=s->page_len-1;
else if (doc_e->de_flags & DOCEF_CENTER_Y)
doc->page_line_num=s->page_len>>1;
y+=doc->page_line_num-i;
} }
if (doc_e!=added_cursor) y+=doc_e->cursor_y_offset;
del_doc_e=TRUE; doc->page_line_num+=doc_e->cursor_y_offset;
break; goto rc_adjust_xy;
case DOCT_SPRITE: case DOCT_SPRITE:
if (!doc_e->bin_data && doc->flags&DOCEF_HAS_BIN) if (!doc_e->bin_data && doc->flags&DOCEF_HAS_BIN)
doc_e->bin_data=DocBinFindNum(doc,doc_e->bin_num); doc_e->bin_data=DocBinFindNum(doc,doc_e->bin_num);
@@ -1040,13 +1047,6 @@ rc_adjust_xy:
} }
doc->flags|=DOCF_HAS_SONG; doc->flags|=DOCF_HAS_SONG;
break; break;
case DOCT_CLEAR:
next_clear_found=doc_e;
if (doc_e->de_flags&DOCEF_HOLD)
clear_holds=TRUE;
else
clear_holds=FALSE;
break;
case DOCT_HTML_CODE: case DOCT_HTML_CODE:
if (recalc_flags&RECALCF_TO_HTML && if (recalc_flags&RECALCF_TO_HTML &&
doc_e->de_flags&DOCEF_TAG && doc_e->tag) doc_e->de_flags&DOCEF_TAG && doc_e->tag)
+4 -4
View File
@@ -8,7 +8,7 @@ I64 DocCharDist(CDoc *doc,I64 x,I64 y)
U0 DocDelToNum(CDoc *doc,I64 num) U0 DocDelToNum(CDoc *doc,I64 num)
{ {
CDocEntry *doc_e=doc->root.next,*doc_e2; CDocEntry *doc_e=doc->head.next,*doc_e2;
while (num-->0 && doc_e!=doc) { while (num-->0 && doc_e!=doc) {
doc_e2=doc_e->next; doc_e2=doc_e->next;
if (!(doc_e->de_flags & (DOCEF_HOLD|DOCEF_FILTER_SKIP))) { if (!(doc_e->de_flags & (DOCEF_HOLD|DOCEF_FILTER_SKIP))) {
@@ -24,7 +24,7 @@ U0 DocDelToNum(CDoc *doc,I64 num)
U0 DocDelToEntry(CDoc *doc,CDocEntry *clear_entry,Bool clear_holds) U0 DocDelToEntry(CDoc *doc,CDocEntry *clear_entry,Bool clear_holds)
{ {
CDocEntry *doc_e=doc->root.next,*doc_e2; CDocEntry *doc_e=doc->head.next,*doc_e2;
while (doc_e!=doc) { while (doc_e!=doc) {
doc_e2=doc_e->next; doc_e2=doc_e->next;
if (!(doc_e->de_flags & (DOCEF_HOLD|DOCEF_FILTER_SKIP))||clear_holds) { if (!(doc_e->de_flags & (DOCEF_HOLD|DOCEF_FILTER_SKIP))||clear_holds) {
@@ -76,7 +76,7 @@ public U0 DocTop(CDoc *doc=NULL)
if (!doc && !(doc=DocPut)) if (!doc && !(doc=DocPut))
return; return;
unlock=DocLock(doc); unlock=DocLock(doc);
doc->cur_entry=doc->root.next; doc->cur_entry=doc->head.next;
doc->cur_col=doc->cur_entry->min_col; doc->cur_col=doc->cur_entry->min_col;
doc->x=0; doc->x=0;
doc->y=0; doc->y=0;
@@ -161,7 +161,7 @@ public U0 DocCollapse(Bool collapse=TRUE,CDoc *doc=NULL)
if (!doc && !(doc=DocPut)) if (!doc && !(doc=DocPut))
return; return;
unlock=DocLock(doc); unlock=DocLock(doc);
doc_e=doc->root.next; doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
if (doc_e->de_flags&DOCEF_TREE) if (doc_e->de_flags&DOCEF_TREE)
BEqu(&doc_e->de_flags,DOCEf_CHECKED_COLLAPSED,collapse); BEqu(&doc_e->de_flags,DOCEf_CHECKED_COLLAPSED,collapse);
+2 -2
View File
@@ -7,7 +7,7 @@ public Bool DocTreeFind(CDoc *haystack_doc,U8 *needle_path,
I64 i=0,k=0; I64 i=0,k=0;
U8 *st1=StrNew(needle_path),*st2=MAlloc(StrLen(needle_path)+1); U8 *st1=StrNew(needle_path),*st2=MAlloc(StrLen(needle_path)+1);
Bool res=FALSE,unlock_doc=DocLock(haystack_doc); Bool res=FALSE,unlock_doc=DocLock(haystack_doc);
CDocEntry *doc_e=haystack_doc->root.next; CDocEntry *doc_e=haystack_doc->head.next;
if (_tree_entry) *_tree_entry=haystack_doc; if (_tree_entry) *_tree_entry=haystack_doc;
if (_start_indent) *_start_indent=haystack_doc; if (_start_indent) *_start_indent=haystack_doc;
if (_end_indent) *_end_indent=haystack_doc; if (_end_indent) *_end_indent=haystack_doc;
@@ -65,7 +65,7 @@ public Bool DocTreeMake(CDoc *doc,U8 *path)
*st2=MAlloc(StrLen(path)+1), *st2=MAlloc(StrLen(path)+1),
*st3=StrNew(path); *st3=StrNew(path);
Bool res=TRUE,unlock_doc=DocLock(doc); Bool res=TRUE,unlock_doc=DocLock(doc);
CDocEntry *doc_e=doc->root.next; CDocEntry *doc_e=doc->head.next;
doc->cur_entry=doc; doc->cur_entry=doc;
doc->cur_col=0; doc->cur_col=0;
while (*st1 && doc_e!=doc) { while (*st1 && doc_e!=doc) {
+32 -31
View File
@@ -363,22 +363,23 @@ U0 EdInsLink()
switch (type) { switch (type) {
case LK_PLACE_ANCHOR: case LK_PLACE_ANCHOR:
if (html_link) if (html_link)
st=MStrPrint("$$AN,\"%Q\",A=\"%Q\",HTML=\"%Q\"$$",tag,link,html_link); st=MStrPrint("$$AN,\"%$$Q\",A=\"%$$Q\",HTML=\"%$$Q\"$$",
tag,link,html_link);
else else
st=MStrPrint("$$AN,\"%Q\",A=\"%Q\"$$",tag,link); st=MStrPrint("$$AN,\"%$$Q\",A=\"%$$Q\"$$",tag,link);
break; break;
default: default:
if (html_link) if (html_link)
st=MStrPrint("$$LK%s,\"%Q\",A=\"%Q\",HTML=\"%Q\"$$", st=MStrPrint("$$LK%s,\"%$$Q\",A=\"%$$Q\",HTML=\"%$$Q\"$$",
pop_up_st,tag,link,html_link); pop_up_st,tag,link,html_link);
else else
st=MStrPrint("$$LK%s,\"%Q\",A=\"%Q\"$$",pop_up_st,tag,link); st=MStrPrint("$$LK%s,\"%$$Q\",A=\"%$$Q\"$$",pop_up_st,tag,link);
} }
} }
} }
if (st) { if (st) {
if (quote) if (quote)
"%Q",st; "%$$Q",st;
else else
"%s",st; "%s",st;
} }
@@ -540,7 +541,7 @@ U0 EdInsText()
if (e->tree) CatPrint(buf,"+TR"); if (e->tree) CatPrint(buf,"+TR");
if (e->collapsed) CatPrint(buf,"+C"); if (e->collapsed) CatPrint(buf,"+C");
st=MStrPrint("%q",e->tag); st=MStrPrint("%q",e->tag);
"$$TX%s,\"%Q\"",buf,st; "$$TX%s,\"%$$Q\"",buf,st;
Free(st); Free(st);
if (*e->shift_x) if (*e->shift_x)
",SX=%s",e->shift_x; ",SX=%s",e->shift_x;
@@ -550,12 +551,12 @@ U0 EdInsText()
",SCX=%s",e->scroll_x; ",SCX=%s",e->scroll_x;
if (*e->define_str) { if (*e->define_str) {
st=MStrPrint("%q",e->define_str); st=MStrPrint("%q",e->define_str);
",D=\"%Q\"",st; ",D=\"%$$Q\"",st;
Free(st); Free(st);
} }
if (*e->html_link) { if (*e->html_link) {
st=MStrPrint("%q",e->html_link); st=MStrPrint("%q",e->html_link);
",HTML=\"%Q\"",st; ",HTML=\"%$$Q\"",st;
Free(st); Free(st);
} }
"$$"; "$$";
@@ -573,7 +574,7 @@ U0 EdInsSong()
{ {
CEdSong *e=CAlloc(sizeof(CEdSong)); CEdSong *e=CAlloc(sizeof(CEdSong));
if (DocForm(e,,,,ctrl_L_footer)) if (DocForm(e,,,,ctrl_L_footer))
"$$SO,\"%Q\",A=\"%s\"$$",e->tag,e->song; "$$SO,\"%$$Q\",A=\"%s\"$$",e->tag,e->song;
Free(e); Free(e);
} }
@@ -586,7 +587,7 @@ U0 EdInsHtml()
{ {
CEdHtmlCode *e=CAlloc(sizeof(CEdHtmlCode)); CEdHtmlCode *e=CAlloc(sizeof(CEdHtmlCode));
if (DocForm(e,,,,ctrl_L_footer)) if (DocForm(e,,,,ctrl_L_footer))
"$$HC,\"%Q\"$$",e->tag; "$$HC,\"%$$Q\"$$",e->tag;
Free(e); Free(e);
} }
@@ -632,20 +633,20 @@ U0 EdInsMacroMenu(Bool is_macro)
if (is_macro) { if (is_macro) {
if (*e->tag) { if (*e->tag) {
st=MStrPrint("%q",e->tag); st=MStrPrint("%q",e->tag);
"$$MA%s,\"%Q\"",buf,st; "$$MA%s,\"%$$Q\"",buf,st;
Free(st); Free(st);
} else } else
"$$MA%s",buf; "$$MA%s",buf;
} else { } else {
st=MStrPrint("%q",e->tag); st=MStrPrint("%q",e->tag);
"$$MU%s,\"%Q\"",buf,st; "$$MU%s,\"%$$Q\"",buf,st;
Free(st); Free(st);
} }
if (*e->left_exp) if (*e->left_exp)
",LE=%s",e->left_exp; ",LE=%s",e->left_exp;
if (*e->left_macro) { if (*e->left_macro) {
st=MStrPrint("%q",e->left_macro); st=MStrPrint("%q",e->left_macro);
",LM=\"%Q\"",st; ",LM=\"%$$Q\"",st;
Free(st); Free(st);
} }
if (*e->shift_x) if (*e->shift_x)
@@ -692,25 +693,25 @@ U0 EdInsButton()
if (*e->tag) { if (*e->tag) {
if (e->quote) { if (e->quote) {
st=MStrPrint("%q",e->tag); st=MStrPrint("%q",e->tag);
"$$$$BT%s,\\\"%Q\\\"",buf,st; "$$$$BT%s,\\\"%$$Q\\\"",buf,st;
Free(st); Free(st);
if (*e->left_exp) if (*e->left_exp)
",LE=%s",e->left_exp; ",LE=%s",e->left_exp;
if (*e->left_macro) { if (*e->left_macro) {
st=MStrPrint("%q",e->left_macro); st=MStrPrint("%q",e->left_macro);
",LM=\\\"%Q\\\"",st; ",LM=\\\"%$$Q\\\"",st;
Free(st); Free(st);
} }
"$$$$"; "$$$$";
} else { } else {
st=MStrPrint("%q",e->tag); st=MStrPrint("%q",e->tag);
"$$BT%s,\"%Q\"",buf,st; "$$BT%s,\"%$$Q\"",buf,st;
Free(st); Free(st);
if (*e->left_exp) if (*e->left_exp)
",LE=%s",e->left_exp; ",LE=%s",e->left_exp;
if (*e->left_macro) { if (*e->left_macro) {
st=MStrPrint("%q",e->left_macro); st=MStrPrint("%q",e->left_macro);
",LM=\"%Q\"",st; ",LM=\"%$$Q\"",st;
Free(st); Free(st);
} }
"$$"; "$$";
@@ -820,11 +821,11 @@ U0 EdInsData()
st=MStrPrint("%q",e->fmt_str); st=MStrPrint("%q",e->fmt_str);
if (e->remalloc) if (e->remalloc)
"$$$$DA%s,A=\\\"%Q\\\"$$$$",buf,st; "$$$$DA%s,A=\\\"%$$Q\\\"$$$$",buf,st;
else if (e->len==DOCE_LEN_DFT) else if (e->len==DOCE_LEN_DFT)
"$$$$DA%s%s,A=\\\"%Q\\\"$$$$",buf,raw_type,st; "$$$$DA%s%s,A=\\\"%$$Q\\\"$$$$",buf,raw_type,st;
else else
"$$$$DA%s,LEN=%d%s,A=\\\"%Q\\\"$$$$",buf,e->len,raw_type,st; "$$$$DA%s,LEN=%d%s,A=\\\"%$$Q\\\"$$$$",buf,e->len,raw_type,st;
Free(st); Free(st);
} }
} }
@@ -852,7 +853,7 @@ U0 EdInsCheckBox()
StrPrint(raw_type,",RT=%Z",e->type,"ST_RAW_TYPES"); StrPrint(raw_type,",RT=%Z",e->type,"ST_RAW_TYPES");
if (e->refresh) CatPrint(buf,"+RD"); if (e->refresh) CatPrint(buf,"+RD");
st=MStrPrint("%q",e->tag); st=MStrPrint("%q",e->tag);
"$$$$CB%s%s,\\\"%Q\\\"$$$$",buf,raw_type,st; "$$$$CB%s%s,\\\"%$$Q\\\"$$$$",buf,raw_type,st;
Free(st); Free(st);
} }
Free(e); Free(e);
@@ -885,9 +886,9 @@ U0 EdInsLst()
st1=MStrPrint("%q",e->tag); st1=MStrPrint("%q",e->tag);
st2=MStrPrint("%q",e->define_str); st2=MStrPrint("%q",e->define_str);
if (st1) if (st1)
"$$$$LS%s%s,\\\"%Q\\\",D=\\\"%Q\\\"$$$$",buf,raw_type,st1,st2; "$$$$LS%s%s,\\\"%$$Q\\\",D=\\\"%$$Q\\\"$$$$",buf,raw_type,st1,st2;
else else
"$$$$LS%s%s,D=\\\"%Q\\\"$$$$",buf,raw_type,st2; "$$$$LS%s%s,D=\\\"%$$Q\\\"$$$$",buf,raw_type,st2;
Free(st1); Free(st1);
Free(st2); Free(st2);
} }
@@ -940,14 +941,14 @@ U0 EdInsBin(I64 bin_num,I64 type)
"bin tag.\n\n",ctrl_L_footer)) { "bin tag.\n\n",ctrl_L_footer)) {
if (*e->bin_ptr_link_file) { if (*e->bin_ptr_link_file) {
if (*e->bin_ptr_link_tag) if (*e->bin_ptr_link_tag)
"$$%Z,\"%Q\",BI=%d,BP=\"%s,%s\"$$",type,"ST_DOC_CMDS",e->tag,e->bin_num, "$$%Z,\"%$$Q\",BI=%d,BP=\"%s,%s\"$$",type,"ST_DOC_CMDS",e->tag,e->bin_num,
e->bin_ptr_link_file,e->bin_ptr_link_tag; e->bin_ptr_link_file,e->bin_ptr_link_tag;
else else
"$$%Z,\"%Q\",BI=%d,BP=\"%s,%d\"$$",type,"ST_DOC_CMDS",e->tag,e->bin_num, "$$%Z,\"%$$Q\",BI=%d,BP=\"%s,%d\"$$",type,"ST_DOC_CMDS",e->tag,e->bin_num,
e->bin_ptr_link_file,e->bin_ptr_link_bin_num; e->bin_ptr_link_file,e->bin_ptr_link_bin_num;
} else { } else {
if (DocBinFindNum(DocPut,e->bin_num)) if (DocBinFindNum(DocPut,e->bin_num))
"$$%Z,\"%Q\",BI=%d$$",type,"ST_DOC_CMDS",e->tag,e->bin_num; "$$%Z,\"%$$Q\",BI=%d$$",type,"ST_DOC_CMDS",e->tag,e->bin_num;
else else
PopUpOk("Invalid Binary Num"); PopUpOk("Invalid Binary Num");
} }
@@ -972,7 +973,7 @@ U0 EdInsTree()
*buf=0; *buf=0;
if (!e->collapsed) CatPrint(buf,"-C"); if (!e->collapsed) CatPrint(buf,"-C");
st1=MStrPrint("%q",e->tag); st1=MStrPrint("%q",e->tag);
st2=MStrPrint("$$TR%s,\"%Q\"$$\n$$ID,%d$$*\n$$ID,%d$$", st2=MStrPrint("$$TR%s,\"%$$Q\"$$\n$$ID,%d$$*\n$$ID,%d$$",
buf,st1,e->indent,-e->indent); buf,st1,e->indent,-e->indent);
DocPrintAtomic(DocPut,"%s",st2); DocPrintAtomic(DocPut,"%s",st2);
Free(st1); Free(st1);
@@ -1097,7 +1098,7 @@ U8 *EdSpriteLink(Bool *_pop_up,U8 **_html_link)
I64 type=PopUpLinkType(FALSE); I64 type=PopUpLinkType(FALSE);
*_html_link=NULL; *_html_link=NULL;
if (type>=0 && GetLink(type,&tag,&link,_pop_up,&quote,_html_link)) if (type>=0 && GetLink(type,&tag,&link,_pop_up,&quote,_html_link))
res=MStrPrint("\"%Q\",A=\"%Q\"",tag,link); res=MStrPrint("\"%$$Q\",A=\"%$$Q\"",tag,link);
Free(tag); Free(tag);
Free(link); Free(link);
return res; return res;
@@ -1122,7 +1123,7 @@ U8 *EdSprite(I64 bin_num)
if (e->popup) CatPrint(buf,"+PU"); if (e->popup) CatPrint(buf,"+PU");
if (e->escape) CatPrint(buf,"+X"); if (e->escape) CatPrint(buf,"+X");
st=MStrPrint("%q",e->exp); st=MStrPrint("%q",e->exp);
st1=MStrPrint("\"%Q\",LM=\"%Q\"",e->tag,st); st1=MStrPrint("\"%$$Q\",LM=\"%$$Q\"",e->tag,st);
Free(st); Free(st);
} }
break; break;
@@ -1130,7 +1131,7 @@ U8 *EdSprite(I64 bin_num)
e->escape=TRUE; e->escape=TRUE;
if (DocForm(e,"CEdMenuSprite",,,ctrl_L_footer)) { if (DocForm(e,"CEdMenuSprite",,,ctrl_L_footer)) {
if (e->escape) CatPrint(buf,"+X"); if (e->escape) CatPrint(buf,"+X");
st1=MStrPrint("\"%Q\",LE=%s",e->tag,e->exp); st1=MStrPrint("\"%$$Q\",LE=%s",e->tag,e->exp);
} }
break; break;
case EST_SPRITE_LINK: case EST_SPRITE_LINK:
@@ -1151,7 +1152,7 @@ U8 *EdSprite(I64 bin_num)
} }
if (st1) { if (st1) {
if (html_link) if (html_link)
st2=MStrPrint("$$SP%s,%s,HTML=\"%Q\",BI=%d$$",buf,st1,html_link,bin_num); st2=MStrPrint("$$SP%s,%s,HTML=\"%$$Q\",BI=%d$$",buf,st1,html_link,bin_num);
else else
st2=MStrPrint("$$SP%s,%s,BI=%d$$",buf,st1,bin_num); st2=MStrPrint("$$SP%s,%s,BI=%d$$",buf,st1,bin_num);
Free(st1); Free(st1);
+1
View File
@@ -25,6 +25,7 @@ public class CDolDocGlbls
type_flags_nontag_invisible [(DOCT_NUM_TYPES+63)/64], type_flags_nontag_invisible [(DOCT_NUM_TYPES+63)/64],
type_flags_form [(DOCT_NUM_TYPES+63)/64], type_flags_form [(DOCT_NUM_TYPES+63)/64],
type_flags_data [(DOCT_NUM_TYPES+63)/64], type_flags_data [(DOCT_NUM_TYPES+63)/64],
type_flags_chk_dup [(DOCT_NUM_TYPES+63)/64],
clean_scan_codes [4]; clean_scan_codes [4];
I32 dft_type_flags [DOCT_NUM_TYPES]; I32 dft_type_flags [DOCT_NUM_TYPES];
} doldoc; } doldoc;
+5 -4
View File
@@ -214,13 +214,14 @@ public U8 *BibleLine2Verse(I64 line,I64 separate_ch=CH_SPACE)
return NULL; return NULL;
} }
public U0 BibleLines(CDoc *doc_out=NULL,I64 start,I64 lines) public U0 BibleLines(CDoc *doc_out=NULL,I64 start,I64 lines,
U8 *bible_filename=BIBLE_FILENAME)
{//Put N line starting at line M into doc. {//Put N line starting at line M into doc.
CDoc *doc_in; CDoc *doc_in;
CDocEntry *doc_e; CDocEntry *doc_e;
if (!doc_out) doc_out=DocPut; if (!doc_out) doc_out=DocPut;
if (doc_out && FileFind(BIBLE_FILENAME)) { if (doc_out && FileFind(bible_filename)) {
doc_in=DocRead(BIBLE_FILENAME,DOCF_PLAIN_TEXT|DOCF_NO_CURSOR); doc_in=DocRead(bible_filename,DOCF_PLAIN_TEXT|DOCF_NO_CURSOR);
DocLineNumGoTo(doc_in,start); //one based DocLineNumGoTo(doc_in,start); //one based
doc_e=doc_in->cur_entry; doc_e=doc_in->cur_entry;
while (lines>0 && doc_e!=doc_in) { while (lines>0 && doc_e!=doc_in) {
@@ -279,7 +280,7 @@ public U0 BibleVerse(CDoc *doc_out=NULL,U8 *verse,I64 lines)
public CDoc *BibleDoc() public CDoc *BibleDoc()
{//Return Bible as DolDoc with trees. {//Return Bible as DolDoc with trees.
CDoc *res=DocRead(BIBLE_FILENAME); CDoc *res=DocRead(BIBLE_FILENAME);
CDocEntry *doc_e=res->root.next,*doc_e1; CDocEntry *doc_e=res->head.next,*doc_e1;
Bool open_chapter=FALSE; Bool open_chapter=FALSE;
U8 *ptr=Define("ST_BIBLE_BOOK_LINES"); U8 *ptr=Define("ST_BIBLE_BOOK_LINES");
I64 book,book_cnt=DefineCnt("ST_BIBLE_BOOK_LINES")-1, I64 book,book_cnt=DefineCnt("ST_BIBLE_BOOK_LINES")-1,
+1 -1
View File
@@ -23,7 +23,7 @@ U0 GodDoodleDraw(CTask *task,CDC *dc)
U0 GodDoodleSmooth(I64 num) U0 GodDoodleSmooth(I64 num)
{ {
CDC *dc=DCExtract(god.doodle_dc,0,0, CDC *dc=DCExt(god.doodle_dc,0,0,
god.doodle_dc->width-1,god.doodle_dc->height-1); god.doodle_dc->width-1,god.doodle_dc->height-1);
I64 i,x,y,x1,y1,c,histogram[16],best,best_cnt,c_old=god.doodle_dc->color; I64 i,x,y,x1,y1,c,histogram[16],best,best_cnt,c_old=god.doodle_dc->color;
for (y=0;y<god.doodle_dc->height;y++) for (y=0;y<god.doodle_dc->height;y++)
+11 -9
View File
@@ -8,7 +8,7 @@ There's something obviously different about people in the Bible compared to peop
You can't tell if God's talking unless you have a context of conversation, but, more importantly, you are commanded to do an offering of love, like communion preparation. $LK,"1 Corinthians,11:27",A="BF:1 Corinthians,11:27"$ When you pick a greeting card for someone, that is love effort. If you expect God to put effort toward you, you must put effort toward Him. God said, "honest measures" applies between your offering of love and His response, like a fair barter. You get out of prayer what you put into it. God wants praise, hymns, or whatever you think He might want. Try and see, like Cain and Abel. $LK,"Genesis,4:1-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? 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:28-29",A="BF:Matthew,6:28-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/Sup1/Sup1Comics/",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-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." 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."
@@ -24,7 +24,7 @@ Jesus said, "Forgive us our trespasses as we forgive those who tresspass against
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 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 head 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!
@@ -56,18 +56,19 @@ 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-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.) (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.)
It's a covenant to do an offering, first. It's a covenant to do an offering, first.
Offer New Songs, $TX,"Moses Comics",HTML="http://www.templeos.org/Wb/Apps/AfterEgypt/Comics"$, praise, poems, Offer New Songs, $TX,"Moses Comics",HTML="http://www.templeos.org/Wb/Apps/AfterEgypt/Comics"$, praise, poems,
and conversation. See $LK,"Cain and Abel",A="BF:Genesis,4:1"$.$FG$ and conversation. See $LK,"Cain and Abel",A="BF:Genesis,4:1"$.
"Barter"(God also called offerings bartering.)$FG$
The holocaust? $FG,4$Wanted to "compact" the Jews.$FG$ The holocaust? $FG,4$Wanted to "compact" the Jews.$FG$
Arab/Jews? $FG,4$"Oil funny hopefully"$FG$ Arab/Jews? $FG,4$"Oil funny hopefully"$FG$
Peace? $FG,4$One Palestinian can ruin it.$FG$ Peace? $FG,4$One Palestinian can ruin it.$FG$
Best religion? $FG,4$One with most new vistas of understanding in$FG$ Best religion? $FG,4$One with most new vistas of understanding in$FG$
$FG,4$a lifetime. One you can level-up the most in.$FG$ $FG,4$a lifetime -- one you can level-up the most in.$FG$
Chavez blaming the US. $FG,4$"Japan industrious"$FG$ Chavez blaming the US. $FG,4$"Japan industrious"$FG$
On racism? $FG,4$"Sports"$FG$ On racism? $FG,4$"Sports"$FG$
On socialism? $FG,4$"pardon_the_French, never_happy, never_enough"$FG$ On socialism? $FG,4$"pardon_the_French, never_happy, never_enough"$FG$
@@ -92,10 +93,11 @@ Favorite color? $FG,4$$TX,"\"Iceberg\" blue",HTML="https://upload.wikimedia.or
Money? $FG,4$"Enough vehemently better"$FG$ 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.head-beer.org/modules.php?name=Brands&rbop=Brand&bid=1965"$.$FG$
Homosexuality? $LK,"Matthew,15:11",A="BF:Matthew,15:11"$ Homosexuality? $LK,"Matthew,15:11",A="BF:Matthew,15:11"$
Pets? $FG,4$"homo"$FG$ Pets? $FG,4$"homo" Hates fact too dependent and tame.$FG$
Sports? $FG,4$"homo"$FG$ Sports? $FG,4$"homo"
"Tackle a horse"$FG$
Favorite sport? $FG,4$Hockey$FG$ Favorite sport? $FG,4$Hockey$FG$
$TX,"Wreck of the Edmund Fitzgerald",HTML="http://www.youtube.com/watch?v=9vST6hVRj2A"$ $FG,4$"homo"$FG$ $TX,"Wreck of the Edmund Fitzgerald",HTML="http://www.youtube.com/watch?v=9vST6hVRj2A"$ $FG,4$"homo"$FG$
Smelling farts $FG,4$"Sodom"$FG$ Smelling farts $FG,4$"Sodom"$FG$
+1 -1
View File
@@ -616,7 +616,7 @@ U8 *GrBitMap1ToBitMap8(U8 *dst,U8 *src,I64 src_size,I64 bkcolor)
return dst; return dst;
} }
public CDC *DCExtract(CDC *dc=gr.dc,I64 x1,I64 y1,I64 x2,I64 y2, public CDC *DCExt(CDC *dc=gr.dc,I64 x1,I64 y1,I64 x2,I64 y2,
CTask *task=NULL) CTask *task=NULL)
{//Extract new device context rect from device context. {//Extract new device context rect from device context.
CDC *res; CDC *res;
+1 -1
View File
@@ -2,4 +2,4 @@
extern U8 *GrBitMap4ToBitMap8(U8 *dst,U8 *src,I64 src_size,I64 bkcolor); extern U8 *GrBitMap4ToBitMap8(U8 *dst,U8 *src,I64 src_size,I64 bkcolor);
extern I64 GrBlot3(CDC *dc,I64 x1,I64 y1,I64 z1,CDC *img); extern I64 GrBlot3(CDC *dc,I64 x1,I64 y1,I64 z1,CDC *img);
extern I64 *Mat4x4New(I64 *src,CTask *mem_task=NULL); extern I64 *Mat4x4New(I64 *src,CTask *mem_task=NULL);
extern U8 *SpriteQue2Sprite(CSprite *root,I64 *_size=NULL); extern U8 *SpriteQue2Sprite(CSprite *head,I64 *_size=NULL);
+1 -1
View File
@@ -42,7 +42,7 @@ public class CGrGlbls
hide_row,hide_col; hide_row,hide_col;
} gr; } gr;
//See $LK,"RLf_VGA",A="FF:::/Kernel/KStart.CPP,RLf_VGA"$ //See $LK,"RLf_VGA",A="FF:::/Kernel/KStart16.CPP,RLf_VGA"$
//See $LK,"SysGrInit",A="MN:SysGrInit"$() //See $LK,"SysGrInit",A="MN:SysGrInit"$()
//Allows consts to be used instead of vars. //Allows consts to be used instead of vars.
HashPublic("GR_WIDTH",HTT_DEFINE_STR);; HashPublic("GR_WIDTH",HTT_DEFINE_STR);;
+1 -1
View File
@@ -16,7 +16,7 @@ U0 GrUpdateTaskODEs(CTask *task)
} }
U0 GrUpdateTaskWin(CTask *task) U0 GrUpdateTaskWin(CTask *task)
{ //Draw core0 task win. { //Draw a win. Only core0 tasks have a win.
CDC *dc; CDC *dc;
CD3I64 saved_scroll; CD3I64 saved_scroll;
sys_task_being_screen_updated=task; sys_task_being_screen_updated=task;
+1 -1
View File
@@ -456,7 +456,7 @@ public CDocEntry *DocSprite(CDoc *doc=NULL,U8 *elems,U8 *fmt=NULL)
MemCpy(tempb->data,elems,size); MemCpy(tempb->data,elems,size);
tempb->num=doc->cur_bin_num; tempb->num=doc->cur_bin_num;
tempb->use_cnt=1; tempb->use_cnt=1;
QueIns(tempb,doc->bin_root.last); QueIns(tempb,doc->bin_head.last);
if (fmt) if (fmt)
st=MStrPrint(fmt,doc->cur_bin_num++); st=MStrPrint(fmt,doc->cur_bin_num++);
else else
+5 -5
View File
@@ -139,7 +139,7 @@ U0 GrBitMapEdTrimToExtents(CDC **_img,I64 *_xx1,I64 *_yy1,
} }
tr_done: tr_done:
*_img=DCExtract(img,x1,y1,x2,y2); *_img=DCExt(img,x1,y1,x2,y2);
*_xx1+=x1; *_yy1+=y1; *_xx1+=x1; *_yy1+=y1;
*_xx2+=x2-(img->width-1); *_yy2+=y2-(img->height-1); //not inclusive *_xx2+=x2-(img->width-1); *_yy2+=y2-(img->height-1); //not inclusive
DCDel(img); DCDel(img);
@@ -155,7 +155,7 @@ U0 GrBitMapEdAddOutline(CDC *img,I64 width,
old_color=img->color; old_color=img->color;
img->color=color; img->color=color;
while (width-->0) { while (width-->0) {
src=DCExtract(img,0,0,img->width-1,img->height-1); src=DCExt(img,0,0,img->width-1,img->height-1);
for (i=0;i<img->height;i++) for (i=0;i<img->height;i++)
for (j=0;j<img->width;j++) for (j=0;j<img->width;j++)
if (GrPeek(src,j,i)==bkcolor) if (GrPeek(src,j,i)==bkcolor)
@@ -181,7 +181,7 @@ U0 GrBitMapEdEtch(CDC *img,I64 width,CColorROPU32 bkcolor)
old_color=img->color; old_color=img->color;
img->color=bkcolor; img->color=bkcolor;
while (width-->0) { while (width-->0) {
src=DCExtract(img,0,0,img->width-1,img->height-1); src=DCExt(img,0,0,img->width-1,img->height-1);
for (i=0;i<img->height;i++) for (i=0;i<img->height;i++)
for (j=0;j<img->width;j++) for (j=0;j<img->width;j++)
if (GrPeek(src,j,i)!=bkcolor) if (GrPeek(src,j,i)!=bkcolor)
@@ -347,7 +347,7 @@ bm_menu:
break; break;
} }
DCDel(undo); DCDel(undo);
undo=DCExtract(img,0,0,img->width-1,img->height-1); undo=DCExt(img,0,0,img->width-1,img->height-1);
undo->bkcolor=bkcolor; undo->bkcolor=bkcolor;
WinMgrSync(2,TRUE); //Let popup close WinMgrSync(2,TRUE); //Let popup close
GrBitMapEdPrepPersistentDC(dc,xx1,yy1,img); GrBitMapEdPrepPersistentDC(dc,xx1,yy1,img);
@@ -612,7 +612,7 @@ bm_menu:
y22=y1; y22=y1;
} }
DCDel(clipboard); DCDel(clipboard);
clipboard=DCExtract(img,x11-xx1,y11-yy1,x22-xx1,y22-yy1); clipboard=DCExt(img,x11-xx1,y11-yy1,x22-xx1,y22-yy1);
clipboard->bkcolor=bkcolor; clipboard->bkcolor=bkcolor;
if (mode==GBM_DELETE) { if (mode==GBM_DELETE) {
img->color=bkcolor; img->color=bkcolor;
+23 -23
View File
@@ -204,8 +204,8 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type)
CSprite *res,g; CSprite *res,g;
CColorROPU32 color; CColorROPU32 color;
U8 *st,*ptr; U8 *st,*ptr;
CQueD3I32 rootp,*tempp,*tempa1; CQueD3I32 headp,*tempp,*tempa1;
CQueMeshTri roott,*tempt,*tempt1; CQueMeshTri headt,*tempt,*tempt1;
CQueVectU8 *tempv; CQueVectU8 *tempv;
MemSet(&g,0,sizeof(CSprite)); MemSet(&g,0,sizeof(CSprite));
switch (type) { switch (type) {
@@ -338,11 +338,11 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type)
case SPT_POLYLINE: case SPT_POLYLINE:
Lex(cc); //Skip { Lex(cc); //Skip {
g.type=SPT_POLYLINE; g.type=SPT_POLYLINE;
QueInit(&rootp); QueInit(&headp);
while (cc->token=='(') { while (cc->token=='(') {
tempp=CAlloc(sizeof(CQueD3I32)); tempp=CAlloc(sizeof(CQueD3I32));
LexD2I32(cc,&tempp->p); LexD2I32(cc,&tempp->p);
QueIns(tempp,rootp.last); QueIns(tempp,headp.last);
g.nu.num++; g.nu.num++;
if (cc->token==',') if (cc->token==',')
Lex(cc); //Skip , Lex(cc); //Skip ,
@@ -353,8 +353,8 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type)
res=MAlloc(size+g.nu.num*sizeof(CD2I32)); res=MAlloc(size+g.nu.num*sizeof(CD2I32));
MemCpy(res,&g,size); MemCpy(res,&g,size);
ptr=&res->nu.u; ptr=&res->nu.u;
tempp=rootp.next; tempp=headp.next;
while (tempp!=&rootp) { while (tempp!=&headp) {
tempa1=tempp->next; tempa1=tempp->next;
MemCpy(ptr,&tempp->p,sizeof(CD2I32)); MemCpy(ptr,&tempp->p,sizeof(CD2I32));
ptr+=sizeof(CD2I32); ptr+=sizeof(CD2I32);
@@ -367,11 +367,11 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type)
case SPT_BSPLINE2_CLOSED: case SPT_BSPLINE2_CLOSED:
case SPT_BSPLINE3_CLOSED: case SPT_BSPLINE3_CLOSED:
Lex(cc); //Skip { Lex(cc); //Skip {
QueInit(&rootp); QueInit(&headp);
while (cc->token=='(') { while (cc->token=='(') {
tempp=CAlloc(sizeof(CQueD3I32)); tempp=CAlloc(sizeof(CQueD3I32));
LexD3I32(cc,&tempp->p); LexD3I32(cc,&tempp->p);
QueIns(tempp,rootp.last); QueIns(tempp,headp.last);
g.nu.num++; g.nu.num++;
if (cc->token==',') if (cc->token==',')
Lex(cc); //Skip , Lex(cc); //Skip ,
@@ -393,8 +393,8 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type)
} }
MemCpy(res,&g,size); MemCpy(res,&g,size);
ptr=&res->nu.u; ptr=&res->nu.u;
tempp=rootp.next; tempp=headp.next;
while (tempp!=&rootp) { while (tempp!=&headp) {
tempa1=tempp->next; tempa1=tempp->next;
MemCpy(ptr,&tempp->p,sizeof(CD3I32)); MemCpy(ptr,&tempp->p,sizeof(CD3I32));
ptr+=sizeof(CD3I32); ptr+=sizeof(CD3I32);
@@ -482,11 +482,11 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type)
Lex(cc); //Skip , Lex(cc); //Skip ,
} }
num1=0; num1=0;
QueInit(&rootp); QueInit(&headp);
while (cc->token=='(') { while (cc->token=='(') {
tempp=CAlloc(sizeof(CQueD3I32)); tempp=CAlloc(sizeof(CQueD3I32));
LexD3I32(cc,&tempp->p); LexD3I32(cc,&tempp->p);
QueIns(tempp,rootp.last); QueIns(tempp,headp.last);
num1++; num1++;
if (cc->token==',') if (cc->token==',')
Lex(cc); //Skip , Lex(cc); //Skip ,
@@ -495,7 +495,7 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type)
LexExcept(cc,"Expecting ':' at "); LexExcept(cc,"Expecting ':' at ");
Lex(cc); //Skip : Lex(cc); //Skip :
num2=0; num2=0;
QueInit(&roott); QueInit(&headt);
while (cc->token=='(') { while (cc->token=='(') {
tempt=CAlloc(sizeof(CQueMeshTri)); tempt=CAlloc(sizeof(CQueMeshTri));
st=LexFirstRem(cc,","); st=LexFirstRem(cc,",");
@@ -517,7 +517,7 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type)
if (cc->token!=')') if (cc->token!=')')
LexExcept(cc,"Expecting ')' at "); LexExcept(cc,"Expecting ')' at ");
Lex(cc); //Skip ) Lex(cc); //Skip )
QueIns(tempt,roott.last); QueIns(tempt,headt.last);
num2++; num2++;
if (cc->token==',') if (cc->token==',')
Lex(cc); //Skip , Lex(cc); //Skip ,
@@ -534,16 +534,16 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type)
res=MAlloc(size+num1*sizeof(CD3I32)+num2*sizeof(CMeshTri)); res=MAlloc(size+num1*sizeof(CD3I32)+num2*sizeof(CMeshTri));
MemCpy(res,&g,size); MemCpy(res,&g,size);
ptr=res(U8 *)+size; ptr=res(U8 *)+size;
tempp=rootp.next; tempp=headp.next;
while (tempp!=&rootp) { while (tempp!=&headp) {
tempa1=tempp->next; tempa1=tempp->next;
MemCpy(ptr,&tempp->p,sizeof(CD3I32)); MemCpy(ptr,&tempp->p,sizeof(CD3I32));
ptr+=sizeof(CD3I32); ptr+=sizeof(CD3I32);
Free(tempp); Free(tempp);
tempp=tempa1; tempp=tempa1;
} }
tempt=roott.next; tempt=headt.next;
while (tempt!=&roott) { while (tempt!=&headt) {
tempt1=tempt->next; tempt1=tempt->next;
MemCpy(ptr,&tempt->start,sizeof(CMeshTri)); MemCpy(ptr,&tempt->start,sizeof(CMeshTri));
ptr+=sizeof(CMeshTri); ptr+=sizeof(CMeshTri);
@@ -561,14 +561,14 @@ CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type)
public U8 *Code2Sprite(CDoc *doc,I64 *_size=NULL) public U8 *Code2Sprite(CDoc *doc,I64 *_size=NULL)
{//Text to sprite. {//Text to sprite.
CSprite root; CSprite head;
U8 *res; U8 *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_DONT_FREE_BUF);
CHashTable *old_hash_table_lst=cc->htc.hash_table_lst; CHashTable *old_hash_table_lst=cc->htc.hash_table_lst;
CHashGeneric *temph; CHashGeneric *temph;
I64 i,size=0; I64 i,size=0;
QueInit(&root); QueInit(&head);
LexAttachDoc(cc,,doc); LexAttachDoc(cc,,doc);
try { try {
do { do {
@@ -578,7 +578,7 @@ public U8 *Code2Sprite(CDoc *doc,I64 *_size=NULL)
i=temph->user_data0; i=temph->user_data0;
cc->htc.hash_table_lst=old_hash_table_lst; cc->htc.hash_table_lst=old_hash_table_lst;
if (Lex(cc)=='{') //Skip ident if (Lex(cc)=='{') //Skip ident
QueIns(Code2SpriteElem(cc,i),root.last); QueIns(Code2SpriteElem(cc,i),head.last);
} else if (cc->token) } else if (cc->token)
LexExcept(cc,"Expecting sprite element type name at "); LexExcept(cc,"Expecting sprite element type name at ");
} while (cc->token); } while (cc->token);
@@ -591,12 +591,12 @@ public U8 *Code2Sprite(CDoc *doc,I64 *_size=NULL)
DocUnlock(doc); DocUnlock(doc);
if (okay) { if (okay) {
CmpCtrlDel(cc); //TODO: can crash CmpCtrlDel(cc); //TODO: can crash
res=SpriteQue2Sprite(&root,&size); res=SpriteQue2Sprite(&head,&size);
} else { } else {
res=NULL; res=NULL;
size=0; size=0;
} }
if (_size) *_size=size; if (_size) *_size=size;
QueDel(&root); QueDel(&head);
return res; return res;
} }
+127 -127
View File
@@ -1,14 +1,14 @@
#help_index "Graphics/Sprite;Sprites" #help_index "Graphics/Sprite;Sprites"
CSprite *SpriteSetSettings(CDC *dc=NULL,CSprite *root,I64 elem_num, CSprite *SpriteSetSettings(CDC *dc=NULL,CSprite *head,I64 elem_num,
I64 x=0,I64 y=0,CColorROPU32 *_color=NULL,I64 *_width=NULL, I64 x=0,I64 y=0,CColorROPU32 *_color=NULL,I64 *_width=NULL,
I64 *_xx=NULL,I64 *_yy=NULL) I64 *_xx=NULL,I64 *_yy=NULL)
{ {
CSprite *res=root->next; CSprite *res=head->next;
I64 width=1,xx=0,yy=0; I64 width=1,xx=0,yy=0;
CColorROPU32 color=BLACK; CColorROPU32 color=BLACK;
if (dc) DCRst(dc); if (dc) DCRst(dc);
while (elem_num-->0 && res!=root) { while (elem_num-->0 && res!=head) {
switch (res->type) { switch (res->type) {
case SPT_COLOR: case SPT_COLOR:
color=res->c.color; color=res->c.color;
@@ -49,13 +49,13 @@ CSprite *SpriteSetSettings(CDC *dc=NULL,CSprite *root,I64 elem_num,
return res; return res;
} }
Bool SpritePolyPtPlot(CSprite *root,I64 x,I64 y,I64) Bool SpritePolyPtPlot(CSprite *head,I64 x,I64 y,I64)
{ {
CSprite *tempg=CAlloc(SpriteElemQuedBaseSize(SPT_PT)); CSprite *tempg=CAlloc(SpriteElemQuedBaseSize(SPT_PT));
tempg->type=SPT_PT; tempg->type=SPT_PT;
tempg->p.x1=x; tempg->p.x1=x;
tempg->p.y1=y; tempg->p.y1=y;
QueIns(tempg,root->last); QueIns(tempg,head->last);
return TRUE; return TRUE;
} }
@@ -76,19 +76,19 @@ CSprite *Sprite2SpriteQue(U8 *elems)
return res; return res;
} }
U8 *SpriteQue2Sprite(CSprite *root,I64 *_size=NULL) U8 *SpriteQue2Sprite(CSprite *head,I64 *_size=NULL)
{ {
I64 i,size=sprite_elem_base_sizes[SPT_END]; I64 i,size=sprite_elem_base_sizes[SPT_END];
CSprite *tempg=root->next; CSprite *tempg=head->next;
U8 *res,*dst; U8 *res,*dst;
while (tempg!=root) { while (tempg!=head) {
size+=SpriteElemSize(tempg); size+=SpriteElemSize(tempg);
tempg=tempg->next; tempg=tempg->next;
} }
if (_size) *_size=size; if (_size) *_size=size;
res=dst=MAlloc(size); res=dst=MAlloc(size);
tempg=root->next; tempg=head->next;
while (tempg!=root) { while (tempg!=head) {
i=SpriteElemSize(tempg); i=SpriteElemSize(tempg);
MemCpy(dst,&tempg->start,i); MemCpy(dst,&tempg->start,i);
dst+=i; dst+=i;
@@ -98,25 +98,25 @@ U8 *SpriteQue2Sprite(CSprite *root,I64 *_size=NULL)
return res; return res;
} }
U0 SpriteEdUpdate(CDoc *doc,CDocEntry *doc_ce,CSprite *root) U0 SpriteEdUpdate(CDoc *doc,CDocEntry *doc_ce,CSprite *head)
{ {
CDocBin *tempb=doc_ce->bin_data; CDocBin *tempb=doc_ce->bin_data;
I64 size; I64 size;
Bool unlock=DocLock(doc); Bool unlock=DocLock(doc);
Free(tempb->data); Free(tempb->data);
tempb->data=SpriteQue2Sprite(root,&size); tempb->data=SpriteQue2Sprite(head,&size);
tempb->size=size; tempb->size=size;
if (unlock) if (unlock)
DocUnlock(doc); DocUnlock(doc);
} }
U0 SpriteSetOrigin(CSprite *root,I64 dx,I64 dy,I64 dz) U0 SpriteSetOrigin(CSprite *head,I64 dx,I64 dy,I64 dz)
{ {
I64 i; I64 i;
I32 *ptr; I32 *ptr;
CD3I32 *p; CD3I32 *p;
CSprite *tempg=root->next; CSprite *tempg=head->next;
while (tempg!=root) { while (tempg!=head) {
if (tempg->sel) if (tempg->sel)
switch (tempg->type) { switch (tempg->type) {
case SPT_ARROW: case SPT_ARROW:
@@ -372,14 +372,14 @@ CSprite *SpriteTransformBitMap(I64 *r,CSprite *tempg)
return tempg1; return tempg1;
} }
U0 SpriteTransform(I64 *r,CSprite *root) U0 SpriteTransform(I64 *r,CSprite *head)
{ {
I64 i,j,k,num, I64 i,j,k,num,
x,y,z,x1,y1,z1,x2,y2,z2,x3,y3,z3; x,y,z,x1,y1,z1,x2,y2,z2,x3,y3,z3;
I32 *ptr; I32 *ptr;
CD3I32 *p; CD3I32 *p;
CSprite *tempg=root->next,root2,*tempg1,*tempg2,*tempg3; CSprite *tempg=head->next,head2,*tempg1,*tempg2,*tempg3;
while (tempg!=root) { while (tempg!=head) {
if (tempg->sel) if (tempg->sel)
switch (tempg->type) { switch (tempg->type) {
case SPT_WIDTH: case SPT_WIDTH:
@@ -450,7 +450,7 @@ U0 SpriteTransform(I64 *r,CSprite *root)
} }
break; break;
case SPT_POLYPT: case SPT_POLYPT:
QueInit(&root2); QueInit(&head2);
x=tempg->npu.x; y=tempg->npu.y; z=0; x=tempg->npu.x; y=tempg->npu.y; z=0;
x1=x; y1=y; z1=z; //unrotated cur coordinates x1=x; y1=y; z1=z; //unrotated cur coordinates
Mat4x4MulXYZ(r,&x,&y,&z); Mat4x4MulXYZ(r,&x,&y,&z);
@@ -464,14 +464,14 @@ U0 SpriteTransform(I64 *r,CSprite *root)
y1+=gr_y_offsets[j]; y1+=gr_y_offsets[j];
x=x1; y=y1; z=z1; x=x1; y=y1; z=z1;
Mat4x4MulXYZ(r,&x,&y,&z); Mat4x4MulXYZ(r,&x,&y,&z);
Line(&root2,x3-x2,y3-y2,0,x-x2,y-y2,0,&SpritePolyPtPlot); Line(&head2,x3-x2,y3-y2,0,x-x2,y-y2,0,&SpritePolyPtPlot);
x3=x; y3=y; z3=z; x3=x; y3=y; z3=z;
} }
num=0; num=0;
tempg1=root2.next; tempg1=head2.next;
x3=0; y3=0; z3=0; x3=0; y3=0; z3=0;
while (tempg1!=&root2) { while (tempg1!=&head2) {
tempg2=tempg1->next; tempg2=tempg1->next;
if (tempg1->p.x1==x3 && tempg1->p.y1==y3) { if (tempg1->p.x1==x3 && tempg1->p.y1==y3) {
QueRem(tempg1); QueRem(tempg1);
@@ -490,8 +490,8 @@ U0 SpriteTransform(I64 *r,CSprite *root)
ptr=&tempg3->npu.u; ptr=&tempg3->npu.u;
x3=0;y3=0; z3=0; x3=0;y3=0; z3=0;
i=0; i=0;
tempg1=root2.next; tempg1=head2.next;
while (tempg1!=&root2) { while (tempg1!=&head2) {
tempg2=tempg1->next; tempg2=tempg1->next;
BFieldOrU32(ptr,i, BFieldOrU32(ptr,i,
polypt_map[SignI64(tempg1->p.x1-x3)+1+ polypt_map[SignI64(tempg1->p.x1-x3)+1+
@@ -553,12 +553,12 @@ U0 SpriteTransform(I64 *r,CSprite *root)
} }
} }
I64 SpriteQueSelCnt(CSprite *root,Bool val=TRUE) I64 SpriteQueSelCnt(CSprite *head,Bool val=TRUE)
{ {
I64 res=0; I64 res=0;
CSprite *tempg=root->next; CSprite *tempg=head->next;
val=ToBool(val); val=ToBool(val);
while (tempg!=root) { while (tempg!=head) {
if (ToBool(tempg->sel)==val) if (ToBool(tempg->sel)==val)
res++; res++;
tempg=tempg->next; tempg=tempg->next;
@@ -566,11 +566,11 @@ I64 SpriteQueSelCnt(CSprite *root,Bool val=TRUE)
return res; return res;
} }
I64 SpriteQueSelAll(CSprite *root,Bool val=TRUE) I64 SpriteQueSelAll(CSprite *head,Bool val=TRUE)
{ {
I64 res=0; I64 res=0;
CSprite *tempg=root->next; CSprite *tempg=head->next;
while (tempg!=root) { while (tempg!=head) {
tempg->sel=val; tempg->sel=val;
res++; res++;
tempg=tempg->next; tempg=tempg->next;
@@ -578,17 +578,17 @@ I64 SpriteQueSelAll(CSprite *root,Bool val=TRUE)
return res; return res;
} }
CSprite *SpriteSideBar2SpriteQue(CDoc *doc,CSprite *root,I64 *_cur_elem_num) CSprite *SpriteSideBar2SpriteQue(CDoc *doc,CSprite *head,I64 *_cur_elem_num)
{//For the side-bar {//For the side-bar
CSprite *res=CAlloc(sizeof(CSprite)),*tempg; CSprite *res=CAlloc(sizeof(CSprite)),*tempg;
CDocEntry *doc_e=doc->root.next; CDocEntry *doc_e=doc->head.next;
Bool found=FALSE; Bool found=FALSE;
I64 num=0; I64 num=0;
QueInit(res); QueInit(res);
while (doc_e!=doc) { while (doc_e!=doc) {
if (doc_e->type_u8==DOCT_MENU_VAL && doc_e->left_exp>=0) { if (doc_e->type_u8==DOCT_MENU_VAL && doc_e->left_exp>=0) {
tempg=SpriteSetSettings(,root,doc_e->left_exp); tempg=SpriteSetSettings(,head,doc_e->left_exp);
if (tempg!=root) { if (tempg!=head) {
tempg=MAllocIdent(tempg); tempg=MAllocIdent(tempg);
tempg->sel=Bt(&doc_e->type,DOCEt_SEL); tempg->sel=Bt(&doc_e->type,DOCEt_SEL);
if (*_cur_elem_num==doc_e->left_exp) { if (*_cur_elem_num==doc_e->left_exp) {
@@ -603,12 +603,12 @@ CSprite *SpriteSideBar2SpriteQue(CDoc *doc,CSprite *root,I64 *_cur_elem_num)
} }
if (!found) if (!found)
*_cur_elem_num=num; *_cur_elem_num=num;
QueDel(root); QueDel(head);
Free(root); Free(head);
return res; return res;
} }
U0 SpriteSideBarPickNew(CDoc *doc,CSprite *root,I64 old_num) U0 SpriteSideBarPickNew(CDoc *doc,CSprite *head,I64 old_num)
{ {
CSprite *tempg; CSprite *tempg;
CDocEntry *doc_cur_e=NULL,*doc_e; CDocEntry *doc_cur_e=NULL,*doc_e;
@@ -617,15 +617,15 @@ U0 SpriteSideBarPickNew(CDoc *doc,CSprite *root,I64 old_num)
DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Sprite SideBar\"$$\n" DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Sprite SideBar\"$$\n"
"$$LK+PU+CX,\"Click for Help\"," "$$LK+PU+CX,\"Click for Help\","
"A=\"FI:::/Doc/SpriteSideBar.TXT.Z\"$$\n\n"); "A=\"FI:::/Doc/SpriteSideBar.TXT.Z\"$$\n\n");
tempg=root->next; tempg=head->next;
while (tempg!=root) { while (tempg!=head) {
st=SpriteElem2Summary(tempg); st=SpriteElem2Summary(tempg);
if (cur_elem_num==old_num) { if (cur_elem_num==old_num) {
DocPrint(doc,"$$LTRED$$"); DocPrint(doc,"$$LTRED$$");
doc_e=doc_cur_e=DocPrint(doc,"$$MU-UL,\"%Q\",LE=%d$$\n",st,cur_elem_num++); doc_e=doc_cur_e=DocPrint(doc,"$$MU-UL,\"%Q\",LE=%d$$\n",st,cur_elem_num++);
} else { } else {
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_SEL,tempg->sel); BEqu(&doc_e->de_flags,DOCEf_SEL,tempg->sel);
BEqu(&doc_e->type,DOCEt_SEL,tempg->sel); BEqu(&doc_e->type,DOCEt_SEL,tempg->sel);
@@ -659,29 +659,29 @@ U0 SpriteSideBarTask2(CTask *grand_parent)
} }
} }
U0 SpriteSideBarTask(CTask *parent,CSprite **_root,I64 *_cur_elem_num) U0 SpriteSideBarTask(CTask *parent,CSprite **_head,I64 *_cur_elem_num)
{ {
CDocEntry *doc_e; CDocEntry *doc_e;
CDoc *doc=DocPut; CDoc *doc=DocPut;
Spawn(&SpriteSideBarTask2,parent,"CSpriteTask",,Fs); Spawn(&SpriteSideBarTask2,parent,"CSpriteTask",,Fs);
doc->flags|=DOCF_MIN_SIZE|DOCF_FORM; doc->flags|=DOCF_MIN_SIZE|DOCF_FORM;
while (TRUE) { while (TRUE) {
SpriteSideBarPickNew(doc,*_root,*_cur_elem_num); SpriteSideBarPickNew(doc,*_head,*_cur_elem_num);
DocHighlightCursor(,doc); DocHighlightCursor(,doc);
View; View;
doc_e=doc->cur_entry; doc_e=doc->cur_entry;
if (doc_e->type_u8==DOCT_MENU_VAL) if (doc_e->type_u8==DOCT_MENU_VAL)
*_cur_elem_num=doc_e->left_exp; *_cur_elem_num=doc_e->left_exp;
*_root=SpriteSideBar2SpriteQue(doc,*_root,_cur_elem_num); *_head=SpriteSideBar2SpriteQue(doc,*_head,_cur_elem_num);
DocClear(doc); DocClear(doc);
} }
} }
Bool SpriteEdText(CSprite **_root,I64 *_cur_elem_num) Bool SpriteEdText(CSprite **_head,I64 *_cur_elem_num)
{ {
Bool res; Bool res;
CSprite *root=*_root; CSprite *head=*_head;
U8 *elems=SpriteQue2Sprite(root); U8 *elems=SpriteQue2Sprite(head);
CDoc *doc=DocNew,*doc2,*old_put=DocPut; CDoc *doc=DocNew,*doc2,*old_put=DocPut;
StrPrint(doc->filename.name,"AI:0x%X",doc); StrPrint(doc->filename.name,"AI:0x%X",doc);
DocPrint(doc,"//$$PURPLE$$$$TX+CX,\"Sprite Edit as Text\"$$$$FG$$\n" DocPrint(doc,"//$$PURPLE$$$$TX+CX,\"Sprite Edit as Text\"$$$$FG$$\n"
@@ -696,11 +696,11 @@ Bool SpriteEdText(CSprite **_root,I64 *_cur_elem_num)
if (elems=Code2Sprite(doc)) { if (elems=Code2Sprite(doc)) {
DocDel(doc2); DocDel(doc2);
Fs->put_doc=old_put; Fs->put_doc=old_put;
QueDel(root); QueDel(head);
Free(root); Free(head);
root=Sprite2SpriteQue(elems); head=Sprite2SpriteQue(elems);
Free(elems); Free(elems);
*_cur_elem_num=QueCnt(root); //TODO: Might want to improve this. *_cur_elem_num=QueCnt(head); //TODO: Might want to improve this.
break; break;
} else { } else {
PopUpPrint("DocEd(0x%X,0x%X);",doc2,0); PopUpPrint("DocEd(0x%X,0x%X);",doc2,0);
@@ -711,7 +711,7 @@ Bool SpriteEdText(CSprite **_root,I64 *_cur_elem_num)
break; break;
} }
DocDel(doc); DocDel(doc);
if (_root) *_root=root; if (_head) *_head=head;
return res; return res;
} }
@@ -738,7 +738,7 @@ U0 GrInit3()
} }
GrInit3; GrInit3;
I64 PopUpSpriteEd(CSprite **_root,I64 *_cur_elem_num) I64 PopUpSpriteEd(CSprite **_head,I64 *_cur_elem_num)
{ {
U8 *st; U8 *st;
CTask *pu_task; CTask *pu_task;
@@ -760,12 +760,12 @@ I64 PopUpSpriteEd(CSprite **_root,I64 *_cur_elem_num)
"$$PURPLE$$$$MU-UL,\"+] Sprite Main Menu\",LE=GED_MAIN_MENU$$$$LTBLUE$$\n" "$$PURPLE$$$$MU-UL,\"+] Sprite Main Menu\",LE=GED_MAIN_MENU$$$$LTBLUE$$\n"
"$$MU-UL,\"Exit Sprite\",LE=GED_EXIT$$\n" "$$MU-UL,\"Exit Sprite\",LE=GED_EXIT$$\n"
"$$MU-UL,\"Abort Sprite\",LE=DOCM_CANCEL$$"); "$$MU-UL,\"Abort Sprite\",LE=DOCM_CANCEL$$");
st=MStrPrint("SpriteSideBarTask(0x%X,0x%X,0x%X);",Fs,_root,_cur_elem_num); st=MStrPrint("SpriteSideBarTask(0x%X,0x%X,0x%X);",Fs,_head,_cur_elem_num);
PopUp(st,NULL,&pu_task); PopUp(st,NULL,&pu_task);
Free(st); Free(st);
i=PopUpMenu(doc); i=PopUpMenu(doc);
if (TaskValidate(pu_task)) { if (TaskValidate(pu_task)) {
*_root=SpriteSideBar2SpriteQue(DocPut(pu_task),*_root,_cur_elem_num); *_head=SpriteSideBar2SpriteQue(DocPut(pu_task),*_head,_cur_elem_num);
Kill(pu_task); Kill(pu_task);
} }
DocDel(doc); DocDel(doc);
@@ -784,14 +784,14 @@ class CEdSprite
I32 *x,*y,*z,*w,*h; I32 *x,*y,*z,*w,*h;
}; };
U0 SpritePtQueNew(U8 *elems,I64 x,I64 y,CEdSprite *root) U0 SpritePtQueNew(U8 *elems,I64 x,I64 y,CEdSprite *head)
{ {
I64 i,num=0; I64 i,num=0;
I32 *ptr; I32 *ptr;
CD3I32 *p; CD3I32 *p;
CEdSprite *temppe; CEdSprite *temppe;
CSprite *tempg=elems-offset(CSprite.start); CSprite *tempg=elems-offset(CSprite.start);
QueInit(root); QueInit(head);
while (tempg->type) { while (tempg->type) {
switch (tempg->type) { switch (tempg->type) {
case SPT_ELLIPSE: case SPT_ELLIPSE:
@@ -805,7 +805,7 @@ U0 SpritePtQueNew(U8 *elems,I64 x,I64 y,CEdSprite *root)
temppe->w=&tempg->pwha.width; temppe->w=&tempg->pwha.width;
temppe->h=&tempg->pwha.height; temppe->h=&tempg->pwha.height;
temppe->num=num; temppe->num=num;
QueIns(temppe,root->last); QueIns(temppe,head->last);
goto pq_x1_y1; goto pq_x1_y1;
case SPT_RECT: case SPT_RECT:
case SPT_ROTATED_RECT: case SPT_ROTATED_RECT:
@@ -819,7 +819,7 @@ U0 SpritePtQueNew(U8 *elems,I64 x,I64 y,CEdSprite *root)
temppe->x=&tempg->pp.x2; temppe->x=&tempg->pp.x2;
temppe->y=&tempg->pp.y2; temppe->y=&tempg->pp.y2;
temppe->num=num; temppe->num=num;
QueIns(temppe,root->last); QueIns(temppe,head->last);
case SPT_TEXT: case SPT_TEXT:
case SPT_TEXT_BOX: case SPT_TEXT_BOX:
case SPT_TEXT_DIAMOND: case SPT_TEXT_DIAMOND:
@@ -836,7 +836,7 @@ pq_x1_y1:
temppe->x=&tempg->p.x1; temppe->x=&tempg->p.x1;
temppe->y=&tempg->p.y1; temppe->y=&tempg->p.y1;
temppe->num=num; temppe->num=num;
QueIns(temppe,root->last); QueIns(temppe,head->last);
break; break;
case SPT_SHIFT: case SPT_SHIFT:
x+=tempg->p.x1; x+=tempg->p.x1;
@@ -852,7 +852,7 @@ pq_x1_y1:
temppe->x=&ptr[i<<1]; temppe->x=&ptr[i<<1];
temppe->y=&ptr[i<<1+1]; temppe->y=&ptr[i<<1+1];
temppe->num=num; temppe->num=num;
QueIns(temppe,root->last); QueIns(temppe,head->last);
} }
break; break;
case SPT_POLYPT: case SPT_POLYPT:
@@ -863,7 +863,7 @@ pq_x1_y1:
temppe->x=&tempg->npu.x; temppe->x=&tempg->npu.x;
temppe->y=&tempg->npu.y; temppe->y=&tempg->npu.y;
temppe->num=num; temppe->num=num;
QueIns(temppe,root->last); QueIns(temppe,head->last);
break; break;
case SPT_BSPLINE2: case SPT_BSPLINE2:
case SPT_BSPLINE3: case SPT_BSPLINE3:
@@ -879,7 +879,7 @@ pq_x1_y1:
temppe->y=&p[i].y; temppe->y=&p[i].y;
temppe->z=&p[i].z; temppe->z=&p[i].z;
temppe->num=num; temppe->num=num;
QueIns(temppe,root->last); QueIns(temppe,head->last);
} }
break; break;
case SPT_MESH: case SPT_MESH:
@@ -893,7 +893,7 @@ pq_x1_y1:
temppe->y=&tempg->pmu.y; temppe->y=&tempg->pmu.y;
temppe->z=&tempg->pmu.z; temppe->z=&tempg->pmu.z;
temppe->num=num; temppe->num=num;
QueIns(temppe,root->last); QueIns(temppe,head->last);
break; break;
} }
tempg(U8 *)+=SpriteElemSize(tempg); tempg(U8 *)+=SpriteElemSize(tempg);
@@ -901,15 +901,15 @@ pq_x1_y1:
} }
} }
U0 SpriteCtrlPtsDraw(CDC *dc,CEdSprite *root) U0 SpriteCtrlPtsDraw(CDC *dc,CEdSprite *head)
{ {
I64 x,y; I64 x,y;
CEdSprite *temppe; CEdSprite *temppe;
WinMgrSync; WinMgrSync;
DCFill(dc); DCFill(dc);
if (Blink(20)) { if (Blink(20)) {
temppe=root->next; temppe=head->next;
while (temppe!=root) { while (temppe!=head) {
switch (temppe->type) { switch (temppe->type) {
case GSPT_SIMPLE_PT: case GSPT_SIMPLE_PT:
x=*temppe->x+temppe->xx; x=*temppe->x+temppe->xx;
@@ -932,11 +932,11 @@ U0 SpriteCtrlPtsDraw(CDC *dc,CEdSprite *root)
} }
} }
U0 SpriteCtrlPtsMove(CEdSprite *root,I64 dx,I64 dy) U0 SpriteCtrlPtsMove(CEdSprite *head,I64 dx,I64 dy)
{ {
CEdSprite *temppe; CEdSprite *temppe;
temppe=root->next; temppe=head->next;
while (temppe!=root) { while (temppe!=head) {
if (temppe->flags&GSPF_SEL) if (temppe->flags&GSPF_SEL)
switch (temppe->type) { switch (temppe->type) {
case GSPT_SIMPLE_PT: case GSPT_SIMPLE_PT:
@@ -957,13 +957,13 @@ Bool SpriteShiftPts(U8 *elems,I64 x,I64 y,I64 *_cur_elem_num,I64 mode)
I64 msg_code,a1,a2,xx,yy,xx2,yy2,dd,best_dd,cur_elem_num; I64 msg_code,a1,a2,xx,yy,xx2,yy2,dd,best_dd,cur_elem_num;
Bool res=TRUE; Bool res=TRUE;
CDC *dc=DCAlias; CDC *dc=DCAlias;
CEdSprite root,*temppe,*best_pe; CEdSprite head,*temppe,*best_pe;
SpritePtQueNew(elems,x,y,&root); SpritePtQueNew(elems,x,y,&head);
cur_elem_num=0; cur_elem_num=0;
if (root.next!=&root) { if (head.next!=&head) {
while (TRUE) { while (TRUE) {
SpriteCtrlPtsDraw(dc,&root); //has WinMgrSync SpriteCtrlPtsDraw(dc,&head); //has WinMgrSync
switch (msg_code=ScanMsg(&a1,&a2, switch (msg_code=ScanMsg(&a1,&a2,
1<<MSG_IP_R_UP|1<<MSG_IP_L_DOWN|1<<MSG_KEY_DOWN)) { 1<<MSG_IP_R_UP|1<<MSG_IP_L_DOWN|1<<MSG_KEY_DOWN)) {
case MSG_IP_L_DOWN: case MSG_IP_L_DOWN:
@@ -971,8 +971,8 @@ Bool SpriteShiftPts(U8 *elems,I64 x,I64 y,I64 *_cur_elem_num,I64 mode)
case GED_SHIFT_PTS: case GED_SHIFT_PTS:
xx=a1; yy=a2; xx=a1; yy=a2;
best_dd=MAX_I64; best_dd=MAX_I64;
temppe=root.next; temppe=head.next;
while (temppe!=&root) { while (temppe!=&head) {
switch (temppe->type) { switch (temppe->type) {
case GSPT_SIMPLE_PT: case GSPT_SIMPLE_PT:
dd=SqrI64(*temppe->x+temppe->xx-xx)+ dd=SqrI64(*temppe->x+temppe->xx-xx)+
@@ -995,7 +995,7 @@ Bool SpriteShiftPts(U8 *elems,I64 x,I64 y,I64 *_cur_elem_num,I64 mode)
case GED_SHIFT_RECTS: case GED_SHIFT_RECTS:
xx2=xx=a1; yy2=yy=a2; xx2=xx=a1; yy2=yy=a2;
while (TRUE) { while (TRUE) {
SpriteCtrlPtsDraw(dc,&root); SpriteCtrlPtsDraw(dc,&head);
dc->color=ROPF_DITHER+WHITE<<16+RED; dc->color=ROPF_DITHER+WHITE<<16+RED;
GrBorder(dc,xx,yy,xx2,yy2); GrBorder(dc,xx,yy,xx2,yy2);
if (msg_code=ScanMsg(&a1,&a2,1<<MSG_IP_MOVE|1<<MSG_IP_L_UP)) { if (msg_code=ScanMsg(&a1,&a2,1<<MSG_IP_MOVE|1<<MSG_IP_L_UP)) {
@@ -1007,8 +1007,8 @@ Bool SpriteShiftPts(U8 *elems,I64 x,I64 y,I64 *_cur_elem_num,I64 mode)
} }
if (xx2<xx) SwapI64(&xx,&xx2); if (xx2<xx) SwapI64(&xx,&xx2);
if (yy2<yy) SwapI64(&yy,&yy2); if (yy2<yy) SwapI64(&yy,&yy2);
temppe=root.next; temppe=head.next;
while (temppe!=&root) { while (temppe!=&head) {
switch (temppe->type) { switch (temppe->type) {
case GSPT_SIMPLE_PT: case GSPT_SIMPLE_PT:
if (xx<=*temppe->x+temppe->xx<=xx2 && if (xx<=*temppe->x+temppe->xx<=xx2 &&
@@ -1024,7 +1024,7 @@ Bool SpriteShiftPts(U8 *elems,I64 x,I64 y,I64 *_cur_elem_num,I64 mode)
temppe=temppe->next; temppe=temppe->next;
} }
do { do {
SpriteCtrlPtsDraw(dc,&root); SpriteCtrlPtsDraw(dc,&head);
msg_code=ScanMsg(&a1,&a2,1<<MSG_KEY_DOWN|1<<MSG_IP_L_DOWN); msg_code=ScanMsg(&a1,&a2,1<<MSG_KEY_DOWN|1<<MSG_IP_L_DOWN);
if (msg_code==MSG_KEY_DOWN) goto gs_key; if (msg_code==MSG_KEY_DOWN) goto gs_key;
} while (msg_code!=MSG_IP_L_DOWN); } while (msg_code!=MSG_IP_L_DOWN);
@@ -1032,14 +1032,14 @@ Bool SpriteShiftPts(U8 *elems,I64 x,I64 y,I64 *_cur_elem_num,I64 mode)
break; break;
} }
do { do {
SpriteCtrlPtsDraw(dc,&root); SpriteCtrlPtsDraw(dc,&head);
if (msg_code=ScanMsg(&a1,&a2,1<<MSG_IP_MOVE|1<<MSG_IP_L_UP)) { if (msg_code=ScanMsg(&a1,&a2,1<<MSG_IP_MOVE|1<<MSG_IP_L_UP)) {
SpriteCtrlPtsMove(&root,a1-xx,a2-yy); SpriteCtrlPtsMove(&head,a1-xx,a2-yy);
xx=a1;yy=a2; xx=a1;yy=a2;
} }
} while (msg_code!=MSG_IP_L_UP); } while (msg_code!=MSG_IP_L_UP);
temppe=root.next; temppe=head.next;
while (temppe!=&root) { while (temppe!=&head) {
temppe->flags&=~GSPF_SEL; temppe->flags&=~GSPF_SEL;
temppe=temppe->next; temppe=temppe->next;
} }
@@ -1067,7 +1067,7 @@ gs_key:
} }
} }
gs_done: gs_done:
QueDel(&root,TRUE); QueDel(&head,TRUE);
} }
DCFill(dc); DCFill(dc);
DCDel(dc); DCDel(dc);
@@ -1077,33 +1077,33 @@ gs_done:
} }
I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y, I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
CSprite **_root,I64 *_cur_elem_num) CSprite **_head,I64 *_cur_elem_num)
{ {
CDocEntry *doc_e2; CDocEntry *doc_e2;
CDocBin *tempb; CDocBin *tempb;
Bool unlock; Bool unlock;
I64 i,r[16],msg_code,a1,a2,xx,yy, I64 i,r[16],msg_code,a1,a2,xx,yy,
old_de_flags; old_de_flags;
CSprite *cur_elem,*root2,*next,*last,*tempg,*insert_pt; CSprite *cur_elem,*head2,*next,*last,*tempg,*insert_pt;
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);
SpriteQueSelAll(*_root,FALSE); SpriteQueSelAll(*_head,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;
StrCpy(Fs->task_title,"Sprite Edit Menu"); StrCpy(Fs->task_title,"Sprite Edit Menu");
i=PopUpSpriteEd(_root,_cur_elem_num); i=PopUpSpriteEd(_head,_cur_elem_num);
SpriteEdUpdate(doc,doc_ce,*_root); SpriteEdUpdate(doc,doc_ce,*_head);
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_SEL_UNSEL_ALL: case GED_SEL_UNSEL_ALL:
if (!SpriteQueSelCnt(*_root)) if (!SpriteQueSelCnt(*_head))
SpriteQueSelAll(*_root); SpriteQueSelAll(*_head);
else else
SpriteQueSelAll(*_root,FALSE); SpriteQueSelAll(*_head,FALSE);
break; break;
case GED_SEL: case GED_SEL:
case GED_UNSEL: case GED_UNSEL:
@@ -1115,7 +1115,7 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
WinMgrSync(2); WinMgrSync(2);
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(,*_head,*_cur_elem_num);
cur_elem->sel=ToBool(i==GED_SEL); cur_elem->sel=ToBool(i==GED_SEL);
GetMsg(,,1<<MSG_IP_L_UP); GetMsg(,,1<<MSG_IP_L_UP);
} }
@@ -1123,28 +1123,28 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
doc->cur_sprite=NULL; doc->cur_sprite=NULL;
break; break;
case GED_SET_ORIGIN: case GED_SET_ORIGIN:
SpriteQueSelAll(*_root); SpriteQueSelAll(*_head);
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(*_head,x-a1,y-a2,0);
SpriteEdUpdate(doc,doc_ce,*_root); SpriteEdUpdate(doc,doc_ce,*_head);
SpriteQueSelAll(*_root,FALSE); SpriteQueSelAll(*_head,FALSE);
break; break;
case GED_SHIFT_SEL: case GED_SHIFT_SEL:
if (!SpriteQueSelCnt(*_root)) if (!SpriteQueSelCnt(*_head))
SpriteQueSelAll(*_root); SpriteQueSelAll(*_head);
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;
do { do {
msg_code=GetMsg(&a1,&a2, msg_code=GetMsg(&a1,&a2,
1<<MSG_IP_L_UP+1<<MSG_IP_MOVE); 1<<MSG_IP_L_UP+1<<MSG_IP_MOVE);
SpriteSetOrigin(*_root,a1-xx,a2-yy,0); SpriteSetOrigin(*_head,a1-xx,a2-yy,0);
xx=a1; yy=a2; xx=a1; yy=a2;
SpriteEdUpdate(doc,doc_ce,*_root); SpriteEdUpdate(doc,doc_ce,*_head);
} while (msg_code!=MSG_IP_L_UP); } while (msg_code!=MSG_IP_L_UP);
if (!SpriteQueSelCnt(*_root,FALSE)) if (!SpriteQueSelCnt(*_head,FALSE))
SpriteQueSelAll(*_root,FALSE); SpriteQueSelAll(*_head,FALSE);
break; break;
case GED_SHIFT_PTS: case GED_SHIFT_PTS:
case GED_SHIFT_RECTS: case GED_SHIFT_RECTS:
@@ -1155,25 +1155,25 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
"to OR another rectangle.\n"); "to OR another rectangle.\n");
doc_ce->de_flags=old_de_flags; doc_ce->de_flags=old_de_flags;
if (SpriteShiftPts(tempb->data,x,y,_cur_elem_num,i)) { if (SpriteShiftPts(tempb->data,x,y,_cur_elem_num,i)) {
QueDel(*_root); QueDel(*_head);
Free(*_root); Free(*_head);
*_root=Sprite2SpriteQue(tempb->data); *_head=Sprite2SpriteQue(tempb->data);
} else } else
SpriteEdUpdate(doc,doc_ce,*_root); SpriteEdUpdate(doc,doc_ce,*_head);
break; break;
case GED_TRANSFORM_SEL: case GED_TRANSFORM_SEL:
if (!SpriteQueSelCnt(*_root)) if (!SpriteQueSelCnt(*_head))
SpriteQueSelAll(*_root); SpriteQueSelAll(*_head);
if (PopUpTransform(r)) { if (PopUpTransform(r)) {
SpriteTransform(r,*_root); SpriteTransform(r,*_head);
SpriteEdUpdate(doc,doc_ce,*_root); SpriteEdUpdate(doc,doc_ce,*_head);
} }
if (!SpriteQueSelCnt(*_root,FALSE)) if (!SpriteQueSelCnt(*_head,FALSE))
SpriteQueSelAll(*_root,FALSE); SpriteQueSelAll(*_head,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;
insert_pt=SpriteSetSettings(,*_root,*_cur_elem_num); insert_pt=SpriteSetSettings(,*_head,*_cur_elem_num);
tempg=CAlloc(SpriteElemQuedBaseSize(SPT_SHIFT)); tempg=CAlloc(SpriteElemQuedBaseSize(SPT_SHIFT));
tempg->type=SPT_SHIFT; tempg->type=SPT_SHIFT;
tempg->p.x1=0; tempg->p.x1=0;
@@ -1186,7 +1186,7 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
1<<MSG_IP_L_UP+1<<MSG_IP_MOVE); 1<<MSG_IP_L_UP+1<<MSG_IP_MOVE);
tempg->p.x1=a1-xx; tempg->p.x1=a1-xx;
tempg->p.y1=a2-yy; tempg->p.y1=a2-yy;
SpriteEdUpdate(doc,doc_ce,*_root); SpriteEdUpdate(doc,doc_ce,*_head);
} while (msg_code!=MSG_IP_L_UP); } while (msg_code!=MSG_IP_L_UP);
*_cur_elem_num+=1; *_cur_elem_num+=1;
break; break;
@@ -1197,36 +1197,36 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
"'Insert shift sub-origin' after picking the\n" "'Insert shift sub-origin' after picking the\n"
"element to insert before. Or,\n" "element to insert before. Or,\n"
"use 'shift points'.\n"); "use 'shift points'.\n");
insert_pt=SpriteSetSettings(,*_root,*_cur_elem_num); insert_pt=SpriteSetSettings(,*_head,*_cur_elem_num);
unlock=DocLock(sys_clipboard_doc); unlock=DocLock(sys_clipboard_doc);
doc_e2=sys_clipboard_doc->root.next; doc_e2=sys_clipboard_doc->head.next;
while (doc_e2!=sys_clipboard_doc) { while (doc_e2!=sys_clipboard_doc) {
if (doc_e2->type_u8==DOCT_SPRITE) { if (doc_e2->type_u8==DOCT_SPRITE) {
root2=Sprite2SpriteQue(doc_e2->bin_data->data); head2=Sprite2SpriteQue(doc_e2->bin_data->data);
if (root2->next!=root2) { if (head2->next!=head2) {
tempg=root2->next; tempg=head2->next;
while (tempg!=root2) { while (tempg!=head2) {
*_cur_elem_num+=1; *_cur_elem_num+=1;
tempg=tempg->next; tempg=tempg->next;
} }
next=root2->next; next=head2->next;
last=root2->last; last=head2->last;
insert_pt->last->next=next; insert_pt->last->next=next;
next->last=insert_pt->last; next->last=insert_pt->last;
insert_pt->last=last; insert_pt->last=last;
last->next=insert_pt; last->next=insert_pt;
} }
Free(root2); Free(head2);
} }
doc_e2=doc_e2->next; doc_e2=doc_e2->next;
} }
if (unlock) if (unlock)
DocUnlock(sys_clipboard_doc); DocUnlock(sys_clipboard_doc);
SpriteEdUpdate(doc,doc_ce,*_root); SpriteEdUpdate(doc,doc_ce,*_head);
break; break;
case GED_TEXT_ED: case GED_TEXT_ED:
if (SpriteEdText(_root,_cur_elem_num)) if (SpriteEdText(_head,_cur_elem_num))
SpriteEdUpdate(doc,doc_ce,*_root); SpriteEdUpdate(doc,doc_ce,*_head);
break; break;
} }
} }
+68 -68
View File
@@ -6,7 +6,7 @@
#define SPT_ED_MENU -5 #define SPT_ED_MENU -5
#define SPT_EXIT -6 #define SPT_EXIT -6
I64 PopUpSpriteMain(CSprite **_root,I64 *_cur_elem_num, I64 PopUpSpriteMain(CSprite **_head,I64 *_cur_elem_num,
CDoc *_doc,CDocEntry *_doc_e) CDoc *_doc,CDocEntry *_doc_e)
{ {
CTask *pu_task; CTask *pu_task;
@@ -60,12 +60,12 @@ I64 PopUpSpriteMain(CSprite **_root,I64 *_cur_elem_num,
"$$MU-UL,\"Exit Sprite\",LE=SPT_EXIT$$\n" "$$MU-UL,\"Exit Sprite\",LE=SPT_EXIT$$\n"
"$$MU-UL,\"Abort Sprite\",LE=DOCM_CANCEL$$\n" "$$MU-UL,\"Abort Sprite\",LE=DOCM_CANCEL$$\n"
"\nRight-Click to get back to this menu."); "\nRight-Click to get back to this menu.");
st=MStrPrint("SpriteSideBarTask(0x%X,0x%X,0x%X);",Fs,_root,_cur_elem_num); st=MStrPrint("SpriteSideBarTask(0x%X,0x%X,0x%X);",Fs,_head,_cur_elem_num);
PopUp(st,NULL,&pu_task); PopUp(st,NULL,&pu_task);
Free(st); Free(st);
i=PopUpMenu(doc); i=PopUpMenu(doc);
if (TaskValidate(pu_task)) { if (TaskValidate(pu_task)) {
*_root=SpriteSideBar2SpriteQue(DocPut(pu_task),*_root,_cur_elem_num); *_head=SpriteSideBar2SpriteQue(DocPut(pu_task),*_head,_cur_elem_num);
Kill(pu_task); Kill(pu_task);
} }
Free(_doc_e->tag); Free(_doc_e->tag);
@@ -269,7 +269,7 @@ CSprite *SMScreenBitMap(I64 eletype,CDC *dc,CDC *dc2,I64 x,I64 y,I64 a1,I64 a2,
WinMgrSync(2,TRUE); WinMgrSync(2,TRUE);
dc3=DCScreenCapture; dc3=DCScreenCapture;
img=DCExtract(dc3,Fs->pix_left+Fs->scroll_x+xx1,Fs->pix_top+Fs->scroll_y+yy1, img=DCExt(dc3,Fs->pix_left+Fs->scroll_x+xx1,Fs->pix_top+Fs->scroll_y+yy1,
Fs->pix_left+Fs->scroll_x+xx2-1,Fs->pix_top+Fs->scroll_y+yy2-1); Fs->pix_left+Fs->scroll_x+xx2-1,Fs->pix_top+Fs->scroll_y+yy2-1);
if (eletype==SPT_INS_TRANSPARENT_SCREEN_BITMAP) if (eletype==SPT_INS_TRANSPARENT_SCREEN_BITMAP)
DCColorChg(img,bm_bkcolor); DCColorChg(img,bm_bkcolor);
@@ -405,9 +405,9 @@ CSprite *SMPolyLineFamily(I64 eletype,CDC *dc,I64 x,I64 y,I64 a1,I64 a2,
I64 i,num=0,msg_code,x1=a1,y1=a2,x2=a1,y2=a2; I64 i,num=0,msg_code,x1=a1,y1=a2,x2=a1,y2=a2;
I32 *ptr; I32 *ptr;
CD3I32 *p; CD3I32 *p;
CSprite *res,*tempg,*tempg1,root2; CSprite *res,*tempg,*tempg1,head2;
QueInit(&root2); QueInit(&head2);
do { do {
do { do {
dc->color=color&COLORROP_NO_ROP0_MASK; dc->color=color&COLORROP_NO_ROP0_MASK;
@@ -427,7 +427,7 @@ CSprite *SMPolyLineFamily(I64 eletype,CDC *dc,I64 x,I64 y,I64 a1,I64 a2,
res->type=SPT_PT; res->type=SPT_PT;
res->p.x1=x2-x; res->p.x1=x2-x;
res->p.y1=y2-y; res->p.y1=y2-y;
QueIns(res,root2.last); QueIns(res,head2.last);
x1=x2;y1=y2; x1=x2;y1=y2;
num++; num++;
} }
@@ -438,7 +438,7 @@ CSprite *SMPolyLineFamily(I64 eletype,CDC *dc,I64 x,I64 y,I64 a1,I64 a2,
if (num>1) { if (num>1) {
res=CAlloc(SpriteElemQuedBaseSize(SPT_POLYLINE)+num*sizeof(CD2I32)); res=CAlloc(SpriteElemQuedBaseSize(SPT_POLYLINE)+num*sizeof(CD2I32));
ptr=&res->nu.u; ptr=&res->nu.u;
tempg1=root2.next; tempg1=head2.next;
for (i=0;i<num;i++) { for (i=0;i<num;i++) {
tempg=tempg1->next; tempg=tempg1->next;
ptr[i<<1]=tempg1->p.x1; ptr[i<<1]=tempg1->p.x1;
@@ -449,7 +449,7 @@ CSprite *SMPolyLineFamily(I64 eletype,CDC *dc,I64 x,I64 y,I64 a1,I64 a2,
res->type=SPT_POLYLINE; res->type=SPT_POLYLINE;
res->nu.num=num; res->nu.num=num;
} else { } else {
tempg1=root2.next; tempg1=head2.next;
for (i=0;i<num;i++) { for (i=0;i<num;i++) {
tempg=tempg1->next; tempg=tempg1->next;
Free(tempg1); Free(tempg1);
@@ -465,7 +465,7 @@ CSprite *SMPolyLineFamily(I64 eletype,CDC *dc,I64 x,I64 y,I64 a1,I64 a2,
if (num>2) { if (num>2) {
res=CAlloc(SpriteElemQuedBaseSize(eletype)+num*sizeof(CD3I32)); res=CAlloc(SpriteElemQuedBaseSize(eletype)+num*sizeof(CD3I32));
p=&res->nu.u; p=&res->nu.u;
tempg1=root2.next; tempg1=head2.next;
for (i=0;i<num;i++) { for (i=0;i<num;i++) {
tempg=tempg1->next; tempg=tempg1->next;
p[i].x=tempg1->p.x1; p[i].x=tempg1->p.x1;
@@ -476,7 +476,7 @@ CSprite *SMPolyLineFamily(I64 eletype,CDC *dc,I64 x,I64 y,I64 a1,I64 a2,
res->type=eletype; res->type=eletype;
res->nu.num=num; res->nu.num=num;
} else { } else {
tempg1=root2.next; tempg1=head2.next;
for (i=0;i<num;i++) { for (i=0;i<num;i++) {
tempg=tempg1->next; tempg=tempg1->next;
Free(tempg1); Free(tempg1);
@@ -493,23 +493,23 @@ CSprite *SMPolyPoint(CDC *dc,I64 x,I64 y,I64 a1,I64 a2,CColorROPU32 color)
{ {
I64 i,num=0,msg_code,x1=a1,y1=a2,x2=a1,y2=a2,x3,y3; I64 i,num=0,msg_code,x1=a1,y1=a2,x2=a1,y2=a2,x3,y3;
I32 *ptr; I32 *ptr;
CSprite *res,*tempg,*tempg1,root2; CSprite *res,*tempg,*tempg1,head2;
QueInit(&root2); QueInit(&head2);
x3=a1-x; y3=a2-y; x3=a1-x; y3=a2-y;
dc->color=color&COLORROP_NO_ROP0_MASK; dc->color=color&COLORROP_NO_ROP0_MASK;
do { do {
msg_code=GetMsg(&a1,&a2,1<<MSG_IP_L_UP+1<<MSG_IP_MOVE); msg_code=GetMsg(&a1,&a2,1<<MSG_IP_L_UP+1<<MSG_IP_MOVE);
x2=a1; y2=a2; x2=a1; y2=a2;
GrLine3(dc,x1,y1,0,x2,y2,0); GrLine3(dc,x1,y1,0,x2,y2,0);
Line(&root2,x1-x,y1-y,0,x2-x,y2-y,0,&SpritePolyPtPlot); Line(&head2,x1-x,y1-y,0,x2-x,y2-y,0,&SpritePolyPtPlot);
x1=x2;y1=y2; x1=x2;y1=y2;
} while (msg_code!=MSG_IP_L_UP); } while (msg_code!=MSG_IP_L_UP);
num=0; num=0;
res=root2.next; res=head2.next;
x1=x3; y1=y3; x1=x3; y1=y3;
while (res!=&root2) { while (res!=&head2) {
tempg=res->next; tempg=res->next;
if (res->p.x1==x1 && res->p.y1==y1) { if (res->p.x1==x1 && res->p.y1==y1) {
QueRem(res); QueRem(res);
@@ -528,8 +528,8 @@ CSprite *SMPolyPoint(CDC *dc,I64 x,I64 y,I64 a1,I64 a2,CColorROPU32 color)
ptr=&res->npu.u; ptr=&res->npu.u;
x1=x3; y1=y3; x1=x3; y1=y3;
i=0; i=0;
tempg1=root2.next; tempg1=head2.next;
while (tempg1!=&root2) { while (tempg1!=&head2) {
tempg=tempg1->next; tempg=tempg1->next;
BFieldOrU32(ptr,i,polypt_map[SignI64(tempg1->p.x1-x1)+1+ BFieldOrU32(ptr,i,polypt_map[SignI64(tempg1->p.x1-x1)+1+
3*(SignI64(tempg1->p.y1-y1)+1)]); 3*(SignI64(tempg1->p.y1-y1)+1)]);
@@ -544,11 +544,11 @@ CSprite *SMPolyPoint(CDC *dc,I64 x,I64 y,I64 a1,I64 a2,CColorROPU32 color)
return res; return res;
} }
U0 SMTextFamily(I64 eletype,CDoc *doc,CDocEntry *doc_ce,CSprite *root,CDC *dc, U0 SMTextFamily(I64 eletype,CDoc *doc,CDocEntry *doc_ce,CSprite *head,CDC *dc,
I64 x,I64 y,I64 a1,I64 a2,CColorROPU32 color,I64 *_cur_elem_num, I64 x,I64 y,I64 a1,I64 a2,CColorROPU32 color,I64 *_cur_elem_num,
I64 old_de_flags) I64 old_de_flags)
{ {
CSprite *tempg,*insert_pt=SpriteSetSettings(,root,*_cur_elem_num); CSprite *tempg,*insert_pt=SpriteSetSettings(,head,*_cur_elem_num);
I64 msg_code,x1,y1; I64 msg_code,x1,y1;
U8 *st; U8 *st;
doc_ce->de_flags|=DOCEF_DONT_DRAW; doc_ce->de_flags|=DOCEF_DONT_DRAW;
@@ -573,13 +573,13 @@ U0 SMTextFamily(I64 eletype,CDoc *doc,CDocEntry *doc_ce,CSprite *root,CDC *dc,
tempg->ps.y1=y1-y; tempg->ps.y1=y1-y;
StrCpy(tempg->ps.st,st); StrCpy(tempg->ps.st,st);
QueIns(tempg,insert_pt->last); QueIns(tempg,insert_pt->last);
SpriteEdUpdate(doc,doc_ce,root); SpriteEdUpdate(doc,doc_ce,head);
*_cur_elem_num+=1; *_cur_elem_num+=1;
} }
Free(st); Free(st);
} }
I64 SMBitMap(I64 eletype,CDoc *doc,CDocEntry *doc_ce,CSprite *root, I64 SMBitMap(I64 eletype,CDoc *doc,CDocEntry *doc_ce,CSprite *head,
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 sel,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)
{ {
@@ -587,7 +587,7 @@ I64 SMBitMap(I64 eletype,CDoc *doc,CDocEntry *doc_ce,CSprite *root,
CSprite *tempg,*tempg1,*insert_pt; CSprite *tempg,*tempg1,*insert_pt;
CDC *img; CDC *img;
insert_pt=SpriteSetSettings(,root,*_cur_elem_num,xx,yy,,,&x,&y); insert_pt=SpriteSetSettings(,head,*_cur_elem_num,xx,yy,,,&x,&y);
x+=xx; y+=yy; x+=xx; y+=yy;
if (sel) { if (sel) {
@@ -627,15 +627,15 @@ I64 SMBitMap(I64 eletype,CDoc *doc,CDocEntry *doc_ce,CSprite *root,
img->color=bm_bkcolor; img->color=bm_bkcolor;
GrRect(img,0,0,tempg->pwhu.width,tempg->pwhu.height); GrRect(img,0,0,tempg->pwhu.width,tempg->pwhu.height);
tempg1=insert_pt; tempg1=insert_pt;
if (tempg1==root || tempg1->type!=SPT_BITMAP) { if (tempg1==head || tempg1->type!=SPT_BITMAP) {
SpriteSetSettings(img,root,0,-(xx1-x),-(yy1-y)); SpriteSetSettings(img,head,0,-(xx1-x),-(yy1-y));
x=xx; y=yy; x=xx; y=yy;
Sprite3(img,-(xx1-x),-(yy1-y),0,doc_ce->bin_data->data); Sprite3(img,-(xx1-x),-(yy1-y),0,doc_ce->bin_data->data);
QueDel(root); QueDel(head);
insert_pt=root->next=root->last=root; insert_pt=head->next=head->last=head;
*_cur_elem_num=1; *_cur_elem_num=1;
} else { } else {
SpriteSetSettings(img,root,*_cur_elem_num,-(xx1-x),-(yy1-y)); SpriteSetSettings(img,head,*_cur_elem_num,-(xx1-x),-(yy1-y));
Sprite3(img,-(xx1-x),-(yy1-y),0,&tempg1->start,TRUE); Sprite3(img,-(xx1-x),-(yy1-y),0,&tempg1->start,TRUE);
insert_pt=tempg1->next; insert_pt=tempg1->next;
QueRem(tempg1); QueRem(tempg1);
@@ -660,20 +660,20 @@ I64 SMBitMap(I64 eletype,CDoc *doc,CDocEntry *doc_ce,CSprite *root,
} }
QueIns(tempg,insert_pt->last); QueIns(tempg,insert_pt->last);
DCDel(img); DCDel(img);
SpriteEdUpdate(doc,doc_ce,root); SpriteEdUpdate(doc,doc_ce,head);
return i; return i;
} }
U0 SMMesh(CDoc *doc,CDocEntry *doc_ce,CSprite *root,I64 *_cur_elem_num) U0 SMMesh(CDoc *doc,CDocEntry *doc_ce,CSprite *head,I64 *_cur_elem_num)
{ {
CSprite *tempg,*insert_pt=SpriteSetSettings(,root,*_cur_elem_num), CSprite *tempg,*insert_pt=SpriteSetSettings(,head,*_cur_elem_num),
*tempg1=insert_pt; *tempg1=insert_pt;
CD3I32 *p; CD3I32 *p;
I64 i,size,x1,y1,z1; I64 i,size,x1,y1,z1;
I32 *mesh,*old_mesh; I32 *mesh,*old_mesh;
if (tempg1!=root && tempg1->type==SPT_MESH) if (tempg1!=head && tempg1->type==SPT_MESH)
old_mesh=&tempg1->mu.vertex_cnt; old_mesh=&tempg1->mu.vertex_cnt;
else if (tempg1!=root && tempg1->type==SPT_SHIFTABLE_MESH) { else if (tempg1!=head && tempg1->type==SPT_SHIFTABLE_MESH) {
x1=tempg1->pmu.x; x1=tempg1->pmu.x;
y1=tempg1->pmu.y; y1=tempg1->pmu.y;
z1=tempg1->pmu.z; z1=tempg1->pmu.z;
@@ -692,12 +692,12 @@ U0 SMMesh(CDoc *doc,CDocEntry *doc_ce,CSprite *root,I64 *_cur_elem_num)
MemCpy(&tempg->mu.vertex_cnt,mesh,size); MemCpy(&tempg->mu.vertex_cnt,mesh,size);
Free(mesh); Free(mesh);
QueIns(tempg,insert_pt->last); QueIns(tempg,insert_pt->last);
SpriteEdUpdate(doc,doc_ce,root); SpriteEdUpdate(doc,doc_ce,head);
if (old_mesh) { if (old_mesh) {
insert_pt=tempg; insert_pt=tempg;
QueRem(tempg1); QueRem(tempg1);
Free(tempg1); Free(tempg1);
SpriteEdUpdate(doc,doc_ce,root); SpriteEdUpdate(doc,doc_ce,head);
} else } else
*_cur_elem_num+=1; *_cur_elem_num+=1;
} else if (old_mesh && tempg1->type==SPT_SHIFTABLE_MESH) { } else if (old_mesh && tempg1->type==SPT_SHIFTABLE_MESH) {
@@ -713,15 +713,15 @@ U0 SMMesh(CDoc *doc,CDocEntry *doc_ce,CSprite *root,I64 *_cur_elem_num)
} }
} }
U0 SMShiftableMesh(CDoc *doc,CDocEntry *doc_ce,CSprite *root, U0 SMShiftableMesh(CDoc *doc,CDocEntry *doc_ce,CSprite *head,
I64 x,I64 y,I64 a1,I64 a2,I64 *_cur_elem_num) I64 x,I64 y,I64 a1,I64 a2,I64 *_cur_elem_num)
{ {
CSprite *tempg,*insert_pt=SpriteSetSettings(,root,*_cur_elem_num), CSprite *tempg,*insert_pt=SpriteSetSettings(,head,*_cur_elem_num),
*tempg1=insert_pt; *tempg1=insert_pt;
CD3I32 *p; CD3I32 *p;
I64 i,size,z,x1,y1,z1; I64 i,size,z,x1,y1,z1;
I32 *mesh,*old_mesh; I32 *mesh,*old_mesh;
if (tempg1!=root && tempg1->type==SPT_MESH) { if (tempg1!=head && tempg1->type==SPT_MESH) {
z=0; z=0;
x1=-(a1-x); x1=-(a1-x);
y1=-(a2-y); y1=-(a2-y);
@@ -733,7 +733,7 @@ U0 SMShiftableMesh(CDoc *doc,CDocEntry *doc_ce,CSprite *root,
p->z+=z1; p->z+=z1;
} }
old_mesh=&tempg1->mu.vertex_cnt; old_mesh=&tempg1->mu.vertex_cnt;
} else if (tempg1!=root && tempg1->type==SPT_SHIFTABLE_MESH) { } else if (tempg1!=head && tempg1->type==SPT_SHIFTABLE_MESH) {
z=-tempg1->pmu.z; z=-tempg1->pmu.z;
x1=tempg1->pmu.x-(a1-x); x1=tempg1->pmu.x-(a1-x);
y1=tempg1->pmu.y-(a2-y); y1=tempg1->pmu.y-(a2-y);
@@ -758,12 +758,12 @@ U0 SMShiftableMesh(CDoc *doc,CDocEntry *doc_ce,CSprite *root,
tempg->pmu.y=a2-y; tempg->pmu.y=a2-y;
tempg->pmu.z=-z; tempg->pmu.z=-z;
QueIns(tempg,insert_pt->last); QueIns(tempg,insert_pt->last);
SpriteEdUpdate(doc,doc_ce,root); SpriteEdUpdate(doc,doc_ce,head);
if (old_mesh) { if (old_mesh) {
insert_pt=tempg; insert_pt=tempg;
QueRem(tempg1); QueRem(tempg1);
Free(tempg1); Free(tempg1);
SpriteEdUpdate(doc,doc_ce,root); SpriteEdUpdate(doc,doc_ce,head);
} else } else
*_cur_elem_num+=1; *_cur_elem_num+=1;
} else if (old_mesh && tempg1->type==SPT_SHIFTABLE_MESH) { } else if (old_mesh && tempg1->type==SPT_SHIFTABLE_MESH) {
@@ -813,7 +813,7 @@ I64 SpriteMainEd(CDoc *doc)
cur_elem_num,old_border_src=Fs->border_src,old_title_src=Fs->title_src, cur_elem_num,old_border_src=Fs->border_src,old_title_src=Fs->title_src,
old_de_flags=doc_ce->de_flags; old_de_flags=doc_ce->de_flags;
CColorROPU32 bm_bkcolor,color; CColorROPU32 bm_bkcolor,color;
CSprite *root,*tempg,*insert_pt; CSprite *head,*tempg,*insert_pt;
CDC *dc=DCAlias(,Fs),*dc2=DCAlias(,sys_winmgr_task),*dc3; CDC *dc=DCAlias(,Fs),*dc2=DCAlias(,sys_winmgr_task),*dc3;
U8 *old_task_title=StrNew(Fs->task_title); U8 *old_task_title=StrNew(Fs->task_title);
@@ -821,13 +821,13 @@ I64 SpriteMainEd(CDoc *doc)
AutoComplete; AutoComplete;
WinMgrSync(2,TRUE); WinMgrSync(2,TRUE);
dc2->flags|=DCF_ON_TOP; dc2->flags|=DCF_ON_TOP;
root=Sprite2SpriteQue(doc_ce->bin_data->data); head=Sprite2SpriteQue(doc_ce->bin_data->data);
cur_elem_num=QueCnt(root); cur_elem_num=QueCnt(head);
xx=(doc_ce->x+doc_ce->max_col-doc->line_start_col)*FONT_WIDTH; xx=(doc_ce->x+doc_ce->max_col-doc->line_start_col)*FONT_WIDTH;
yy=(doc_ce->y-doc->top_line_num)*FONT_HEIGHT; yy=(doc_ce->y-doc->top_line_num)*FONT_HEIGHT;
while (TRUE) { while (TRUE) {
insert_pt=SpriteSetSettings(dc,root,cur_elem_num,xx,yy, insert_pt=SpriteSetSettings(dc,head,cur_elem_num,xx,yy,
&color,&width,&x,&y); &color,&width,&x,&y);
x+=xx; y+=yy; x+=xx; y+=yy;
DCFill; DCFill;
@@ -841,13 +841,13 @@ I64 SpriteMainEd(CDoc *doc)
Fs->title_src =old_title_src; Fs->title_src =old_title_src;
xx-=StrLen(doc_ce->tag)*FONT_WIDTH; xx-=StrLen(doc_ce->tag)*FONT_WIDTH;
eletype=PopUpSpriteMain(&root,&cur_elem_num,doc,doc_ce); eletype=PopUpSpriteMain(&head,&cur_elem_num,doc,doc_ce);
xx+=StrLen(doc_ce->tag)*FONT_WIDTH; xx+=StrLen(doc_ce->tag)*FONT_WIDTH;
insert_pt=SpriteSetSettings(dc,root,cur_elem_num,x,y, insert_pt=SpriteSetSettings(dc,head,cur_elem_num,x,y,
&color,&width,&x,&y); &color,&width,&x,&y);
x+=xx; y+=yy; x+=xx; y+=yy;
SpriteEdUpdate(doc,doc_ce,root); SpriteEdUpdate(doc,doc_ce,head);
switch (eletype) { switch (eletype) {
case SPT_FLOOD_FILL: case SPT_FLOOD_FILL:
case SPT_FLOOD_FILL_NOT: case SPT_FLOOD_FILL_NOT:
@@ -877,7 +877,7 @@ I64 SpriteMainEd(CDoc *doc)
tempg->type=SPT_COLOR; tempg->type=SPT_COLOR;
tempg->c.color=color; tempg->c.color=color;
QueIns(tempg,insert_pt->last); QueIns(tempg,insert_pt->last);
SpriteEdUpdate(doc,doc_ce,root); SpriteEdUpdate(doc,doc_ce,head);
cur_elem_num++; cur_elem_num++;
} }
doc_ce->de_flags=old_de_flags; doc_ce->de_flags=old_de_flags;
@@ -892,14 +892,14 @@ I64 SpriteMainEd(CDoc *doc)
tempg->type=SPT_DITHER_COLOR; tempg->type=SPT_DITHER_COLOR;
tempg->d.dither_color=color.c0.color|color.c1.color<<8; tempg->d.dither_color=color.c0.color|color.c1.color<<8;
QueIns(tempg,insert_pt->last); QueIns(tempg,insert_pt->last);
SpriteEdUpdate(doc,doc_ce,root); SpriteEdUpdate(doc,doc_ce,head);
cur_elem_num++; cur_elem_num++;
} }
doc_ce->de_flags=old_de_flags; doc_ce->de_flags=old_de_flags;
eletype=SPT_MENU; eletype=SPT_MENU;
break; break;
case SPT_ED_MENU: case SPT_ED_MENU:
switch (SpriteEd(doc,doc_ce,x,y,&root,&cur_elem_num)) { switch (SpriteEd(doc,doc_ce,x,y,&head,&cur_elem_num)) {
case GE_ABORT: eletype=DOCM_CANCEL; break; case GE_ABORT: eletype=DOCM_CANCEL; break;
case GE_EXIT: eletype=SPT_EXIT; break; case GE_EXIT: eletype=SPT_EXIT; break;
case GE_CONT: eletype=SPT_MENU; break; case GE_CONT: eletype=SPT_MENU; break;
@@ -907,7 +907,7 @@ I64 SpriteMainEd(CDoc *doc)
break; break;
case SPT_MESH: case SPT_MESH:
doc_ce->de_flags|=DOCEF_DONT_DRAW; doc_ce->de_flags|=DOCEF_DONT_DRAW;
SMMesh(doc,doc_ce,root,&cur_elem_num); SMMesh(doc,doc_ce,head,&cur_elem_num);
doc_ce->de_flags=old_de_flags; doc_ce->de_flags=old_de_flags;
eletype=SPT_MENU; eletype=SPT_MENU;
break; break;
@@ -928,7 +928,7 @@ I64 SpriteMainEd(CDoc *doc)
"shift the mesh origin point in the sprite edit menu.\n")) { "shift the mesh origin point in the sprite edit menu.\n")) {
doc_ce->de_flags=old_de_flags; doc_ce->de_flags=old_de_flags;
a1=x; a2=y; a1=x; a2=y;
SMShiftableMesh(doc,doc_ce,root,x,y,a1,a2,&cur_elem_num); SMShiftableMesh(doc,doc_ce,head,x,y,a1,a2,&cur_elem_num);
eletype=SPT_MENU; eletype=SPT_MENU;
} else } else
PopUpOk("Select Origin.\n"); PopUpOk("Select Origin.\n");
@@ -948,7 +948,7 @@ I64 SpriteMainEd(CDoc *doc)
eletype=SPT_MENU; eletype=SPT_MENU;
else { else {
bm_bkcolor=i; bm_bkcolor=i;
SpriteEdUpdate(doc,doc_ce,root); SpriteEdUpdate(doc,doc_ce,head);
SpriteExtents(doc_ce->bin_data->data,&xx1,&xx2,&yy1,&yy2); SpriteExtents(doc_ce->bin_data->data,&xx1,&xx2,&yy1,&yy2);
if (!(xx1<=xx2 && yy1<=yy2)) if (!(xx1<=xx2 && yy1<=yy2))
xx1=xx2=yy1=yy2=0; xx1=xx2=yy1=yy2=0;
@@ -956,7 +956,7 @@ I64 SpriteMainEd(CDoc *doc)
doc_ce->de_flags=old_de_flags; doc_ce->de_flags=old_de_flags;
xx1+=xx; yy1+=yy; xx1+=xx; yy1+=yy;
xx2+=xx; yy2+=yy; xx2+=xx; yy2+=yy;
if (SMBitMap(eletype,doc,doc_ce,root,dc,xx,yy,a1,a2,bm_bkcolor, if (SMBitMap(eletype,doc,doc_ce,head,dc,xx,yy,a1,a2,bm_bkcolor,
FALSE,xx1,yy1,xx2,yy2,&cur_elem_num)==GE_EXIT) { FALSE,xx1,yy1,xx2,yy2,&cur_elem_num)==GE_EXIT) {
res=GE_EXIT; res=GE_EXIT;
goto ei_done; goto ei_done;
@@ -988,7 +988,7 @@ I64 SpriteMainEd(CDoc *doc)
tempg->type=SPT_WIDTH; tempg->type=SPT_WIDTH;
tempg->w.width=width; tempg->w.width=width;
QueIns(tempg,insert_pt->last); QueIns(tempg,insert_pt->last);
SpriteEdUpdate(doc,doc_ce,root); SpriteEdUpdate(doc,doc_ce,head);
cur_elem_num++; cur_elem_num++;
} }
doc_ce->de_flags=old_de_flags; doc_ce->de_flags=old_de_flags;
@@ -1002,7 +1002,7 @@ I64 SpriteMainEd(CDoc *doc)
else else
tempg->type=SPT_TRANSFORM_OFF; tempg->type=SPT_TRANSFORM_OFF;
QueIns(tempg,insert_pt->last); QueIns(tempg,insert_pt->last);
SpriteEdUpdate(doc,doc_ce,root); SpriteEdUpdate(doc,doc_ce,head);
cur_elem_num++; cur_elem_num++;
eletype=SPT_MENU; eletype=SPT_MENU;
break; break;
@@ -1016,14 +1016,14 @@ I64 SpriteMainEd(CDoc *doc)
case SPT_TEXT: case SPT_TEXT:
case SPT_TEXT_BOX: case SPT_TEXT_BOX:
case SPT_TEXT_DIAMOND: case SPT_TEXT_DIAMOND:
SMTextFamily(eletype,doc,doc_ce,root,dc,xx,yy,a1,a2, SMTextFamily(eletype,doc,doc_ce,head,dc,xx,yy,a1,a2,
color,&cur_elem_num,old_de_flags); color,&cur_elem_num,old_de_flags);
eletype=SPT_MENU; eletype=SPT_MENU;
break; break;
} }
if (eletype!=SPT_MENU) { if (eletype!=SPT_MENU) {
insert_pt=SpriteSetSettings(dc,root,cur_elem_num,xx,yy, insert_pt=SpriteSetSettings(dc,head,cur_elem_num,xx,yy,
&color,&width,&x,&y); &color,&width,&x,&y);
x+=xx; y+=yy; x+=xx; y+=yy;
SpriteScreenInit(dc,x,y); SpriteScreenInit(dc,x,y);
@@ -1051,7 +1051,7 @@ I64 SpriteMainEd(CDoc *doc)
tempg->type=SPT_COLOR; tempg->type=SPT_COLOR;
tempg->c.color=color; tempg->c.color=color;
QueIns(tempg,insert_pt->last); QueIns(tempg,insert_pt->last);
SpriteEdUpdate(doc,doc_ce,root); SpriteEdUpdate(doc,doc_ce,head);
cur_elem_num++; cur_elem_num++;
break; break;
case 't': //Set to transparent color case 't': //Set to transparent color
@@ -1059,7 +1059,7 @@ I64 SpriteMainEd(CDoc *doc)
tempg->type=SPT_COLOR; tempg->type=SPT_COLOR;
tempg->c.color=TRANSPARENT; tempg->c.color=TRANSPARENT;
QueIns(tempg,insert_pt->last); QueIns(tempg,insert_pt->last);
SpriteEdUpdate(doc,doc_ce,root); SpriteEdUpdate(doc,doc_ce,head);
cur_elem_num++; cur_elem_num++;
break; break;
} }
@@ -1069,7 +1069,7 @@ I64 SpriteMainEd(CDoc *doc)
tempg=CAlloc(SpriteElemQuedBaseSize(SPT_PLANAR_SYMMETRY)); tempg=CAlloc(SpriteElemQuedBaseSize(SPT_PLANAR_SYMMETRY));
tempg->type=SPT_PLANAR_SYMMETRY; tempg->type=SPT_PLANAR_SYMMETRY;
QueIns(tempg,insert_pt->last); QueIns(tempg,insert_pt->last);
SpriteEdUpdate(doc,doc_ce,root); SpriteEdUpdate(doc,doc_ce,head);
cur_elem_num++; cur_elem_num++;
eletype=SPT_MENU; eletype=SPT_MENU;
} else } else
@@ -1127,12 +1127,12 @@ I64 SpriteMainEd(CDoc *doc)
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,head);
cur_elem_num++; cur_elem_num++;
} }
break; break;
case SPT_BITMAP: case SPT_BITMAP:
if (SMBitMap(eletype,doc,doc_ce,root,dc,xx,yy,a1,a2,bm_bkcolor, if (SMBitMap(eletype,doc,doc_ce,head,dc,xx,yy,a1,a2,bm_bkcolor,
TRUE,,,,,&cur_elem_num)==GE_EXIT) { TRUE,,,,,&cur_elem_num)==GE_EXIT) {
res=GE_EXIT; res=GE_EXIT;
goto ei_done; goto ei_done;
@@ -1143,7 +1143,7 @@ I64 SpriteMainEd(CDoc *doc)
case SPT_SHIFTABLE_MESH: case SPT_SHIFTABLE_MESH:
GetMsg(NULL,NULL,1<<MSG_IP_L_UP); GetMsg(NULL,NULL,1<<MSG_IP_L_UP);
doc_ce->de_flags|=DOCEF_DONT_DRAW; doc_ce->de_flags|=DOCEF_DONT_DRAW;
SMShiftableMesh(doc,doc_ce,root,x,y,a1,a2,&cur_elem_num); SMShiftableMesh(doc,doc_ce,head,x,y,a1,a2,&cur_elem_num);
doc_ce->de_flags=old_de_flags; doc_ce->de_flags=old_de_flags;
eletype=SPT_MENU; eletype=SPT_MENU;
break; break;
@@ -1162,8 +1162,8 @@ ei_done:
Free(old_task_title); Free(old_task_title);
Fs->border_src=old_border_src; Fs->border_src=old_border_src;
Fs->title_src =old_title_src; Fs->title_src =old_title_src;
QueDel(root); QueDel(head);
Free(root); Free(head);
return res; return res;
} }
@@ -1182,7 +1182,7 @@ U0 EdSpriteIns(CDoc *doc)
tempb->data=CAlloc(tempb->size,doc->mem_task); tempb->data=CAlloc(tempb->size,doc->mem_task);
tempb->num=doc->cur_bin_num++; tempb->num=doc->cur_bin_num++;
tempb->use_cnt=1; tempb->use_cnt=1;
QueIns(tempb,doc->bin_root.last); QueIns(tempb,doc->bin_head.last);
doc_e=DocPrint(doc,"%s",st); doc_e=DocPrint(doc,"%s",st);
doc_e->bin_data=tempb; doc_e->bin_data=tempb;
Free(st); Free(st);
+113 -112
View File
@@ -44,8 +44,8 @@ class CMeshFrame
I32 *depth_buf; I32 *depth_buf;
I64 *w2s,*s2w; //Screen-to-world and world-to-screen transform matrices. I64 *w2s,*s2w; //Screen-to-world and world-to-screen transform matrices.
I64 vertex_cnt,tri_cnt; //Set by MeshSize I64 vertex_cnt,tri_cnt; //Set by MeshSize
CMeshEdVertex vertex_root,*cur_vertex,*chain_pred; CMeshEdVertex vertex_head,*cur_vertex,*chain_pred;
CMeshEdTri tri_root,*cur_tri; CMeshEdTri tri_head,*cur_tri;
I64 x1,y1,x2,y2,cur_snap; I64 x1,y1,x2,y2,cur_snap;
}; };
@@ -55,7 +55,7 @@ CMeshEdVertex *MeshVertexNew(CMeshFrame *e,I64 x,I64 y,I64 z)
tempv->p.x=x; tempv->p.x=x;
tempv->p.y=y; tempv->p.y=y;
tempv->p.z=z; tempv->p.z=z;
QueIns(tempv,e->vertex_root.last); QueIns(tempv,e->vertex_head.last);
return tempv; return tempv;
} }
@@ -69,15 +69,15 @@ CMeshEdTri *MeshTriNew(CMeshFrame *e,CColorROPU32 color,
tempt->t[0]=v1; tempt->t[0]=v1;
tempt->t[1]=v2; tempt->t[1]=v2;
tempt->t[2]=v3; tempt->t[2]=v3;
QueIns(tempt,e->tri_root.last); QueIns(tempt,e->tri_head.last);
return tempt; return tempt;
} }
CMeshEdVertex *MeshVertexFindScrPt(CMeshFrame *e,I64 x,I64 y) CMeshEdVertex *MeshVertexFindScrPt(CMeshFrame *e,I64 x,I64 y)
{//Screen coordinates {//Screen coordinates
CMeshEdVertex *res=NULL,*tempv=e->vertex_root.next; CMeshEdVertex *res=NULL,*tempv=e->vertex_head.next;
I64 dd,dz,best_dd=MAX_I64,best_dz=MAX_I64; I64 dd,dz,best_dd=MAX_I64,best_dz=MAX_I64;
while (tempv!=&e->vertex_root) { while (tempv!=&e->vertex_head) {
if (!(tempv->flags&VF_IGNORE)) { if (!(tempv->flags&VF_IGNORE)) {
dd=SqrI64(x-tempv->pt.x)+SqrI64(y-tempv->pt.y); dd=SqrI64(x-tempv->pt.x)+SqrI64(y-tempv->pt.y);
dz=AbsI64(e->ip_z-tempv->p.z); dz=AbsI64(e->ip_z-tempv->p.z);
@@ -94,8 +94,8 @@ CMeshEdVertex *MeshVertexFindScrPt(CMeshFrame *e,I64 x,I64 y)
CMeshEdVertex *MeshVertexFindNum(CMeshFrame *haystack_e,I64 needle_num) CMeshEdVertex *MeshVertexFindNum(CMeshFrame *haystack_e,I64 needle_num)
{ {
CMeshEdVertex *tempv=haystack_e->vertex_root.next; CMeshEdVertex *tempv=haystack_e->vertex_head.next;
while (tempv!=&haystack_e->vertex_root) { while (tempv!=&haystack_e->vertex_head) {
if (tempv->num==needle_num) if (tempv->num==needle_num)
return tempv; return tempv;
tempv=tempv->next; tempv=tempv->next;
@@ -118,8 +118,8 @@ U0 MeshVertexDel(CMeshFrame *e,CMeshEdVertex *tempv)
I64 i; I64 i;
CMeshEdTri *tempt,*tempt1; CMeshEdTri *tempt,*tempt1;
if (tempv) { if (tempv) {
tempt=e->tri_root.next; tempt=e->tri_head.next;
while (tempt!=&e->tri_root) { while (tempt!=&e->tri_head) {
tempt1=tempt->next; tempt1=tempt->next;
for (i=0;i<3;i++) for (i=0;i<3;i++)
if (tempt->t[i]==tempv) if (tempt->t[i]==tempv)
@@ -140,7 +140,7 @@ U0 MeshVertexDel(CMeshFrame *e,CMeshEdVertex *tempv)
U0 MeshFence(CMeshFrame *e) U0 MeshFence(CMeshFrame *e)
{ {
CMeshEdVertex *tempv,*tempv1,*tempv_last=NULL,*tempv1_last=NULL, CMeshEdVertex *tempv,*tempv1,*tempv_last=NULL,*tempv1_last=NULL,
*start=e->chain_pred->next,*end=e->vertex_root.last; *start=e->chain_pred->next,*end=e->vertex_head.last;
tempv=start; tempv=start;
while (TRUE) { while (TRUE) {
tempv1=MeshVertexNew(e,tempv->p.x,tempv->p.y,tempv->p.z+e->thickness); tempv1=MeshVertexNew(e,tempv->p.x,tempv->p.y,tempv->p.z+e->thickness);
@@ -179,16 +179,16 @@ U0 MeshPolygon(CMeshFrame *e,CMeshEdVertex *start,CMeshEdVertex *end,Bool rev)
U0 MeshPrism(CMeshFrame *e) U0 MeshPrism(CMeshFrame *e)
{ {
CMeshEdVertex *start=e->chain_pred->next,*end=e->vertex_root.last; CMeshEdVertex *start=e->chain_pred->next,*end=e->vertex_head.last;
MeshFence(e); MeshFence(e);
MeshPolygon(e,start,end,FALSE); MeshPolygon(e,start,end,FALSE);
MeshPolygon(e,end->next,e->vertex_root.last,TRUE); MeshPolygon(e,end->next,e->vertex_head.last,TRUE);
} }
U0 MeshVertexSelAll(CMeshFrame *e,Bool val) U0 MeshVertexSelAll(CMeshFrame *e,Bool val)
{ {
CMeshEdVertex *tempv=e->vertex_root.next; CMeshEdVertex *tempv=e->vertex_head.next;
while (tempv!=&e->vertex_root) { while (tempv!=&e->vertex_head) {
if (val) if (val)
tempv->flags|=VF_SEL; tempv->flags|=VF_SEL;
else else
@@ -199,8 +199,8 @@ U0 MeshVertexSelAll(CMeshFrame *e,Bool val)
U0 MeshTriSelAll(CMeshFrame *e,Bool val) U0 MeshTriSelAll(CMeshFrame *e,Bool val)
{ {
CMeshEdTri *tempt=e->tri_root.next; CMeshEdTri *tempt=e->tri_head.next;
while (tempt!=&e->tri_root) { while (tempt!=&e->tri_head) {
if (val) if (val)
tempt->flags|=TF_SEL; tempt->flags|=TF_SEL;
else else
@@ -211,8 +211,8 @@ U0 MeshTriSelAll(CMeshFrame *e,Bool val)
U0 MeshVertexIgnoreSet(CMeshFrame *e,Bool val) U0 MeshVertexIgnoreSet(CMeshFrame *e,Bool val)
{ {
CMeshEdVertex *tempv=e->vertex_root.next; CMeshEdVertex *tempv=e->vertex_head.next;
while (tempv!=&e->vertex_root) { while (tempv!=&e->vertex_head) {
tempv->flags&=~VF_IGNORE; tempv->flags&=~VF_IGNORE;
if (tempv->flags&VF_SEL && val) if (tempv->flags&VF_SEL && val)
tempv->flags|=VF_IGNORE; tempv->flags|=VF_IGNORE;
@@ -222,8 +222,8 @@ U0 MeshVertexIgnoreSet(CMeshFrame *e,Bool val)
U0 MeshP0Capture(CMeshFrame *e) U0 MeshP0Capture(CMeshFrame *e)
{ {
CMeshEdVertex *tempv=e->vertex_root.next; CMeshEdVertex *tempv=e->vertex_head.next;
while (tempv!=&e->vertex_root) { while (tempv!=&e->vertex_head) {
MemCpy(&tempv->p0,&tempv->p,sizeof(CD3I32)); MemCpy(&tempv->p0,&tempv->p,sizeof(CD3I32));
tempv=tempv->next; tempv=tempv->next;
} }
@@ -231,8 +231,8 @@ U0 MeshP0Capture(CMeshFrame *e)
U0 MeshP0Offset(CMeshFrame *e,I64 dx,I64 dy,I64 dz) U0 MeshP0Offset(CMeshFrame *e,I64 dx,I64 dy,I64 dz)
{ {
CMeshEdVertex *tempv=e->vertex_root.next; CMeshEdVertex *tempv=e->vertex_head.next;
while (tempv!=&e->vertex_root) { while (tempv!=&e->vertex_head) {
if (tempv->flags&VF_SEL) { if (tempv->flags&VF_SEL) {
tempv->p.x=tempv->p0.x+dx; tempv->p.x=tempv->p0.x+dx;
tempv->p.y=tempv->p0.y+dy; tempv->p.y=tempv->p0.y+dy;
@@ -248,10 +248,10 @@ U0 MeshP0Offset(CMeshFrame *e,I64 dx,I64 dy,I64 dz)
U0 MeshVertexSelRect(CMeshFrame *e,I64 sel_mode,I64 x1,I64 x2,I64 y1,I64 y2) U0 MeshVertexSelRect(CMeshFrame *e,I64 sel_mode,I64 x1,I64 x2,I64 y1,I64 y2)
{ {
CMeshEdVertex *tempv=e->vertex_root.next; CMeshEdVertex *tempv=e->vertex_head.next;
if (x1>x2) SwapI64(&x1,&x2); if (x1>x2) SwapI64(&x1,&x2);
if (y1>y2) SwapI64(&y1,&y2); if (y1>y2) SwapI64(&y1,&y2);
while (tempv!=&e->vertex_root) { while (tempv!=&e->vertex_head) {
if (x1<=tempv->pt.x<=x2 && if (x1<=tempv->pt.x<=x2 &&
y1<=tempv->pt.y<=y2) { y1<=tempv->pt.y<=y2) {
if (sel_mode==SEL_MESH_AND) if (sel_mode==SEL_MESH_AND)
@@ -266,10 +266,10 @@ U0 MeshVertexSelRect(CMeshFrame *e,I64 sel_mode,I64 x1,I64 x2,I64 y1,I64 y2)
U0 MeshTriSelRect(CMeshFrame *e,I64 sel_mode,I64 x1,I64 x2,I64 y1,I64 y2) U0 MeshTriSelRect(CMeshFrame *e,I64 sel_mode,I64 x1,I64 x2,I64 y1,I64 y2)
{ {
CMeshEdTri *tempt=e->tri_root.next; CMeshEdTri *tempt=e->tri_head.next;
if (x1>x2) SwapI64(&x1,&x2); if (x1>x2) SwapI64(&x1,&x2);
if (y1>y2) SwapI64(&y1,&y2); if (y1>y2) SwapI64(&y1,&y2);
while (tempt!=&e->tri_root) { while (tempt!=&e->tri_head) {
if (x1<=tempt->t[0]->pt.x<=x2 && if (x1<=tempt->t[0]->pt.x<=x2 &&
y1<=tempt->t[0]->pt.y<=y2 && y1<=tempt->t[0]->pt.y<=y2 &&
x1<=tempt->t[1]->pt.x<=x2 && x1<=tempt->t[1]->pt.x<=x2 &&
@@ -300,14 +300,14 @@ U0 MeshTriSelRect(CMeshFrame *e,I64 sel_mode,I64 x1,I64 x2,I64 y1,I64 y2)
I64 MeshSelCnt(CMeshFrame *e) I64 MeshSelCnt(CMeshFrame *e)
{ {
I64 res=0; I64 res=0;
CMeshEdVertex *tempv=e->vertex_root.next; CMeshEdVertex *tempv=e->vertex_head.next;
CMeshEdTri *tempt=e->tri_root.next; CMeshEdTri *tempt=e->tri_head.next;
while (tempv!=&e->vertex_root) { while (tempv!=&e->vertex_head) {
if (tempv->flags&VF_SEL) if (tempv->flags&VF_SEL)
res++; res++;
tempv=tempv->next; tempv=tempv->next;
} }
while (tempt!=&e->tri_root) { while (tempt!=&e->tri_head) {
if (tempt->flags&TF_SEL) if (tempt->flags&TF_SEL)
res++; res++;
tempt=tempt->next; tempt=tempt->next;
@@ -318,13 +318,13 @@ I64 MeshSelCnt(CMeshFrame *e)
U0 MeshSwapAxes(CMeshFrame *e,I64 o1,I64 o2) U0 MeshSwapAxes(CMeshFrame *e,I64 o1,I64 o2)
{ {
Bool unsel; Bool unsel;
CMeshEdVertex *tempv=e->vertex_root.next; CMeshEdVertex *tempv=e->vertex_head.next;
if (!MeshSelCnt(e)) { if (!MeshSelCnt(e)) {
MeshVertexSelAll(e,TRUE); MeshVertexSelAll(e,TRUE);
unsel=TRUE; unsel=TRUE;
} else } else
unsel=FALSE; unsel=FALSE;
while (tempv!=&e->vertex_root) { while (tempv!=&e->vertex_head) {
if (tempv->flags&VF_SEL) if (tempv->flags&VF_SEL)
SwapU32((&tempv->p)(U8 *)+o1,(&tempv->p)(U8 *)+o2); SwapU32((&tempv->p)(U8 *)+o1,(&tempv->p)(U8 *)+o2);
tempv=tempv->next; tempv=tempv->next;
@@ -336,13 +336,13 @@ U0 MeshSwapAxes(CMeshFrame *e,I64 o1,I64 o2)
U0 MeshInvertAxis(CMeshFrame *e,I64 o) U0 MeshInvertAxis(CMeshFrame *e,I64 o)
{ {
Bool unsel; Bool unsel;
CMeshEdVertex *tempv=e->vertex_root.next; CMeshEdVertex *tempv=e->vertex_head.next;
if (!MeshSelCnt(e)) { if (!MeshSelCnt(e)) {
MeshVertexSelAll(e,TRUE); MeshVertexSelAll(e,TRUE);
unsel=TRUE; unsel=TRUE;
} else } else
unsel=FALSE; unsel=FALSE;
while (tempv!=&e->vertex_root) { while (tempv!=&e->vertex_head) {
if (tempv->flags&VF_SEL) if (tempv->flags&VF_SEL)
*((&tempv->p)(U8 *)+o)(I32 *)=-*((&tempv->p)(U8 *)+o)(I32 *); *((&tempv->p)(U8 *)+o)(I32 *)=-*((&tempv->p)(U8 *)+o)(I32 *);
tempv=tempv->next; tempv=tempv->next;
@@ -355,14 +355,14 @@ U0 MeshTransformSel(CMeshFrame *e)
{ {
Bool unsel; Bool unsel;
I64 r[16],x,y,z; I64 r[16],x,y,z;
CMeshEdVertex *tempv=e->vertex_root.next; CMeshEdVertex *tempv=e->vertex_head.next;
if (PopUpTransform(r)) { if (PopUpTransform(r)) {
if (!MeshSelCnt(e)) { if (!MeshSelCnt(e)) {
MeshVertexSelAll(e,TRUE); MeshVertexSelAll(e,TRUE);
unsel=TRUE; unsel=TRUE;
} else } else
unsel=FALSE; unsel=FALSE;
while (tempv!=&e->vertex_root) { while (tempv!=&e->vertex_head) {
if (tempv->flags&VF_SEL) { if (tempv->flags&VF_SEL) {
x=tempv->p.x; y=tempv->p.y; z=tempv->p.z; x=tempv->p.x; y=tempv->p.y; z=tempv->p.z;
Mat4x4MulXYZ(r,&x,&y,&z); Mat4x4MulXYZ(r,&x,&y,&z);
@@ -378,13 +378,13 @@ U0 MeshTransformSel(CMeshFrame *e)
U0 MeshColorTris(CMeshFrame *e) U0 MeshColorTris(CMeshFrame *e)
{ {
Bool unsel; Bool unsel;
CMeshEdTri *tempt=e->tri_root.next; CMeshEdTri *tempt=e->tri_head.next;
if (!MeshSelCnt(e)) { if (!MeshSelCnt(e)) {
MeshTriSelAll(e,TRUE); MeshTriSelAll(e,TRUE);
unsel=TRUE; unsel=TRUE;
} else } else
unsel=FALSE; unsel=FALSE;
while (tempt!=&e->tri_root) { while (tempt!=&e->tri_head) {
if (tempt->flags & TF_SEL) if (tempt->flags & TF_SEL)
tempt->mt.color=e->cur_color; tempt->mt.color=e->cur_color;
tempt=tempt->next; tempt=tempt->next;
@@ -396,13 +396,13 @@ U0 MeshColorTris(CMeshFrame *e)
U0 MeshRevTris(CMeshFrame *e) U0 MeshRevTris(CMeshFrame *e)
{ {
Bool unsel; Bool unsel;
CMeshEdTri *tempt=e->tri_root.next; CMeshEdTri *tempt=e->tri_head.next;
if (!MeshSelCnt(e)) { if (!MeshSelCnt(e)) {
MeshTriSelAll(e,TRUE); MeshTriSelAll(e,TRUE);
unsel=TRUE; unsel=TRUE;
} else } else
unsel=FALSE; unsel=FALSE;
while (tempt!=&e->tri_root) { while (tempt!=&e->tri_head) {
if (tempt->flags & TF_SEL) if (tempt->flags & TF_SEL)
SwapI64(&tempt->t[1],&tempt->t[2]); SwapI64(&tempt->t[1],&tempt->t[2]);
tempt=tempt->next; tempt=tempt->next;
@@ -451,7 +451,7 @@ U0 MPDrawIt(CMeshFrame *e)
//Makes a copy of e->dc so we can change dc->color member and stuff. //Makes a copy of e->dc so we can change dc->color member and stuff.
CDC *dc=DCAlias(e->dc,e->dc->win_task); CDC *dc=DCAlias(e->dc,e->dc->win_task);
CMeshEdTri *tempt=e->tri_root.next; CMeshEdTri *tempt=e->tri_head.next;
I64 i,*old_r=dc->r; I64 i,*old_r=dc->r;
//$LK,"DCAlias",A="MN:DCAlias"$() allocs a new identity rotation matrix. //$LK,"DCAlias",A="MN:DCAlias"$() allocs a new identity rotation matrix.
@@ -493,7 +493,7 @@ U0 MPDrawIt(CMeshFrame *e)
GrLine3(dc,0,0,-500,0,0,0); GrLine3(dc,0,0,-500,0,0,0);
} }
while (tempt!=&e->tri_root) { while (tempt!=&e->tri_head) {
if (tempt->cpu_num==Gs->num) { if (tempt->cpu_num==Gs->num) {
if (tempt->flags & TF_SEL) { if (tempt->flags & TF_SEL) {
if (Blink) if (Blink)
@@ -588,33 +588,33 @@ U0 MeshCursorW(CMeshFrame *e,CTask *task,I64 *_x,I64 *_y,I64 *_z)
*_x=x; *_y=y; *_z=z; *_x=x; *_y=y; *_z=z;
} }
CMeshEdVertex sys_clipboard_vertex_root; CMeshEdVertex sys_clipboard_vertex_head;
CMeshEdTri sys_clipboard_tri_root; CMeshEdTri sys_clipboard_tri_head;
U0 MeshClipboardInit() U0 MeshClipboardInit()
{ {
QueInit(&sys_clipboard_vertex_root); QueInit(&sys_clipboard_vertex_head);
QueInit(&sys_clipboard_tri_root); QueInit(&sys_clipboard_tri_head);
} }
U0 MeshClipboardRst() U0 MeshClipboardRst()
{ {
QueDel(&sys_clipboard_vertex_root,TRUE); QueDel(&sys_clipboard_vertex_head,TRUE);
QueDel(&sys_clipboard_tri_root,TRUE); QueDel(&sys_clipboard_tri_head,TRUE);
MeshClipboardInit; MeshClipboardInit;
} }
U0 MeshClipboardCopy(CMeshFrame *e) U0 MeshClipboardCopy(CMeshFrame *e)
{ {
CMeshEdVertex *tempv=e->vertex_root.next,*tempv2; CMeshEdVertex *tempv=e->vertex_head.next,*tempv2;
CMeshEdTri *tempt=e->tri_root.next,*tempt2; CMeshEdTri *tempt=e->tri_head.next,*tempt2;
MeshClipboardRst; MeshClipboardRst;
while (tempv!=&e->vertex_root) { while (tempv!=&e->vertex_head) {
if (tempv->flags&VF_SEL) { if (tempv->flags&VF_SEL) {
tempv->copy=tempv2=ACAlloc(sizeof(CMeshEdVertex)); tempv->copy=tempv2=ACAlloc(sizeof(CMeshEdVertex));
MemCpy(&tempv2->p,&tempv->p,sizeof(CD3I32)); MemCpy(&tempv2->p,&tempv->p,sizeof(CD3I32));
QueIns(tempv2,sys_clipboard_vertex_root.last); QueIns(tempv2,sys_clipboard_vertex_head.last);
tempv->flags|=VF_COPIED; tempv->flags|=VF_COPIED;
tempv->flags&=~VF_SEL; tempv->flags&=~VF_SEL;
} else { } else {
@@ -623,7 +623,7 @@ U0 MeshClipboardCopy(CMeshFrame *e)
} }
tempv=tempv->next; tempv=tempv->next;
} }
while (tempt!=&e->tri_root) { while (tempt!=&e->tri_head) {
if (tempt->flags&TF_SEL && if (tempt->flags&TF_SEL &&
tempt->t[0]->copy && tempt->t[1]->copy && tempt->t[2]->copy) { tempt->t[0]->copy && tempt->t[1]->copy && tempt->t[2]->copy) {
tempt2=ACAlloc(sizeof(CMeshEdTri)); tempt2=ACAlloc(sizeof(CMeshEdTri));
@@ -631,7 +631,7 @@ U0 MeshClipboardCopy(CMeshFrame *e)
tempt2->t[1]=tempt->t[1]->copy; tempt2->t[1]=tempt->t[1]->copy;
tempt2->t[2]=tempt->t[2]->copy; tempt2->t[2]=tempt->t[2]->copy;
tempt2->mt.color=tempt->mt.color; tempt2->mt.color=tempt->mt.color;
QueIns(tempt2,sys_clipboard_tri_root.last); QueIns(tempt2,sys_clipboard_tri_head.last);
tempt->flags|=TF_COPIED; tempt->flags|=TF_COPIED;
tempt->flags&=~TF_SEL; tempt->flags&=~TF_SEL;
} else } else
@@ -642,16 +642,16 @@ U0 MeshClipboardCopy(CMeshFrame *e)
U0 MeshClipboardCut(CMeshFrame *e) U0 MeshClipboardCut(CMeshFrame *e)
{ {
CMeshEdVertex *tempv=e->vertex_root.next,*tempv1; CMeshEdVertex *tempv=e->vertex_head.next,*tempv1;
CMeshEdTri *tempt=e->tri_root.next,*tempt1; CMeshEdTri *tempt=e->tri_head.next,*tempt1;
MeshClipboardCopy(e); MeshClipboardCopy(e);
while (tempt!=&e->tri_root) { while (tempt!=&e->tri_head) {
tempt1=tempt->next; tempt1=tempt->next;
if (tempt->flags&TF_COPIED) if (tempt->flags&TF_COPIED)
MeshTriDel(e,tempt); MeshTriDel(e,tempt);
tempt=tempt1; tempt=tempt1;
} }
while (tempv!=&e->vertex_root) { while (tempv!=&e->vertex_head) {
tempv1=tempv->next; tempv1=tempv->next;
if (tempv->flags&VF_COPIED) if (tempv->flags&VF_COPIED)
MeshVertexDel(e,tempv); MeshVertexDel(e,tempv);
@@ -661,15 +661,15 @@ U0 MeshClipboardCut(CMeshFrame *e)
U0 MeshClipboardDel(CMeshFrame *e) U0 MeshClipboardDel(CMeshFrame *e)
{//Technically not clipboard {//Technically not clipboard
CMeshEdVertex *tempv=e->vertex_root.next,*tempv1; CMeshEdVertex *tempv=e->vertex_head.next,*tempv1;
CMeshEdTri *tempt=e->tri_root.next,*tempt1; CMeshEdTri *tempt=e->tri_head.next,*tempt1;
while (tempt!=&e->tri_root) { while (tempt!=&e->tri_head) {
tempt1=tempt->next; tempt1=tempt->next;
if (tempt->flags&TF_SEL) if (tempt->flags&TF_SEL)
MeshTriDel(e,tempt); MeshTriDel(e,tempt);
tempt=tempt1; tempt=tempt1;
} }
while (tempv!=&e->vertex_root) { while (tempv!=&e->vertex_head) {
tempv1=tempv->next; tempv1=tempv->next;
if (tempv->flags&VF_SEL) if (tempv->flags&VF_SEL)
MeshVertexDel(e,tempv); MeshVertexDel(e,tempv);
@@ -679,20 +679,20 @@ U0 MeshClipboardDel(CMeshFrame *e)
U0 MeshClipboardPaste(CMeshFrame *e) U0 MeshClipboardPaste(CMeshFrame *e)
{ {
CMeshEdVertex *tempv2=sys_clipboard_vertex_root.next,*tempv; CMeshEdVertex *tempv2=sys_clipboard_vertex_head.next,*tempv;
CMeshEdTri *tempt2=sys_clipboard_tri_root.next,*tempt; CMeshEdTri *tempt2=sys_clipboard_tri_head.next,*tempt;
MeshVertexSelAll(e,FALSE); MeshVertexSelAll(e,FALSE);
MeshTriSelAll(e,FALSE); MeshTriSelAll(e,FALSE);
while (tempv2!=&sys_clipboard_vertex_root) { while (tempv2!=&sys_clipboard_vertex_head) {
tempv2->copy=tempv=CAlloc(sizeof(CMeshEdVertex)); tempv2->copy=tempv=CAlloc(sizeof(CMeshEdVertex));
MemCpy(&tempv->p,&tempv2->p,sizeof(CD3I32)); MemCpy(&tempv->p,&tempv2->p,sizeof(CD3I32));
QueIns(tempv,e->vertex_root.last); QueIns(tempv,e->vertex_head.last);
tempv->flags|=VF_SEL; tempv->flags|=VF_SEL;
tempv2=tempv2->next; tempv2=tempv2->next;
} }
while (tempt2!=&sys_clipboard_tri_root) { while (tempt2!=&sys_clipboard_tri_head) {
tempt=MeshTriNew(e,tempt2->mt.color,tempt2->t[0]->copy, tempt=MeshTriNew(e,tempt2->mt.color,tempt2->t[0]->copy,
tempt2->t[1]->copy,tempt2->t[2]->copy); tempt2->t[1]->copy,tempt2->t[2]->copy);
tempt->flags|=TF_SEL; tempt->flags|=TF_SEL;
@@ -741,8 +741,8 @@ U0 DrawIt(CTask *task,CDC *dc)
DCDepthBufAlloc(dc); DCDepthBufAlloc(dc);
tempv=e->vertex_root.next; tempv=e->vertex_head.next;
while (tempv!=&e->vertex_root) { while (tempv!=&e->vertex_head) {
x=tempv->p.x; y=tempv->p.y; z=tempv->p.z; x=tempv->p.x; y=tempv->p.y; z=tempv->p.z;
(*dc->transform)(dc,&x,&y,&z); (*dc->transform)(dc,&x,&y,&z);
tempv->pt.x=x; tempv->pt.y=y; tempv->pt.z=z; tempv->pt.x=x; tempv->pt.y=y; tempv->pt.z=z;
@@ -755,8 +755,8 @@ U0 DrawIt(CTask *task,CDC *dc)
for (i=0;i<mp_cnt;i++) for (i=0;i<mp_cnt;i++)
JobQue(&MPDrawIt,e,i); JobQue(&MPDrawIt,e,i);
tempv=e->vertex_root.next; tempv=e->vertex_head.next;
while (tempv!=&e->vertex_root) { while (tempv!=&e->vertex_head) {
x=tempv->pt.x; y=tempv->pt.y; z=tempv->pt.z; x=tempv->pt.x; y=tempv->pt.y; z=tempv->pt.z;
if (e->vertex_on) { if (e->vertex_on) {
if (Blink(10)) //This blinks at 10 Hz. if (Blink(10)) //This blinks at 10 Hz.
@@ -823,8 +823,8 @@ U0 DrawIt(CTask *task,CDC *dc)
U0 MeshInit(CMeshFrame *e,Bool flip_y) U0 MeshInit(CMeshFrame *e,Bool flip_y)
{ {
MemSet(e,0,sizeof(CMeshFrame)); MemSet(e,0,sizeof(CMeshFrame));
e->vertex_root.next=e->vertex_root.last=&e->vertex_root; QueInit(&e->vertex_head);
e->tri_root.next=e->tri_root.last=&e->tri_root; QueInit(&e->tri_head);
e->ed_mode='v'; e->ed_mode='v';
e->grid_on=TRUE; e->grid_on=TRUE;
e->vertex_on=TRUE; e->vertex_on=TRUE;
@@ -849,8 +849,8 @@ U0 MeshLoad(CMeshFrame *e,U8 *src)
CColorROPU32 color; CColorROPU32 color;
CMeshEdVertex *tempv,*va[3]; CMeshEdVertex *tempv,*va[3];
e->vertex_root.next=e->vertex_root.last=&e->vertex_root; QueInit(&e->vertex_head);
e->tri_root.next=e->tri_root.last=&e->tri_root; QueInit(&e->tri_head);
e->vertex_cnt =*src(I32 *)++; e->vertex_cnt =*src(I32 *)++;
e->tri_cnt=*src(I32 *)++; e->tri_cnt=*src(I32 *)++;
@@ -872,17 +872,17 @@ U0 MeshLoad(CMeshFrame *e,U8 *src)
I64 MeshSize(CMeshFrame *e) I64 MeshSize(CMeshFrame *e)
{ {
I64 i; I64 i;
CMeshEdVertex *tempv=e->vertex_root.next; CMeshEdVertex *tempv=e->vertex_head.next;
CMeshEdTri *tempt=e->tri_root.next; CMeshEdTri *tempt=e->tri_head.next;
e->vertex_cnt=0; e->vertex_cnt=0;
while (tempv!=&e->vertex_root) { while (tempv!=&e->vertex_head) {
tempv->num=e->vertex_cnt++; tempv->num=e->vertex_cnt++;
tempv=tempv->next; tempv=tempv->next;
} }
e->tri_cnt=0; e->tri_cnt=0;
while (tempt!=&e->tri_root) { while (tempt!=&e->tri_head) {
e->tri_cnt++; e->tri_cnt++;
for (i=0;i<3;i++) for (i=0;i<3;i++)
tempt->mt.nums[i]=tempt->t[i]->num; tempt->mt.nums[i]=tempt->t[i]->num;
@@ -897,14 +897,14 @@ I32 *MeshSave(CMeshFrame *e,I64 *_size=NULL)
{ {
I64 size=MeshSize(e); I64 size=MeshSize(e);
U8 *res=MAlloc(size),*dst=res; U8 *res=MAlloc(size),*dst=res;
CMeshEdVertex *tempv=e->vertex_root.next; CMeshEdVertex *tempv=e->vertex_head.next;
CMeshEdTri *tempt=e->tri_root.next; CMeshEdTri *tempt=e->tri_head.next;
*dst(I32 *)++=e->vertex_cnt; *dst(I32 *)++=e->vertex_cnt;
*dst(I32 *)++=e->tri_cnt; *dst(I32 *)++=e->tri_cnt;
e->vertex_cnt=0; e->vertex_cnt=0;
while (tempv!=&e->vertex_root) { while (tempv!=&e->vertex_head) {
MemCpy(dst,&tempv->start,offset(CMeshEdVertex.end) MemCpy(dst,&tempv->start,offset(CMeshEdVertex.end)
-offset(CMeshEdVertex.start)); -offset(CMeshEdVertex.start));
dst+=offset(CMeshEdVertex.end)-offset(CMeshEdVertex.start); dst+=offset(CMeshEdVertex.end)-offset(CMeshEdVertex.start);
@@ -912,7 +912,7 @@ I32 *MeshSave(CMeshFrame *e,I64 *_size=NULL)
} }
e->tri_cnt=0; e->tri_cnt=0;
while (tempt!=&e->tri_root) { while (tempt!=&e->tri_head) {
MemCpy(dst,&tempt->start,offset(CMeshEdTri.end)-offset(CMeshEdTri.start)); MemCpy(dst,&tempt->start,offset(CMeshEdTri.end)-offset(CMeshEdTri.start));
dst+=offset(CMeshEdTri.end)-offset(CMeshEdTri.start); dst+=offset(CMeshEdTri.end)-offset(CMeshEdTri.start);
tempt=tempt->next; tempt=tempt->next;
@@ -923,8 +923,8 @@ I32 *MeshSave(CMeshFrame *e,I64 *_size=NULL)
U0 MeshCleanUp(CMeshFrame *e) U0 MeshCleanUp(CMeshFrame *e)
{ {
QueDel(&e->vertex_root,TRUE); QueDel(&e->vertex_head,TRUE);
QueDel(&e->tri_root,TRUE); QueDel(&e->tri_head,TRUE);
Free(e->w2s); Free(e->w2s);
Free(e->s2w); Free(e->s2w);
} }
@@ -954,7 +954,7 @@ U0 MeshUpdateMenu(CMeshFrame *e)
tempse->checked=ToBool(e->flip_y); tempse->checked=ToBool(e->flip_y);
} }
I32 *SpriteMeshEd(I32 *root=NULL,I64 *_size=NULL,Bool flip_y=FALSE) I32 *SpriteMeshEd(I32 *head=NULL,I64 *_size=NULL,Bool flip_y=FALSE)
{/*Fmt for mesh: {/*Fmt for mesh:
{ {
I32 vertex_cnt; I32 vertex_cnt;
@@ -963,7 +963,7 @@ CD3I32 vertices[];
CMeshTri tris[]; CMeshTri tris[];
} }
If root points to a mesh, it will load it. If head points to a mesh, it will load it.
Returns a newly malloced mesh or NULL. Returns a newly malloced mesh or NULL.
@@ -1067,8 +1067,8 @@ $WW,0$*/
Fs->horz_scroll.pos=0; Fs->horz_scroll.pos=0;
Fs->vert_scroll.pos=0; Fs->vert_scroll.pos=0;
MeshInit(&e,flip_y); MeshInit(&e,flip_y);
if (root) if (head)
MeshLoad(&e,root); MeshLoad(&e,head);
FramePtrAdd("CMeshFrame",&e); FramePtrAdd("CMeshFrame",&e);
Fs->draw_it=&DrawIt; Fs->draw_it=&DrawIt;
MeshCurSnap(&e); MeshCurSnap(&e);
@@ -1134,7 +1134,7 @@ me_restart:
else else
e.closed=PopUpNoYes("Closed?\n"); e.closed=PopUpNoYes("Closed?\n");
me_chain: me_chain:
e.chain_pred=e.vertex_root.last; e.chain_pred=e.vertex_head.last;
case 't': case 't':
MeshVertexSelAll(&e,FALSE); MeshVertexSelAll(&e,FALSE);
MeshTriSelAll(&e,FALSE); MeshTriSelAll(&e,FALSE);
@@ -1416,8 +1416,9 @@ me_clipboard_cut:
} }
break; break;
case MSG_IP_R_DOWN: case MSG_IP_R_DOWN:
if (e.ed_mode!='M' && e.ed_mode!='n' && e.ed_mode!='f' && if (!adjusting_z && e.ed_mode!='M' &&
e.ed_mode!='p' && !adjusting_z) { (e.chain_pred==e.vertex_head.last ||
e.ed_mode!='n' && e.ed_mode!='f' && e.ed_mode!='p')) {
if (moving) { if (moving) {
MeshCursorW(&e,Fs,&x,&y,&z); MeshCursorW(&e,Fs,&x,&y,&z);
MeshP0Offset(&e,x-p0a.x,y-p0a.y,z-p0a.z); MeshP0Offset(&e,x-p0a.x,y-p0a.y,z-p0a.z);
@@ -1434,22 +1435,7 @@ me_clipboard_cut:
} }
break; break;
case MSG_IP_R_UP: case MSG_IP_R_UP:
if (e.ed_mode=='n') { if (adjusting_z) {
if (e.chain_pred && e.chain_pred!=e.vertex_root.last)
MeshPolygon(&e,e.chain_pred->next,e.vertex_root.last,FALSE);
a1=e.ed_mode;
goto me_chain;
} else if (e.ed_mode=='f') {
if (e.chain_pred && e.chain_pred!=e.vertex_root.last)
MeshFence(&e);
a1=e.ed_mode;
goto me_chain;
} else if (e.ed_mode=='p') {
if (e.chain_pred && e.chain_pred!=e.vertex_root.last)
MeshPrism(&e);
a1=e.ed_mode;
goto me_chain;
} else if (e.ed_mode!='M' && adjusting_z) {
e.ip_z=RoundI64(Sign(p0b.y-ip.presnap.y) e.ip_z=RoundI64(Sign(p0b.y-ip.presnap.y)
*Sqrt(Sqr(p0b.x-ip.presnap.x)+Sqr(p0b.y-ip.presnap.y)) *Sqrt(Sqr(p0b.x-ip.presnap.x)+Sqr(p0b.y-ip.presnap.y))
+p0b.z,e.cur_snap); +p0b.z,e.cur_snap);
@@ -1463,6 +1449,21 @@ me_clipboard_cut:
p0a.z=z; p0a.z=z;
MeshP0Capture(&e); MeshP0Capture(&e);
} }
} else if (e.ed_mode=='n') {
if (e.chain_pred && e.chain_pred!=e.vertex_head.last)
MeshPolygon(&e,e.chain_pred->next,e.vertex_head.last,FALSE);
a1=e.ed_mode;
goto me_chain;
} else if (e.ed_mode=='f') {
if (e.chain_pred && e.chain_pred!=e.vertex_head.last)
MeshFence(&e);
a1=e.ed_mode;
goto me_chain;
} else if (e.ed_mode=='p') {
if (e.chain_pred && e.chain_pred!=e.vertex_head.last)
MeshPrism(&e);
a1=e.ed_mode;
goto me_chain;
} }
break; break;
case MSG_IP_MOVE: case MSG_IP_MOVE:
@@ -1492,9 +1493,9 @@ me_done:
SettingsPop; SettingsPop;
MenuPop; MenuPop;
if (save_and_exit) if (save_and_exit)
root=MeshSave(&e,_size); head=MeshSave(&e,_size);
else else
root=NULL; head=NULL;
MeshCleanUp(&e); MeshCleanUp(&e);
FramePtrDel("CMeshFrame"); FramePtrDel("CMeshFrame");
if (old_s) { if (old_s) {
@@ -1502,5 +1503,5 @@ me_done:
Free(old_s); Free(old_s);
} else } else
ViewAnglesDel; ViewAnglesDel;
return root; return head;
} }
+6 -6
View File
@@ -61,7 +61,7 @@ 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;
BDVD_PUTCHAR:: BDVD_PUT_CHAR::
MOV AH,0xE MOV AH,0xE
MOV BL,7 //Might be foreground color on some BIOS's MOV BL,7 //Might be foreground color on some BIOS's
MOV BH,U8 [BDVD_PAGE-BDVD_START] MOV BH,U8 [BDVD_PAGE-BDVD_START]
@@ -72,7 +72,7 @@ BDVD_PUTS::
@@1: LODSB @@1: LODSB
TEST AL,AL TEST AL,AL
JZ BDVD_RET JZ BDVD_RET
CALL BDVD_PUTCHAR CALL BDVD_PUT_CHAR
JMP @@1 JMP @@1
BDVD_MAIN:: BDVD_MAIN::
@@ -80,7 +80,7 @@ BDVD_MAIN::
MOV AH,0xF MOV AH,0xF
INT 0x10 INT 0x10
MOV U8 [BDVD_PAGE-BDVD_START],BH //video page MOV U8 [BDVD_PAGE-BDVD_START],BH //Video page
MOV EAX,0x80000000 MOV EAX,0x80000000
CPUID CPUID
@@ -143,7 +143,7 @@ BDVD_MAIN::
CMP U16 [BDVD_PROGRESS_VAL+2-BDVD_START],BX CMP U16 [BDVD_PROGRESS_VAL+2-BDVD_START],BX
JE @@30 JE @@30
MOV AL,'.' MOV AL,'.'
CALL BDVD_PUTCHAR CALL BDVD_PUT_CHAR
@@30: POP AX @@30: POP AX
POP CX POP CX
@@ -173,7 +173,7 @@ BDVD_MAIN::
LOOP @@35 LOOP @@35
POP DS POP DS
//See $LK,"BootDVDProve",A="MN:BootDVDProve"$(). //See $LK,"BootDVDProbe",A="MN:BootDVDProbe"$().
MOV EBX,U32 [BDVD_BLK_LO-BDVD_START] MOV EBX,U32 [BDVD_BLK_LO-BDVD_START]
MOV AX,U16 [BDVD_SHIFT_BLKS-BDVD_START] MOV AX,U16 [BDVD_SHIFT_BLKS-BDVD_START]
SHL EAX,16 SHL EAX,16
@@ -182,7 +182,7 @@ BDVD_MAIN::
//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;
//Continues here $LK,"::/Kernel/KStart.CPP",A="FL:::/Kernel/KStart.CPP,1"$ //Continues here $LK,"::/Kernel/KStart16.CPP",A="FL:::/Kernel/KStart16.CPP,1"$
BDVD_END:: BDVD_END::
#assert BDVD_END-BDVD_START<DVD_BOOT_LOADER_SIZE #assert BDVD_END-BDVD_START<DVD_BOOT_LOADER_SIZE
} }
+1 -5
View File
@@ -13,10 +13,6 @@ BHD_CODE::
CLD CLD
MOV AX,VGAM_TEXT/16
MOV FS,AX
MOV U32 FS:[0],'B'+GREEN<<12+('2'+GREEN<<12)<<16
MOV AX,BOOT_HIGH_LOC_HD MOV AX,BOOT_HIGH_LOC_HD
MOV ES,AX MOV ES,AX
@@ -91,7 +87,7 @@ BHD_HISTART:
//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;
//Continues here $LK,"::/Kernel/KStart.CPP",A="FL:::/Kernel/KStart.CPP,1"$ //Continues here $LK,"::/Kernel/KStart16.CPP",A="FL:::/Kernel/KStart16.CPP,1"$
BHD_END:: BHD_END::
#assert BHD_END-BHD_START<MODULE_SIZE-2 #assert BHD_END-BHD_START<MODULE_SIZE-2
} }
-3
View File
@@ -30,9 +30,6 @@ BMHD_CODE::
MOV ES,AX MOV ES,AX
MOV AX,VGAM_TEXT/16
MOV FS,AX
MOV U32 FS:[0],'B'+GREEN<<12+('1'+GREEN<<12)<<16
CALL BMHD_GET_IP CALL BMHD_GET_IP
BMHD_GET_IP: BMHD_GET_IP:
POP BX POP BX
+3 -3
View File
@@ -43,7 +43,7 @@ BMHD2_DAP_BLK:: //64-bit
BMHD2_DAP_BLK_LO: DU32 0; BMHD2_DAP_BLK_LO: DU32 0;
BMHD2_DAP_BLK_HI: DU32 0; BMHD2_DAP_BLK_HI: DU32 0;
BMHD2_PUTCHAR:: BMHD2_PUT_CHAR::
MOV AH,0xE MOV AH,0xE
MOV BL,7 //Might be foreground color on some BIOS's MOV BL,7 //Might be foreground color on some BIOS's
MOV BH,U8 [BMHD2_PAGE-BMHD2_START] MOV BH,U8 [BMHD2_PAGE-BMHD2_START]
@@ -54,7 +54,7 @@ BMHD2_PUTS::
@@1: LODSB @@1: LODSB
TEST AL,AL TEST AL,AL
JZ BMHD2_RET JZ BMHD2_RET
CALL BMHD2_PUTCHAR CALL BMHD2_PUT_CHAR
JMP @@1 JMP @@1
BMHD2_GETCHAR: BMHD2_GETCHAR:
@@ -70,7 +70,7 @@ BMHD2_GETCHAR:
BMHD2_HISTART: BMHD2_HISTART:
MOV AH,0xF MOV AH,0xF
INT 0x10 INT 0x10
MOV U8 [BMHD2_PAGE-BMHD2_START],BH //video page MOV U8 [BMHD2_PAGE-BMHD2_START],BH //Video page
MOV U32 FS:[0],0 MOV U32 FS:[0],0
@@5: MOV SI,BMHD2_BOOT_MSG-BMHD2_START @@5: MOV SI,BMHD2_BOOT_MSG-BMHD2_START
+14 -14
View File
@@ -310,7 +310,7 @@ public I64 ISO9660ISO(U8 *_filename=NULL,U8 *src_files_find_mask,
*iso_boot=CAlloc(DVD_BLK_SIZE), *iso_boot=CAlloc(DVD_BLK_SIZE),
*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 *headdir=CAlloc(sizeof(CDirEntry));
I64 i,j,stage2_blk=(20<<2+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;
@@ -335,22 +335,22 @@ public I64 ISO9660ISO(U8 *_filename=NULL,U8 *src_files_find_mask,
else else
stage2_filename=NULL; stage2_filename=NULL;
rootdir->attr=RS_ATTR_DIR; headdir->attr=RS_ATTR_DIR;
rootdir->sub=FilesFind(src_files_find_mask,fuf_flags); headdir->sub=FilesFind(src_files_find_mask,fuf_flags);
rootdir->datetime=Now; headdir->datetime=Now;
rootdir->user_data=CAlloc(sizeof(CCDVDUserData)); headdir->user_data=CAlloc(sizeof(CCDVDUserData));
tempc=rootdir->user_data; tempc=headdir->user_data;
tempc->path_entry_num=1; tempc->path_entry_num=1;
cur_blk=20<<2>>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,&iso_pri->root_dir_record, DVDFileCreate2(out_file,headdir,&iso_pri->root_dir_record,
&iso_sup->root_dir_record,&cur_blk,rootdir,FALSE, &iso_sup->root_dir_record,&cur_blk,headdir,FALSE,
stage2_filename,&stage2_blk); 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(headdir,&tabsize,&tabsize2,1);
FillU32Palindrome(&iso_pri->path_table_size,tabsize); FillU32Palindrome(&iso_pri->path_table_size,tabsize);
FillU32Palindrome(&iso_sup->path_table_size,tabsize2); FillU32Palindrome(&iso_sup->path_table_size,tabsize2);
tabsize=(tabsize+DVD_BLK_SIZE-1)/DVD_BLK_SIZE; tabsize=(tabsize+DVD_BLK_SIZE-1)/DVD_BLK_SIZE;
@@ -412,8 +412,8 @@ public I64 ISO9660ISO(U8 *_filename=NULL,U8 *src_files_find_mask,
cur_blk+=DVD_BOOT_LOADER_SIZE/DVD_BLK_SIZE; cur_blk+=DVD_BOOT_LOADER_SIZE/DVD_BLK_SIZE;
} }
DVDFileCreate2(out_file,rootdir,&iso_pri->root_dir_record, DVDFileCreate2(out_file,headdir,&iso_pri->root_dir_record,
&iso_sup->root_dir_record,&cur_blk,rootdir,TRUE, &iso_sup->root_dir_record,&cur_blk,headdir,TRUE,
stage2_filename,&stage2_blk); stage2_filename,&stage2_blk);
tabbuf=CAlloc(tabsize*DVD_BLK_SIZE); tabbuf=CAlloc(tabsize*DVD_BLK_SIZE);
@@ -432,7 +432,7 @@ public I64 ISO9660ISO(U8 *_filename=NULL,U8 *src_files_find_mask,
itabbuf2=tabbuf2+1; itabbuf2=tabbuf2+1;
first_free=2; first_free=2;
for (i=1;i<=max_depth;i++) for (i=1;i<=max_depth;i++)
DVDFillPathTable(rootdir,&itabbuf,&itabbuf2,1,FALSE,&first_free,1,i); DVDFillPathTable(headdir,&itabbuf,&itabbuf2,1,FALSE,&first_free,1,i);
"%X: Path Table 0\n",cur_blk; "%X: Path Table 0\n",cur_blk;
FWBlks(out_file,tabbuf,cur_blk<<2,tabsize<<2); FWBlks(out_file,tabbuf,cur_blk<<2,tabsize<<2);
cur_blk+=tabsize; cur_blk+=tabsize;
@@ -456,7 +456,7 @@ public I64 ISO9660ISO(U8 *_filename=NULL,U8 *src_files_find_mask,
itabbuf2=tabbuf2+1; itabbuf2=tabbuf2+1;
first_free=2; first_free=2;
for (i=1;i<=max_depth;i++) for (i=1;i<=max_depth;i++)
DVDFillPathTable(rootdir,&itabbuf,&itabbuf2,1,TRUE,&first_free,1,i); DVDFillPathTable(headdir,&itabbuf,&itabbuf2,1,TRUE,&first_free,1,i);
"%X: Path Table 2\n",cur_blk; "%X: Path Table 2\n",cur_blk;
FWBlks(out_file,tabbuf,cur_blk<<2,tabsize<<2); FWBlks(out_file,tabbuf,cur_blk<<2,tabsize<<2);
cur_blk+=tabsize; cur_blk+=tabsize;
@@ -464,7 +464,7 @@ public I64 ISO9660ISO(U8 *_filename=NULL,U8 *src_files_find_mask,
FWBlks(out_file,tabbuf2,cur_blk<<2,tabsize2<<2); FWBlks(out_file,tabbuf2,cur_blk<<2,tabsize2<<2);
cur_blk+=tabsize2; cur_blk+=tabsize2;
DirTreeDel2(rootdir); DirTreeDel2(headdir);
FillU32Palindrome(&iso_pri->vol_space_size,cur_blk); FillU32Palindrome(&iso_pri->vol_space_size,cur_blk);
FillU32Palindrome(&iso_sup->vol_space_size,cur_blk); FillU32Palindrome(&iso_sup->vol_space_size,cur_blk);
FWBlks(out_file,iso_pri,16<<2,4); FWBlks(out_file,iso_pri,16<<2,4);
+1 -1
View File
@@ -142,7 +142,7 @@ public I64 RedSeaISO(U8 *_iso_filename=NULL,U8 *_src_dir,
stage2_filename=FileNameAbs(_stage2_filename); stage2_filename=FileNameAbs(_stage2_filename);
*stage2_filename=dv->drv_let; *stage2_filename=dv->drv_let;
i=StrLen(src_dir); i=StrLen(src_dir);
if (i!=3) //If not root if (i!=3) //If not head
i++; //Skip slash i++; //Skip slash
StrCpy(stage2_filename+3,stage2_filename+i); StrCpy(stage2_filename+3,stage2_filename+i);
} else } else
+7 -7
View File
@@ -219,12 +219,12 @@ Bool DiffSub(CDoc *doc,I64 *_df_flags,I64 j1_lo,I64 j1_hi,I64 j2_lo,I64 j2_hi,
Bool DiffBins(CDoc *doc1,CDoc *doc2) Bool DiffBins(CDoc *doc1,CDoc *doc2)
{ {
CDocBin *tempb1=doc1->bin_root.next, CDocBin *tempb1=doc1->bin_head.next,
*tempb2=doc2->bin_root.next; *tempb2=doc2->bin_head.next;
if (tempb1->last->last->num!=tempb2->last->last->num) if (tempb1->last->last->num!=tempb2->last->last->num)
return TRUE; return TRUE;
while (tempb1!=&doc1->bin_root) { while (tempb1!=&doc1->bin_head) {
if (tempb1->size!=tempb2->size || if (tempb1->size!=tempb2->size ||
MemCmp(tempb1->data,tempb2->data,tempb1->size)) MemCmp(tempb1->data,tempb2->data,tempb1->size))
return TRUE; return TRUE;
@@ -249,14 +249,14 @@ public Bool Diff(U8 *dst_file,U8 *src_file,I64 *_df_flags=NULL)
df_flags=0; df_flags=0;
df_flags&=DF_ABORT_ALL_FILES; df_flags&=DF_ABORT_ALL_FILES;
doc_e=doc1->root.next; doc_e=doc1->head.next;
while (doc_e!=doc1) { while (doc_e!=doc1) {
if (doc_e->type_u8==DOCT_TEXT) if (doc_e->type_u8==DOCT_TEXT)
doc_e->user_data=cnt1++; //user_data is the new y doc_e->user_data=cnt1++; //user_data is the new y
doc_e=doc_e->next; doc_e=doc_e->next;
} }
doc_e=doc2->root.next; doc_e=doc2->head.next;
while (doc_e!=doc2) { while (doc_e!=doc2) {
if (doc_e->type_u8==DOCT_TEXT) if (doc_e->type_u8==DOCT_TEXT)
doc_e->user_data=cnt2++; //user_data is the new y doc_e->user_data=cnt2++; //user_data is the new y
@@ -266,7 +266,7 @@ public Bool Diff(U8 *dst_file,U8 *src_file,I64 *_df_flags=NULL)
doc_sorted1=MAlloc(cnt1*sizeof(CDocEntry *)); doc_sorted1=MAlloc(cnt1*sizeof(CDocEntry *));
doc_unsorted1=MAlloc((cnt1+1)*sizeof(CDocEntry *)); doc_unsorted1=MAlloc((cnt1+1)*sizeof(CDocEntry *));
i=0; i=0;
doc_e=doc1->root.next; doc_e=doc1->head.next;
while (doc_e!=doc1) { while (doc_e!=doc1) {
if (doc_e->type_u8==DOCT_TEXT) { if (doc_e->type_u8==DOCT_TEXT) {
doc_sorted1[i]=doc_e; doc_sorted1[i]=doc_e;
@@ -280,7 +280,7 @@ public Bool Diff(U8 *dst_file,U8 *src_file,I64 *_df_flags=NULL)
doc_sorted2=MAlloc(cnt2*sizeof(CDocEntry *)); doc_sorted2=MAlloc(cnt2*sizeof(CDocEntry *));
doc_unsorted2=MAlloc((cnt2+1)*sizeof(CDocEntry *)); doc_unsorted2=MAlloc((cnt2+1)*sizeof(CDocEntry *));
i=0; i=0;
doc_e=doc2->root.next; doc_e=doc2->head.next;
while (doc_e!=doc2) { while (doc_e!=doc2) {
if (doc_e->type_u8==DOCT_TEXT) { if (doc_e->type_u8==DOCT_TEXT) {
doc_sorted2[i]=doc_e; doc_sorted2[i]=doc_e;
+1 -1
View File
@@ -47,7 +47,7 @@ I64 FindFile(U8 *needle_str,U8 *haystack_filename,
plen=StrLen(needle_str); plen=StrLen(needle_str);
if (replace_text) if (replace_text)
rlen=StrLen(replace_text); rlen=StrLen(replace_text);
doc_e=doc->root.next; doc_e=doc->head.next;
while (doc_e!=doc && cont) { while (doc_e!=doc && cont) {
if (doc_e->type_u8==DOCT_TEXT) { if (doc_e->type_u8==DOCT_TEXT) {
src=doc_e->tag; src=doc_e->tag;
+20 -20
View File
@@ -21,7 +21,7 @@ class CHeapLogHash
}; };
CHeapCtrl *heaplog_hc_watched,*heaplog_hc=NULL; CHeapCtrl *heaplog_hc_watched,*heaplog_hc=NULL;
CHeapLogHash *heaplog_root=NULL; CHeapLogHash *heaplog_head=NULL;
U0 HeapLogMAlloc(U8 *addr) U0 HeapLogMAlloc(U8 *addr)
{ {
@@ -37,7 +37,7 @@ U0 HeapLogMAlloc(U8 *addr)
CLI CLI
while (LBts(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0)) while (LBts(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0))
PAUSE PAUSE
QueIns(temphl,heaplog_root[i].last); QueIns(temphl,heaplog_head[i].last);
LBtr(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0); LBtr(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0);
POPFD POPFD
} }
@@ -54,8 +54,8 @@ U0 HeapLogFree(U8 *addr)
CLI CLI
while (LBts(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0)) while (LBts(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0))
PAUSE PAUSE
temphl=heaplog_root[i].next; temphl=heaplog_head[i].next;
while (temphl!=&heaplog_root[i]) { while (temphl!=&heaplog_head[i]) {
if (addr==temphl->addr) { if (addr==temphl->addr) {
QueRem(temphl); QueRem(temphl);
LBtr(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0); LBtr(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0);
@@ -90,9 +90,9 @@ public Bool HeapLog(Bool val=ON,CTask *task=NULL)
heaplog_hc=HeapCtrlInit(,,sys_data_bp); heaplog_hc=HeapCtrlInit(,,sys_data_bp);
ext[EXT_HEAPLOG_MALLOC]=&HeapLogMAlloc; ext[EXT_HEAPLOG_MALLOC]=&HeapLogMAlloc;
ext[EXT_HEAPLOG_FREE]=&HeapLogFree; ext[EXT_HEAPLOG_FREE]=&HeapLogFree;
heaplog_root=MAlloc(sizeof(CHeapLogHash)*HL_HASH_SIZE,heaplog_hc); heaplog_head=MAlloc(sizeof(CHeapLogHash)*HL_HASH_SIZE,heaplog_hc);
for (i=0;i<HL_HASH_SIZE;i++) for (i=0;i<HL_HASH_SIZE;i++)
QueInit(&heaplog_root[i]); QueInit(&heaplog_head[i]);
LBtr(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0); LBtr(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0);
POPFD POPFD
LBts(&sys_semas[SYS_SEMA_HEAPLOG_ACTIVE],0); LBts(&sys_semas[SYS_SEMA_HEAPLOG_ACTIVE],0);
@@ -104,7 +104,7 @@ public Bool HeapLog(Bool val=ON,CTask *task=NULL)
return FALSE; return FALSE;
} else { } else {
HeapCtrlDel(heaplog_hc); HeapCtrlDel(heaplog_hc);
heaplog_root=heaplog_hc=NULL; heaplog_head=heaplog_hc=NULL;
ext[EXT_HEAPLOG_MALLOC]=NULL; ext[EXT_HEAPLOG_MALLOC]=NULL;
ext[EXT_HEAPLOG_FREE]=NULL; ext[EXT_HEAPLOG_FREE]=NULL;
return TRUE; return TRUE;
@@ -124,8 +124,8 @@ public U0 HeapLogAddrRep(Bool leave_it=OFF)
while (LBts(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0)) while (LBts(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0))
PAUSE PAUSE
for (i=0;i<HL_HASH_SIZE;i++) { for (i=0;i<HL_HASH_SIZE;i++) {
temphl=heaplog_root[i].next; temphl=heaplog_head[i].next;
while (temphl!=&heaplog_root[i]) { while (temphl!=&heaplog_head[i]) {
//Take snapshot in case modified. (while we work) //Take snapshot in case modified. (while we work)
MemCpy(&hl,temphl,sizeof(CHeapLog)); MemCpy(&hl,temphl,sizeof(CHeapLog));
"$$PURPLE$$%08X$$FG$$ %08X",MSize(hl.addr),hl.addr; "$$PURPLE$$%08X$$FG$$ %08X",MSize(hl.addr),hl.addr;
@@ -147,27 +147,27 @@ public U0 HeapLogSizeRep(Bool leave_it=OFF)
{//Call $LK,"HeapLog",A="MN:HeapLog"$() first and collect data. {//Call $LK,"HeapLog",A="MN:HeapLog"$() first and collect data.
I64 i,j,k,total=0; I64 i,j,k,total=0;
CHeapLog *temphla,hla,*temphls,*temphls1; CHeapLog *temphla,hla,*temphls,*temphls1;
CHeapLogHash *size_root; CHeapLogHash *size_head;
if (!LBtr(&sys_semas[SYS_SEMA_HEAPLOG_ACTIVE],0)) { if (!LBtr(&sys_semas[SYS_SEMA_HEAPLOG_ACTIVE],0)) {
"HeapLog Not Active\n"; "HeapLog Not Active\n";
return; return;
} }
size_root=MAlloc(sizeof(CHeapLogHash)*HL_HASH_SIZE,heaplog_hc); size_head=MAlloc(sizeof(CHeapLogHash)*HL_HASH_SIZE,heaplog_hc);
for (i=0;i<HL_HASH_SIZE;i++) for (i=0;i<HL_HASH_SIZE;i++)
QueInit(&size_root[i]); QueInit(&size_head[i]);
"$$WW,0$$"; "$$WW,0$$";
while (LBts(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0)) while (LBts(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0))
PAUSE PAUSE
for (i=0;i<HL_HASH_SIZE;i++) { for (i=0;i<HL_HASH_SIZE;i++) {
temphla=heaplog_root[i].next; temphla=heaplog_head[i].next;
while (temphla!=&heaplog_root[i]) { while (temphla!=&heaplog_head[i]) {
//Take snapshot in case modified. (while we work) //Take snapshot in case modified. (while we work)
MemCpy(&hla,temphla,sizeof(CHeapLog)); MemCpy(&hla,temphla,sizeof(CHeapLog));
k=(MSize(hla.addr)>>3+hla.caller[0])&(HL_HASH_SIZE-1); k=(MSize(hla.addr)>>3+hla.caller[0])&(HL_HASH_SIZE-1);
temphls=size_root[k].next; temphls=size_head[k].next;
while (temphls!=&size_root[k]) { while (temphls!=&size_head[k]) {
if (MSize(hla.addr)==temphls->size) { if (MSize(hla.addr)==temphls->size) {
for (j=0;j<HL_CALLER_DEPTH;j++) for (j=0;j<HL_CALLER_DEPTH;j++)
if (hla.caller[j]!=temphls->caller[j]) if (hla.caller[j]!=temphls->caller[j])
@@ -182,7 +182,7 @@ hl_next:
MemCpy(temphls,&hla,sizeof(CHeapLog)); MemCpy(temphls,&hla,sizeof(CHeapLog));
temphls->cnt=1; temphls->cnt=1;
temphls->size=MSize(hla.addr); temphls->size=MSize(hla.addr);
QueIns(temphls,size_root[k].last); QueIns(temphls,size_head[k].last);
hl_found: hl_found:
temphla=hla.next; temphla=hla.next;
} }
@@ -190,8 +190,8 @@ hl_found:
LBtr(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0); LBtr(&sys_semas[SYS_SEMA_HEAPLOG_LOCK],0);
for (i=0;i<HL_HASH_SIZE;i++) { for (i=0;i<HL_HASH_SIZE;i++) {
temphls=size_root[i].next; temphls=size_head[i].next;
while (temphls!=&size_root[i]) { while (temphls!=&size_head[i]) {
temphls1=temphls->next; temphls1=temphls->next;
"%08X*%08X=%08X",temphls->size,temphls->cnt,temphls->size*temphls->cnt; "%08X*%08X=%08X",temphls->size,temphls->cnt,temphls->size*temphls->cnt;
for (j=0;j<HL_CALLER_DEPTH;j++) for (j=0;j<HL_CALLER_DEPTH;j++)
@@ -202,7 +202,7 @@ hl_found:
temphls=temphls1; temphls=temphls1;
} }
} }
Free(size_root); Free(size_head);
"\n$$LTRED$$Total:%08X$$FG$$\n",total; "\n$$LTRED$$Total:%08X$$FG$$\n",total;
LBts(&sys_semas[SYS_SEMA_HEAPLOG_ACTIVE],0); LBts(&sys_semas[SYS_SEMA_HEAPLOG_ACTIVE],0);
+2 -2
View File
@@ -10,8 +10,8 @@ I64 LineRep1(CDirEntry *tempde)
i=LineRep1(tempde->sub); i=LineRep1(tempde->sub);
else { else {
doc=DocRead(tempde->full_name); doc=DocRead(tempde->full_name);
if (doc->root.next!=doc) if (doc->head.next!=doc)
i=doc->root.last->y+2; i=doc->head.last->y+2;
DocDel(doc); DocDel(doc);
} }
tempde->user_data=i; tempde->user_data=i;
+3 -2
View File
@@ -5,7 +5,7 @@ I64 LinkChkDoc(CDoc *doc,I64 *_fuf_flags)
U8 *st; U8 *st;
Bool found,unlock=DocLock(doc); Bool found,unlock=DocLock(doc);
CDoc *old_doc; CDoc *old_doc;
CDocEntry *doc_e=doc->root.next; CDocEntry *doc_e=doc->head.next;
I64 res=0; I64 res=0;
while (doc_e!=doc) { while (doc_e!=doc) {
if (ScanKey) { if (ScanKey) {
@@ -38,8 +38,9 @@ I64 LinkChkDoc(CDoc *doc,I64 *_fuf_flags)
I64 LinkChkFile(U8 *filename,I64 *_fuf_flags) I64 LinkChkFile(U8 *filename,I64 *_fuf_flags)
{ {
I64 res;
CDoc *doc=DocRead(filename,DOCF_NO_CURSOR); CDoc *doc=DocRead(filename,DOCF_NO_CURSOR);
I64 res=LinkChkDoc(doc,_fuf_flags); res=LinkChkDoc(doc,_fuf_flags);
DocDel(doc); DocDel(doc);
return res; return res;
} }
+8 -8
View File
@@ -21,14 +21,14 @@ public I64 Sort(U8 *_in_name,U8 *_out_name=NULL,
out_name=StrNew(in_name); out_name=StrNew(in_name);
doc=DocRead(in_name,DOCF_PLAIN_TEXT_TABS|DOCF_NO_CURSOR); doc=DocRead(in_name,DOCF_PLAIN_TEXT_TABS|DOCF_NO_CURSOR);
doc_e=doc->root.next; doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
if (doc_e->type_u8==DOCT_TEXT) if (doc_e->type_u8==DOCT_TEXT)
cnt++; cnt++;
doc_e=doc_e->next; doc_e=doc_e->next;
} }
a=MAlloc(cnt*sizeof(CDocEntry *)); a=MAlloc(cnt*sizeof(CDocEntry *));
doc_e=doc->root.next; doc_e=doc->head.next;
i=0; i=0;
while (doc_e!=doc) { while (doc_e!=doc) {
doc_e1=doc_e->next; doc_e1=doc_e->next;
@@ -47,15 +47,15 @@ public I64 Sort(U8 *_in_name,U8 *_out_name=NULL,
if (!unique || !st || StrCmp(a[i]->tag,st)) { if (!unique || !st || StrCmp(a[i]->tag,st)) {
st=a[i]->tag; st=a[i]->tag;
for (j=0;j<entry_lines && i<cnt;j++,i++) { for (j=0;j<entry_lines && i<cnt;j++,i++) {
QueIns(a[i],doc->root.last); QueIns(a[i],doc->head.last);
doc->cur_entry=&doc->root; doc->cur_entry=&doc->head;
doc->cur_col=0; doc->cur_col=0;
DocPrint(doc,"\n"); DocPrint(doc,"\n");
} }
res++; res++;
} else } else
for (j=0;j<entry_lines && i<cnt;j++,i++) { for (j=0;j<entry_lines && i<cnt;j++,i++) {
QueIns(a[i],doc->root.last); QueIns(a[i],doc->head.last);
DocEntryDel(doc,a[i]); DocEntryDel(doc,a[i]);
} }
} }
@@ -74,7 +74,7 @@ I64 DocWordsFile(CDoc *doc_out=NULL,U8 *filename,U32 *chars_bmp)
U8 *ptr,*ptr2; U8 *ptr,*ptr2;
I64 res=0,ch; I64 res=0,ch;
CDoc *doc_in=DocRead(filename); CDoc *doc_in=DocRead(filename);
CDocEntry *doc_e=doc_in->root.next; CDocEntry *doc_e=doc_in->head.next;
while (doc_e!=doc_in) { while (doc_e!=doc_in) {
if (doc_e->de_flags & DOCEF_TAG) { if (doc_e->de_flags & DOCEF_TAG) {
ptr=doc_e->tag; ptr=doc_e->tag;
@@ -123,7 +123,7 @@ I64 LongLinesFile(U8 *filename,I64 cols)
{ {
I64 res=0; I64 res=0;
CDoc *doc=DocRead(filename); CDoc *doc=DocRead(filename);
CDocEntry *doc_e=doc->root.next; CDocEntry *doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
if (doc_e->type_u8==DOCT_NEW_LINE && doc_e->x>=cols+1) if (doc_e->type_u8==DOCT_NEW_LINE && doc_e->x>=cols+1)
res++; res++;
@@ -160,7 +160,7 @@ U0 SUFile(U8 *filename,I64 suf_flags,F64 indent_scale_factor)
Bool chged=FALSE; Bool chged=FALSE;
I64 reduced=0; I64 reduced=0;
CDoc *doc=DocRead(filename,DOCF_PLAIN_TEXT_TABS|DOCF_NO_CURSOR); CDoc *doc=DocRead(filename,DOCF_PLAIN_TEXT_TABS|DOCF_NO_CURSOR);
CDocEntry *doc_e=doc->root.next; CDocEntry *doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
if (doc_e->type_u8==DOCT_TEXT) { if (doc_e->type_u8==DOCT_TEXT) {
dst=MStrUtil(doc_e->tag,suf_flags,indent_scale_factor); dst=MStrUtil(doc_e->tag,suf_flags,indent_scale_factor);
+2 -2
View File
@@ -46,7 +46,7 @@ public CDoc *Doc2TXT(CDoc *doc_in)
doc_out->flags|=DOCF_PLAIN_TEXT|DOCF_NO_CURSOR; doc_out->flags|=DOCF_PLAIN_TEXT|DOCF_NO_CURSOR;
doc_e=doc_in->root.next; doc_e=doc_in->head.next;
col=doc_e->x; col=doc_e->x;
y=doc_e->y; y=doc_e->y;
while (doc_e!=doc_in) { while (doc_e!=doc_in) {
@@ -93,7 +93,7 @@ public CDoc *Doc2TXT(CDoc *doc_in)
y++; y++;
col=0; col=0;
} }
doc_out->cur_entry=&doc_out->root; doc_out->cur_entry=&doc_out->head;
DocRecalc(doc_out); DocRecalc(doc_out);
if (unlock_doc_in) if (unlock_doc_in)
+7 -7
View File
@@ -32,7 +32,7 @@ public I64 SndFileCreate(U8 *base_filename,F64 normalized_vol=1.0,
snd.record=FALSE; snd.record=FALSE;
dt=snd.record_root.last->time-snd.record_root.next->time; dt=snd.record_head.last->time-snd.record_head.next->time;
if (!dt) return 0; if (!dt) return 0;
cnt=dt*SNDFILE_SAMPLE_RATE; cnt=dt*SNDFILE_SAMPLE_RATE;
cnt++; //Terminator cnt++; //Terminator
@@ -48,9 +48,9 @@ public I64 SndFileCreate(U8 *base_filename,F64 normalized_vol=1.0,
s->channels=EndianU32(1); s->channels=EndianU32(1);
if (time_shift) { if (time_shift) {
d=snd.record_root.next; d=snd.record_head.next;
d->time-=time_shift; d->time-=time_shift;
while (d->next!=&snd.record_root) { while (d->next!=&snd.record_head) {
d1=d->next; d1=d->next;
dt=d1->time-d->time; dt=d1->time-d->time;
if (dt<0) { if (dt<0) {
@@ -61,9 +61,9 @@ public I64 SndFileCreate(U8 *base_filename,F64 normalized_vol=1.0,
} }
} }
d=snd.record_root.next; d=snd.record_head.next;
k=0; k=0;
while (d->next!=&snd.record_root) { while (d->next!=&snd.record_head) {
d1=d->next; d1=d->next;
dt=d1->time-d->time; dt=d1->time-d->time;
cnt2=dt*SNDFILE_SAMPLE_RATE; cnt2=dt*SNDFILE_SAMPLE_RATE;
@@ -103,8 +103,8 @@ public I64 SndFileCreate(U8 *base_filename,F64 normalized_vol=1.0,
s->body[cnt-1]=0; s->body[cnt-1]=0;
d=snd.record_root.next; d=snd.record_head.next;
while (d!=&snd.record_root) { while (d!=&snd.record_head) {
d1=d->next; d1=d->next;
QueRem(d); QueRem(d);
Free(d); Free(d);
+1 -1
View File
@@ -4,7 +4,7 @@ U0 TaskRepTask(CTask *task,I64 indent)
CTask *task1; CTask *task1;
U8 *st,*desc=MStrUtil(task->task_title,SUF_SAFE_DOLLAR); U8 *st,*desc=MStrUtil(task->task_title,SUF_SAFE_DOLLAR);
st=MStrPrint("$$MA,T=\"%08X\",LM=\"Kill(0x%X);\n\",$$",task,task,task); st=MStrPrint("$$MA,T=\"%08X\",LM=\"Kill(0x%X);\n\",$$",task,task,task);
"%h*c%s $$TX,\"%Q...\",SCX=16$$\n",indent,CH_SPACE, "%h*c%s $$TX,\"%$$Q...\",SCX=16$$\n",indent,CH_SPACE,
st,desc; st,desc;
"%h*c%08X %04X:%04X:%08X\n",indent+2,CH_SPACE,TaskMemAlloced(task), "%h*c%08X %04X:%04X:%08X\n",indent+2,CH_SPACE,TaskMemAlloced(task),
task->task_flags,task->display_flags,task->win_inhibit; task->task_flags,task->display_flags,task->win_inhibit;
+2 -2
View File
@@ -21,7 +21,7 @@ U8 *KeyMapKeyMStrPrint(I64 sc,U0 (*fp_handler)(I64 sc),
else if (k=='Cmd ') c=RED; else if (k=='Cmd ') c=RED;
else c=BLACK; else c=BLACK;
res=MStrPrint("%-*s $$FG,%d$$$$TX+UL+L+PU,\"%Q\",A=\"%s\"$$$$FG$$\n", res=MStrPrint("%-*s $$FG,%d$$$$TX+UL+L+PU,\"%$$Q\",A=\"%s\"$$$$FG$$\n",
i,st,c,desc,st2); i,st,c,desc,st2);
Free(st); Free(st);
Free(st2); Free(st2);
@@ -162,7 +162,7 @@ public U0 TipOfDay(U8 *tip_file="::/Doc/Tips.TXT")
{//Print random tip-of-day from ::/Doc/Tips.TXT. {//Print random tip-of-day from ::/Doc/Tips.TXT.
I64 i=RandU16; I64 i=RandU16;
CDoc *doc=DocRead(tip_file),*doc2=DocNew; CDoc *doc=DocRead(tip_file),*doc2=DocNew;
CDocEntry *doc_e=doc->root.next; CDocEntry *doc_e=doc->head.next;
"$$WW,1$$\n"; "$$WW,1$$\n";
while (TRUE) { while (TRUE) {
if (doc_e->type_u8==DOCT_TEXT && *doc_e->tag=='*') if (doc_e->type_u8==DOCT_TEXT && *doc_e->tag=='*')
+4 -4
View File
@@ -2,8 +2,8 @@ U0 BgtAcctsUpdate()
{ {
CBgtEntry *tempb; CBgtEntry *tempb;
CBgtTemplate *tempt; CBgtTemplate *tempt;
tempb=b_root.next; tempb=b_head.next;
while (tempb!=&b_root) { while (tempb!=&b_head) {
if (tempb->type!=BE_TEMPLATE_COPY) { if (tempb->type!=BE_TEMPLATE_COPY) {
tempb->credit_idx=StrFileAdd(tempb->credit, tempb->credit_idx=StrFileAdd(tempb->credit,
&accts_table_strs,accts_table); &accts_table_strs,accts_table);
@@ -12,8 +12,8 @@ U0 BgtAcctsUpdate()
} }
tempb=tempb->next; tempb=tempb->next;
} }
tempt=t_root.next; tempt=t_head.next;
while (tempt!=&t_root) { while (tempt!=&t_head) {
tempt->b.credit_idx=StrFileAdd(tempt->b.credit, tempt->b.credit_idx=StrFileAdd(tempt->b.credit,
&accts_table_strs,accts_table); &accts_table_strs,accts_table);
tempt->b.debit_idx =StrFileAdd(tempt->b.debit, tempt->b.debit_idx =StrFileAdd(tempt->b.debit,
+2 -2
View File
@@ -15,8 +15,8 @@ U0 BgtEntryDel(CBgtEntry *tempb)
U0 BgtIns(CBgtEntry *tempb) U0 BgtIns(CBgtEntry *tempb)
{ {
CBgtEntry *tempb1=b_root.next; CBgtEntry *tempb1=b_head.next;
while (tempb1!=&b_root && tempb1->date<tempb->date) while (tempb1!=&b_head && tempb1->date<tempb->date)
tempb1=tempb1->next; tempb1=tempb1->next;
QueIns(tempb,tempb1->last); QueIns(tempb,tempb1->last);
} }
+20 -20
View File
@@ -7,12 +7,12 @@ U0 BgtDataRead()
I64 max_num; I64 max_num;
U8 **s=StrFileRead(BGT_STRINGS_FILE,&max_num); U8 **s=StrFileRead(BGT_STRINGS_FILE,&max_num);
MemSet(&b_root,0,sizeof(CBgtEntry)); MemSet(&b_head,0,sizeof(CBgtEntry));
QueInit(&b_root); QueInit(&b_head);
b_root.date=Now; b_head.date=Now;
MemSet(&t_root,0,sizeof(CBgtTemplate)); MemSet(&t_head,0,sizeof(CBgtTemplate));
QueInit(&t_root); QueInit(&t_head);
t_root.b.date=Now; t_head.b.date=Now;
if (ptr=b=FileRead(BGT_DATA_FILE,&size)) { if (ptr=b=FileRead(BGT_DATA_FILE,&size)) {
cnt=*ptr(I64 *)++; cnt=*ptr(I64 *)++;
@@ -22,7 +22,7 @@ U0 BgtDataRead()
tempb->credit=StrNew(s[tempb->credit_idx]); tempb->credit=StrNew(s[tempb->credit_idx]);
tempb->debit =StrNew(s[tempb->debit_idx]); tempb->debit =StrNew(s[tempb->debit_idx]);
tempb->desc =StrNew(s[tempb->desc_idx]); tempb->desc =StrNew(s[tempb->desc_idx]);
QueIns(tempb,b_root.last); QueIns(tempb,b_head.last);
ptr+=BE_SIZE; ptr+=BE_SIZE;
} }
@@ -36,7 +36,7 @@ U0 BgtDataRead()
tempt->b.credit=StrNew(s[tempt->b.credit_idx]); tempt->b.credit=StrNew(s[tempt->b.credit_idx]);
tempt->b.debit =StrNew(s[tempt->b.debit_idx]); tempt->b.debit =StrNew(s[tempt->b.debit_idx]);
tempt->b.desc =StrNew(s[tempt->b.desc_idx]); tempt->b.desc =StrNew(s[tempt->b.desc_idx]);
QueIns(tempt,t_root.last); QueIns(tempt,t_head.last);
} }
} }
@@ -63,9 +63,9 @@ U0 BgtDataWrite()
} }
} }
tempb=b_root.next; tempb=b_head.next;
cnt1=0; cnt1=0;
while (tempb!=&b_root) { while (tempb!=&b_head) {
if (tempb->type!=BE_TEMPLATE_COPY) { if (tempb->type!=BE_TEMPLATE_COPY) {
tempb->credit_idx =StrFileAdd(tempb->credit,&num,table); tempb->credit_idx =StrFileAdd(tempb->credit,&num,table);
tempb->debit_idx =StrFileAdd(tempb->debit,&num,table); tempb->debit_idx =StrFileAdd(tempb->debit,&num,table);
@@ -75,9 +75,9 @@ U0 BgtDataWrite()
tempb=tempb->next; tempb=tempb->next;
} }
tempt=t_root.next; tempt=t_head.next;
cnt2=0; cnt2=0;
while (tempt!=&t_root) { while (tempt!=&t_head) {
tempt->b.credit_idx =StrFileAdd(tempt->b.credit,&num,table); tempt->b.credit_idx =StrFileAdd(tempt->b.credit,&num,table);
tempt->b.debit_idx =StrFileAdd(tempt->b.debit,&num,table); tempt->b.debit_idx =StrFileAdd(tempt->b.debit,&num,table);
tempt->b.desc_idx =StrFileAdd(tempt->b.desc,&num,table); tempt->b.desc_idx =StrFileAdd(tempt->b.desc,&num,table);
@@ -92,8 +92,8 @@ U0 BgtDataWrite()
MemCpy(ptr,&cnt1,sizeof(I64)); MemCpy(ptr,&cnt1,sizeof(I64));
ptr+=sizeof(I64); ptr+=sizeof(I64);
tempb=b_root.next; tempb=b_head.next;
while (tempb!=&b_root) { while (tempb!=&b_head) {
if (tempb->type!=BE_TEMPLATE_COPY) { if (tempb->type!=BE_TEMPLATE_COPY) {
MemCpy(ptr,&tempb->start,BE_SIZE); MemCpy(ptr,&tempb->start,BE_SIZE);
ptr+=BE_SIZE; ptr+=BE_SIZE;
@@ -103,8 +103,8 @@ U0 BgtDataWrite()
MemCpy(ptr,&cnt2,sizeof(I64)); MemCpy(ptr,&cnt2,sizeof(I64));
ptr+=sizeof(I64); ptr+=sizeof(I64);
tempt=t_root.next; tempt=t_head.next;
while (tempt!=&t_root) { while (tempt!=&t_head) {
MemCpy(ptr,&tempt->start,BT_SIZE); MemCpy(ptr,&tempt->start,BT_SIZE);
ptr+=BT_SIZE; ptr+=BT_SIZE;
MemCpy(ptr,&tempt->b.start,BE_SIZE); MemCpy(ptr,&tempt->b.start,BE_SIZE);
@@ -120,15 +120,15 @@ U0 BgtDel()
{ {
CBgtEntry *tempb,*tempb1; CBgtEntry *tempb,*tempb1;
CBgtTemplate *tempt,*tempt1; CBgtTemplate *tempt,*tempt1;
tempb=b_root.next; tempb=b_head.next;
while (tempb!=&b_root) { while (tempb!=&b_head) {
tempb1=tempb->next; tempb1=tempb->next;
BgtEntryDel2(tempb); BgtEntryDel2(tempb);
Free(tempb); Free(tempb);
tempb=tempb1; tempb=tempb1;
} }
tempt=t_root.next; tempt=t_head.next;
while (tempt!=&t_root) { while (tempt!=&t_head) {
tempt1=tempt->next; tempt1=tempt->next;
BgtEntryDel2(&tempt->b); BgtEntryDel2(&tempt->b);
Free(tempt); Free(tempt);
+7 -7
View File
@@ -18,7 +18,7 @@ Bool BgtPutKey(CDoc *doc,U8 *,I64 ch,I64 sc)
BgtTemplatePurge(tempt); BgtTemplatePurge(tempt);
BgtEntryDel2(&tempt->b); BgtEntryDel2(&tempt->b);
Free(tempt); Free(tempt);
QueIns(tempt1,t_root.last); QueIns(tempt1,t_head.last);
BgtTemplateExpand(tempt1); BgtTemplateExpand(tempt1);
BgtRegen; BgtRegen;
} }
@@ -71,7 +71,7 @@ Bool BgtPutKey(CDoc *doc,U8 *,I64 ch,I64 sc)
return TRUE; return TRUE;
case 't': case 't':
if (tempt1=BgtTemplatePmt) { if (tempt1=BgtTemplatePmt) {
QueIns(tempt1,t_root.last); QueIns(tempt1,t_head.last);
BgtTemplateExpand(tempt1); BgtTemplateExpand(tempt1);
BgtRegen; BgtRegen;
} }
@@ -97,10 +97,10 @@ U0 BgtRegen()
F64 balance=0; F64 balance=0;
CDoc *doc,*pdoc,*ddoc; CDoc *doc,*pdoc,*ddoc;
CDocEntry *doc_ce; CDocEntry *doc_ce;
CBgtEntry *tempb=b_root.next,*tempb_ce; CBgtEntry *tempb=b_head.next,*tempb_ce;
doc=DocNew; doc=DocNew;
doc->flags|=DOCF_FORM; doc->flags|=DOCF_FORM;
while (tempb!=&b_root) { while (tempb!=&b_head) {
if (!StrCmp(view_acct,tempb->credit)) if (!StrCmp(view_acct,tempb->credit))
balance-=tempb->amount; balance-=tempb->amount;
if (!StrCmp(view_acct,tempb->debit)) if (!StrCmp(view_acct,tempb->debit))
@@ -111,7 +111,7 @@ U0 BgtRegen()
DocPrint(doc,"$$FG,%d$$",color); DocPrint(doc,"$$FG,%d$$",color);
} }
tempb->doc_e=DocPrint(doc, tempb->doc_e=DocPrint(doc,
"$$MU-UL,\"%D %8ts %8ts:%8.2f %8.2f:%Q\",U=0x%X$$\n", "$$MU-UL,\"%D %8ts %8ts:%8.2f %8.2f:%$$Q\",U=0x%X$$\n",
tempb->date,tempb->credit,tempb->debit,balance, tempb->date,tempb->credit,tempb->debit,balance,
tempb->amount,tempb->desc,tempb); tempb->amount,tempb->desc,tempb);
tempb=tempb->next; tempb=tempb->next;
@@ -134,8 +134,8 @@ U0 BgtRegen()
doc_ce=doc_ce->next; doc_ce=doc_ce->next;
if (doc_ce==pdoc) goto br_cont; if (doc_ce==pdoc) goto br_cont;
} }
tempb=b_root.next; tempb=b_head.next;
while (tempb!=&b_root) { while (tempb!=&b_head) {
if (tempb==tempb_ce) { if (tempb==tempb_ce) {
doc->cur_entry=tempb->doc_e; doc->cur_entry=tempb->doc_e;
doc->cur_col=0; doc->cur_col=0;
+2 -2
View File
@@ -4,7 +4,7 @@ public U8 **StrFileRead(U8 *name,I64 *_max_num=NULL,
U8 **_colors=NULL,Bool no_nums=FALSE) U8 **_colors=NULL,Bool no_nums=FALSE)
{ {
CDoc *doc=DocRead(name,DOCF_DBL_DOLLARS|DOCF_NO_CURSOR); CDoc *doc=DocRead(name,DOCF_DBL_DOLLARS|DOCF_NO_CURSOR);
CDocEntry *doc_e=doc->root.next; CDocEntry *doc_e=doc->head.next;
I64 i,max_num=0; I64 i,max_num=0;
U8 *ptr,**res,*colors; U8 *ptr,**res,*colors;
@@ -27,7 +27,7 @@ public U8 **StrFileRead(U8 *name,I64 *_max_num=NULL,
res=CAlloc(sizeof(U8 *)*(max_num+1)); res=CAlloc(sizeof(U8 *)*(max_num+1));
colors=CAlloc(sizeof(U8)*(max_num+1)); colors=CAlloc(sizeof(U8)*(max_num+1));
doc_e=doc->root.next; doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
if (doc_e->type_u8==DOCT_TEXT && 0<=doc_e->user_data<=max_num) { if (doc_e->type_u8==DOCT_TEXT && 0<=doc_e->user_data<=max_num) {
res[doc_e->user_data]=doc_e->tag; res[doc_e->user_data]=doc_e->tag;
+4 -4
View File
@@ -1,8 +1,8 @@
U0 BgtTemplatePurge(CBgtTemplate *tempt) U0 BgtTemplatePurge(CBgtTemplate *tempt)
{ {
CBgtEntry *tempb,*tempb1; CBgtEntry *tempb,*tempb1;
tempb=b_root.next; tempb=b_head.next;
while (tempb!=&b_root) { while (tempb!=&b_head) {
tempb1=tempb->next; tempb1=tempb->next;
if (tempb->template==tempt) { if (tempb->template==tempt) {
QueRem(tempb); QueRem(tempb);
@@ -110,8 +110,8 @@ U0 BgtTemplateExpand(CBgtTemplate *tempt)
U0 CBgtTemplatesExpand() U0 CBgtTemplatesExpand()
{ {
CBgtTemplate *tempt=t_root.next; CBgtTemplate *tempt=t_head.next;
while (tempt!=&t_root) { while (tempt!=&t_head) {
BgtTemplateExpand(tempt); BgtTemplateExpand(tempt);
tempt=tempt->next; tempt=tempt->next;
} }
+4 -4
View File
@@ -24,7 +24,7 @@ class CBgtEntry
U8 *credit,*debit,*desc; U8 *credit,*debit,*desc;
CBgtTemplate *template; CBgtTemplate *template;
CDocEntry *doc_e; CDocEntry *doc_e;
} b_root; } b_head;
#define BE_SIZE (offset(CBgtEntry.end)-offset(CBgtEntry.start)) #define BE_SIZE (offset(CBgtEntry.end)-offset(CBgtEntry.start))
#define BT_NULL 0 #define BT_NULL 0
@@ -50,7 +50,7 @@ class CBgtTemplate
U0 end; U0 end;
CBgtEntry b; CBgtEntry b;
} t_root; } t_head;
#define BT_SIZE (offset(CBgtTemplate.end)-offset(CBgtTemplate.start)) #define BT_SIZE (offset(CBgtTemplate.end)-offset(CBgtTemplate.start))
U8 view_acct[512]; U8 view_acct[512];
@@ -63,9 +63,9 @@ CDate MyStr2Date(U8 *st)
CDate res; CDate res;
if (st&&*st) { if (st&&*st) {
if (StrOcc(st,'[')) if (StrOcc(st,'['))
res=b_root.next->date; res=b_head.next->date;
else if (StrOcc(st,']')) else if (StrOcc(st,']'))
res=b_root.last->date; res=b_head.last->date;
else else
res=Str2Date(st); res=Str2Date(st);
} else } else
+2 -2
View File
@@ -32,7 +32,7 @@ Bool JBPutKey(CDoc *doc,U8 *,I64 ch,I64 sc)
if (StrLen(doc_ce->tag)>1) if (StrLen(doc_ce->tag)>1)
doc_ce->tag[0]=ch; doc_ce->tag[0]=ch;
s=DocRead(tempde->full_name); s=DocRead(tempde->full_name);
doc_e=s->root.next; doc_e=s->head.next;
while (doc_e!=s && doc_e->type_u8!=DOCT_TEXT) while (doc_e!=s && doc_e->type_u8!=DOCT_TEXT)
doc_e=doc_e->next; doc_e=doc_e->next;
if (doc_e!=s && doc_e->type_u8==DOCT_TEXT && StrLen(doc_e->tag)>=3) { if (doc_e!=s && doc_e->type_u8==DOCT_TEXT && StrLen(doc_e->tag)>=3) {
@@ -77,7 +77,7 @@ public U0 JukeBox(U8 *dirname="~/Psalmody",U8 **_filename=NULL)
st=StrNew(tempde->name); st=StrNew(tempde->name);
FileExtRem(st); FileExtRem(st);
s=DocRead(tempde->full_name); s=DocRead(tempde->full_name);
doc_e=s->root.next; doc_e=s->head.next;
while (doc_e!=s && doc_e->type_u8!=DOCT_TEXT) while (doc_e!=s && doc_e->type_u8!=DOCT_TEXT)
doc_e=doc_e->next; doc_e=doc_e->next;
rating='0'; rating='0';
+2 -2
View File
@@ -25,7 +25,7 @@ $WW,1$$WW,0$*/
#define NOTE_REST MIN_I64 #define NOTE_REST MIN_I64
#define OCTAVE_REST MIN_I64 #define OCTAVE_REST MIN_I64
#define PSMT_ROOT 0 #define PSMT_HEAD 0
#define PSMT_NOTE 1 #define PSMT_NOTE 1
#define PSMT_METER 2 #define PSMT_METER 2
@@ -59,7 +59,7 @@ class PsmNote
class PsmCtrl class PsmCtrl
{ {
PsmNote root; PsmNote head;
PsmNote clipboard; PsmNote clipboard;
CMenuEntry *incomplete_entry,*record_entry; CMenuEntry *incomplete_entry,*record_entry;
I64 screen_x, I64 screen_x,
+8 -8
View File
@@ -88,8 +88,8 @@ Bool PsmIsDotted(I64 duration)
U0 PsmMarkSel(I64 x1,I64 x2,Bool sel) U0 PsmMarkSel(I64 x1,I64 x2,Bool sel)
{ {
PsmNote *tempo=oc.root.next; PsmNote *tempo=oc.head.next;
while (tempo!=&oc.root) { while (tempo!=&oc.head) {
if (sel) { if (sel) {
if (x1<=tempo->x<=x2) if (x1<=tempo->x<=x2)
tempo->flags|=PSMF_SEL; tempo->flags|=PSMF_SEL;
@@ -150,12 +150,12 @@ U0 DrawTimeSignature(CDC *dc,I64 x,I64 y,I64 top,I64 bottom)
U0 PsmRecalcNoteXY() U0 PsmRecalcNoteXY()
{ {
F64 measure_len=4,measure_left=measure_len; F64 measure_len=4,measure_left=measure_len;
PsmNote *tempo=oc.root.next; PsmNote *tempo=oc.head.next;
I64 x=8-oc.screen_x,note,octave; I64 x=8-oc.screen_x,note,octave;
while (TRUE) { while (TRUE) {
tempo->x=x; tempo->x=x;
tempo->y=50; tempo->y=50;
if (tempo==&oc.root) if (tempo==&oc.head)
break; break;
else { else {
if (tempo->type!=PSMT_METER) { if (tempo->type!=PSMT_METER) {
@@ -215,8 +215,8 @@ U0 DrawIt(CTask *task,CDC *dc)
PsmRecalcNoteXY; PsmRecalcNoteXY;
} }
tempo=oc.root.next; tempo=oc.head.next;
while (tempo!=&oc.root) { while (tempo!=&oc.head) {
x=tempo->x; x=tempo->x;
y=tempo->y; y=tempo->y;
if (measure_left<0.001) { if (measure_left<0.001) {
@@ -258,11 +258,11 @@ U0 DrawIt(CTask *task,CDC *dc)
tempo=tempo->next; tempo=tempo->next;
} }
if (oc.cur_note==&oc.root && PsmBlink) if (oc.cur_note==&oc.head && PsmBlink)
dc->color=BROWN; dc->color=BROWN;
else else
dc->color=BLACK; dc->color=BLACK;
Sprite3(dc,oc.root.x,50,0,$IB,"<12>",BI=12$); Sprite3(dc,oc.head.x,50,0,$IB,"<12>",BI=12$);
} }
#define PSM_NOTE_BOX_X 220 #define PSM_NOTE_BOX_X 220
+23 -23
View File
@@ -14,24 +14,24 @@ PsmNote *PsmNoteCopy(PsmNote *tempo)
return tempo1; return tempo1;
} }
U0 PsmSongDel(PsmNote *root) U0 PsmSongDel(PsmNote *head)
{ {
PsmNote *tempo,*tempo1; PsmNote *tempo,*tempo1;
tempo=root->next; tempo=head->next;
while (tempo!=root) { while (tempo!=head) {
tempo1=tempo->next; tempo1=tempo->next;
PsmNoteDel(tempo); PsmNoteDel(tempo);
tempo=tempo1; tempo=tempo1;
} }
QueInit(root); QueInit(head);
} }
U0 PsmCutToClipboard() U0 PsmCutToClipboard()
{ {
PsmNote *tempo,*tempo1; PsmNote *tempo,*tempo1;
PsmSongDel(&oc.clipboard); PsmSongDel(&oc.clipboard);
tempo=oc.root.next; tempo=oc.head.next;
while (tempo!=&oc.root) { while (tempo!=&oc.head) {
tempo1=tempo->next; tempo1=tempo->next;
if (tempo->flags&PSMF_SEL) { if (tempo->flags&PSMF_SEL) {
if (oc.cur_note==tempo) if (oc.cur_note==tempo)
@@ -59,8 +59,8 @@ U0 PsmCopyToClipboard()
{ {
PsmNote *tempo,*tempo1; PsmNote *tempo,*tempo1;
PsmSongDel(&oc.clipboard); PsmSongDel(&oc.clipboard);
tempo=oc.root.next; tempo=oc.head.next;
while (tempo!=&oc.root) { while (tempo!=&oc.head) {
if (tempo->flags&PSMF_SEL) { if (tempo->flags&PSMF_SEL) {
tempo->flags&=~PSMF_SEL; tempo->flags&=~PSMF_SEL;
tempo1=PsmNoteCopy(tempo); tempo1=PsmNoteCopy(tempo);
@@ -72,10 +72,10 @@ U0 PsmCopyToClipboard()
PsmNote *PsmFindNote(I64 x,I64) PsmNote *PsmFindNote(I64 x,I64)
{ {
PsmNote *tempo=oc.root.next; PsmNote *tempo=oc.head.next;
PsmRecalcNoteXY; PsmRecalcNoteXY;
x+=PSM_NOTE_SPACING/2; x+=PSM_NOTE_SPACING/2;
while (x>tempo->next->x && tempo!=&oc.root) while (x>tempo->next->x && tempo!=&oc.head)
tempo=tempo->next; tempo=tempo->next;
return tempo; return tempo;
} }
@@ -129,7 +129,7 @@ U0 PsmLoadSongStr(U8 *st,I64 *psm_octave,F64 *psm_duration)
else else
tempo1->meter_bottom=4; tempo1->meter_bottom=4;
PsmSetWidth(tempo1); PsmSetWidth(tempo1);
QueIns(tempo1,oc.root.last); QueIns(tempo1,oc.head.last);
} }
while (*st=='(') { while (*st=='(') {
Bts(&tempo->flags,PSMf_TIE); Bts(&tempo->flags,PSMf_TIE);
@@ -212,7 +212,7 @@ U0 PsmLoadSong(U8 *filename,I64 *psm_octave,F64 *psm_duration)
if (!StrCmp(cc->cur_str,"Play")) { if (!StrCmp(cc->cur_str,"Play")) {
if (Lex(cc)=='(') if (Lex(cc)=='(')
if (Lex(cc)==TK_STR) { if (Lex(cc)==TK_STR) {
tempo=oc.root.last; tempo=oc.head.last;
st=LexExtStr(cc); st=LexExtStr(cc);
PsmLoadSongStr(st,psm_octave,psm_duration); PsmLoadSongStr(st,psm_octave,psm_duration);
if (cc->token==',') { if (cc->token==',') {
@@ -220,8 +220,8 @@ U0 PsmLoadSong(U8 *filename,I64 *psm_octave,F64 *psm_duration)
st=LexExtStr(cc); st=LexExtStr(cc);
do { do {
do tempo=tempo->next; do tempo=tempo->next;
while (tempo!=&oc.root && tempo->type==PSMT_METER); while (tempo!=&oc.head && tempo->type==PSMT_METER);
if (tempo!=&oc.root) if (tempo!=&oc.head)
tempo->word=StrNew(st); tempo->word=StrNew(st);
st+=StrLen(st)+1; st+=StrLen(st)+1;
} while (*st); } while (*st);
@@ -254,10 +254,10 @@ U8 *PsmCvtSong()
I64 i,note,octave,last_octave,last_duration; I64 i,note,octave,last_octave,last_duration;
i=0; i=0;
tempo=oc.root.next; tempo=oc.head.next;
last_octave=OCTAVE_REST; last_octave=OCTAVE_REST;
last_duration=-1; last_duration=-1;
while (tempo!=&oc.root) { while (tempo!=&oc.head) {
dst=&tempo->ascii; dst=&tempo->ascii;
if (tempo->type==PSMT_METER) { if (tempo->type==PSMT_METER) {
*dst++='M'; *dst++='M';
@@ -313,8 +313,8 @@ U8 *PsmCvtSong()
st=MAlloc(i+1); st=MAlloc(i+1);
dst=st; dst=st;
tempo=oc.root.next; tempo=oc.head.next;
while (tempo!=&oc.root) { while (tempo!=&oc.head) {
StrCpy(dst,tempo->ascii); StrCpy(dst,tempo->ascii);
dst+=StrLen(tempo->ascii); dst+=StrLen(tempo->ascii);
tempo=tempo->next; tempo=tempo->next;
@@ -338,8 +338,8 @@ U8 *PsmSaveSong(U8 *dirname,U8 *full_filename)
music.stacatto_factor=0.88*tempo_state.stacatto/TEMPO_RANGE+0.12; music.stacatto_factor=0.88*tempo_state.stacatto/TEMPO_RANGE+0.12;
has_words=FALSE; has_words=FALSE;
tempo=oc.root.next; tempo=oc.head.next;
while (tempo!=&oc.root) { while (tempo!=&oc.head) {
if (PsmHasWords(tempo->word)) has_words=TRUE; if (PsmHasWords(tempo->word)) has_words=TRUE;
tempo=tempo->next; tempo=tempo->next;
} }
@@ -361,10 +361,10 @@ U8 *PsmSaveSong(U8 *dirname,U8 *full_filename)
" while (!ScanKey) {\n" " while (!ScanKey) {\n"
"\tPlay(\"",music.tempo+0.0005,music.stacatto_factor+0.0005); "\tPlay(\"",music.tempo+0.0005,music.stacatto_factor+0.0005);
tempo=oc.root.next; tempo=oc.head.next;
tempo1=tempo; tempo1=tempo;
has_words=FALSE; has_words=FALSE;
while (tempo!=&oc.root) { while (tempo!=&oc.head) {
DocPrint(doc,"%s",tempo->ascii); DocPrint(doc,"%s",tempo->ascii);
if (PsmHasWords(tempo->word)) has_words=TRUE; if (PsmHasWords(tempo->word)) has_words=TRUE;
if (tempo->type==PSMT_METER) { if (tempo->type==PSMT_METER) {
@@ -373,7 +373,7 @@ U8 *PsmSaveSong(U8 *dirname,U8 *full_filename)
} else } else
two_measure_left-=psm_durations[tempo->duration]; two_measure_left-=psm_durations[tempo->duration];
tempo=tempo->next; tempo=tempo->next;
if (two_measure_left<0.001 && tempo!=&oc.root) { if (two_measure_left<0.001 && tempo!=&oc.head) {
if (has_words) { if (has_words) {
DocPrint(doc,"\",\n\t\t\""); DocPrint(doc,"\",\n\t\t\"");
while (tempo1!=tempo) { while (tempo1!=tempo) {
+32 -32
View File
@@ -32,7 +32,7 @@ U0 PsmRightClick(I64 x,I64 y)
I64 i,old_doc_flags; I64 i,old_doc_flags;
if (DocPut) old_doc_flags=DocPut->flags; if (DocPut) old_doc_flags=DocPut->flags;
oc.cur_note=tempo=PsmFindNote(x,y); oc.cur_note=tempo=PsmFindNote(x,y);
if (tempo!=&oc.root) { if (tempo!=&oc.head) {
Fs->win_inhibit=WIG_USER_TASK_DFT; Fs->win_inhibit=WIG_USER_TASK_DFT;
i=PopUpDuration; i=PopUpDuration;
if (0<=i<PSM_NUM_DURATIONS) { if (0<=i<PSM_NUM_DURATIONS) {
@@ -133,10 +133,10 @@ U0 PsmLeftClickPickNoteBox(I64 duration)
} }
} while (msg_code!=MSG_IP_L_UP); } while (msg_code!=MSG_IP_L_UP);
if (a2<13*FONT_HEIGHT) { if (a2<13*FONT_HEIGHT) {
if (a1>oc.root.last->x) if (a1>oc.head.last->x)
tempo1=oc.root.last; tempo1=oc.head.last;
else if (a1<oc.root.next->x) else if (a1<oc.head.next->x)
tempo1=&oc.root; tempo1=&oc.head;
else else
tempo1=PsmFindNote(a1-PSM_NOTE_SPACING/2,a2); tempo1=PsmFindNote(a1-PSM_NOTE_SPACING/2,a2);
tempo=CAlloc(sizeof(PsmNote)); tempo=CAlloc(sizeof(PsmNote));
@@ -172,10 +172,10 @@ U0 PsmLeftClickPickMeterBox(I64 top,I64 bottom)
} }
} while (msg_code!=MSG_IP_L_UP); } while (msg_code!=MSG_IP_L_UP);
if (a2<13*FONT_HEIGHT) { if (a2<13*FONT_HEIGHT) {
if (a1>=oc.root.x) if (a1>=oc.head.x)
tempo1=oc.root.last; tempo1=oc.head.last;
else if (a1<oc.root.next->x) else if (a1<oc.head.next->x)
tempo1=&oc.root; tempo1=&oc.head;
else else
tempo1=PsmFindNote(a1-PSM_NOTE_SPACING/2,a2); tempo1=PsmFindNote(a1-PSM_NOTE_SPACING/2,a2);
tempo=CAlloc(sizeof(PsmNote)); tempo=CAlloc(sizeof(PsmNote));
@@ -194,7 +194,7 @@ U0 PsmLeftClickStaffPtr(I64 x,I64 y)
PsmNote *tempo,*tempo1; PsmNote *tempo,*tempo1;
I64 o,n,msg_code,a1,a2,n_original,o_original; I64 o,n,msg_code,a1,a2,n_original,o_original;
oc.cur_note=tempo=PsmFindNote(x,y); oc.cur_note=tempo=PsmFindNote(x,y);
if (tempo!=&oc.root) { if (tempo!=&oc.head) {
if (tempo->type==PSMT_NOTE) { if (tempo->type==PSMT_NOTE) {
n_original=tempo->note; n_original=tempo->note;
o_original=tempo->octave; o_original=tempo->octave;
@@ -202,7 +202,7 @@ U0 PsmLeftClickStaffPtr(I64 x,I64 y)
msg_code=GetMsg(&a1,&a2,1<<MSG_IP_L_UP|1<<MSG_IP_MOVE); msg_code=GetMsg(&a1,&a2,1<<MSG_IP_L_UP|1<<MSG_IP_MOVE);
if (msg_code==MSG_IP_L_UP) { if (msg_code==MSG_IP_L_UP) {
tempo1=PsmFindNote(a1,a2); tempo1=PsmFindNote(a1,a2);
if (tempo1==&oc.root || tempo1==tempo) if (tempo1==&oc.head || tempo1==tempo)
goto move_note; goto move_note;
else { else {
Free(tempo1->word); Free(tempo1->word);
@@ -420,9 +420,9 @@ U0 Psalmody(U8 *dirname="~/Psalmody")
MemSet(&oc,0,sizeof(PsmCtrl)); MemSet(&oc,0,sizeof(PsmCtrl));
oc.screen_x=0; oc.screen_x=0;
oc.root.next=oc.root.last=&oc.root; oc.head.next=oc.head.last=&oc.head;
oc.clipboard.next=oc.clipboard.last=&oc.clipboard; oc.clipboard.next=oc.clipboard.last=&oc.clipboard;
oc.cur_note=&oc.root; oc.cur_note=&oc.head;
oc.dc2=DCAlias; oc.dc2=DCAlias;
MenuPush( MenuPush(
@@ -569,29 +569,29 @@ mo_got_msg:
switch (a2.u8[0]) { switch (a2.u8[0]) {
case SC_CURSOR_LEFT: case SC_CURSOR_LEFT:
if (a2&SCF_CTRL) { if (a2&SCF_CTRL) {
while (oc.cur_note->last!=&oc.root) { while (oc.cur_note->last!=&oc.head) {
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.head)
LBEqu(&oc.cur_note->flags,PSMf_SEL,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.head) {
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.head)
LBEqu(&oc.cur_note->flags,PSMf_SEL,a2&SCF_SHIFT); LBEqu(&oc.cur_note->flags,PSMf_SEL,a2&SCF_SHIFT);
} }
} }
break; break;
case SC_CURSOR_RIGHT: case SC_CURSOR_RIGHT:
if (a2&SCF_CTRL) { if (a2&SCF_CTRL) {
while (oc.cur_note!=&oc.root) { while (oc.cur_note!=&oc.head) {
if (oc.cur_note!=&oc.root) if (oc.cur_note!=&oc.head)
LBEqu(&oc.cur_note->flags,PSMf_SEL,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.head) {
if (oc.cur_note!=&oc.root) if (oc.cur_note!=&oc.head)
LBEqu(&oc.cur_note->flags,PSMf_SEL,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;
} }
@@ -603,7 +603,7 @@ mo_got_msg:
else { else {
tempo=oc.cur_note; tempo=oc.cur_note;
oc.cur_note=tempo->next; oc.cur_note=tempo->next;
if (tempo!=&oc.root) { if (tempo!=&oc.head) {
QueRem(tempo); QueRem(tempo);
PsmNoteDel(tempo); PsmNoteDel(tempo);
} }
@@ -650,11 +650,11 @@ mo_got_msg:
oc.screen_x=0; oc.screen_x=0;
psm_duration=1.0; psm_duration=1.0;
psm_octave=3; psm_octave=3;
PsmSongDel(&oc.root); PsmSongDel(&oc.head);
oc.cur_note=&oc.root; oc.cur_note=&oc.head;
PsmLoadSong(filename,&psm_octave,&psm_duration); PsmLoadSong(filename,&psm_octave,&psm_duration);
oc.record_entry->checked=FALSE; oc.record_entry->checked=FALSE;
oc.cur_note=oc.root.next; oc.cur_note=oc.head.next;
} }
PsmPushMode(psm_octave); PsmPushMode(psm_octave);
col=0; col=0;
@@ -680,12 +680,12 @@ mo_got_msg:
filename=NULL; filename=NULL;
psm_duration=1.0; psm_duration=1.0;
psm_octave=3; psm_octave=3;
PsmSongDel(&oc.root); PsmSongDel(&oc.head);
oc.cur_note=&oc.root; oc.cur_note=&oc.head;
oc.screen_x=0; oc.screen_x=0;
break; break;
case '\n': case '\n':
if (oc.cur_note!=&oc.root) if (oc.cur_note!=&oc.head)
PsmRightClick(oc.cur_note->x,oc.cur_note->y); PsmRightClick(oc.cur_note->x,oc.cur_note->y);
break; break;
case 'x': case 'x':
@@ -695,7 +695,7 @@ mo_got_msg:
oc.playing=TRUE; oc.playing=TRUE;
PsmMenu(psm_octave); PsmMenu(psm_octave);
tempo=oc.cur_note; tempo=oc.cur_note;
while (tempo!=&oc.root) { while (tempo!=&oc.head) {
if (tempo->type!=PSMT_METER) { if (tempo->type!=PSMT_METER) {
timeout_val=cnts.jiffies; timeout_val=cnts.jiffies;
if (ip.pos_text.y-Fs->win_top<18) if (ip.pos_text.y-Fs->win_top<18)
@@ -748,7 +748,7 @@ mo_got_msg:
} }
tempo=tempo->next; tempo=tempo->next;
} }
oc.cur_note=&oc.root; oc.cur_note=&oc.head;
oc.screen_x+=oc.cur_note->x-GR_WIDTH/2; oc.screen_x+=oc.cur_note->x-GR_WIDTH/2;
oc.playing=FALSE; oc.playing=FALSE;
PsmMenu(psm_octave); PsmMenu(psm_octave);
@@ -758,7 +758,7 @@ mo_got_msg:
break; break;
case CH_BACKSPACE: case CH_BACKSPACE:
tempo=oc.cur_note->last; tempo=oc.cur_note->last;
if (tempo!=&oc.root) { if (tempo!=&oc.head) {
QueRem(tempo); QueRem(tempo);
PsmNoteDel(tempo); PsmNoteDel(tempo);
} }
@@ -860,7 +860,7 @@ mo_done:
} catch } catch
PutExcept; PutExcept;
PsmPopMode; PsmPopMode;
PsmSongDel(&oc.root); PsmSongDel(&oc.head);
PsmSongDel(&oc.clipboard); PsmSongDel(&oc.clipboard);
TempoDel(c); TempoDel(c);
Kill(play_task); Kill(play_task);
+8 -8
View File
@@ -641,7 +641,7 @@ class IndirectOrders
IndirectOrders *next,*last; IndirectOrders *next,*last;
Unit *attacker; Unit *attacker;
I64 row,col; I64 row,col;
} indirect_root; } indirect_head;
U0 PlotShot(Unit *tempu,I64 row,I64 col) U0 PlotShot(Unit *tempu,I64 row,I64 col)
{ {
@@ -653,7 +653,7 @@ U0 PlotShot(Unit *tempu,I64 row,I64 col)
tempi->attacker=tempu; tempi->attacker=tempu;
tempi->row=row; tempi->row=row;
tempi->col=col; tempi->col=col;
QueIns(tempi,indirect_root.last); QueIns(tempi,indirect_head.last);
} }
Bool firing=FALSE; Bool firing=FALSE;
@@ -798,8 +798,8 @@ U0 IndirectFireResolve()
F64 x1,y1,x2,y2,d,dammage=0,range_factor; F64 x1,y1,x2,y2,d,dammage=0,range_factor;
Unit *tempu,*target; Unit *tempu,*target;
Bool hit; Bool hit;
IndirectOrders *tempi=indirect_root.next,*tempi1; IndirectOrders *tempi=indirect_head.next,*tempi1;
while (tempi!=*indirect_root) { while (tempi!=*indirect_head) {
tempi1=tempi->next; tempi1=tempi->next;
tempu=tempi->attacker; tempu=tempi->attacker;
RowCol2XY(&x1,&y1,tempu->row,tempu->col); RowCol2XY(&x1,&y1,tempu->row,tempu->col);
@@ -1303,7 +1303,7 @@ U0 Init()
Fs->horz_scroll.pos=0; Fs->horz_scroll.pos=0;
Fs->vert_scroll.pos=0; Fs->vert_scroll.pos=0;
InitUnits; InitUnits;
QueInit(&indirect_root); QueInit(&indirect_head);
turn=0; turn=0;
fire_radius=0; fire_radius=0;
show_visible_row=-1; show_visible_row=-1;
@@ -1315,7 +1315,7 @@ U0 Init()
U0 CleanUp() U0 CleanUp()
{ {
QueDel(&indirect_root,TRUE); QueDel(&indirect_head,TRUE);
} }
U0 HandleChar(U8 ch) U0 HandleChar(U8 ch)
@@ -1543,8 +1543,8 @@ U0 DrawIt(CTask *task,CDC *dc)
GrCircle(dc,fire_radius_x-h,fire_radius_y-v,fire_radius); GrCircle(dc,fire_radius_x-h,fire_radius_y-v,fire_radius);
} }
if (Blink(10)) { if (Blink(10)) {
tempi=indirect_root.next; tempi=indirect_head.next;
while (tempi!=&indirect_root) { while (tempi!=&indirect_head) {
if (tempi->attacker->player==view_player) { if (tempi->attacker->player==view_player) {
RowCol2XY(&x,&y,tempi->row,tempi->col); RowCol2XY(&x,&y,tempi->row,tempi->col);
Sprite3(dc,x-task->horz_scroll.pos,y-task->vert_scroll.pos,0,$IB,"<5>",BI=5$); Sprite3(dc,x-task->horz_scroll.pos,y-task->vert_scroll.pos,0,$IB,"<5>",BI=5$);
+36 -36
View File
@@ -71,7 +71,7 @@ class Missile
Ship *owner,*target; Ship *owner,*target;
Bool active,launched,exploding; Bool active,launched,exploding;
U8 label[5]; U8 label[5];
} missile_root; } missile_head;
class Ship class Ship
{ {
@@ -86,7 +86,7 @@ class Ship
F64 laser_temperature; F64 laser_temperature;
Missile missiles[MAX_MISSILES]; Missile missiles[MAX_MISSILES];
Bool lasering,exploding,laser_overheat; Bool lasering,exploding,laser_overheat;
} ship_root,*human; } ship_head,*human;
F64 human_t_left,human_t_right,human_antispin; F64 human_t_left,human_t_right,human_antispin;
@@ -97,7 +97,7 @@ class Shot
F64 fuse_time,die_timeout; F64 fuse_time,die_timeout;
MyMass p; MyMass p;
Bool exploding; Bool exploding;
} shot_root; } shot_head;
#define MAX_THRUST 200.0 #define MAX_THRUST 200.0
#define MAX_ANTISPIN 25.0 #define MAX_ANTISPIN 25.0
@@ -211,7 +211,7 @@ U0 MissileNew(Ship *tempsp,I64 n)
} }
tempmi->img=$IB,"<7>",BI=7$; tempmi->img=$IB,"<7>",BI=7$;
tempmi->active=TRUE; tempmi->active=TRUE;
QueIns(tempmi,missile_root.last); QueIns(tempmi,missile_head.last);
} }
Ship *ShipNew(I64 x,I64 y,I64 type) Ship *ShipNew(I64 x,I64 y,I64 type)
@@ -365,7 +365,7 @@ Ship *ShipNew(I64 x,I64 y,I64 type)
remaining++; remaining++;
break; break;
} }
QueIns(tempsp,ship_root.last); QueIns(tempsp,ship_head.last);
return tempsp; return tempsp;
} }
@@ -438,14 +438,14 @@ U0 AllDel(CMathODE *ode)
{ {
Ship *tempsp,*tempsp1; Ship *tempsp,*tempsp1;
QueRem(ode); QueRem(ode);
tempsp=ship_root.next; tempsp=ship_head.next;
while (tempsp!=&ship_root) { while (tempsp!=&ship_head) {
tempsp1=tempsp->next; tempsp1=tempsp->next;
ShipDel(tempsp); ShipDel(tempsp);
tempsp=tempsp1; tempsp=tempsp1;
} }
human=NULL; human=NULL;
QueDel(&shot_root,TRUE); QueDel(&shot_head,TRUE);
ODEDel(ode); ODEDel(ode);
} }
@@ -502,8 +502,8 @@ U0 DrawIt(CTask *task,CDC *dc)
tempsps=tempsps->next; tempsps=tempsps->next;
} }
tempmi=missile_root.next; tempmi=missile_head.next;
while (tempmi!=&missile_root) { while (tempmi!=&missile_head) {
if (tempmi->active) { if (tempmi->active) {
if (tempmi->launched && tempmi->exploding) { if (tempmi->launched && tempmi->exploding) {
d=(tS-tempmi->fuse_time)/(tempmi->die_timeout-tempmi->fuse_time); d=(tS-tempmi->fuse_time)/(tempmi->die_timeout-tempmi->fuse_time);
@@ -524,8 +524,8 @@ U0 DrawIt(CTask *task,CDC *dc)
tempmi=tempmi->next; tempmi=tempmi->next;
} }
tempsp=ship_root.next; tempsp=ship_head.next;
while (tempsp!=&ship_root) { while (tempsp!=&ship_head) {
if (!tempsp->exploding) if (!tempsp->exploding)
switch (tempsp->type) { switch (tempsp->type) {
case ST_HUMAN1: case ST_HUMAN1:
@@ -678,8 +678,8 @@ U0 DrawIt(CTask *task,CDC *dc)
tempsp=tempsp->next; tempsp=tempsp->next;
} }
temps=shot_root.next; temps=shot_head.next;
while (temps!=&shot_root) { while (temps!=&shot_head) {
if (temps->exploding) { if (temps->exploding) {
d=(tS-temps->fuse_time)/(temps->die_timeout-temps->fuse_time); d=(tS-temps->fuse_time)/(temps->die_timeout-temps->fuse_time);
d=7*Sin(ã*d)*temps->explosion_radius+1; d=7*Sin(ã*d)*temps->explosion_radius+1;
@@ -715,8 +715,8 @@ U0 DrawIt(CTask *task,CDC *dc)
human->p[0].x-800*p.x,human->p[0].y-800*p.y,0,&LaserPlot); human->p[0].x-800*p.x,human->p[0].y-800*p.y,0,&LaserPlot);
} }
tempmi=missile_root.next; tempmi=missile_head.next;
while (tempmi!=&missile_root) { while (tempmi!=&missile_head) {
if (tempsp=tempmi->target) { if (tempsp=tempmi->target) {
dc->color=LTRED; dc->color=LTRED;
GrCircle(dc,tempsp->p[0].x,tempsp->p[0].y,10); GrCircle(dc,tempsp->p[0].x,tempsp->p[0].y,10);
@@ -759,8 +759,8 @@ Ship TargetGet(Missile *tempmi)
I64 i; I64 i;
CD3 p,p1,p2; CD3 p,p1,p2;
D3Unit(D3Sub(&p,&tempmi->p_front.state->x,&tempmi->p_back.state->x)); D3Unit(D3Sub(&p,&tempmi->p_front.state->x,&tempmi->p_back.state->x));
tempsp=ship_root.next; tempsp=ship_head.next;
while (tempsp!=&ship_root) { while (tempsp!=&ship_head) {
if (!tempsp->exploding && tempsp!=tempmi->owner) if (!tempsp->exploding && tempsp!=tempmi->owner)
for (i=0;i<tempsp->masses;i++) { for (i=0;i<tempsp->masses;i++) {
D3Sub(&p1,&tempsp->p[i].state->x,&tempmi->p_front.state->x); D3Sub(&p1,&tempsp->p[i].state->x,&tempmi->p_front.state->x);
@@ -821,8 +821,8 @@ U0 MyDerivative(CMathODE *ode,F64,COrder2D3 *,COrder2D3 *)
tempm=tempm->next; tempm=tempm->next;
} }
tempsp=ship_root.next; tempsp=ship_head.next;
while (tempsp!=&ship_root) { while (tempsp!=&ship_head) {
if (tempsp->exploding && tempsp->die_time<=tS<=tempsp->die_timeout) if (tempsp->exploding && tempsp->die_time<=tS<=tempsp->die_timeout)
for (i=0;i<tempsp->masses;i++) for (i=0;i<tempsp->masses;i++)
Explosion(&tempsp->p[i],NULL,tempsp->p[i].radius/3.0); Explosion(&tempsp->p[i],NULL,tempsp->p[i].radius/3.0);
@@ -886,15 +886,15 @@ U0 MyDerivative(CMathODE *ode,F64,COrder2D3 *,COrder2D3 *)
tempsp=tempsp->next; tempsp=tempsp->next;
} }
temps=shot_root.next; temps=shot_head.next;
while (temps!=&shot_root) { while (temps!=&shot_head) {
if (temps->exploding) if (temps->exploding)
Explosion(&temps->p,NULL,temps->explosion_radius); Explosion(&temps->p,NULL,temps->explosion_radius);
temps=temps->next; temps=temps->next;
} }
tempmi=missile_root.next; tempmi=missile_head.next;
while (tempmi!=&missile_root) { while (tempmi!=&missile_head) {
if (tempmi->active) { if (tempmi->active) {
if (tempmi->launched) { if (tempmi->launched) {
if (tempmi->exploding) if (tempmi->exploding)
@@ -981,8 +981,8 @@ U0 CheckDamage()
} }
} }
tempsp=ship_root.next; tempsp=ship_head.next;
while (tempsp!=&ship_root) { while (tempsp!=&ship_head) {
tempsp1=tempsp->next; tempsp1=tempsp->next;
switch (tempsp->type) { switch (tempsp->type) {
case ST_HUMAN1: case ST_HUMAN1:
@@ -1071,7 +1071,7 @@ U0 FireOneGun(Ship *tempsp,I64 n,F64 r,F64 fuse_time)
D3MulEqu(&p,temps->p.mass/tempsp->p[n].mass/100.0); D3MulEqu(&p,temps->p.mass/tempsp->p[n].mass/100.0);
D3SubEqu(&tempsp->p[n].DxDt,&p); D3SubEqu(&tempsp->p[n].DxDt,&p);
QueIns(&temps->p,ode->last_mass); QueIns(&temps->p,ode->last_mass);
QueIns(temps,shot_root.last); QueIns(temps,shot_head.last);
tempsp->reload_timeout=tS+r/tempsp->fire_rate; tempsp->reload_timeout=tS+r/tempsp->fire_rate;
Noise(100,r*200,r*400); Noise(100,r*200,r*400);
} }
@@ -1138,8 +1138,8 @@ U0 HumanFireLaserEnd()
U0 ExpireShots() U0 ExpireShots()
{ {
Shot *temps=shot_root.next,*temps1; Shot *temps=shot_head.next,*temps1;
while (temps!=&shot_root) { while (temps!=&shot_head) {
temps1=temps->next; temps1=temps->next;
if (!temps->exploding && tS>temps->fuse_time) { if (!temps->exploding && tS>temps->fuse_time) {
temps->exploding=TRUE; temps->exploding=TRUE;
@@ -1157,8 +1157,8 @@ U0 ExpireMissiles()
{ {
I64 i; I64 i;
F64 dd,best_dd; F64 dd,best_dd;
Missile *tempmi=missile_root.next,*tempm1; Missile *tempmi=missile_head.next,*tempm1;
while (tempmi!=&missile_root) { while (tempmi!=&missile_head) {
tempm1=tempmi->next; tempm1=tempmi->next;
if (tempmi->launched) { if (tempmi->launched) {
best_dd=MAX_F64; best_dd=MAX_F64;
@@ -1185,9 +1185,9 @@ U0 ExpireMissiles()
U0 AI() U0 AI()
{ {
CD3 p,p1,p2; CD3 p,p1,p2;
Ship *tempsp=ship_root.next; Ship *tempsp=ship_head.next;
if (human && !human->exploding) { if (human && !human->exploding) {
while (tempsp!=&ship_root) { while (tempsp!=&ship_head) {
D3Sub(&p1,&tempsp->p[0].x,&tempsp->p[1].x); D3Sub(&p1,&tempsp->p[0].x,&tempsp->p[1].x);
D3Sub(&p2,&tempsp->p[0].x,&tempsp->p[2].x); D3Sub(&p2,&tempsp->p[0].x,&tempsp->p[2].x);
D3Add(&p,&p1,&p2); D3Add(&p,&p1,&p2);
@@ -1223,9 +1223,9 @@ U0 Init()
score=0; score=0;
level=1; level=1;
QueInit(&ship_root); QueInit(&ship_head);
QueInit(&shot_root); QueInit(&shot_head);
QueInit(&missile_root); QueInit(&missile_head);
for (i=0;i<NUM_STARS;i++) { for (i=0;i<NUM_STARS;i++) {
stars_x[i]=RandU16%GR_WIDTH; stars_x[i]=RandU16%GR_WIDTH;
+1 -1
View File
@@ -119,7 +119,7 @@ U0 MapFileWrite(CHashTable *h,U8 *map_name,U8 drv_let)
MemCpy(tempb->data,dbg_info,size); MemCpy(tempb->data,dbg_info,size);
tempb->num=doc->cur_bin_num++; tempb->num=doc->cur_bin_num++;
tempb->use_cnt=1; tempb->use_cnt=1;
QueIns(tempb,doc->bin_root.last); QueIns(tempb,doc->bin_head.last);
} else } else
dbg_info=NULL; dbg_info=NULL;
} }
-1
View File
@@ -133,7 +133,6 @@ CIntermediateStruct intermediate_code_table[IC_NUM_ENTRIES]={
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"SET_RSP"}, {IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"SET_RSP"},
{IS_0_ARG,1,IST_NULL,FALSE,TRUE,0,0,0,"RIP"}, {IS_0_ARG,1,IST_NULL,FALSE,TRUE,0,0,0,"RIP"},
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"RDTSC"}, {IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"RDTSC"},
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"HPET"},
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BT"}, {IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BT"},
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BTS"}, {IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BTS"},
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BTR"}, {IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BTR"},
+3 -3
View File
@@ -8,8 +8,8 @@ U8 *LexStmt2Bin(CCmpCtrl *cc,I64 *_type,I64 cmp_flags=0)
COCPush(cc); COCPush(cc);
COCInit(cc); COCInit(cc);
if (!PrsStmt(cc,,,cmp_flags)) { if (!PrsStmt(cc,,,cmp_flags)) {
if (cc->coc.coc_root.next!=&cc->coc.coc_root) { if (cc->coc.coc_head.next!=&cc->coc.coc_head) {
cc->coc.coc_root.last->ic_flags&=~ICF_RES_NOT_USED; cc->coc.coc_head.last->ic_flags&=~ICF_RES_NOT_USED;
ICAdd(cc,IC_RETURN_VAL2,0,0); ICAdd(cc,IC_RETURN_VAL2,0,0);
ICAdd(cc,IC_RET,0,0); ICAdd(cc,IC_RET,0,0);
if (res=COCCompile(cc,&size,NULL,_type)) { if (res=COCCompile(cc,&size,NULL,_type)) {
@@ -24,7 +24,7 @@ U8 *LexStmt2Bin(CCmpCtrl *cc,I64 *_type,I64 cmp_flags=0)
} }
} //TODO: else del misc? } //TODO: else del misc?
} else //TODO: too dangerous to del Misc? } else //TODO: too dangerous to del Misc?
QueDel(&cc->coc.coc_root.next); QueDel(&cc->coc.coc_head.next);
if (cc->aot_depth==2) { if (cc->aot_depth==2) {
tempcbh=COCPopNoFree(cc); tempcbh=COCPopNoFree(cc);
COCAppend(cc,tempcbh); COCAppend(cc,tempcbh);
Binary file not shown.
+107 -112
View File
@@ -42,7 +42,7 @@ $LK,"ICU32",A="FL:::/Compiler/BackLib.CPP.Z,47",BI=33$
$LK,"ICU24",A="FL:::/Compiler/BackLib.CPP.Z,41",BI=34$ $LK,"ICU24",A="FL:::/Compiler/BackLib.CPP.Z,41",BI=34$
$LK,"ICU16",A="FL:::/Compiler/BackLib.CPP.Z,35",BI=35$ $LK,"ICU16",A="FL:::/Compiler/BackLib.CPP.Z,35",BI=35$
$LK,"SLASH_OP_DIV",A="FL:::/Compiler/BackLib.CPP.Z,250"$ $LK,"SLASH_OP_DIV",A="FL:::/Compiler/BackLib.CPP.Z,250"$
$LK,"CmpFillTables",A="FL:::/Compiler/CInit.CPP.Z,240",BI=36$ $LK,"CmpFillTables",A="FL:::/Compiler/CInit.CPP.Z,239",BI=36$
$LK,"AOTStoreCodeU32",A="FL:::/Compiler/AsmLib.CPP.Z,30",BI=37$ $LK,"AOTStoreCodeU32",A="FL:::/Compiler/AsmLib.CPP.Z,30",BI=37$
$LK,"ICU64",A="FL:::/Compiler/BackLib.CPP.Z,53",BI=38$ $LK,"ICU64",A="FL:::/Compiler/BackLib.CPP.Z,53",BI=38$
$LK,"SLASH_OP_INC",A="FL:::/Compiler/BackLib.CPP.Z,244"$ $LK,"SLASH_OP_INC",A="FL:::/Compiler/BackLib.CPP.Z,244"$
@@ -96,7 +96,7 @@ $LK,"ICDiv",A="FL:::/Compiler/BackA.CPP.Z,391",BI=72$
$LK,"ICDeref",A="FL:::/Compiler/BackLib.CPP.Z,709",BI=73$ $LK,"ICDeref",A="FL:::/Compiler/BackLib.CPP.Z,709",BI=73$
$LK,"ICLea",A="FL:::/Compiler/BackLib.CPP.Z,677",BI=74$ $LK,"ICLea",A="FL:::/Compiler/BackLib.CPP.Z,677",BI=74$
$LK,"CmpBuf",A="FL:::/Compiler/CMain.CPP.Z,157",BI=75$ $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,385"$
$LK,"ICAddEct",A="FL:::/Compiler/BackA.CPP.Z,1",BI=76$ $LK,"ICAddEct",A="FL:::/Compiler/BackA.CPP.Z,1",BI=76$
$LK,"ICToF64",A="FL:::/Compiler/BackB.CPP.Z,283",BI=77$ $LK,"ICToF64",A="FL:::/Compiler/BackB.CPP.Z,283",BI=77$
$LK,"PrsBinFile",A="FL:::/Compiler/Asm.CPP.Z,888",BI=78$ $LK,"PrsBinFile",A="FL:::/Compiler/Asm.CPP.Z,888",BI=78$
@@ -130,7 +130,7 @@ $LK,"ICPut",A="FL:::/Compiler/CExcept.CPP.Z,184",BI=102$
$LK,"PrsArrayDims",A="FL:::/Compiler/PrsVar.CPP.Z,247",BI=103$ $LK,"PrsArrayDims",A="FL:::/Compiler/PrsVar.CPP.Z,247",BI=103$
$LK,"ICSqr",A="FL:::/Compiler/BackC.CPP.Z,453",BI=104$ $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,173"$
$LK,"PrsClass",A="FL:::/Compiler/PrsStmt.CPP.Z,1",BI=105$ $LK,"PrsClass",A="FL:::/Compiler/PrsStmt.CPP.Z,1",BI=105$
$LK,"MemberMetaData",A="FL:::/Compiler/LexLib.CPP.Z,45",BI=106$ $LK,"MemberMetaData",A="FL:::/Compiler/LexLib.CPP.Z,45",BI=106$
$LK,"ICSwitch",A="FL:::/Compiler/BackC.CPP.Z,599",BI=107$ $LK,"ICSwitch",A="FL:::/Compiler/BackC.CPP.Z,599",BI=107$
@@ -206,7 +206,7 @@ $LK,"ICFSub",A="FL:::/Compiler/BackFB.CPP.Z,540",BI=162$
$LK,"ICFModEqu",A="FL:::/Compiler/BackFA.CPP.Z,545",BI=163$ $LK,"ICFModEqu",A="FL:::/Compiler/BackFA.CPP.Z,545",BI=163$
$LK,"CmpF1PushPop",A="FL:::/Compiler/OptLib.CPP.Z,535",BI=164$ $LK,"CmpF1PushPop",A="FL:::/Compiler/OptLib.CPP.Z,535",BI=164$
$LK,"OptFree",A="FL:::/Compiler/OptLib.CPP.Z,33",BI=165$ $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,447"$
$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=166$ $LK,"LexDollar",A="FL:::/Compiler/Lex.CPP.Z,93",BI=166$
$LK,"AsmUnresolvedAdd",A="FL:::/Compiler/AsmResolve.CPP.Z,188",BI=167$ $LK,"AsmUnresolvedAdd",A="FL:::/Compiler/AsmResolve.CPP.Z,188",BI=167$
@@ -228,7 +228,7 @@ $LK,"ICCmpAndBranch",A="FL:::/Compiler/BackB.CPP.Z,468",BI=180$
$LK,"ICDivEqu",A="FL:::/Compiler/BackA.CPP.Z,408",BI=181$ $LK,"ICDivEqu",A="FL:::/Compiler/BackA.CPP.Z,408",BI=181$
$LK,"PrsWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,486",BI=182$ $LK,"PrsWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,486",BI=182$
$LK,"ICFCmpAndBranch",A="FL:::/Compiler/BackFB.CPP.Z,219",BI=183$ $LK,"ICFCmpAndBranch",A="FL:::/Compiler/BackFB.CPP.Z,219",BI=183$
$LK,"Lex",A="FL:::/Compiler/Lex.CPP.Z,443",BI=184$ $LK,"Lex",A="FL:::/Compiler/Lex.CPP.Z,447",BI=184$
$LK,"ICTestAndBranch",A="FL:::/Compiler/BackB.CPP.Z,634",BI=185$ $LK,"ICTestAndBranch",A="FL:::/Compiler/BackB.CPP.Z,634",BI=185$
$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,127"$ $LK,"MODR_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,127"$
@@ -263,7 +263,7 @@ $LK,"ICAddSubEctEqu",A="FL:::/Compiler/BackA.CPP.Z,478",BI=206$
$LK,"ICAddSubEctImm",A="FL:::/Compiler/BackA.CPP.Z,56",BI=207$ $LK,"ICAddSubEctImm",A="FL:::/Compiler/BackA.CPP.Z,56",BI=207$
$LK,"ICPush",A="FL:::/Compiler/BackLib.CPP.Z,293",BI=208$ $LK,"ICPush",A="FL:::/Compiler/BackLib.CPP.Z,293",BI=208$
$LK,"ICSwap",A="FL:::/Compiler/BackC.CPP.Z,487",BI=209$ $LK,"ICSwap",A="FL:::/Compiler/BackC.CPP.Z,487",BI=209$
$LK,"CMP_TEMPLATES_DONT_PUSH",A="FL:::/Compiler/Templates.CPP.Z,267"$ $LK,"CMP_TEMPLATES_DONT_PUSH",A="FL:::/Compiler/Templates.CPP.Z,260"$
$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,385",BI=210$ $LK,"ICZero",A="FL:::/Compiler/BackLib.CPP.Z,385",BI=210$
$LK,"CmpCtrlDel",A="FL:::/Compiler/Lex.CPP.Z,58",BI=211$ $LK,"CmpCtrlDel",A="FL:::/Compiler/Lex.CPP.Z,58",BI=211$
@@ -292,7 +292,7 @@ $LK,"PrsVarInit2",A="FL:::/Compiler/PrsVar.CPP.Z,123",BI=229$
$LK,"PrsPop",A="FL:::/Compiler/PrsLib.CPP.Z,6",BI=230$ $LK,"PrsPop",A="FL:::/Compiler/PrsLib.CPP.Z,6",BI=230$
$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,415",BI=231$ $LK,"ICMinMax",A="FL:::/Compiler/BackC.CPP.Z,415",BI=231$
$LK,"CmpLoadDefines",A="FL:::/Compiler/CInit.CPP.Z,205",BI=232$ $LK,"CmpLoadDefines",A="FL:::/Compiler/CInit.CPP.Z,204",BI=232$
$LK,"PrsIf",A="FL:::/Compiler/PrsStmt.CPP.Z,459",BI=233$ $LK,"PrsIf",A="FL:::/Compiler/PrsStmt.CPP.Z,459",BI=233$
$LK,"ICBuiltInFloatConst",A="FL:::/Compiler/BackLib.CPP.Z,404",BI=234$ $LK,"ICBuiltInFloatConst",A="FL:::/Compiler/BackLib.CPP.Z,404",BI=234$
$LK,"ICFUnaryMinus",A="FL:::/Compiler/BackFA.CPP.Z,194",BI=235$ $LK,"ICFUnaryMinus",A="FL:::/Compiler/BackFA.CPP.Z,194",BI=235$
@@ -338,109 +338,104 @@ $LK,"PrsDotDotDot",A="FL:::/Compiler/PrsVar.CPP.Z,381",BI=264$
$LK,"ICMulEqu",A="FL:::/Compiler/BackA.CPP.Z,322",BI=265$ $LK,"ICMulEqu",A="FL:::/Compiler/BackA.CPP.Z,322",BI=265$
$LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CPP.Z,1",BI=266$ $LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CPP.Z,1",BI=266$
$LK,"PrsNoWarn",A="FL:::/Compiler/PrsStmt.CPP.Z,791",BI=267$ $LK,"PrsNoWarn",A="FL:::/Compiler/PrsStmt.CPP.Z,791",BI=267$
H2@_#_#h#n#‰#Ž#¹#»#ð#Ú#$$$+$¨­ÓÞaÞaôaüabb3bbBbHbHbrbyb¤b²b²bßbccc(cTcAckcrc�c�c¤cÈcÞcÞcÞcècH>Lýý8ýBýFýJýOýQýiý�ý�ý‹ýp©Á..XZagmou{‘¤³¸º¿ÉÞô,>(&ä&ä:ä[ä_ä_ägä8öãöãÿãäää ä!ä&äd`µÖ×Ö×ô׸רØØØ"Ø"Ø/Ø1Ø>Ø@ØLØLØgØuØu؀؇ؖءاجخغØÁØÐØÛØáØæØèØôØ$ÙJÙZÙjÙzÙ|ٌٜ٬٬ٱÙÄÙËÙÒÙÒÙÒÙÒÙÙÙïÙûÙÚÚ ÚÚÚÚ>ÚEÚ[ÚgÚmÚsÚyÚ{Ú{Ú‰ÚDÃŽÚŽÚ¤Ú§ÚªÚ·Ú½ÚÊÚÍÚÐÚÖÚØÚâÚ ,cj؉؉æ‰ð‰û‰Š ŠŠ H2@2#2#;#A#\#a#Œ#Ž#Ã#­#Ó#Ú#ë#þ#¨­Óÿaÿabb(b4bTb6bcbibib“bšbÅbÓbÓbc"c:c'cIcucbcŒc“c¾c¾cÅcécÿcÿcÿc dH>L?ý?ýYýcýgýkýpýrýŠý¢ý¢ý¬ýp©ÁOOy{‚ˆŽ�–œ²ÅÔÙÛàêÿ(M_(FäFäZä{äää‡ä8ää ä$ä/ä8ä?äAäFäd`µþ×þר Ø-Ø/Ø<Ø>ØJØJØWØYØfØhØtØtØ�Ø�Ø�بدؾØÉØÏØÔØÖØâØéØøØÙ ÙÙÙÙLÙrقْ٢٤ٴÙÄÙÔÙÔÙÙÙìÙóÙúÙúÙúÙúÙÚÚ#Ú)Ú/Ú5Ú9Ú9Ú9ÚfÚmÚƒÚ�Ú•Ú›Ú¡Ú£Ú£Ú±ÚDÃÚÚÌÚÏÚÒÚßÚåÚòÚõÚøÚþÚÛ
hlFFTio P Ÿ6Ÿ6­6¼6Ø6Þ6ð6ð6û67 Û ,cjŠŠŠŠ#Š.Š4Š:Š
777 ”;\KK&K*KCK]KzK›K¤KµKÙKðKðKLL'L4L;LmL~L‚LŠLŠL�L­L±LµL Œ×ö¾¾Þæêøþ0FZh…‘–¤ÀÉÙÛââèèø|1¿"¿"Õ"Þ"é"#####$#&#,#5#7#=#G#N#Q#Q#[#0 ' ˆ ˆ.ˆNˆTˆZˆZˆ`ˆ„“°È È Ü ã ê î ¡%¡,¡=¡b¡m¡x¡z¡…¡ª¡µ¡À¡Â¡É¡Ò¡Ô¡ß¡æ¡¢("®ß®ß½ßÔßïßïßõß NßNß]ßsßyß ˆP³P³u³|³“³Ÿ³ª³¼³Í³¾³¼³í³´´´!´-´7´>´E´I´K´Q´]´g´n´u´y´y´ƒ´ˆ´“´¥´¶´§´¥´Ö´÷´µ hlfft‰� P r6r6€6�6«6±6Ã6Ã6Î6×6Ý6ä6ê6 ”;\?K?KGKKKdK~K›K¼KÅKÖKúKLL0L?LHLUL\LŽLŸL£L«L«L¾LÎLÒLÖL Œ×öÞÞþ
µµµ&µ-µ4µ8µ:µ@µLµVµ]µdµhµhµuµƒµ“µ¥µ¶µ§µ¥µÖµ÷µ $$PfzˆŸ¥±Äàéùû|1’"’"¨"±"¼"Ö"Ö"Ù"è"î"÷"ù"ÿ"#
&¶-¶4¶8:@LV]dhh¶r‚”¥–¶”ÅÌÒÞèïöú¶ü¶··· ·&·*·*·4·B·K·d·p·t·t·w·€·ö·Ø V‚V‚s‚A¨{‚Š‚­‚¸‚ʂтâ‚ê‚î‚ñ‚ÿ‚ƒ/ƒ/ƒDƒFƒFƒRƒZƒ^ƒkƒkƒwƒƒƒƒ�ƒ�ƒ�ƒ¬ƒ·ƒȃȃ̓åƒôƒùƒÿƒ ###!#$#$#.#0 'HˆHˆVˆvˆ|ˆ‚ˆ‚ˆˆˆ„“°ð ð ¡ ¡¡¡:¡M¡T¡e¡Š¡•¡ ¡¢¡­¡Ò¡Ý¡è¡ê¡ñ¡ú¡ü¡¢¢8¢("ÏßÏßÞßõßààà oßoß~ß”ßšß ˆx³x³�³¤³»³Ç³Ò³ä³õ³æ³ä³´0´<´C´I´U´_´f´m´q´s´y´…´�´–´�´¡´¡´«´°´»´Í´Þ´Ï´Í´þ´ µ+µ2µ8µDµNµUµ\µ`µbµhµtµ~µ…µŒµ�µ�µ�µ«µ»µÍµÞµÏµÍµþµ +28DN¶U\`¶bh¶t~…Œ��šª¼Í¾¼í¶ô¶ú¶····"·$·*·6·@·G·N·R·R·\·j·s·Œ·˜·œ·œ·Ÿ·¨·¸Ôw‚w‚”‚b¨œ‚«‚΂Ù‚ë‚ò‚ƒ ƒƒƒ ƒ$ƒPƒPƒeƒgƒgƒsƒ{ƒƒŒƒŒƒ˜ƒ ƒ¤ƒ±ƒ±ƒ±ƒ̓؃éƒéƒîƒ„„„ „+„0„0„5„M„\„a„g„r„w„w„…„Ž„š„¢„ª„²„µ„»„À„Ʉۄä„õ„……
„„„„,„;„@„F„Q„V„V„d„m„y„�„‰„‘„”„š„Ÿ„¨„º„ÄÔ„ä„ä„é„ñ„ù„ü„…………… ………"…7…\…s…€…ˆ…�…œ…¨…®…µ…¾…Â…Å…Ñ…×…Þ…ã…ã…ñ…††††††'†6†;†;†B†M†S†[†a†l†q†q†€†‹†�†£†«†±††Á†Ó†Ù†á†ç†ì†ì†‡‡‡‡‡)‡/‡/‡T‡{‡€‡€‡”‡š‡°‡Á‡LJ̇å‡ë‡û‡ˆ ˆˆˆˆ*ˆ0ˆFˆWˆ]ˆbˆ{ˆ�ˆ‘ˆ™ˆ¡ˆ§ˆ¬ˆ¬ˆˆȈÞˆïˆõˆúˆ ‰‰ ‰(‰0‰6‰=‰B‰B‰X‰^‰t‰…‰‹‰�‰œ‰¢‰¬‰´‰¼‰‰ɉɉɉÛ‰ä‰õ‰ŠŠ …………#…#…(…(…(….…1…8…C…X…}…”…¡…©…±…½…É…Ï…Ö…ß…ã…æ…ò…ø…ÿ…†††"†"†/†/†7†?†H†W†\†\†c†n†t†|†‚†�†’†’†¡†¬†¾†Ć̆Ò†׆â†ô†ú†‡‡ ‡ ‡!‡'‡2‡8‡:‡J‡P‡P‡u‡œ‡¡‡¡‡µ‡»‡чâ‡è‡í‡ˆ ˆˆ$ˆ,ˆ2ˆ7ˆ7ˆKˆQˆgˆxˆ~ˆƒˆœˆ¢ˆ²ˆºˆˆȈ͈͈ãˆéˆÿˆ‰‰‰*‰0‰A‰I‰Q‰W‰^‰c‰c‰y‰‰•‰¦‰¬‰®‰½‰É͉Õ‰݉ã‰ê‰ê‰ê‰ü‰ŠŠ&Š&Š+Š+Š9ŠAŠRŠeŠlŠrŠzŠ€Š�Š–ŠžŠ¤Š¤Š¤Š©Š©Š©Š©Š©ŠÈŠÔŠÙŠÙŠèŠñŠüŠ‹‹‹ ‹ ‹6‹<‹R‹c‹i‹n‹€‹†‹‹‹¤‹‹‹Ç‹Ç‹Ó‹Û‹Þ‹ä‹ê‹ï‹ï‹ŒŒ#Œ3Œ9Œ?Œ?ŒPŒnŒnŒsŒsŒŒ‡ŒŠŒ‘Œ—ŒœŒœŒ¼ŒÄŒÔŒÚŒáŒÿŒ��.�6�9�@�F�^�f�~�†�‰���–�–�–�µ�Å�Ñ�Ù�Ü�ã�é�ù�ŽŽ/Ž7Ž:ŽAŽGŽ_ŽkŽ†ŽŽŽ‘Ž˜ŽžŽžŽžŽžŽ£Ž£Ž¬Ž¼ŽÒŽØŽðŽ� �� �&�+�G�M�Y�a�d�k�q�š�¢�²�¸�¿�¿�¿�Ä�Ä�Í�å�û���,�2�7�b�h�{�²�Ä�á�é�ï�ô�ô�‘‘&‘1‘1‘6‘6‘P‘\‘h‘s‘s‘x‘x‘’‘ž‘ª‘µ‘µ‘º‘º‘БÖ‘â‘è‘í‘ÿ‘’
Š ’’%’1’7’=’D’W’b’k’w’’‚’ˆ’Ž’“’§’¶’¾’Ö’Þ’á’ç’í’“ “-“G“O“R“X“^“^“o“x“„“Œ“�“–“œ“¡“³““Ê“â“ê“í“ô“ú“””9”S”[”^”e”k”k”{”„”�”˜”›”¡”§”¬”À”Ï”×”ñ”ù”ü”•• •(•J•f•n•q•w•}•}•Ž•—•£•«•®•µ•»•À•Ò•á•é•– ––––4–<–^–{–ƒ–†–�–“–“–“–“–“–˜–˜–®–´–À–Æ–Ë–Ý–ã–è–ö–— —— —"—)—/—4—F—U—]—u—}—€—‡—�—¥—­—Ì—æ—î—ñ—ø—þ—þ—þ—˜˜$˜,˜/˜6˜<˜S˜b˜n˜‰˜‘˜”˜›˜¡˜¹˜Ř瘙 ™™™™™™™™!™!™4™O™U™`™e™e™x™Ž™”™Ÿ™¡™¡™´™×™Ý™è™è™ú™ššš+š;š;š@š@šSšišoš}šŒš‘š‘š¤šºšÀšΚÝšâšâšøšþš›3›3›]›c›h›t›}›Œ›Œ›‘›‘›§›­›Ê›â›â› œœœ#œ,œ;œ;œ@œ@œVœ\œyœ‘œ‘œ»œÁœÆœÒœÛœêœêœïœïœ� �(�@�@�j�p�r�~�‡�’�’�’�’�—�¥�®�¿�Á�Ó�à�à�à�ð�žž)ž5ž6ž;žPžmž}ž¡ž±ž·ž·ž·ž¼žÁžÖžéž'Ÿ7Ÿ=Ÿ?ŸDŸUŸdŸ–ŸžŸ¤Ÿ¦Ÿ«Ÿ²Ÿ²Ÿ»ŸÍŸàŸéŸøŸøŸýŸ   % ' 0 ; ; \ c i q | ‚ ’ ˜   « ± ± ¶ »  É Р× à ï ï ï ô ô ô ¡ ¡ ¡¡(¡0¡8¡>¡>¡>¡C¡C¡N¡_¡b¡n¡w¡ƒ¡Š¡�¡•¡•¡ ¡±¡´¡À¡É¡Õ¡Ü¡â¡ç¡ç¡ç¡ç¡ì¡ñ¡ñ¡ü¡¢¢ ¢¢¢¢#¢%¢;¢B¢H¢W¢b¢m¢s¢¢ƒ¢ƒ¢�¢˜¢›¢›¢¦¢¨¢¾¢Å¢Ë¢Ó¢Þ¢é¢ï¢ù¢ü¢££££££ £#£,£/£/£:£<£Z£a£l£w£z£€£…£…£�£”£”£ £©£¬£¬£·£¹£Ï£Ö£Ü£ë£ö£¤¤¤¤¤#¤,¤/¤/¤:¤<¤R¤Y¤_¤g¤r¤}¤ƒ¤�¤�¤”¤”¤œ¤£¤¦¤¨¤³¤·¤À¤ääΤФî¤õ¤¥ ¥¥¥¥¥+¥/¥/¥;¥D¥G¥G¥R¥T¥j¥q¥w¥‰¥”¥Ÿ¥¥¥ª¥ª¥µ¥º¥º¥Å¥Ê¥Ê¥Õ¥Ø¥Ü¥ã¥è¥í¥ò¥ò¥¦ ¦ ¦¦¦-¦5¦9¦M¦T¦X¦X¦e¦q¦y¦¦�¦“¦¤¦¶¦Á¦ŦŦÒ¦Ú¦â¦è¦è¦è¦è¦è¦ê¦ê¦ø¦ÿ¦ §§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§&§(§(§?§G§S§S§t§ƒ§›§�§©§¶§¶§Ù§æ§ñ§ú§¨¨¨¨ ¨ ¨"¨4¨R¨^¨^¨‹ªx¿ÙJ4J4\4^4b4k4w4ƒ4˜4˜4Ç4Ë4Ð4Ü4ï4ù4ü45
ŠŠ Š1ŠDŠKŠQŠYŠ_ŠoŠuŠ}ŠƒŠƒŠƒŠˆŠˆŠˆŠˆŠˆŠ§Š³Š¸Š¸ŠÇŠЊÛŠäŠïŠúŠÿŠÿŠ‹‹1‹B‹H‹M‹_‹e‹j‹ƒ‹¡‹¡‹¦‹¦‹²‹º‹½‹ËÉ‹΋΋ò‹ú‹ŒŒŒŒŒ/ŒMŒMŒRŒRŒ^ŒfŒiŒpŒvŒ{Œ{Œ›Œ£Œ³Œ¹ŒÀŒÞŒíŒõŒ ��� �%�=�E�]�e�h�o�u�u�u�”�¤�°�¸�»�Â�È�Ø�ç�ó�ŽŽŽ Ž&Ž>ŽJŽeŽmŽpŽwŽ}Ž}Ž}Ž}ނނދޛޱ޷ŽÏŽâŽèŽíŽÿŽ� 555l_vÏ}Ï}å}ô}ù}~û}~ ~ ~-~B~/~Q~W~p~‰~¢~»~Ô~Þ~„žnn-n5n;nBnInKnNnUn\n\nmnqnwnwnŒn–n–nžn·nÚnûno!o&o2o=oBoRoUoioootozo|o‚o…o‹o�o“o›o¤o´o×oåoýopp+p>pCpQpipnprp—p§pÊpÝpâpèpípðpòpøpþpq qqqq!q*q8qPqUqYq~qŽq±qÄqÉqÙqüq
�&�,�8�@�C�J�P�y���‘�—�ž�ž�ž�£�£�¬�Ä�Ú�à�ø� ���A�G�Z�‘�£�À�È�Î�Ó�Ó�í�ù�‘‘‘‘‘/‘;‘G‘R‘R‘W‘W‘q‘}‘‰‘”‘”‘™‘™‘¯‘µ‘Á‘Ǒ̑ޑä‘鑸‘’’’’#’6’A’J’V’^’a’g’m’r’†’•’�’µ’½’À’Æ’Ì’ä’ì’ “&“.“1“7“=“=“N“W“c“k“n“u“{“€“’“¡“©“Á“ɓ̓ӓٓñ“ù“”2”:”=”D”J”J”Z”c”o”w”z”€”†”‹”Ÿ”®””ДØ”Û”á”ç”ÿ”•)•E•M•P•V•\•\•m•v•‚•Š•�•”•š•Ÿ•±•À•È•ã•ë•î•õ•û•––=–Z–b–e–l–r–r–r–r–r–w–w–�–“–Ÿ–¥–ª–¼––Ç–Õ–á–ê–ö–þ–————%—4—<—T—\—_—f—l—„—Œ—«—Å—Í—З×—Ý—Ý—Ý—î—÷—˜ ˜˜˜˜2˜A˜M˜h˜p˜s˜z˜€˜˜˜¤˜Ƙã˜ë˜î˜õ˜û˜û˜û˜û˜û˜™™™.™4™?™D™D™W™m™s™~™€™€™“™¶™¼™Ç™Ç™Ù™â™ó™ø™ r"r'r+rPrcrcr~r~r~rŒr¤r¦r¦r¦r´rÌrÎrÎrÜrôrôrssss2sRslstss’s–s–s–s�s£s½sÅsÐsësísós tt t.t9t9tStH…“˜…˜…¯…Å…Õ…Ü…ó…† †$†g†L�žï&€€5€7€P€i€t€€‡€4IR†×†×�×�×’× ×®×±×¶×ì= û ûGûJûhûû�û�û«û±û¶û¶ûÑû×ûÜûÜûåûóûü(ü-ü4ü:ü<üYüiünüuü{ü}ü}ü�ü–ü–ü–ü¦ü›ü·üÇüÙüÞüÞüÞüåüìüóüýý+ý+ý=ýÌL»°¥°¥Ê¥Õ¥à¥é¥ñ¥ô¥û¥ÿ¥¦¦ ¦%¦3¦P¦]¦l¦q¦}¦‚¦‰¦•¦š¦�¦§¦Ÿ¦·¦À¦Ñ¦Ï¦Ç¦ß¦è¦î¦î¦ü¦ÿ¦§§%§,§0§5§L§d§m§{§—§£§£§»§Ì§Ì§Ó§ì§ø§¨¨¨.¨7¨>¨B¨M¨R¨Y¨v¨£¨ª¨®¨°¨»¨Ç¨Ë¨à¨â¨ó¨ý¨©©!©0©I©I©L©T©Y©Û©Pw‡×M×MóMNN.NKNfNlNuNƒN‰NŒN˜NŒ ˜a˜a¨aÌaÌaÚaÚaÚaÚaãaãaêabb"b"b-b-b;bKbKbYb_b_bwbwb}b£b (kq@Š@ŠNŠZŠjŠqŠwŠ @KWÇéÇéÕéÝéäéêêêêêê!$/4wàwà„à™àžà¤à"$).GàGàTàiànàtà#$#(àà&à<àAàGà$€ïK**4DZbl‡Œœ²ºÄßäú   " , 6 @ J T ^ h r | ’ œ ¦ ° º Ä Î Ø â ø  " , 6 @ J T ^ h r | † � š ¤ ® ¸ Â Ì Ö à ê ô þ !!!&!0!:!D!N!\!%¤Cðœðœ� �"�3�E�G�N�T�d�o�y�„�›�ž� �²�¸�È�Ò�Ü�ã�î�ž ž ž!ž!ž!ž5ž&$5:§à§àµàÊàÏàÕà'¤Di8ž8žNžUžjž{ž�ž�ž–žœž¬ž·žÁžÌžãžæžèžúžŸŸŸ%Ÿ,Ÿ7ŸKŸSŸSŸiŸiŸiŸ~Ÿ((&,ò/ò/00000)0]e×L×LíLMMMM M*  ß>$>$`$h$n${$‚$ž$¤$¤$¤$±$³$¾$È$Ï$Þ$é$ï$ù$ÿ$%%%%%%%7%=%M%S%X%_%_%€%†%˜%«%±%´%º%º%¼%Â%È%Ê%Ê%Ê%Û%å%ê%ê%ÿ% & &&&&,&2&H&M&U&k&o&o&w&}&ƒ&�&”&›&¤&&¶&Û&ß&å&ë&ý&''' '&',','.'2'8'>'D'I'I'I'I't'…'…'œ'©'­'µ'Ç'ç'ç'í'ð'ô'ú'ú' ((2(F(N(_(c(t(x(~(—(™(Ÿ(¬(®(º(Ø(Þ(é( )))#)))2)8)J)[)c)g)x)|)‚)›)�)£)°)²)¾)Ü)â)è)î)÷)ý)* *4*=*C*C*X*]*]*d*n*ƒ*ˆ*ˆ*ˆ*¥*§*Ä*Æ*ã*é*ñ*õ*ü* +%+++7+N+U+[+f+k+k+r+v+€+Ž+�+˜+�+¥+°+¶+Å+Ê+Ð+Õ+Ý+â+ñ+,,%,0,L,N,j,j,q,†,‹,”,¡,¦,¬,±,±,¸,¼,Æ,Ô,Ö,Þ,â,æ,ð,ü,---- -1-?-D-P-P-X-X-{-{-‰-�-”-˜-�-�-�-�-£-¥-¥-È-Î-Ô-Û-ñ-ó-ó-ó-þ-þ-þ-.,/+4.w^É^ÉxÉ|ɔɜɤɮɲɹɿÉÓÉÛÉàÉãÉîÉùÉÊ ÊÊÊ/Ê6Ê=ÊHÊSÊUÊ`ÊkÊmÊyʂʂʘʣʻÊÁÊÊÊÛÊáÊêÊüÊËË
ššš š š2šHšNš\škšpšpšƒš™šŸš­š¼šÁšÁšךÝšúš››<›B›G›S›\›k›k›p›p›†›Œ›©›Á›Á›ë›ñ›ö›œ œœœ œ œ5œ;œXœpœpœšœ œ¥œ±œºœÉœÉœΜΜäœêœ� � �I�O�Q�]�f�q�q�q�q�v�„���ž� �²�¿�¿�¿�Ï�ß�ä�žžžž/žLž\ž€ž�ž–ž–ž–ž›ž žµžÈžŸŸŸŸ#Ÿ4ŸCŸuŸ}ŸƒŸ…ŸŠŸ‘Ÿ‘ŸšŸ¬Ÿ¿ŸÈŸןןÜŸáŸðŸùŸ     ; B H P [ a q w  Š � � • š ¡ ¨ ¯ ¶ ¿ ΠΠΠÓ Ó Ó å ê ê ü ¡¡¡¡¡¡"¡"¡-¡>¡A¡M¡V¡b¡i¡o¡t¡t¡¡�¡“¡Ÿ¡¨¡´¡»¡Á¡Æ¡Æ¡Æ¡Æ¡Ë¡ССۡߡߡë¡ô¡÷¡÷¡¢¢¢!¢'¢6¢A¢L¢R¢^¢b¢b¢n¢w¢z¢z¢…¢‡¢�¢¤¢ª¢²¢½¢È¢΢Ø¢Û¢ߢߢç¢î¢ñ¢ó¢þ¢£ £££££9£@£K£V£Y£_£d£d£o£s£s££ˆ£‹£‹£–£˜£®£µ£»£Ê£Õ£à£æ£ò£ö£ö£¤ ¤¤¤¤¤1¤8¤>¤F¤Q¤\¤b¤l¤o¤s¤s¤{¤‚¤…¤‡¤’¤–¤Ÿ¤¢¤¢¤­¤¯¤ͤÔ¤ߤê¤í¤ó¤ø¤ø¤ ËËËË0Ë;Ë?ËMËOËSËbËbËbËsËsËxËŠË�ËþË,Ô@ŽåŽå¤å«å®åÒåÒåïåææ(æ-æ-æKæYælææ‡æ‡æ‰æ‰æ‰æœæžæžæžæ¥æ¸æËæËæËæÞæéæüæççç"ç7çJçQçQçTçyç-LAP$$$!$-$H$M$m$o$Š$¥$¥$­$´$Û$.P~ŽÈŠÈŠÖŠãŠñŠ‹‹‹)‹7‹I‹T‹b‹h‹n‹/4
¥¥¥¥#¥&¥&¥1¥3¥I¥P¥V¥h¥s¥~¥„¥‰¥‰¥”¥™¥™¥¤¥©¥©¥´¥·¥»¥Â¥Ç¥Ì¥Ñ¥Ñ¥å¥ê¥ê¥÷¥û¥ ¦¦¦,¦3¦7¦7¦D¦P¦X¦^¦n¦r¦ƒ¦•¦ ¦¤¦¤¦±¦¹¦Á¦ǦǦǦǦǦɦɦצÞ¦ë¦÷¦§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§&§2§2§S§b§z§|§ˆ§•§•§¸§ŧЧÙ§â§í§ô§ô§þ§þ§¨¨1¨=¨=¨lªx¿Ùw4w4‰4‹4�4˜4¤4°4Å4Å4ô4ø4ý4 55&5)54575?5I5l_v®}®}Ä}Ó}Ø}í}Ú}ü}ÿ}ÿ} ~!~~0~6~O~h~�~š~³~½~„žîmîm nnn!n(n*n-n4n;n;nLnPnVnVnknunun}n–n¹nÚnßnoooo!o1o4oHoNoSoYo[oaodojooorozoƒo“o¶oÄoÜoáoåo 66 6,6=6O6X6f6l60|ºU~
pp"p0pHpMpQpvp†p©p¼pÁpÇpÌpÏpÑp×pÝpãpèpîpöpöpq qq/q4q8q]qmq�q£q¨q¸qÛqéqrr ~
r/rBrBr]r]r]rkrƒr…r…r…r“r«r­r­r»rÓrÓrårårîrûrs1sKsSs^sqsususus|s‚sœs¤s¯sÊsÌsÒsìsôsÿs ttt2tH…“p…p…‡…�…­…´…Ë…æ…ø…ü…?†L�žÎÎâï€ñ€€/€H€S€^€f€4IR^×^×g×g×j×x׆׉׎×ì=þúþú&û)ûGû^ûoûoûŠû�û•û•û°û¶û»û»ûÄûÒûïûü üüüü8üHüMüTüZü\ü\üoüuüuüuü…üzü–ü¦ü¸ü½ü½ü½üÄüËüÒüçüîü  
ý §
ýýÌL»ˆ¥ˆ¥¢¥­¥¸¥Á¥É¥Ì¥Ó¥×¥à¥ó¥÷¥ý¥ ¦(¦5¦D¦I¦U¦Z¦a¦m¦r¦u¦¦w¦�¦˜¦©¦§¦Ÿ¦·¦À¦Æ¦Æ¦Ô¦×¦ë¦ô¦ý¦§§ §$§<§E§S§o§{§{§“§¤§¤§«§Ä§Ð§Ø§ë§ò§¨¨¨¨%¨*¨1¨N¨{¨‚¨†¨ˆ¨“¨Ÿ¨£¨¸¨º¨Ë¨Õ¨à¨ê¨ù¨©!©!©$©,©1©³©Pw‡¶M¶MÒMãMöM N*NENKNTNbNhNkNwNŒ papa€a¤a¤a²a²a²a²a»a»aÂaÝaòaúaúabbb#b#b1b7b7bObObUb{b (kqŠŠ&Š2ŠBŠIŠOŠ @KW¦é¦é´é¼éÃéâéïéïéòéôéúé!$/4VàVàcàxà}àƒà"$).&à&à3àHàMàSà#$#(ößößàà à&à$€ðLWWaq‡�™´¹Éßçñ  ' 1 ; E O Y c m w � ‹ • Ÿ © ¿ É Ó Ý ç ñ û  % / 9 O Y c m w � ‹ • Ÿ © ³ ½ Ç Ñ Û å ï ù ! !!!!+!5!?!I!S!]!g!q!{!‰!%¤CȜȜޜåœúœ �� �&�,�<�G�Q�\�s�v�x�Š��� �ª�´�»�Æ�Û�ã�ã�ù�ù�ù� ž&$5:†à†à”à©à®à´à'¤Dižž&ž-žBžSžežgžnžtž„ž�ž™ž¤ž»ž¾žÀžÒžÙžéžóžýžŸŸ#Ÿ+Ÿ+ŸAŸAŸAŸVŸ((&, 0 0-040>0D0J0)0]e¶L¶LÌLßLîLôL÷LÿL*  ß$$@$H$N$[$b$~$„$„$„$‘$“$ž$¨$¯$¾$É$Ï$Ù$ß$ð$ð$û$%%%%-%3%8%?%?%`%f%x%‹%‘%”%š%š%œ%¢%¨%ª%ª%ª%»%Å%Ê%Ê%ß%é%é%ý%& &&(&-&5&K&O&O&W&]&c&m&t&{&„&–&–&»&¿&Å&Ë&Ý&ð&ö&ú&'' ' '''''$')')')')'T'e'e'|'‰'�'•'§'Ç'Ç'Í'Ð'Ô'Ú'Ú'ì'ý'(&(.(?(C(T(X(^(w(y((Œ(Ž(š(¸(¾(É(ì(÷(ý() )))*);)C)G)X)\)b){)})ƒ)�)’)ž)¼)Â)È)Î)×)Ý)ú)í)**#*#*8*=*=*D*N*c*h*h*h*…*‡*¤*¦*Ã*É*Ñ*Õ*Ü*ÿ*+ ++.+5+;+F+K+K+R+V+`+n+p+x+}+…+�+–+¥+ª+°+µ+½+Â+Ñ+è+ø+,,,,.,J,J,Q,f,k,t,�,†,Œ,‘,‘,˜,œ,¦,´,¶,¾,Â,Æ,Ð,Ü,ã,ç,ï,÷,ÿ,- -$-0-0-8-8-[-[-i-o-t-x-}-}-}-}-ƒ-…-…-¨-®-´-»-Ñ-Ó-Ó-Ó-Þ-Þ-Þ-ã- /+4.w6É6ÉPÉTÉlÉtÉ|É†ÉŠÉ‘É—É«É³É¸É»ÉÆÉÑÉÙÉäÉïÉñÉÊÊÊ Ê+Ê-Ê8ÊCÊEÊQÊZÊZÊpÊ{ʓʙʢʳʹÊÂÊÔÊÚÊÚÊâÊæÊñÊöÊËËË%Ë'Ë+Ë:Ë:Ë:ËKËKËPËbËhËÖË,Ô@nånå„å‹åŽå²å²åÏåâåõåæ æ æ+æ9æLæ_ægægæiæiæiæ|æ~æ~æ~æ…æ˜æ«æ«æ«æ¾æÉæÜæòæ÷æûæçç*ç1ç1ç4çYç-LAP/$/$=$N$Z$u$z$š$œ$·$Ò$Ò$Ú$á$%.P~ޠРЮлŠÉŠÛŠæŠôŠ‹‹!‹,‹:‹@‹F‹/4 µ
?6?6M6Y6j6|6…6“6™60|ºU^ À
^ æ
€ æ
‡ ï
• ñ
  ñ
Æ ø
Æ  & & 5 D ` k k w  � ™ ·  Ä Ý ã î þ   $ ) / 6 ^ c q z z � � § §  ¿ Ó Ú á æ ñ ÷ ÿ % . 5 : E Q ` t y � � Ÿ Ÿ ½ Å Õ ç í ö ö   $4CUZj}…™·ÎÒÞõ#)4@P`enn€„�§ÃÕÛæò$**/1166EKQQUÎ1ŒÄãÛÛ*Û6Û:Û>ÛEÛLÛ[ÛfÛlÛqÛsÛÛ†ÛŽÛ”ÛšÛžÛžÛ­Û´Û¼ÛÂÛÈÛÊÛÊÛÖÛ28 */*/8/>/J/U/f/p/w/}/3@t€'ë'ë5ë@ëGëfësësëvëxë~ë4ÌSÏÏõ#%,366HHZey�Š’—�³ÃØÝö     * > F O W \ c u … š œ µ Í Ñ Ñ å í ö þ 
Ï 
Ñ 
Ñ /
Ø D
ÿ I
   $ @ K K W _ p y — ¢ ¤ ½ Ã Î Þ ð ù     > C Q Z Z a p ‡ ‡ – Ÿ ³ º Á Æ Ñ × ß     % 1 @ T Y a m   – � ¥ µ Ç Í Ö Ö å ë ÿ #5:J]ey—®²¾Õñ  0@ENN`dp‡£µ»ÆÒâò b
 z
%+115®1ŒÄãæÚæÚÛÛÛÛÛ$Û3Û>ÛDÛIÛKÛWÛ^ÛfÛlÛrÛvÛvۅی۔ۚ۠ۢۢۮÛ28 W/W/e/k/w/‚/“/�/¤/ª/3@t€ëëë ë&ëEëRëRëUëWë]ë4ÌS®®Ôçîõü ''9DX`iqv|’¢·¼Õíññöÿ  % . 6 ; B T d y { ” ¬ ° ° Ä Ì Õ Ý â è þ  ~
# ‘
( ‘
A ‘
Y –
] ¸
p Ú
p å
p ë
u    + ? G P X Z ` r ‚ — ™ ² Ê Î Î â ê ó û    - B G ` x | � � � ”  Ø ã é     % + 5 @ R b y � § ¾ ¾ Ñ ì ì ì  ++4>Kesz��®½Õåÿÿ5D{ˆîîþ!337:B6\ObX‰X‰x‰‡‰�‰™‰�‰¡‰­‰²‰·‰·‰È‰Ì‰Ô‰ì‰ï‰û‰70üîãîã÷ãüãä äää8tÚ��±¸¿Êààò  %R,ax‰�¡¦»ÓØàäöé)--2C‹eš¸ÃÉÝõú ',3EUkm†ž¢¢·ÏÔÜàïâ"&5555HNX_r��©¹ÇÇÛé÷  $CRKjz�’¸©Þà   UZekv˜²ŸÁØé!2T‰v˜ÁÇÛóø %*1CSik„œ  ÂÛïó%,?ZZZv†””¨ÏÄâõú(!@Pa¡¡¨ËËËë9Dmz––¦ºÃÉÛÛßâê:lwŽß~ß~õ~  -00=R?ag€™²Ëäî;<‰”FFVgpvz…<”)>î>îFîJîVîgîiîyî„î–î¡î¬î»îÌîÓîìîðîïï ïï%ï.ï<ïPïlïqïŽï=d(=ˆˆˆˆ”ˆ¨ˆ«ˆ¿ˆÇˆËˆÕˆßˆçˆêˆðˆ>4u¾0F0FVFYF]FjFsF~FŽF–F FÈFÈFØFÝFÝFíFòFòFGGGGGG,G1G1GAGFGFGVG[G[GkGpGpG€G…G…G…GˆG‘GªG¸GÏGâGäGêGìGïGHHH HHH&H6HCH[HcHiHiH}H}H†H‰HII?Ä n�ª�ª¬ª´ª·ªŪÓªèªñª «%«7«B«S«W«i«l«w«€«Œ«Ÿ«ЫÅ«««à«÷« ¬¬%¬F¬[¬¬“¬•¬¶¬œ¬ѬÔ¬Ù¬ܬܬã¬ù¬­ ­­!­.­A­A­Y­]­Š­Š­¢­§­§­·­»­Ì­Ö­ç­ñ­® ® ®®®.®8®I®S®f®r®w®w®w®™®ª®¯®¼®Ñ®Ñ®Ö®à®ï®ô®ú®ÿ®ÿ®¯¯¯"¯(¯-¯-¯3¯9¯>¯>¯F¯Y¯e¯r¯~¯�¯—¯�¯¦¯½¯ѯâ¯ï¯ô¯ ° °6°C°K°Z°d°j°s°|°|°�°�°�°�°�°‘°‘°‘°©°¿°ǰâ°ó°±±±±±± ±-±2±2±9±G±L±d±p±‚±ޱ”±œ±¢±«±ѱݱã±é±ø±²²5²F²S²U²c²c²h²h²o²}²‚²•²¡²­²³²¹²²DzDzDzDzDzß²ä²ä²ä²ä²ä²õ²õ²õ²õ²õ²õ²õ²õ²õ²õ² ³#³+³F³W³d³f³s³ƒ³ˆ³ˆ³ˆ³‘³«³·³¼³Þ³ê³ê³ï³ï³ï³ï³ï³ï³ï³ï³´ ´ ´ ´´!´&´&´1´C´[´p´‘´²´½´δÓ´Ó´Ó´Ü´µ µµ"µCµ\µdµlµzµ¤µ­µ³µÔµíµíµíµíµíµH¶Q¶W¶]¶b¶k¶t¶y¶y¶y¶y¶ˆ¶œ¶º¶ʶжÕ¶Õ¶è¶ü¶"·5·;·;·@·@·O·c·�·‘·—·œ·œ·¯·÷é·ü·¸¸¸¸¸ ¸5¸=¸X¸i¸v¸x¸‡¸‰¸‰¸‰¸‰¸‰¸�¸�¸�¸�¸�¸�¸�¸�¸�¸�¸�¸�¸�¸�¸�¸�¸¬¸»¸ƸȸȸѸÓ¸Ó¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸ç¸é¸é¸¹¹¹¹¹¹-¹I¹a¹p¹|¹’¹¬¹¯¹¹¹Źë¹ º+ºOºQºdº’ºjº­º­º°ºÀºȺãºôº÷º» »+»C»C»n»q»€»”»µ»É»å»Ñ»¼¼4¼i¼g¼\¼Q¼B¼w¼w¼w¼z¼¼‚¼œ¼ª¼ؼú¼ú¼%½(½7½K½l½€½œ½ˆ½¸½¸½Ö½ ¾ ¾þ½ó½ä½¾¾¾¾!¾!¾(¾8¾Y¾e¾¸Á@À„°?Æ?ÆUÆYÆdÆLine truncated
— ÑÑ3ÑLÑaÑvÑ}Ñ}тттттттъѕѡѰѵѵѽÑÅÑÒÑ×Ñ×Ñ×ÑÛÑàÑàÑðÑõÑõÑõÑÒÒÒÒÒ4ÒCÒKÒ\ÒdÒ‡Ò�ҔҖҜңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңңҥҥÒÀÒÊÒØÒØÒÝÒèÒïÒ ÓÓÓÓÓ'ÓEÓSÓIÕAx[OÕOÕeÕlÕsÕ~Õ…Õ–Õ Õ§Õ±ÕÄÕÌÕÌÕçÕÖÖÖÖÖ%Ö.Ö5Ö8Ö=ÖHÖRÖdÖjÖ€Ö‡Ö�Ö¥Ö¬Ö¬Ö¬ÖºÖáÖêÖòÖ× × × ××!×3×9×O×V×^×e×z׋׋גגגנ×Ç×Ô×Ý×å×÷×ÿ×ÿ×ÿ× ØØØØ#Ø=ØIØŽØBt`¹ŸÛŸÛ·ÛÇÛÎÛÕÛàÛóÛöÛþÛÜÜÜ&Ü1Ü<Ü?ÜJÜ`ÜkÜvÜ�܌ܓܦܲÜÏÜØÜàÜÝÝ ÝÝÝ#Ý+Ý:Ý@ÝHÝHÝTÝbÝqÝy݈Ý�ݳݹݿÝÁÝÇÝÍÝÍÝÍÝòÝ÷ÝÞÞÞÞ+Þ/Þ:ÞTÞ`ÞpÞƒÞŸÞ´Þ¼ÞÆÞåÞùÞùÞmßC ?CO0O0Y0a0f0DÉÊYY(Y3YDY3Y^YlYlY|Y…YŒY�Y™Y™Y¡Y¥YÅYÓYßYåYðYZZ%Z0Z6Z=ZBZBZUZ`ZqZ|Z‡ZŽZ˜Z¥Z¥Z·Z¼Z¼ZÊZÏZÏZàZàZóZøZ [[[-[A[A[F[F[T[Y[Y[^[e[m[t[v[~[…[…[”[š[§[®[¶[Ú[Ú[â[ñ[ü[\\\(\-\2\2\2\E\J\Y\`\i\~\’\’\—\—\Ÿ\µ\º\Î\Õ\Ú\Ú\æ\õ\]]1]<]V]h]z]‰]¨]³]¸]Ç]Û]â]é]ü]þ] ^ ^!^/^=^M^T^k^r^~^�^¦^¨^´^¿^Á^Á^Ì^à^í^õ^÷^ __$_5_C_e_l_x_–_–_–_ž_©_­_µ_¹_Á_È_Ø_ã_````#`+`0`0`?`L`Z`e`p`~`„`Š`�`™`Ÿ`®`Æ`Î`Ú`è`ÿ`a
¹ aaa#aAaGaMaSa\ama”aœa¦a´aÌaÓaßaîabbbb'b-b-b-b-b7cEDQ^O}O}c}p}†}r}•}—}¯}Ç}Ï}FœfÉÇSÇSéSóST*T5TNTSTWT_ThTwT~T‡TŒT¡T²TÑTÙTÛTúTUUU$U)U0U8U>U@UQUVUlUXU{U�U�U‰U’U¡UÀUÇUÉUèUïUïUïUVVV V-VCV8V[V`VqVvVŒVxV›V¡V¨V°V¶V¸VÉVÎVäVÐVóVùVùVW
Ä W
Ê WWW,W\WeWqWuWƒW™WŽW±W±WÃWG ;z×à×àöàÿàáá*á,á5á:á[áyáˆá¦áºáÒáÙáÿáâ,âIâZâqâuâuâyâ~âƒâ�â�âšâŸâ¸â»â»â»â»âÀâÆâââðâüâãã!ã*ãFãQã]ãfãzãzã‰ãŽãŽãœãHP‡——A—A¸A¥AÚAÇAéAøAB B BB#B#BEBKBIPÅÕoúoúƒúˆú—ú—úžúËúáúÍúþúðúûûJŒ¥ÄçøçøùFùFùYù]ùù“ù˜ù˜ùŸù§ù¯ùÄùÐùáùæù÷ù úúúúú.úLúLúiúKP�­g<g<�<’< <¦<Á<Ð<ß<î<ü<=
â ==Lè7§.§.Ò.Õ.Ø.Þ.ã.ú./(/L/h/k/Š/¤/¶/Ã/Ù/ì/ñ/ü/0000003090X0w0y0Ž0”0³0Ò0Ú0å0å0ï0ï01?1W1i1M$ o[o[š[ƒ[¤[¬[NLx‡þËþËÌ%Ì6ÌGÌNÌVÌfÌq̺̂̈ÌOTHYPdPdbdddmdvd„d‰d’d•dšd¨d²dµd¿dP¨!G¨b¨b¸bÁbÔbábíbùbcc(c(c7cBcKcRc[crc‰cŽc c¯c»cÍcÍcÖcùcùcûcdd*d6d9dPdQhî„@o@oYodoto½oÄoØoßoçoïoøopp
ú ppp!p(pGp_phphp�pÇpÐpòp q)qSq_q�qƒqŠq‘q‘q´qÐq÷qr:rVr}r™rÀrÜrs sFsFsUsbsgsgsvsƒsˆsˆs�sšs¬sÄsÜsôsösösösýsýs
ÿ tttt t.tAtVt’t™t™t™t¡t¾tÌtêtótüt uu1uMuMuMu_umu‰u§u§u§u²uµuäuæuýuvvv v,v.v;v=vJvJvnvpvwvˆv‘v“v¡v£v±v³vÁvÁvávávávávw5w[wcwgwowsw�w�w‘w™w�w¡w©w·wÅwÅwßwêwxx4xMxXxbxix‚xŽx•x®x®xÀxÅxÇxÍxÞxïxþxyy y!y/y1y?yAyOyOyOysysy’y™y y£y¯y²yÀyÄyÒyÖyäyèyèyzz zz.z5zPzpzƒz’z”z£z¥z´z¾z¾zÌzÕzëzòz{{E{u{z{ˆ{Š{˜{¡{»{½{¿{Æ{×{à{â{ð{ò{||||0|0|0|0|0|O|O|O|Z|v|›|´|¹|¹|¹|Û|à|à|à|}}}}$})})}0}2}2}:}<}<}C}C}F}K}j}€}¥}Á}Õ}Ú}Ú}õ}~~~~6~8~8~=~8~^~`~`~h~c~£~£~£~Â~Â~Â~ã~è~è~è~
 /444SXXs�ƒ’›µ··¼·Ýßßçâ"€"€"€-€-€W€W€�€™€±€¼€Ò€æ€ÿ€�/�M�O�`�}�”�›�“…R| $ÿæÿæç+çAç[çsç~çšçšçšç§çÂçÄçÄçÄçÑçìçîçîçüç è$è$è4èFèSædÖÛÖÛðÛùÛÜÜ Ü'Ü/Ü7Ü?ÜEÜRÜRÜlÜqÜqÜwÜ|Ü|܂܇܇Ü�ܒܒܪܽÜÃÜÈÜÈÜÑÜñÜñÜñÜøÜúÜúÜÝÝÝ Ý ÝÝÝÝÝÝ Ý!Ý!Ý'Ý'Ý.Ý.Ý6Ý<ÝBÝJÝJÝJÝJÝVÝ^ÝfÝnÝvÝ~݆݌ݤݳݽÝÀÝÀÝÊÝÐÝÖÝÖÝÚÝâÝéÝíÝõÝýÝÞ ÞÞÞ"Þ&Þ,Þ7Þ=ÞJÞVÞ\ÞdÞhÞoÞwÞÞƒÞ‰Þ‘Þ˜Þ Þ¨Þ¬Þ²Þ½ÞÂÞØÞéÞîÞñÞ–ßTL”£h†h†�†ƒ†Š† †°†¶†Î†æ†é†û†C‡UÔ*[ŽïŽï¢ï·ïÆïÊïØïáïðïðïÿï
 & / 7 9 ? Q a v x ‘ © ­ ­ Á É Ò Ú ß æ ü  ! & ? W [ n n n s • ·  È à ø ø ø   ðð ð'ð7ðNðeðkðpðtð‡ð‡ð�ðŸð©ðÍðØðÚðóð÷ðñ
  1 A X o † � � ° Ë Ë Ë ì ü  ñ
 ññ ñ(ñ;ñ¥ñV$/[/[Z[C[d[l[WPÍÝ¿D¿DàDÍDEïDE E(E3E5E@EKEKEmEsEX,fÖfÖoÖuÖ}Ö†Ö�Ö”ÖY�ß�ß���#�0�c�p�‚�¢�²�²�¿�¿�Æ�Ù�×�ç�ç�ò�ü�‘‘ ‘‘ ‘8‘?‘B‘W‘\‘g‘r‘Œ‘¦‘·‘½‘ÑÊ‘è‘Бñ‘÷‘ý‘’%’ ’.’4’:’B’B’I’g’O’p’v’|’„’¤’Œ’­’³’¹’Á’Á’Á’×’×’×’×’â’ì’õ’“!“2“7“H“\“a“a“l“t““ˆ“”“¨“¸“Í“â“ÿ“””””$”/”?”N”k”€”•” ”¥”¥”°”Æ”Û”ç”ø”ý”•"•"•-•"•E•J•J•Y•^•^•m•r•r•ƒ•ˆ•ˆ•™•ž•ž•±•À•ŕŕؕç•ì•ú•ì•––!––5–:–H–:–\–a–o–a–ƒ–ˆ–ˆ–¥–ª–Ì–Ñ–ß–Ñ–ó–ø–ø–——<—A—O—A—c—h—h—…—Š—¬—±—¿—±—ӗؗؗõ—ú—˜!˜/˜!˜C˜H˜H˜c˜h˜h˜ƒ˜ˆ˜ˆ˜£˜¨˜¨˜ØȘȘã˜è˜è˜™™™#™(™(™C™H™H™Y™^™^™o™t™t™€™‹™ ™¥™¥™±™Ê™Ï™õ™ü™š šš&š;šFšKš\šgšoštštšxš|šƒš�š—š—šªš¯š¯š¯š³šÌšÕšÕšûš››››%›?›L›W›b›m››‹›”›™›™›™›ª›Ç›Ò›Ü›ç›ì›÷›ÿ›œœœœ œ+œ;œSœkœœ„œ„œ�œ¢œ¬œ·œØœäœõœúœ ����$�/�7�<�G�W�f�ƒ�˜�­�¸�½�È�Ð�Õ�à�ð�ÿ�ž1žFžFžFžFžKžPžPž\žmžmž’ž”ž±ž±ž»žÏžÙžÛžçžïž ŸŸ'Ÿ2ŸUŸfŸwŸˆŸ“Ÿ«Ÿ»ŸÀŸÀŸËŸППØŸãŸèŸèŸðŸûŸ   )   A F F N o X V ‡ Œ   Œ ¸ ½ ½ Ê Ï Ï × Ü Ü î ¡¡¡¡¡1¡6¡6¡>¡C¡C¡V¡[¡[¡n¡s¡s¡�¡�¡¢¡¢¡¼¡Ì¡Ñ¡Ñ¡ë¡û¡¢¢¢*¢/¢F¢/¢^¢c¢c¢n¢s¢¯¢�¢‹¢s¢Ç¢Ì¢£ö¢ä¢Ì¢ £%£%£4£D£I£I£X£h£m£m£|£Š£�£·£¥£�£Ï£Ô£ü£ê£Ô£¤¤A¤/¤¤Y¤^¤^¤{¤e¤¥¤µ¤º¤º¤Õ¤Á¤ÿ¤¥¥¥ ¥%¥%¥1¥6¥6¥I¥Y¥^¥^¥q¥�¥†¥†¥™¥©¥®¥®¥Á¥Ñ¥Ö¥Ö¥Þ¥ã¥ã¥ë¥ð¥ð¥ø¥ý¥ý¥¦
*DRYln�œ•´ÄÞÞ÷5D{ˆÎÎÞòû"6\Ob0‰0‰P‰_‰h‰q‰u‰y‰…‰Š‰�‰�‰ ‰¤‰¬‰Ä‰Ç‰Ó‰70üÎãÎã×ãÜãåãìãîãóã8tÚnn�—ž©¿¿Ñêêõù1 @Wh|€…š²·¿ÃÕÈô  "jDy—¢¨¼ÔÙíõþ $4JLe}��–®³»¿ÎÁí'-7>Qllˆ˜¦¦ºÈÖëþ"1*IY`q—ˆ½¿ëëëö49DJUw‘~ ·Èã÷û3hUw• ¦ºÒ×ëóü "2HJc{¡ºÎÒáááôú 999Uess‡•®£ÁÔÙø /@^^€€‡ªªªÊ9Dmzvv†š£©»»¿ÂÊ:lw޾~¾~Ô~ã~è~ý~ê~ 1@F_x‘ªÃÍ;<‰”&&6GPVZe<”)îî&î*î6îGîIîYîdîvî�îŒî›î¬î³îÌîÐîáîáîëîòîïïï0ïLïQïnï=d(=`ˆ`ˆlˆ€ˆƒˆ—ˆŸˆ£ˆ­ˆ·ˆ¿ˆÂˆÈˆ>$uºXFXF|FFƒF�F™F¤F´F¼FÆFîFîFþFGGGGG(G-G-G=GBGBGRGWGWGgGlGlG|G�G�G‘G–G–G–G™G™G²GÀG×GêGêGìGìGûGHHH HHH'H7HDH\HdHjHjH~H~H‡HŠHHI?È onªnª‹ª“ª–ª¤ª²ªǪЪ몫«!«2«6«H«K«V«_«k«~«¯«¤«Š«¿«Ö«ê«ö«¬%¬:¬^¬r¬t¬•¬{¬°¬³¬¸¬»¬»¬¬ج߬ì¬ñ¬­ ­ ­ ­8­<­i­i­�­†­†­–­š­«­µ­Æ­Эã­è­è­ø­ü­ ®®(®2®E®Q®V®V®V®x®‰®Ž®›®°®°®µ®¿®ήÓ®Ù®Þ®Þ®ã®í®ü®¯¯ ¯ ¯¯¯¯¯%¯8¯D¯Q¯]¯l¯v¯|¯…¯œ¯°¯Á¯ίÓ¯ë¯þ¯°"°*°9°C°I°R°[°[°`°`°`°`°`°p°p°p°ˆ°ž°¦°Á°Ò°ß°á°î°ó°ó°ó°þ° ±±±±&±+±C±O±a±m±s±{±�±б°±¼±±ȱױ߱籲%²2²4²B²B²G²G²N²\²a²t²€²Œ²’²˜²¡²¦²¦²¦²¦²¦²¾²òòòòòԲԲԲԲԲԲԲԲԲԲ첳 ¦
³%³6³C³E³R³b³g³g³g³p³г–³›³½³ɳɳγγγγγγγγã³è³è³è³ù³´´´´"´:´O´p´‘´œ´­´²´²´²´»´á´ê´û´µ"µ;µCµKµYµƒµŒµ’µ³µ̵̵̵̵̵îµ'¶0¶6¶<¶A¶J¶S¶X¶X¶X¶X¶g¶{¶™¶©¶¯¶´¶´¶ǶÛ¶···· · ·.·B·`·p·v·{·{·Ž·¢·È·Û·á·á·æ·æ·æ·þ·¸¸7¸H¸U¸W¸f¸h¸h¸h¸h¸h¸|¸|¸|¸|¸|¸|¸|¸|¸|¸|¸|¸|¸|¸|¸|¸|¸‹¸š¸¥¸§¸§¸°¸²¸²¸ƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸƸȸȸ߸ç¸ó¸ó¸÷¸ü¸ ¹(¹@¹O¹[¹q¹‹¹޹˜¹¤¹ʹê¹ ¦¦"¦"¦5¦:¦ˆ¦v¦d¦R¦:¦•¦š¦è¦Ö¦Ħ²¦š¦õ¦ú¦ú¦ §$§)§)§:§U§Z§Z§k§y§~§~§†§‹§‹§“§˜§˜§ §¥§¥§ݧ˧¹§¬§ü§¨¨¨T¨B¨0¨#¨s¨ލ“¨Ȩ¶¨«¨“¨à¨å¨©©ý¨å¨2©7©Q©;©7©i©n©‹©u©n©£©¨©¨©´©Í©Ý©î©î©ªª+ª1ª1ªNª[ªŒª½ª«ªàªèªèªèªôªùªùª ««!«&«1«;«@«@«Z«_«_«g«l«€«l«�«š«Ÿ«³«Ÿ««Í«Ò«Ò«Ý«î«ó«ó«þ« ¬¬¬ ¬$¬$¬>¬I¬N¬Y¬N¬h¬m¬�¬m¬�¬•¬ ¬•¬¯¬´¬Ȭ´¬׬ܬܬð¬ܬÿ¬ÿ¬ÿ¬­­­#­(­(­4­(­G­L­L­X­L­k­p­p­|­p­�­”­¨­”­·­íέÙ­Þ­ò­Þ­® ®®#®(®<®(®S®K®\®a®a®i®n®n®w®|®|®…®Š®Š®“®˜®˜®£®¨®¨®³®¸®¸®îȮȮӮخخã®è®è®ó®ø®ø®¯¯¯¯+¯6¯A¯L¯Q¯Q¯[¯`¯`¯j¯o¯o¯y¯~¯~¯ˆ¯�¯�¯•¯š¯š¯§¯¬¯¬¯¹¯¾¯¾¯¾¯¾¯¾¯Ư˯˯Ó¯ددà¯å¯å¯í¯ò¯ò¯ú¯ÿ¯°ÿ¯"°3°8°8°?°J°j°o°…°�°©°•°¸°ðΰÓ°Ó°Ú°å°±
º.º0ºCºqºIºŒºŒº�ºŸº§ººÓºÖºðºþº ± ±+±D±0±S±^±i±n±n±u±€± ±¥±»±Ʊß±˱î±ù±² ² ²$²²3²S²X²n²y²’²~²µ²¡²IJϲÔ²Ô²ï²Û²þ²³#³9³D³]³I³€³l³�³š³Ÿ³Ÿ³º³¦³ɳé³î³´´(´´K´7´Z´e´j´j´y´~´~´�´’´’´’´˜´�´�´�´§´©´©´³´º´Ý´ß´ß´é´é´é´é´é´ë´ë´µ µµµ µ%µ,µ7µBµMµGµhµ…µzµ�µ�µ«µ¥µѵƵéµéµéµòµùµ 2¶2¶Q¶\¶s¶“¶“¶“¶´¶ĶÙ¶ë¶û¶û¶ ·'·6·H·H·L·Q·X·h·‡·‡·‹·¢·©·®·®·²·½·É·×·¸ ¸¸,¸_¸k¸p¸†¸ž¸ª¸»¸À¸Ѹð¸¹G¹J¹Z¹\¹\¹`¹¹йй�¹ž¹Ϲò¹ò¹õ¹¼Z, –Ö–Ö¤ÖªÖ®Ö·ÖÀÖÆÖ[`BVï‡ï‡ˆˆˆˆ-ˆFˆJˆPˆfˆƒˆ…ˆ…ˆ¶ˆ¤ˆ…ˆÕˆ߈\8
»"»"»M»P»_»s»”»¨»Ä»°»à»õ»¼H¼F¼;¼0¼!¼V¼V¼V¼Y¼^¼a¼{¼‰¼·¼Ù¼Ù¼½½½*½K½_½{½g½—½—½µ½ê½è½ݽÒ½ýø½ø½ø½û½¾¾¾¾8¾D¾™Á@Ä„±ÆÆ4Æ8ÆCÆJÆUÆiÆiÆtƅƌƙƥƲƶÆÇÆÇÆÐÆÕÆÝÆíÆûÆ ¿Z¿ZàZÍZïZúZ[[['[-[]\’8 8 F H S [ f q | ~ ” ” ¦ ² » ¾ í ^øª¤ïìïìíí&íRíRí]íjíˆí�í½íÂíëí î'î-î1îTîzîî¨îÅîëîïï ï%ï-ï2ïCïKïjïpïtï�ï•ï´ï¹ïÊïÒïñïöïþïðð ðð&ð+ðIðNð[ð`ð`ðmð…ð”ð¡ðÁðÁðØðÝðÝðôðöðöð
ÇÇ(Ç(Ç@Ç@Ç[LJLJǛÇ�Ç�ǧǯǯǹÇÁÇÁÇÁÇÒÇÒÇÒÇØÇàÇæÇëÇëÇñÇùÇýÇÈÈÈÈ.È8ÈGÈLÈTÈTÈYÈYÈ`ÈvȆÈ�ȘȞȭȲȺÈÀÈÀÈÅÈÌÈ×È ÉÉ$É,É2ÉGÉMÉRÉRÉRÉRÉRÉRÉRÉRÉRÉ]ÉkÉ{É�ɉɘÉ�ɪɲɷɷɷɿÉÈÉÑÉÞÉæÉòÉýÉ1Ê9ÊHÊRÊlÊrÊwÊwÊ~ʑʙʮʶʾÊÓÊÕÊàÊèÊýÊýÊËËË%Ë+Ë1Ë5Ë>ËCËgËsË{Ë�˜ˡ˭˸˽˽˽ËÓËðËõËýËÌÌÌ3Ì8ÌCÌKÌ`ÌeÌẻ̕Ì�̲̾ÌÃÌÏÌÚÌßÌßÌßÌßÌßÌßÌêÌêÌêÌêÌêÌêÌêÌêÌêÌêÌêÌêÌõÌÍÍÍ%Í+Í3ÍBÍGÍOÍWÍYÍaÍpÍvÍ~͈͆Í�Í­Í¶Í¾ÍÆÍÍÍáÍêÍóÍûÍÎÎÎ%Î*Î/ÎAÎuÎ}ÎŒÎ–Î°Î¸Î½Î½Î½ÎÆÎÏÎÒÎÜÎêÎüÎþÎÏ"Ï"Ï"Ï-Ï2ÏOÏTÏTÏ]ÏbÏbÏbÏbÏbÏbÏbÏbÏbÏbÏbÏbÏbÏbÏbÏbÏmÏyϑϤϬϻÏÀÏÈÏÏÏÜÏåÏîÏöÏýÏÐÐ ñ ñ ñ#ñ%ñ%ñ<ñ>ñ>ñUñUñjñoñoñ~ñ~ñ·ñÐñÐñãñèñèñèñèñò/òKòKòKòXòoòqòqòqò~ò•ò—ò—ò¤ò»ò»òÒòÔòïò ó ó óóóóóóóóóó'ó,ó,óHóHóHóPóUóUóUó]óbóbójójóló–ó˜ó¸óØóØóØóØóØóòóõó
ÐÐ0Ð8Ð;Ð=ÐMÐWÐWÐWÐYÐnÐЂЅÐ�ВВЛРШЯмÐÑÐØÐéÐõÐÑ+Ñ@ÑUÑ\Ñ\ÑaÑaÑaÑaÑaÑaÑaÑiÑtÑ€Ñ�єєќѤѱѶѶѶѺѿѿÑÏÑÔÑÔÑÔÑàÑçÑíÑ÷ÑüÑÒ"Ò*Ò;ÒCÒfÒlÒsÒuÒ{Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò‚Ò„Ò„ÒŸÒ©Ò·Ò·Ò¼ÒÇÒÎÒêÒ÷Ò÷Ò÷ÒûÒÓ$Ó2Ó*ÕAx[.Õ.ÕDÕKÕRÕ]ÕdÕuÕÕ†Õ�Õ£Õ«Õ«ÕÆÕàÕæÕïÕöÕùÕÖ ÖÖÖÖ'Ö1ÖCÖIÖ_ÖfÖnÖ„Ö‹Ö‹Ö‹Ö™ÖÀÖÉÖÑÖãÖëÖëÖëÖöÖ×××.×5×=×D×Y×j×j×q×q×q×צ׳׼×Ä×Ö×Þ×Þ×Þ×ì×ô×ô×÷רØ(ØmØBt`¹~Û~Û–Û¦Û­Û´Û¿ÛÒÛÕÛÝÛäÛçÛ÷ÛÜÜÜÜ)Ü?ÜJÜUÜ`ÜkÜr܅ܑܮܷܿÜßÜâÜèÜíÜüÜÝ ôôôô/ô1ô=ô=ôEôWôWôcôvô�ô—ô¿ôÑôíô õ.õBõ`õ…õ˜õ·õÝõöõöö7ö<ö<öpöuöuöˆöˆö”ö¦ö«ö«ö¿öÝö÷÷4÷Z÷{÷Š÷¸÷Ê÷Ô÷ö÷ø÷ø÷ø÷øøø"øRøTøTøcøcøhøhøhøhøhøø„ø—øæø_\
ÝÝ Ý'Ý'Ý3ÝAÝPÝXÝgÝoݒݘݞݠݦݬݬݬÝÑÝÖÝóÝöÝöÝýÝ PP!P7PSP`PwPŠP•PªP—P¹PÁPÌPâPØPúPQ`øAG;G;e;h;o;v;};�;ƒ;Š;‘;•;™;¬;Ô;ï;Ü;< <0<0<<<D<S<�<’<¿<Ç<Ì<Õ<á<é<ð<==:=<=^=j=Œ=’=™=™=Ÿ=¢=¦=·=Ú=ì=a$ŸßŸß®ßÉßÉßÏßb|Xs ê ê9êeêeê„ê”ê–ê–ê–ê–ê�ê¥êÀêÙêÛêÛêÛêãêþêëë
ÞÞÞ3Þ?ÞOÞbÞ~Þ“Þ›Þ¥ÞÄÞØÞØÞLßC ?C.0.080@0E0DÉÊæXæXYY#YY=YKYKY[YdYkYoYxYxY€Y„Y¤Y²Y¾YÄYÏYóYóYZZZZ!Z!Z4Z?ZPZ[ZfZmZwZ„Z„Z–Z›Z›Z©Z®Z®Z¿Z¿ZÒZ×ZèZîZ÷Z [ [ [%[%[3[8[8[=[D[L[S[U[][d[d[s[y[†[�[•[¹[¹[Á[Ð[Û[â[ä[ø[\ \\\\$\)\8\?\H\]\q\q\v\v\~\”\™\­\´\¹\¹\Å\Ô\æ\õ\]]5]G]Y]h]‡]’]—]¦]º]Á]È]Û]Ý]ë]þ]^^^,^3^J^Q^]^n^…^‡^“^ž^ ^ ^«^¿^Ì^Ô^Ö^ê^ü^__"_D_K_W_u_u_u_}_ˆ_Œ_”_˜_ _§_·_Â_à_å_î_ù_` ë
````+`9`D`O`]`c`i`o`x`~`�`¥`­`¹`Ç`Þ`à`é`ô`ö`a a&a,a2a;aLasa{a…a“a«a²a¾aÍaâaâaïaôab b b b bcEDQ^.}.}B}O}e}Q}t}v}Ž}¦}®}FœfɦS¦SÈSÒSúS TT-T2T6T>TGTVT]TfTkT€T‘T°T¸TºTÙTáTðT÷TUUUUU U0U5UKU7UZU`U`UhUqU€UŸU¦U¨UÇUÎUÎUÎUåUîUúUþU V"VV:V?VPVUVkVWVzV€V‡V�V•V—V¨V­VÃV¯VÒVØVØVàVéVéVóVóV W;WDWPWTWbWxWmW�W�W¢WG ;z¶à¶àÕàÞàáàóà á ááá:áXágá…á™á±á¸áÞáüá â(â9âPâTâTâXâ]âbâlâoâyâ~â—âšâšâšâšâŸâ¥âÁâÏâÛâäâøâã ã%ã0ã<ãEãYãYãhãmãmã{ãHP‡—vAvA—A„A¹A¦AÈA×AßAêAìA÷ABB$B*BIPÅÕNúNúbúgúvúvú}úªúÀú¬úÝúÏúõúýúJŒ¥ÄÆøÆøùø%ù%ù8ù<ù^ùrùwùwù~ù†ùŽù£ù¯ùÀùÅùÖùêùïùñùñùñù ú+ú+úHúKP�­F<F<o<q<<…< <¯<¾<Í<Û<æ<é<ù<Lè7†.†.±.´.·.½.Â.Ù.ð./+/G/J/i/ƒ/•/¢/¸/Ë/Ð/Û/ã/ã/í/í/ø/ý/0070V0X0m0s0’0±0¹0Ä0Ä0Î0Î0à0161H1M$ N[N[y[b[ƒ[‹[NLx‡ÖËÖËèËýËÌ Ì&Ì.Ì>ÌIÌZÌ`Ì’ÌOTHY(d(d:d<dEdNd\dadjdmdrd€dŠd�d—dP¨!G€b€b�b™b¬b¹bÅbÑbÝbébcccc#c*c3cJcacfcxc‡c“c¥c¥c®cÑcÑcÓcæcècddd(dQhî„oo1o<oLo•oœo°o·o¿oÇoÐoØoàoâoêoòoùop p7p@p@pupŸp¨pÊpäpq+q7qYq[qbqiqiqŒq¨qÏqëqr.rUrqr˜r´rÛr÷rss-s:s?s?sNs[s`s`sgsrs„sœs´sÌsÎsÎsÎsÕsÕsâsçsçsçsøstt.tjtqtqtqtyt–t¤tÂtËtÔtátït u%u%u%u7uEuauuuuŠu�u¼u¾uÕuÛuìuõu÷uvvvv"v"vFvHvOv`vivkvyv{v‰v‹v™v™v¹v¹v¹v¹vÙv w3w;w?wGwKwYwgwiwqwuwyw�w�w�w�w·wÂwØwìw x%x0x:xAxZxfxmx†x†x˜x�xŸx¥x¶xÇxÖxÝxîx÷xùxy yyy'y'y'yKyKyjyqyxy{y‡yŠy˜yœyªy®y¼yÀyÀyÙyàyåyóyz z(zHz[zjzlz{z}zŒz–z–z¤z­zÃzÊzïzôz{M{R{`{b{p{y{“{•{—{ž{¯{¸{º{È{Ê{Ø{Ú{è{è{|||||'|'|'|2|N|s|Œ|‘|‘|‘|³|¸|¸|¸|Ø|Ý|Ý|Ý|ü|}}} ë"ëc”"§4§4É4Ó4ß4ä4ô4ú45#535A5O5f5n5x5‡5�5œ5¤5§5§5§5©5¸5Â5Ë5Ó5Ö5è5dôÍ/8/8X8e8h8q8w8Ž8¥8¼8Ç8ý89"9'929L9^9k9�9—9®9³9Å9Ê9Í9í9 :::":B:b:j:r:t:”:œ:¡:¦:±:±:¼:¼:È:È:Ú:;3;3;C;ed¤¹ Œ Œ0Œ7ŒCŒIŒQŒ_ŒrŒ~Œ˜Œ¥Œ¥Œ¨Œ¶ŒÆŒàŒäŒìŒf(¸þr*r*ˆ*�*¡*Ð*à*ç*÷*+
} ++8+b+s+�+�+ˆ+˜+¤+´+½+Ô+Ô+ê+ê+,,,,,,,,B,B,X,X,n,n,„,„,›,›,²,²,É,É,à,à,÷,÷,--%-%-<-D-O-`-k-|--�-˜-Ÿ-á.g¬÷8>EMUXcuuŒ“–˜¤µµ¸ÀÖÙçêíôø   3 6 … h(ÅË ‚ ‚F‚3‚U‚g‚o‚iCÏPÏPòPQ QQQ$Q1Q7Q@QFQKQSQoQuQwQyQ†Q†Q“QˆQ¤QªQ¬Q®Q»Q»Q»QÀQÉQÑQÚQâQäQìQôQüQ RRR!R1R<RKRlRsR~R‡R˜RœR¤R¤R¸RÈRÐRÓR9Sj8-7"0"060:0?0J0U0X0\0d0kˆWõ߈߈ùˆ‰‰!‰!‰(‰M‰R‰]‰{‰e‰Љ�‰¯‰¸‰À‰ʉè‰ú‰Š ŠŠ0ŠŠ?ŠQŠ[ŠcŠ{ŠeŠ ŠŠŠ¯ŠÁŠËŠÓŠÓŠÜŠäŠúŠ‹%‹4‹8‹8‹?‹D‹b‹d‹i‹t‹Š‹Š‹Š‹Ž‹š‹»‹Å‹Ï‹Ø‹ù‹Œ ŒŒŒ,Œ:ŒHŒKŒdŒhŒƒŒ‡Œ¦ŒªŒÅŒÉŒÉŒÉŒÏŒÝŒçŒ���� �'�-�F�Q�_�i�‚�…���™�›�£�¦�¿�Á�Í�Ï�×�Ý�ö�ŽŽ/Ž4ŽIŽYŽrŽƒŽƒŽŽŽ™Ž±Ž½ŽÒŽ׎ìŽüŽ�&�&�,�7�?�M�T�f�leã–ß–ß°ß¹ßÙßÙßßßçßïß÷ßÿßààà à%à%à+à0à0à6à;à;àAàFàFà^àqàwà|à|à…à¥à¥à¥à¬à®à®àµà·à·à½à½àÄàÆàÆàÌàÌàÓàÕàÕàÛàÛàâàâàêàðàöàþàþàþàþà
}}}}}}}#}B}X}}}™}­}²}²}Í}Ú}Ü}ë}ô}~~~~~6~8~8~@~;~{~{~{~š~š~š~»~À~À~À~â~ç~ç~ç~   +00KY[js���”�µ··¿ºúúú€€/€/€Y€q€‰€”€ª€¾€×€ï€�%�'�8�U�l�s�k…R| $ÞæÞæüæ ááá"á*á2á:á@áXágáqátátá~á„áŠáŠáŽá–á�á¥á­á±á·á¿áÆáÎáÖáÚáàáëáñáþá
ç ç:çRç]çyçyçyç†ç¡ç£ç£ç£ç°çËçÍçÍçÛçèçèèè%èSæd®Û®ÛÈÛÑÛñÛñÛ÷ÛÿÛÜÜÜÜ*Ü*ÜDÜIÜIÜOÜTÜTÜZÜ_Ü_ÜeÜjÜj܂ܕܛܠܠܩÜÉÜÉÜÉÜÐÜÒÜÒÜÙÜÛÜÛÜáÜáÜèÜêÜêÜðÜðÜ÷ÜùÜùÜÿÜÿÜÝÝÝÝÝ"Ý"Ý"Ý"Ý.Ý6Ý>ÝFÝNÝVÝ^ÝdÝ|݋ݕݘݘݢݨݮݮݲݺÝÁÝÅÝÍÝÕÝÛÝãÝêÝòÝúÝþÝÞÞÞ"Þ.Þ4Þ<Þ@ÞGÞOÞWÞ[ÞaÞiÞpÞxÞ€Þ„ÞŠÞ•ÞšÞ°ÞÁÞÆÞÉÞoßTL”£@†@†Y†[†b†x†ˆ†Ž†¦†¾†Á†Ó†‡UÔ*[nïnï‚ï—ï¦ïªï¸ïÁïÐïÐïßïêïõïððð.ðEðKðPðTðgðgð}ðð‰ð­ð¸ðºðÓð×ðåðêðêðñðñññ…ñV$[[9["[C[K[WPÍÝžDžD¿D¬DáDÎDðDÿDEEE E*E*ELEREX,>Ö>ÖGÖMÖUÖ^ÖgÖlÖY„¾�¾�ß�ô���B�O�a���‘�‘�ž�ž�¥�¸��Æ�Æ�Ñ�Û�á�ç�ê�ø�ÿ�‘‘!‘6‘;‘F‘Q‘k‘…‘–‘œ‘¢‘©‘Ç‘¯‘БÖ‘Ü‘ä‘’ì‘ ’’’!’!’(’F’.’O’U’[’c’ƒ’k’Œ’’’˜’ ’ ’ ’¶’¶’¶’¶’Á’Ë’Ô’ô’“““'“;“@“@“K“S“^“g“s“‡“—“¬“Á“Þ“ã“ã“î“ö“”””-”J”_”t””„”„”�”¥”º”Ɣהܔ픕• ••$•)•)•8•=•=•L•Q•Q•b•g•g•x•}•}•�•Ÿ•¤•¤•·•ƕ˕ٕ˕í•ò•–ò•––'––;–@–N–@–b–g–g–„–‰–«–°–¾–°–Ò–×–×–ô–ù–— —.— —B—G—G—d—i—‹—�—ž—�—²—·—·—Ô—Ù—û—˜˜˜"˜'˜'˜B˜G˜G˜b˜g˜g˜‚˜‡˜‡˜¢˜§˜§˜˜ǘǘâ˜ç˜ç˜™™™"™'™'™8™=™=™N™S™S™_™j™™„™„™�™©™®™Ô™Û™å™ê™û™šš%š*š;šFšNšSšSšWš[šbšlšvšvš‰šŽšŽšŽš’š«š´š´šÚšßšßšçšûš››+›6›A›L›^›j›s›x›x›x›‰›¦›±›»›Æ›Ë›Ö›Þ›ã›ã›î›ö›ÿ› ââââ#â+â3â7â=âEâLâTâ\â`âfâqâvâŒâ�â¢â¥âJãm`b!b!k!r!†!š!Ÿ!½!Â!à!â!"""-"6"8"L"\"�"n�2ÒX”X”n””�”¡”²”Ô֔ޔì”
œœ2œJœ^œcœcœnœ�œ‹œ–œ·œÜԜٜêœîœóœóœ����&�6�E�b�w�Œ�—�œ�§�¯�´�¿�Ï�Þ�û�ž%ž%ž%ž%ž*ž/ž/ž;žLžLžqžsž�ž�žšž®ž¸žºžÆžΞëžüžŸŸ4ŸEŸVŸgŸrŸŠŸšŸŸŸŸŸªŸ¯Ÿ¯Ÿ·ŸŸÇŸÇŸÏŸÚŸߟߟ矠ñŸïŸ  % % - N 7 5 f k  k — œ œ © ® ® ¶ » » Í ß ä ä ø ä ¡¡¡¡"¡"¡5¡:¡:¡M¡R¡R¡l¡|¡�¡�¡›¡«¡°¡°¡Ê¡Ú¡ß¡ß¡ù¡ ¢¢%¢¢=¢B¢B¢M¢R¢Ž¢|¢j¢R¢¦¢«¢ç¢Õ¢â«¢ÿ¢£££#£(£(£7£G£L£L£[£i£n£–£„£n£®£³£Û£É£³£ó£ø£ ¤¤ø£8¤=¤=¤Z¤D¤„¤”¤™¤™¤´¤ ¤Þ¤î¤ó¤ó¤ÿ¤¥¥¥¥¥(¥8¥=¥=¥P¥`¥e¥e¥x¥ˆ¥�¥�¥ ¥°¥µ¥µ¥½¥Â¥Â¥Ê¥Ï¥Ï¥×¥Ü¥Ü¥ä¥é¥é¥ü¥¦¦¦¦g¦U¦C¦1¦¦t¦y¦Ǧµ¦£¦‘¦y¦Ô¦Ù¦Ù¦è¦§§§§4§9§9§J§X§]§]§e§j§j§r§w§w§§„§„§¼§ª§˜§‹§Û§ö§û§û§3¨!¨¨¨R¨m¨r¨§¨•¨Ѝr¨¿¨Ĩù¨ç¨ܨĨ©©0©©©H©M©j©T©M©‚©‡©‡©“©¬©¼©Í©Í©ò©ô© •••(•=•=•P•a•g•|•—•—•£•«•³•¹•Ε֕ڕâ•ð•ö•û•û•–%–,–4–<–B–e–x–„–ˆ–’–«–±–³–À––ԖԖۖã–õ–õ–&—4—G—K—U—Y—e—i—u—y—…—‰—‰—Ÿ—²—¸—¼—Æ—Ê—Ù—Ý—ì—𗘘˜˜˜˜,˜9˜A˜X˜h˜v˜�˜—˜¤˜³˜»˜È˜ã˜ó˜™™™™™™$™,™2™G™V™k™|™Œ™’™’™’™¤™ª™¶™¼™É™ä™ô™ššš%š3šUšá›oÔ¼íPmPmbmsm~m‰m¢m´mÌmÑmàmçmômûm nnnnnn"n<nVnln„n‰n˜nŸn¬nÃnánènênínòno3o?op$hm&& &4&;&U&qxKe×R×RÿRëRS)SS8S=SDSLSSS^SiSqSyS„S�S¥SšS½SÅSrJ‡wsws“sšs²sÊsÔsßsßsäsïsûstt$t4t;tAtVtktktt‡t—t¤t³tÀtÑtâtðtþtu u u5u5uIuVuguwu€u‘u‘u—u¥u¶uÃuÓu5vs8³½PPƒPˆP�PžP¬PµPºP¿PÁPt88Bj0j0~0‚0‡0’0œ0Ÿ0£0«0u0ˆ�ŸNŸNµNÈNÕNÛNÞNæNvÜt††¨³¾Ç×éïõû%25=OUZ}�”š±·ÇÍÙçìú!*:<CHPo}‰£ÂÉÓâèîôú1EQhs‚�Ÿ¬¼Êáíò.ENT_dj�Œ™  ®½¿ÍÜîîö$Xw`-Aï†ï†‡‡‡"‡1‡P‡T‡Z‡p‡�‡�‡�‡À‡®‡�‡߇é‡xD‡ÔŸãŸã±ã¹ãÄãÊãÐãÔãØãää äää%ä)äPäTäYäYä`äcähätä…ä‰äšä¬ä°ä²äÄäÈäääèäíäíäåååå#åIåTåXå]å“å¬å·å»åÌå×åÛåÝåèåìåìåææææææ)æ-æ-æ-æ1æSæyˆÕóWæWækæ�æ�æ�æƒæƒæŠæŒæŒæ“æ•æ•æ¢æ¤æ¤æ±æ¸æºæºæÇæÎæÐæÐæèæíæíæýæz°0X \ \7\?\J\®\”\‰\o\X\´\Æ\¶\æ\æ\ý\ñ\/]4]@]U]B]d]j]q]•]„]x]¬]®]Ê]Ê]Ñ]û]û]û]^{ÄL¹.û.ûLûWûbûˆûˆûŠû—û¢û¨û¹ûÈû×ûäûäûêûïûôû
ªªª-ª:ªkªœªŠª¿ªǪǪǪÓªتتëªöª«««« « «9«>«>«F«K«_«K«n«y«~«’«~«¡«¬«±«±«¼«Í«Ò«Ò«Ý«è«í«í«þ«¬¬¬¬¬3¬>¬C¬N¬C¬]¬b¬v¬b¬…¬Ь•¬Ь¤¬©¬½¬©¬̬ѬѬå¬Ѭô¬ô¬ô¬ù¬­ù¬­­­)­­<­A­A­M­A­`­e­e­q­e­„­‰­�­‰­¬­¸­íέÓ­ç­Ó­ö­® ®®®1®®H®@®Q®V®V®^®c®c®l®q®q®z®®®ˆ®�®�®˜®�®�®¨®­®­®¸®½®½®È®Í®Í®Ø®Ý®Ý®è®í®í®ø®ý®¯ý® ¯+¯6¯A¯F¯F¯P¯U¯U¯_¯d¯d¯n¯s¯s¯}¯‚¯‚¯Н�¯�¯œ¯¡¯¡¯®¯³¯³¯³¯³¯³¯»¯À¯À¯ȯͯͯÕ¯Ú¯Ú¯â¯ç¯ç¯ï¯ô¯°ô¯°(°-°-°4°?°_°d°z°…°ž°а­°¸°ðȰȰϰÚ°ú°ÿ°± ±9±%±H±S±^±c±c±j±u±•±š±°±»±Ô±À±ã±î±ù±þ±þ±²²(²H²M²c²n²‡²s²ª²–²¹²IJɲɲä²вó²³³.³9³R³>³u³a³„³�³”³”³¯³›³¾³Þ³ã³ù³´´ ´@´,´O´Z´_´_´n´s´s´‚´‡´‡´‡´�´’´’´’´œ´ž´ž´¨´¯´Ò´Ô´Ô´Þ´Þ´Þ´Þ´Þ´à´à´÷´þ´ µ µµµ!µ,µ7µBµ<µ]µzµoµ’µ’µ µšµƵ»µÞµÞµÞµçµîµ'¶'¶F¶Q¶h¶ˆ¶ˆ¶ˆ¶©¶¹¶ζà¶ð¶ð¶··+·=·=·A·F·M·]·|·|·€·—·ž·£·£·§·²·¾·Ì·ù·¸¸!¸T¸`¸e¸{¸“¸Ÿ¸°¸µ¸Ƹ帹<¹?¹O¹Q¹Q¹U¹t¹¹¹‚¹“¹Ĺç¹ç¹ê¹¼Z, nÖnÖ|Ö‚Ö†Ö�Ö˜ÖžÖ[`BV··ä‡ò‡ù‡ý‡ ˆ%ˆ)ˆ/ˆEˆbˆdˆdˆ•ˆƒˆdˆ´ˆ¾ˆ\8 üü(ü,ü>üKüSü^üZüuüƒüƒüƒüŽü©ü”ü±üÄüÆüâüÎüêüøüøüúüýýý#ý,ý3ý6ýXýlý_ýtýzýƒýƒýƒý–ý›ý›ý£ý£ý®ýÃýÌýÌýÌýÌýèýÿýþ
žZžZ¿Z¬ZÎZÙZäZïZúZ[ []\’     + 3 > I T V l l ~ Š “ – Å ^øª¤ÎìÎìóìøìí1í1í<íIígíoíœí¡íÊíêíî îî3îYî^î‡î¤îÊîáîçîëîï ïï"ï*ïIïOïSïlïtï“ï˜ï©ï±ïÐïÕïÝïãïçïëïýïð
ð(ð-ð:ð?ð?ðLðdðsð€ð ð ð·ð¼ð¼ðÓðÕðÕðéðëðëðññññññ4ñ4ñIñNñNñ]ñ]ñ–ñ¯ñ¯ñÂñÇñÇñÇñÇñöñò*ò*ò*ò7òNòPòPòPò]òtòvòvòƒòšòšò±ò³òÎòêòêòêòîòðòðòðòõò÷ò÷òüòüòó ó ó'ó'ó'ó/ó4ó4ó4ó<óAóAóIóIóKóuówó—ó·ó·ó·ó·ó·óÑóÔóéóðóòóûóôôôô$ô6ô6ôBôUôlôvôžô°ôÌôìô õ!õ?õdõwõ–õ¼õÕõäõúõöööOöTöTögögösö…öŠöŠöžö¼öáöôö÷9÷Z÷i÷—÷©÷³÷Õ÷×÷×÷×÷ã÷ã÷ã÷ø1ø3ø3øBøBøGøGøGøGøGø^øcøvøÅø_\
îOîOPP2P?PVPiPtP‰PvP˜P P«PÁP·PÙPßP`øA&;&;D;G;N;U;\;`;b;i;p;t;x;‹;³;Î;»;æ;ë;<<<#<2<l<q<ž<¦<«<´<À<È<Ï<ñ<÷<====I=k=q=x=x=~=�=…=–=¹=Ë=a$~ß~ß�ߨߨ߮ßb|XsþéþéêDêDêcêsêuêuêuêuê|ê„êŸê¸êºêºêºêÂêÝêßêßêéêéêëc”"†4†4¨4²4¾4Ã4Ó4Ù4î455 5.5E5M5W5f5n5{5ƒ5†5†5†5ˆ5—5¡5ª5²5µ5Ç5dôÍ8878D8G8P8V8m8„8›8¦8Ü8ü8999+9=9J9`9v9�9’9¤9©9¬9Ì9ì9ô9ü9:!:A:I:Q:S:s:{:€:…:�:�:›:›:§:§:¹:ù:;;";ed¤¹ø‹ø‹ŒŒŒ!Œ)Œ7ŒJŒVŒpŒ}Œ}Œ€ŒŽŒžŒ¸Œ¼ŒÄŒf(¸þŸ*Ÿ*µ*º*Î*ý* ++$+0+7+G+e+�+ +®+®+µ+Å+Ñ+á+ê+,,,,-,-,C,C,Y,Y,o,o,…,…,›,›,±,±,È,È,ß,ß,ö,ö, - -$-$-;-;-R-R-i-q-|-�-˜-©-¬-®-Å-Ì-/g¬÷þþ%-58CUUlsvx„••˜ ¹ÇÊÍÔØàî   e h(ÅËþ�þ�%‚‚4‚F‚N‚iC®P®PÑPæPëPóPûPQQQ Q%Q*Q2QNQTQVQXQeQeQrQgQƒQ‰Q‹Q�QšQšQšQŸQ¨Q°Q¹QÁQÃQËQÓQÛQèQîQùQRRR*RKRRR]RfRwR{RƒRƒR—R§R¯R²RSj8-7O0O0c0g0l0w0‚0…0‰0‘0kˆWõ¾ˆ¾ˆ؈óˆùˆ‰‰‰,‰1‰<‰Z‰D‰i‰|‰މ—‰Ÿ‰©‰ljÙ‰â‰ê‰ô‰Šù‰Š0Š:ŠBŠZŠDŠŠiŠŽŠ ŠªŠ²Š²Š»ŠÊÙŠòŠ‹‹‹‹‹#‹A‹C‹H‹S‹i‹i‹i‹m‹y‹š‹¤‹®‹·‹Ø‹â‹ì‹î‹î‹ ŒŒ'Œ*ŒCŒGŒbŒfŒ…Œ‰Œ¤Œ¨Œ¨Œ¨Œ®Œ¼ŒÆŒߌåŒðŒüŒþŒ� �%�0�>�H�a�d�l�x�z�‚�…�ž� �¬�®��¼�Õ�í�ù�ŽŽ(Ž8ŽQŽbŽbŽmŽxŽ�ŽœŽ±Ž¶ŽËŽÛŽôŽ�� ���,�3�E�leãvßvß�ߙ߹߹߿ßÇßÏß×ßßßåßòßòßààà àààààà!à&à&à>àQàWà\à\àeà…à…à…àŒàŽàŽà•à—à—à�à�à¤à¦à¦à¬à¬à³àµàµà»à»àÂàÂàÊàÐàÖàÞàÞàÞàÞàêàòàúàá
ááá á8áGáQáTáTá^ádájájánává}á…á�á‘á—áŸá¦á®á¶áºáÀáËáÑáÞáêáðáøáüáâ ââââ%â,â4â<â@âFâQâVâlâ}â‚â…â+ãm`�!�!˜!Ÿ!³!Ç!Ì!ê!ï! ""-"/"F"Z"c"e"y"‰"º"n�2Ò0”0”F”W”h”y”Š”›”®”¶”Ä”â”í”ó”•••(•9•?•T•o•o•{•ƒ•‹•‘•¦•®•²•º•ȕΕӕӕè•ý•– –––=–P–\–`–j–ƒ–‰–‹–˜–š–¬–¬–³–»–Í–Í–þ– — —#—-—1—=—A—M—Q—]—a—a—w—Š—�—”—ž—¢—±—µ—Ä—È—Û—ß—ß—ß—ß—ö—˜˜˜0˜@˜N˜Y˜o˜|˜‹˜“˜ ˜»˜Ë˜Û˜à˜à˜à˜à˜í˜ü˜™
™ ™.™C™T™d™j™j™j™|™‚™Ž™”™¡™¼™Ì™Ø™Þ™ë™ý™ š-š¹›oÔ¼í(m(m:mKmVmamzmŒm¤m©m¸m¿mÌmÓmámèmêmímòmômúmn.nDn\nanpnwn„n›n¹nÀnÂnÅnÊnín oop$hm?&?&M&a&h&‚&qxKe¶R¶RÞRÊRíRSôRSS#S+S2S=SHSPSXScSnS„SySœS¤SrJ‡VsVsrsys‘s©s³s¾s¾sÃsÎsÚsåsósttt t5tJtJt^tftvtƒt’tŸt°tÁtÏtÝtätêtÿtuu(u5uFuVu_upupuvu„u•u¢u²uvs8³½^P^PbPgPlP}P‹P”P™PžP Pt88B—0—0«0¯0´0¿0É0Ì0Ð0Ø0u0ˆ�~N~N”N§N´NºN½NÅNvÜtffˆ“ž§·ÉÏÕÛñà/5:]ptz‘—§­¹ÇÌÚó
#(0O]iƒ¢©³ÂÈÎÔÚð%1HSbpŒœªÁÍÒàü%.4?DJaly€€Ž�Ÿ­¼ÎÎÖù8w`-AΆΆä†ö†ý†‡‡/‡3‡9‡O‡l‡n‡n‡Ÿ‡�‡n‡¾‡ȇxD‡Ô~ã~ã�ã˜ã£ã©ã¯ã³ã·ãããããêãíãòãää/ä3ä8ä8ä?äBäGäSädähäyä‹ä�ä‘ä£ä§äÃäÇäÌäÌäàäãäñäûäå(å3å7å<årå‹å–åšå«å¶åºå¼åÇåËåËåßåãåååååðåôåæ æ æ ææ2æyˆÕó6æ6æJæ`æ`æ`æbæbæiækækærætætæ�æƒæƒæ�æ—æ™æ™æ¦æ­æ¯æ¯æÇæÌæÌæÜæz°0Xþ[þ[\\)\�\s\h\N\7\“\¥\•\Å\Å\Ü\Ð\]] ]4]!]C]I]P]t]c]W]‹]�]©]©]°]Ú]Ú]Ú]æ]{ÄL¹ûû,û7ûBûhûhûjûwû‚ûˆû™û¨û·ûÄûÄûÊûÏûÔûêûýûü üü+ü3ü>ü:üUücücücünü‰ütü‘ü¤ü¦üÂü®üÊüØüØüÚüöüöüýüý ýýý8ýLý?ýTýZýcýcýcývý{ý{ýƒýƒýŽý£ý¬ý¬ý¬ý¬ýÈýßýåýêýêýÿýþ
ş ş
þþ3þSþXþ]þ]þiþ†þ•þ¤þ¬þ±þ·þ¼þ¼þÃþÊþíþ þ þ%þ*þ*þ6þSþsþxþ}þ}þ‰þ¦þµþÄþÌþÑþ×þÜþÜþãþêþ ÿ*ÿ,ÿIÿ^ÿ^ÿdÿdÿqÿzÿzÿ˜ÿ®ÿ¹ÿ¾ÿËÿÖÿßÿçÿ÷ÿ06_hhjqvvƒŽ”��°½ÏÚèñö )49@H[pu|‰�¢·¾ÄÍÍÖð÷ü
ÿ ÿ)ÿ>ÿ>ÿDÿDÿQÿZÿZÿxÿŽÿ™ÿžÿ«ÿ¶ÿ¿ÿÇÿ×ÿîÿîÿþÿþÿ?HHJQVVcnt}}��¯ºÈÑÖ  (;PU\ip‚—ž¤­­Ð×Üêú1CFFW_gs�—¤¦­ÁÐÐÐúúú'9FQ_jy€€™¬®½ÒÔâ÷÷ý++8;FX_jow~‰Ž£¥¿ÔÔÔÖÝãô!*/S\\bkkŠŠ—𣬴¿Ñ×ââïòû )/::GJS\^€“¨®¹ËÑÙÙÙÙä] ((.5>>Qcffw‡“°·ÄÆÍáððð''<GYfqŠ™  ¹ÌÎÝòô&&39KKX[fxŠ�—ž©®ÃÅßôôôöý"44:AJOs||‚‹‹ªª·ºÃÌÔßñ÷$,7IOZZgjs|~ ³ÈÎÙëñùùùù}
|”�¾33“3—3 3£3¬3µ3Ç3Ç3ó3÷3ü3ÿ344 4"4*4-4:4B4J4R4Y4i4i4u4}`2æPæPQúPQBQ.QQQVQ]QeQlQwQQŠQ Q•Q¸QÀQ~À-°f°fÎfÞfèfèfòfòfüfggg g)g6g6gDgXgXg|g‰g‰g™g¦g¦gÉgÖgÖgëg h"hDhMhZhZh}h‡h‡hºhíhóhóhóhi¸ºäȌȌàŒâŒîŒòŒÿŒ����"�&�.�9�M�Y�[�[�d�f�f�o�q�q�z�|�|�…�…�Ž�”�—�¡�²�¸�Ä�Ä�,Ž€œø6(6(T(e(}(„( (•(¸(Ø(Ä(ç(ø(ý() |”�¾R3R3f3j3s3v33ˆ3š3š3Æ3Ê3Ï3Ò3Û3ë3ò3õ3ý34 444%4,4<4<4H4}`2QQ/QQ>QcQOQrQwQ~Q†Q�Q˜Q Q«QÁQQÙQáQ~À-ØfØföfggggg$g6gCgFgHgQg^g^glg€g€g¤g±g±gÁgÎgÎgñgþgþgh5hJhlhuh‚h‚h¥h¯h¯hâhiiii-i¸ºäðŒðŒ�
)6)S)Z)v)k)Ž)®)š)½)Î)ä)Ð)ü) * *!*!*+*�œ¢Æ2Æ2Ò2â2í23G3X3i3{3‚3‰3�3¤3²3Ê3Ù3æ3é344 ���'�*�D�D�D�J�N�V�a�u���ƒ�ƒ�Œ�Ž�Ž�—�™�™�¢�¤�¤�­�­��¼�¿�É�Ú�à�ì�ì�TŽ€œøW(W(u(†(ž(¥(Á(¶(Ù(ù(å()))?)+)W)t){)—)Œ)¯)Ï)»)Þ)ï)*ñ)*****B*B*L*�œ¢ç2ç2ó23383h3y3Š3œ3£3ª3¾3Å3Ó3ë3ú34
4!414A4E4L4‚4‚x± (°(°>°E°L°k°z°‰°˜°§°°À°À°Å°Ì°ß°î°ó°±(±(±>±P±T±b±i±n±n±u±‡±�±’± ±²±²±²±Ä±Ï±á±ì±ù±þ±²²#²/²4²A²F²V²[²k²m²}²²�²‘²¢²«²«²­²½²Ä²Ô²Ô²ï²³³%³5³5³5³8³K³ƒ\åø0Ž0ŽKŽRŽWŽeŽzŽ�Ž‹Ž™ŽœŽžŽ¨ŽºŽºŽÁŽ÷Ž„0ÎÖFF^ž’hf²º…`,Î…Î…ä…ö…ý…††/†3†9†O†l†n†n†Ÿ†�†n†¾†Ȇ†L[j>1>1L1^1d1l1~1„1�1Ÿ1¥1¨1ä1‡(–œO3O3]3l3p3s3y3ˆ\k~æ1æ1ô12 22&2,252G2M2V2h2n2q2¿2‰, ÖÖ$Ö+Ö3Ö8Ö>ÖŠ„ þþ.5<KPrrw™®›½ÌÎðððÿ3=‹`BÞgÞgûgh 4#4&4+4B4R4b4f4m4£4‚x± P°P°f°m°t°“°¢°±°À°Ï°Þ°è°è°í°ô°±±±6±P±P±f±x±|±Š±‘±–±–±�±¯±¸±º±È±Ú±Ú±Ú±ì±÷± ²²!²&²6²;²K²W²\²i²n²~²ƒ²“²•²¥²§²·²¹²Ê²Ó²Ó²Õ²å²ì²ü²ü²³)³;³M³]³]³]³`³s³ƒ\åøXŽXŽsŽzŽŽ�ޢީ޳ŽÁŽÄŽÆŽÐŽâŽâŽéŽ �„0ÎÖff~¾²ˆ†ÒÚ…`,ï…ï…†††(†7†P†T†Z†p†�†�†�†À†®†�†߆醆L[j_1_1m11…1�1Ÿ1¥1®1À1Æ1É12‡(–œ"3"303?3C3F3L3ˆ\k~222'2-252G2M2V2h2n2w2‰2�2’2à2‰, >Ö>ÖLÖSÖ[Ö`ÖfÖŠ„   =OV]lq““˜ºÏ¼Þíï <2T^‹`Bÿgÿgh$h+hPh^h`hnh{h�hŒh£h²h½hÁhÌhØhßhëhii,iCiMi[imioi}i�i�i˜i©i¯i¿i¿i×i×iüiüijj
h/h=h?hMhZh`hkh‚h‘hœh h«h·h¾hÊháhøh i"i,i:iLiNi\ininiwiˆiŽižiži¶i¶iÛiÛiàiàiéiõijj#j:jIjTjfjrj‰j¡jÂjÂjËjÐjÐjÐjÐjàjéjñjöjkk"k'k'k5k5k:k:kDkOkakgkskƒkŽk˜kœk¥k¾kÁkÑkØkökÿkÿkll.l5l;lGlOlZlalelxl~l‹l–lœl¬l¼l¼lélmmm&m-m8mHmXmXmhmmmmmwm‚m”mšm¨mµmÂmÌmÐmÙmòmõmn nnn%n%n*n.n>nGnYn_nananonun~n�n˜n¤n´n´n´n¹nÑnÑnànãn÷no oIo[ofoxo|o�oˆošoªoÅoÌoÐoÖoÞoéoøpŒ8í÷–'–'°'Å'Û'ü'é'(,(,(6(�`j~XŸXŸxŸŸ‡Ÿ’ŸœŸ§Ÿ¯Ÿ¾ŸÈŸËŸðŸòŸ   Ž_†Ù†Ù¨Ù¯Ù¶Ù»ÙÒÙäÙîÙôÙÚ ÚÚ Ú"Ú$Ú.Ú8Ú8Ú<ÚDÚLÚTÚ^ÚgÚoÚrÚ{Ú–Ú§Ú®Ú±Ú¶ÚÅÚËÚÓÚÓÚÚÚÝÚâÚñÚ÷ÚÿÚÿÚ ÛÛÛ$Û/Û7Û7ÛBÛVÛ]ÛdÛ{Û�83=öÖöÖÿÖÿÖ ×× ×"×'×�8>H.×.×7×7×E×I×P×S×XבDDQF0F0`0s0}0„0�0¨0±0µ0Ç0Í0ì0’Ä{¨ÆÿÆÿðÿóÿúÿÿÿ $+ATcikrx‚‚–˜Ÿ¥¯¯¯ÆØßîð+“0RZî0î0÷01.14141<1”„\y†ñ†ñ˜ñ­ñ·ñÀñÂñÉñÙñäñæñðñðñùñ jj#j/jDj[jjjuj‡j“jªjÂjãjãjìjñjñjñjñjk
ò ò ò1ò<ò>òWò^òbòqò„ò×ò•  kkk%k3kCkHkHkVkVk[k[kekpk‚kˆk”k¤k¯k¹k½kÆkßkâkòkùkl l l/l?lOlVl\lhlpl{l‚l†l™lŸl¬l·l½lÍlÝlÝl
>/>/G/d/i/–hú6e6eLeWebepe{e„e•eže¯eµeÁeØeØeêeûeff"f(fvf—„a~ŽKŽK¾KÄKÍKÙKáKèKìKõKõKúKLLCLHLlLtLvLŽL¦LÊLéLûL˜lò îî &HJl�n£�²²ÄËííõ™ y}€Š€Š‰Š•ŠšŠš(A^ç^ç€çˆçŽç–ç˜ç˜ç©ç©ç©ç±ç¹çËçÚçËçïçñçñç è è èèè7è<è<è<èQèSè`èbèoèqè~è†èŽè•è¤è±è³èÄèÑèÑèÑèÚèìèÿèé éééé1é1é1é<éFé^écécécéqéwé|é„é�é¡é¬é±é±é¸é¼éÊéÎé×éÞéüé êêê5ê:ê:ê:ê:êBêMê[ê[ê{ê{ê{ê‚ê�êŸê²êÅêÇêÇêÇêÚêÚêáêèêíêóêëë+ëUë[ë[ëoëtë˜ëŸë«ëÉëÜëçëîëòëòëòëòëýëìì7ìBì_ìiìiìwì•ìÅìØìéìííííí í+í=íHíMíMíMí_í‰í�í�í�íší¤í°í»í½í½í½íÂíÎíÎíî›H%¯/¯/½/Ä/Ï/Ü/ç/ï/ï/0000œ0 vOvO�OŠO¬OÈO¾OàOèO�LÝì†&†& &µ&Ë&ì&Ù&' '4'U'B'm'…'…'�'žð·þLþL3M<MHMPM[MzMzM„M†M¡M‰M°M°M¾MÈMÏMïMñM NNN.N.NUNZNyN’N¯N²NºNÁNáNãNýNOO O O=O=OdOvOŸTVg®®ÄÑ×Ýîü m(m4m<mGmNmYmimymym‰mŽmŽm˜m£mµm»mÉmÖmãmímñmúmnn&n-n2n2nFnFnKnOn_nhnzn€n‚n‚n�n–nŸn°n¹nÅnÕnÕnÕnÚnònònooo6oAojo|o‡o™o�o¢o©o»oËoæoíoño÷oÿo
 &47A 0 pqŒ8í÷·'·'Ñ'æ'ü'(
Röö%F2iUx„‰•¥¬¹ÄÐÛãèôù #(3LUafz�……Š£¨ÁÖèíø0;EPR]eeuj�­¡àZŽ˜d˜d²dÀdÅdÒdàdédee7e@ePekeve†eˆeŠe”e e¤e±e½eÏe×eïeóeóeóeóeøef0f0f7f:fBfNfWf­f¢d1.*.*L*d*u*|*˜*�*°*Ð*¼*ß*ð*+ò*+++++C+C+M+£ü!\>>Vhs †z¯ÐåÒô)FFFXuuªÁµóø ÿ3!Bc{h–о¬Íêêêü:Acck¤(nänä|äŸä¥äªäªä°ä¥(!'žÖžÖ§ÖµÖ»Ö½ÖÂÖ¦D]j<9<9V9]9f9r9‡9�9•9›9�9�9¬9§„¼Ù¸©¸©ë©÷©û©ª ªªªª"ª&ª.ª3ª7ªHªYª[ª_ªpª�ª�ª£ª«ª¶ª¶ª¶ªÈª¨€À›À›Ù›à›ç›î›ô›œœœ$œ;œ>œ@œ[œeœoœvœ�œ“œ›œ›œ±œ±œÃœ© Ê ¦W¦WÌWéWñWüW XXX4XJXcXiXqXtX‰XŽX XÂXÈXÐXÕXÛXÞXôXýXÿX!Y)Y>YCYRYtYzYYYYŒY�Y¨YµYÁYÔYáYîYZZ#Z%Z<ZPZUZ`ZgZŠZŠZŠZœZª°)¢¢3¢@¢E¢I¢R¢a¢m¢x¢ƒ¢‹¢–¢ž¢¡¢­¢µ¢Ï¢õ¢ï¢££C£/£S£S£k£v£’£™£½£ö£ö£ö£ö£W¤«˜‹-þ·þ·¸"¸*¸5¸L¸V¸V¸m¸w¸’¸¨¸¶¸º¸Ú¸î¸¹ ¹ ¹&¹0¹A¹N¹N¹U¹\¹a¹f¹k¹r¹y¹“¹š¹ª¹®¹®¹¸¹Î¹Ò¹Ò¹ã¹ö¹ º ººº!º)º4º;ºCºNºUºUº`º~º‚ºšº‹ºµºµº»ºÂºÑºÛºéºðºôºöº»»»»"»H»V»V»Z»o»w»‡»’»§»¬»º»É»Ó»á»ì»ð»õ»ý»¼¼¼!¼#¼2¼4¼C¼J¼N¼b¼l¼z¼�¼…¼•¼ ¼¥¼Ã¼Í¼Û¼â¼æ¼ð¼þ¼½ ½½'½/½:½>½>½>½I½T½d½p½†½Ž½™½¨½°½»½À½È½Ó½ß½ã½î½ó½¾¾¾¾¾¾7¾T¾`¾h¾x¾ˆ¾¦¾ª¾Ù¾Î¾¿¾é¾é¾ó¾ú¾ ¿¿"¿0¿7¿;¿=¿L¿V¿d¿k¿o¿o¿q¿ƒ¿ƒ¿•¿•¿•¿§¿¹¿Á¿Ù¿ÀÀÀ5À<ÀCÀNÀdÀiÀpÀƒÀ�À›À¢À¦À¨À»ÀÅÀÓÀÚÀÞÀÞÀÞÀÞÀìÀ÷ÀÁÁÁ)Á-Á-Á2Á:Á>ÁMÁOÁ^Á`ÁoÁqÁ€Á‡Á‹ÁŸÁ©Á·Á¾ÁÂÁÒÁÝÁâÁ (5(M(M(W(�`j~€Ÿ€Ÿ Ÿ§Ÿ¯ŸºŸÄŸÏŸ×ŸæŸðŸóŸ  * * 8 Ž_§Ù§ÙÉÙÐÙ×ÙÜÙóÙÚÚÚ'Ú,Ú8Ú@ÚCÚEÚOÚYÚYÚ]ÚeÚmÚuÚÚˆÚ�ړڜڷÚÈÚÏÚÒÚ×ÚæÚìÚôÚôÚûÚþÚÛÛÛ Û Û.Û1Û6ÛEÛPÛXÛXÛcÛwÛ~Û…ÛœÛ�83=××'×'×5×9×G×J×O×�8>HV×V×_×_×m×q×x×{׀בDDQg0g0�0”0ž0¥0±0É0Ò0Ö0è0î0 1’Ä{¨çÿçÿ &(-33ELbu„ŠŒ“™££·¹ÀÆÐÐÐçù'::L“0RZ111>1O1U1U1]1”„\y¦ñ¦ñ¸ñÍñ×ñàñâñéñùñòòòòò*ò-ò-òQò\ò^òwò~ò‚ò‘ò¤ò÷ò• 
 Â#Â-Â;ÂBÂFÂPÂdÂlÂwÂ{Â{Â{†Â�›µÂÅÂÐÂåÂêÂõÂÃÃ'Ã/Ã:ÃIÃQÃ\ÃaÃiÃtÀÄÃ�ÔèðûûûûÃÏÃßÃôÃÄÄÄ*Ä?ÄLÄPÄ^ÄsăĚijÄÌÄÎÄÙÄáÄáÄêÄÅÅ/ÅHÅVÅaÅmÅuÅwłŊŊŊŧŵÅÃÅÚÅñÅÆ Æ-Æ4Æ4ÆDÆXÆrÆrÆvƌƛƶÆÁÆØÆàÆàÆÇÇÇ3Ç<ÇSÇmÇ|ljǩǷÇÍÇéÇùÇÈÈ)È)È5ÈPÈhÈqÈqÈqÈ}ȎȦȯȯȶȿÈÅÈÑÈ0ɬ<ùDøŽøŽ�)�4�>�D�N�T�^�l�v�ˆ�’�˜�¢�¨�²�¹�Å�Ë�Ô�ÿ�����/�9�K�U�j�j�m�w�Œ�‘�¡�¬�±�Å�Ç�Ø�û�û�‘‘(‘1‘9‘G‘X‘h‘y‘†‘†‘“‘“‘›‘©‘ð‘­$› >O>OROZOeOkO®l£:†E†EŸE·EÇEçEùEF,F,FVF^FbFeFiFnFxF{F‚FˆF�F•F™FžF¨F¹FÀFÇFÉFÍFÖFàFãFîFúFýFGG G&G/GHGYGbGkGsG~G‰G•G¦G·GÃGÑGÓGÚGáGæGêG÷GþG!H/H9HCHLHeHvHHˆH�H™HŸH£H¨H¬H¹HÀHÎHØHíH÷HII*I3I<IDIMISIWI\IbIlIvI•I£I©I®I¶I¾IÆIÓIÛIúIíIJJ3JGJZJaJjJsJzJƒJŒJ•J®JžJ¾JÂJK¯  x‡x‡†‡¨‡®‡°¸�·§'§'µ'º'õ'÷',(W(W(g(l(l(€(…(…(¡(¦(¦(Æ(Ë(Ë(ß(ä(ä()))3)Y)y)‹)�)¯)¿)¿)¿)¿)Æ)Ÿ*±$bg÷%÷%û%&%&?&²ƒžÁžÁ°Á¿Á¿ÁÂÁËÁ×Á×ÁíÁ Â0ÂPÂbÂhÂw€„Š“©­ÂÊÂèÂúÂÃÃ!Ã-Ã/Ã;ÃCÃGÃMÃVÃVÃVÃhÃsÃyÃ�ÖÞôûûûÃÉÃðÃùÃÄÄÄ$Ä/Ä5ÄKÄRÄZÄaÄvććĎĎĎĜÄÃÄÐÄÙÄáÄóÄûÄÅÅÅÅ$Å(Å4ÅLÅTÅZÅiÅrÅvÅ~ŇŇŕÅ�Å£ÅÀÅÉÅÑÅ×ÅÝÅÝÅÝÅäÅëÅúÅÆÆÆÆÆÆ³xnØnØ|ؘؑأعØãØÿØÙÙ$Ù3Ù<ÙDÙLÙNÙTÙZÙiÙqÙwÙyÙÙ´¤Ôyîcîcdd)d1dUdldpdxd€d†d�d›d£d£d«dÛdeõd=eBeJeZe\eŠe�e™e e¨e°e¼eÄeÌeßeçeìeöeff f)f8fXf_faf�fˆfˆfˆf‘f˜f±f·f¿f¿fÄfÈfÔfÝfæfòfg#gQgTgpg}g‘g«g¯gÎgÜgèghhhLhOhOhkhxhŒh¦h®h²h½hÅhÕh×hiii i"iPiViVi`i`ikiœi¤i¤i¤i¤i­i¹iÏièiûijjjj(j,j,j,j3j8jKjRj^jejejj�j†j™j j¬j³j³jÀjÊjÊjÏjòjòjkµà˜Ì.B.BCBaBNB–B|BpB¥B´B¼BÇBÉBÔBßBßBäBCCSCkCXC�CzC¡CœC½CÌCÔCßCáCìC÷C÷CüCD D@D@DGDLDnDpD’D’D’DšD\æùFdFd\dndtdd�d™d°d°dÂdÈdÓdãdîdüd e5e·ÛÜÎÎìÿ !(,,4MWWkv„•™ž²¿ÃÈÎëëù  . ? C C C H S ] d w { € ” œ ¥ © « ² Ä Ô ë í      1 5 > B G M j j x � ” ­ ¾  Ô Ô Ô Ù è  !.!9!?!U!f!k!v!Š!Ž!—!›!�!£!¼!¼!Ê!á!ã!ü! """"+"/"A"F"Z"b"k"o"t"{"‘"¡"¸"½"Ö"é"í"ÿ"ÿ"ÿ"ÿ"#&#5#Y#d#j#€#‘#‘#‘#˜#«#Ä#Ä#Ä#Ó#Ó#æ#ý#$$$$$.$0$<$<$C$N$c$e$p$…$‘$“$ž$ª$º$Á$È$Ò$Ú$Þ$â$ä$é$ñ$õ$% %%%%%%%%2%H%h%‚%�%œ%£%£%¶%º%º%º%Á%Æ%à%î%ú%&&&&"&<&J&V&]&]&j&t&t&†&¸˜ »�HIHIeItItItI‘I‘I¢I¢I¨IªIªI°I²I²I¸IºIºIÁIÅIÊIÊIÊIÊIÊIÊIÒIêIêIÿI ^/^/g/„/‰/–húWeWemexeƒe‘eœe¥e¶e¿eÐeÖeâeùeùe ff)f2fCfIf—f—„a~¯K¯KßKåKîKúKL L LLLL"L:LdLiL�L•L—L¯LÇLëL
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 MM˜lò '9@Gik�¢�ıÓÓåì™ y}¨Š¨Š±Š½ŠÂŠš(A~ç~ç ç¨ç®ç¶ç¸ç¸çÉçÉçÉçÑçÙçëçúçëçèèè+è-è-è8è=èWè\è\è\èqèsè€è‚è�è‘èžè¦è®èµèÄèÑèÓèäèñèñèñèúè é é%é-é/é<é<éQéQéQé\éfé~éƒéƒéƒé‘é—éœé¤é¯éÁéÌéÑéÑéØéÜéêéîé÷éþéê)ê0ê9êUêZêZêZêZêbêmê{ê{ê›ê›ê›ê¢ê°ê¿êÒêåêçêçêçêúêúêëë ëë%ë/ëKëuë{ë{ë�ë”ë¸ë¿ëËëéëüëììììììì'ì5ìWìbìì‰ì‰ì—ìµìåìøì í í3í8í8í8í@íKí]íhímímímíí©í¯í¯í¯íºíÄíÐíÛíÝíÝíÝíâíîíîí8î›H%‚/‚/�/—/¢/¯/º/Â/Â/Ú/ä/ê/ð/œ0 —O—O¾O«OÍOéOßOP P�LÝì§&§&Á&Ö&ì& 'ú&%'*'U'v'c'Ž'¦'¦'°'žð· M MTM]MiMqM|M›M›M¥M§MÂMªMÑMÑMßMéMðMNN,N3N3NONONvN{NšN³NÐNÓNÛNâNOOO%O%OAOAO^O^O…O—OŸTVgÎÎäñ÷ý*<@FTWa 0
SSS&S,S.S9SKSaSaSuS…S—SœS¨S®S±SÈSÊSÍSÝSçSêSêSùST"T'T3T9T<TSTUTXThTlTtT‚T‡TŒTŒT’TšTŸTŸT¥T¥T³T¹T¿TÉTÓTáTöTùTûTUUUUUUUU$U,U1U1U6UAUFUKUVU[U�UƒUˆU�U’U—UœU¡U¦U¦U«U°UÌUÖUêUþUV V VV V&V0V:VHV]V`VbVlV{V€V€V€VˆV�V–V–V›V›V¡V©V®V®V³V¾VÃVÈVÍVÜVÜVíVóVóVWW WW!W/WDWGWIWSWbWgWgWgWoWtW}W‚W‚WˆW�W•W•WšW¥WªW¯W´WÃWÃWÔWÚWÚWèWîWôWþWXX+X.X0X:XIXNXNXNXVX[XdXiXiXoXwX|X|X‰X�X�X�X£X©X³X½XËXàXãXåXïXþXYYY YYYYY$Y,Y1Y1Y>YDYDYRYXY^YhYrY€Y•Y˜YšY¤Y³Y¸Y¸Y¸YÀYÅYÎYÓYÓYÝYåYêYêYêYðYúYZZZZ Z)Z/Z4Z4Z=ZKZTZbZgZgZpZ~ZŠZ›Z¨Z¯Z·ZÁZÏZÏZÔZÔZßZßZßZãZèZèZïZóZøZ[[[[ [([-[3[3[;[D[R[][b[h[p[u[u[u[u[u[u[u[u[u[u[Ž[”[�[£[«[°[µ[¾[É[Ò[Ú[ß[ß[ß[å[í[ò[ò[ö[û[û[\\\'\-\-\6\L\L\R\[\q\q\z\|\‚\‹\¡\¡\ª\ª\ª\³\¸\¸\À\Å\Å\â\ð\ü\]]]]]]]2];]A]S]]]]]e]e]m]o]o]ˆ]’]›]�]�]�]£]§]©]©]©]©]®]´]º]¾]7a¹Ìz©kk(k3kIkekrk‰kœk§k½k©kÌkÔkÔkãkãkëk÷k l"l1l<lOlUlUlUlZl_lnlyl“l•lšl©l´lÁlËlËlÙlº”*KX¤X¤p¤w¤~¤�¤Š¤�¤�¤”¤™¤»¤¨¤Ë¤Ó¤Û¤Þ¤à¤ð¤ù¤¥¥ ¥¥:¥K¥V¥ˆ¥»à.¢–A–A´A¿AÐAÓA×AàAçAõABB+B<BNB`BoB~B�BžBžB¬B°B´B¹B½BÊBÑBßBóBüBCC)C+C/C9C9C>C>C>CCCCCRC[CcCyCyCyC~C~C–C¢C­C²C²CµCºCºCÙCåCòCôCôCøCúCúCD%D1D3D3D6D8D8DEDGDGDJDJDSDYD^DzDzDzDzDzDzDzDzDzDzDzDzD|D�DŸD®D½D½DÁDÁDÉDâDæDëD†E¼,îÕîÕüÕÖ ÖÖÖ½l3JÆQÆQÜQöQâQR*RR9R>RERERKRNRRRZRrR}R“RˆR«RµR¾PQa%%%+%2%B%S%X%u%{%‚%‰%—%£%µ%ñ%¿D+¶ä¶äÊäØäÞäåå å2å8å>åDåDåLåÀô#œÎ5Î5Ö5å5é5ö566&6C6P6b6„6¬6º6Ö6è677"7C7a7p7‹7–7±7Ê7Ê7å78(8C8U8d8s8s8~8‘8¢8µ8Å8Ò8Þ8í8 RF;gSŠv™¥ªÆÍÚåñü .59DITmv‚‡›¢¦¦«ÄÉâ÷ !!!#<Q\fqs~††–‹®Î¡àZŽÀdÀdÚdèdídúdee,e:e_ehexe“eže®e°e²e¼eÈeÌeÙeåe÷eÿefffff f>fXfXf_fbfjfvffÕf¢d1O*O*m*…*–*�*¹*®*Ñ*ñ*Ý*++'++?+L+L+d+d+n+£ü!\__w‰”Á§›Ðñó;!Jgggy––ËâÖ, TBc„œ‰·«ßÍî   ::[b„„Œ¤(ŽäŽäœä¿äÅäÊäÊäÐä¥(!'ÆÖÆÖÏÖÝÖãÖåÖêÖ¦D]j99*919:9F9[9c9i9o9q9q9�9§„¼Ùà©à©ª ª#ª+ª3ª7ªBªFªJªNªVª[ª_ªpª�ªƒª‡ª˜ª©ª¸ªËªÓªÞªÞªÞªðª¨€è›è›œœœœœ,œ7œAœLœcœfœhœƒœ�œ—œžœ©œ»œÃœÃœÙœÙœëœ© Ê ÇWÇWíW
9 XXX-X6X:XUXkX„XŠX’X•XªX¯XÁXãXéXñXöXüXÿXYY YBYJY_YdYsY•Y›Y Y Y Y­Y¾YÉYÖYâYõYZZ&Z:ZDZFZ]ZqZvZ�ZˆZ«Z«Z«Z½Zª°)8¢8¢[¢h¢m¢q¢z¢‰¢•¢ ¢«¢³¢¾¢Æ¢É¢Õ¢Ý¢÷¢££-£6£k£W£{£{£“£ž£º£Á£å£¤¤¤¤¤«˜‹-&¸&¸C¸J¸R¸]¸t¸~¸~¸•¸Ÿ¸º¸Ð¸Þ¸â¸¹¹*¹1¹5¹N¹X¹i¹v¹v¹}¹„¹‰¹Ž¹“¹š¹¡¹»¹Â¹Ò¹Ö¹Ö¹à¹ö¹ú¹ú¹ ºº1º1º7ºBºIºQº\ºcºkºvº}º}ºˆº¦ºªºÂº³ºÝºÝºãºêºùº»»»»»0»0»0»B»J»p»~»~»‚»—»Ÿ»¯»º»Ï»Ô»â»ñ»û» ¼¼¼¼%¼)¼8¼:¼I¼K¼Z¼\¼k¼r¼v¼Š¼”¼¢¼©¼­¼½¼È¼Í¼ë¼õ¼½
9999#90979V9_9p9t9|9‡9Ÿ9·9À9Ð9Ø9Ý9::!:,:@:E:M:s:u:€:³:Í:Í:å:ô:ü: ;;;.;P;X;`;k;m;};•;­;Å;Ý;ï;<<<*<8<<<@<Á °‡°‡¹‡Ø‡Ý‡Â\ˆ[–̷̖̰ÌÄÌÏÌÔÌÚÌìÌòÌ ½½½&½-½1½;½O½W½b½f½f½f½q½|½Œ½˜½®½¶½Á½Ð½Ø½ã½è½ð½û½¾ ¾¾¾/¾7¾B¾B¾B¾B¾_¾|¾ˆ¾�¾ ¾°¾Î¾Ò¾¿ö¾ç¾¿¿¿"¿1¿@¿J¿X¿_¿c¿e¿t¿~¿Œ¿“¿—¿—¿™¿«¿«¿½¿½¿½¿Ï¿á¿é¿À-À;À?À]ÀdÀkÀvÀŒÀ‘À˜À«ÀµÀÃÀÊÀÎÀÐÀãÀíÀûÀÁÁÁÁÁÁ Á.Á8ÁFÁQÁUÁUÁZÁbÁfÁuÁwÁ†ÁˆÁ—Á™Á¨Á¯Á³ÁÇÁÑÁßÁæÁêÁúÁÂ
ÍÍ.ÍDÍOÍUÍwÍw͇ͭ͜͞͡͵ͽÍÅÍÓÍÙÍâÍîÍîÍðÍÎÎ Î Î$Î$ÎBÎBÎUÎbÎgÎgÎ~·ΖάηÎÅÎÐÎàÎíÎÿÎÏÏÏ(Ï*Ï*Ï2Ï7Ï7Ï?ÏDÏDÏLÏQÏQÏYÏ^Ï^ÏdÏiÏiÏpÏuÏuÏ|Ï�Ï�όϑϑϜϡϡϬϱϱϼϼÏ×ÏÞÏäÏçÏòÏõÏ ÐÐ%Ð,Ð/ÐAÐCÐIÐ]ÐjÐyÐyÐyÐyЃÐ�вÐÄÐÕÐÞÐïÐõÐúÐÑÑ(Ñ7Ñ=ÑNÑYÑcÑsтшѓљѮѴÑÅÑÐÑÖÑæÑæÑöÑ ÒÒÒ-Ò4Ò:ÒKÒVÒ[ÒxÒ�Ò›Ò«Ò·ÒÉÒÔÒãÒåÒ÷ÒÿÒÓ ÓÓÓ'Ó-Ó7Ó=ÓHÓNÓPÓ]ÓjÓtÓ�Ó›Ó›Ó¡Ó¨ÓìÕÃD#°ø«ø«¬9¬A¬A¬O¬b¬|¬¬ˆ¬¤¬¤¬¤¬¬¬®¬®¬¶¬¸¬¸¬À¬Â¬Â¬Ê¬Ê¬Ó¬Ù¬Þ¬Þ¬ç¬ö¬ú¬ÿ¬­ Â(Â2Â@ÂGÂKÂUÂcÂjÂnÂxŒ”Ÿ£££®µÂÃÂÝÂíÂøÂ ÃÃÃ-Ã9ÃOÃWÃbÃqÃyÄÉÑÜèì÷üÃÐÃØÃãÃãÃãÃãÃ÷ÃÄÄ)Ä-ÄAÄRÄgÄtÄxĆěīÄÂÄÛÄôÄöÄÅ Å ÅÅ/Å@ÅWÅpÅ~ʼnŕÅ�şŪŲŲŲÅÏÅÝÅëÅÆÆ(Æ5ÆUÆ\Æ\ÆlƀƚƚƞƴÆÃÆÞÆéÆÇÇÇ-Ç-Ç@Ç[ÇdÇ{ǕǤDZÇÑÇßÇõÇÈ!È9È9ÈQÈQÈ]ÈxÈ�șșșȥȶÈÎÈ×È×ÈÞÈçÈíÈùÈXɬ<ùD � �E�Q�\�f�l�v�|�†�”�ž�°�º�À�Ê�Ð�Ú�á�í�ó�ü�'�6�9�;�E�W�a�s�}�’�’�•�Ÿ�´�¹�É�Ô�Ù�í�ï�‘#‘#‘-‘B‘P‘Y‘a‘o‘€‘�‘¡‘®‘®‘»‘»‘Ñё’­$› _O_OsO{O†OŒO®l£:§E§EÀEØEèEFF2FMFMFwFFƒF†FŠF�F™FœF£F©F°F¶FºF¿FÉFÚFáFèFêFîF÷FGGGGG/G:G@GGGPGiGzGƒGŒG”GŸGªG¶GÇGØGäGòGôGûGHH HH HBHPHZHdHmH†H—H H©H±HºHÀHÄHÉHÍHÚHáHïHùHII!I:IKITI]IeInItIxI}IƒI�I—I¶IÄIÊIÏI×IßIçIôIüIJJ0J9JTJhJ{J‚J‹J”J›J¤J­J¶JÏJ¿JßJãJ=K¯   ‡ ‡®‡Ð‡Ö‡°¸�·z'z'ˆ'�'È'Ê'ÿ'*(*(:(?(?(S(X(X(t(y(y(™(ž(ž(²(·(·(Ô(Ô(â(),)L)^)p)‚)’)’)’)’)™)r*±$bgÊ%Ê%Î%æ%ø%&²ƒ¿Á¿ÁÑÁàÁàÁãÁìÁøÁøÁÂ$Â6Â=ÂAÂQÂqƒ‰˜¡¥«´ÂÊÂÎÂë ÃÃ!Ã0ÃBÃNÃPÃ\ÃdÃhÃnÃwÃwÃwÉÔÚð÷ÿÃÕÃÜÃÜÃÜÃêÃÄÄ"Ä4Ä<ÄEÄPÄVÄlÄsÄ{ĂėĨĨįįįĽÄäÄñÄúÄÅÅÅ%Å%Å0Å7ÅEÅIÅUÅmÅuÅ{ŊœŗşŨŨŶžÅÄÅáÅêÅòÅøÅþÅþÅþÅÆ ÆÆ#Æ)Æ/Æ/Æ1Æ;Ƴx�Ø�Ø�زعØÄØÚØÙ Ù'Ù?ÙEÙTÙ]ÙeÙmÙoÙuÙ{يْ٘ٚ٠ٴ¤Ôydd2d:dJdRdvd�d‘d™d¡d§d°d¼dÄdÄdÌdüd;ee^eceke{e}e«e±eºeÁeÉeÑeÝeåeíeff ff7f>f@fJfYfyf€f‚f¢f©f©f©f²f¹fÒfØfàfàfåféfõfþfgg6gDgrgug‘gžg²gÌgÐgïgýg h7h=h?hmhphphŒh™h­hÇhÏhÓhÞhæhöhøh&i)i1iAiCiqiwiwi�i�iŒi½iÅiÅiÅiÅiÎiÚiði jj#j/j6j6jIjMjMjMjTjYjljsjj†j†j j¢j§jºjÁjÍjÔjÔjájëjëjðjkk%kµà˜ÌOBOBdB‚BoB·B�B‘BÆBÕBÝBèBêBõBCCC:C?CtCŒCyC®C›CÂC½CÞCíCõCDD DDDD>D@DaDaDhDmD�D‘D³D³D³D»D\æùgdgd}d�d•d d®dºdÑdÑdãdédôdeee*eVe·ÛÜïï  '.59;BIMMUnxxŒ—¥º¿Ó×àäéï   1 6 O ` d d d i t ~ … ˜ œ ¡ µ ½ Æ Ê Ì Ó å õ   ' : > > > R V _ c h n ‹ ‹ ™ ° µ Î ß ã õ õ õ ú  !-!O!Z!`!v!‡!Œ!—!«!¯!¸!¼!¾!Ä!Ý!Ý!ë!"""."2"2"9"L"P"b"g"{"ƒ"Œ"�"•"œ"²"Â"Ù"Þ"÷"
­ ## # # # #%#G#V#z#…#‹#¡#²#²#²#¹#Ì#å#å#å#ô#ô#$$)$:$?$E$O$Q$]$]$d$o$„$†$‘$¦$²$´$¿$Ë$Û$â$é$ó$û$ÿ$%%
­ %%%(%*%/%7%;%=%=%F%S%i%‰%£%±%½%Ä%Ä%×%Û%Û%Û%â%ç%&&&"&"&<&>&C&]&k&w&~&~&‹&•&•&§&¸  ¿£PIPImI|I|I|I™I™IªIªI°I²I²I¸IºIºIÀIÂIÂIÉIÍIÒIÒIÒIÒIÒIÒIÚIòIòIJJJ)JAJCJbJdJƒJˆJ§J¬J²J²JËJÎJõJKK:K:KCKHKfKTKlK{K€K‡K�K£K«K³K¸K¸K¸KÁKÚKàKàKùKL$L=L?LGLMLULZLZL`L`LiLzL|L‘L“L›L¡L©L®L®L®L®L¼LÓLÕLéLéLñL÷LÿLM MMM$M*M,M,M,M4M4MBMYM]M_MkMmMˆMŽM–M›M¤M¯M³M¹M½MÆMÉMÉM×MèMêMN/N5N=NBNKNPNPNUNWN_N_NzNŒN‘N�N£N¦N½N¿NÂNÒNÖNÝNæNõNO OOOO#O#O+O8OPOUO_O‡O’O�O¨O³O¾OÉOÔOßOêOêOêOòOûOP"P?PXPZP`PbPePpPrPrPxP~P~P†P�P•P¡P¡P¨P«PÊPÕPÝPåPêPêPñPõPúP QQQ%Q%Q2QYQYQbQpQ�Q�Q”Q¢Q±QÇQÍQÒQÒQ×QíQùQRRR$R2R9R;RDRDRNR\RhRR•R¬R²R´RËRÐRÐRðRðRSSSS S.S3S3SJSPSRS]SoS…S…S™S©S»SÀSÌSÒSÕSìSîSñST TTTT4TFTKTWT]T`TwTyT|TŒT�T˜T¦T«T°T°T¶T¾TÃTÃTÉTÉT×TÝTãTíT÷TUUU U)U)U+U3U8U=UBUBUHUPUUUUUZUeUjUoUzUU¥U§U¬U±U¶U»UÀUÅUÊUÊUÏUÔUðUúUV"V(V0V0V>VDVJVTV^VlV�V„V†V�VŸV¤V¤V¤V¬V±VºVºV¿V¿VÅVÍVÒVÒV×VâVçVìVñVWWWWW%W+W1W;WEWSWhWkWmWwW†W‹W‹W‹W“W˜W¡W¦W¦W¬W´W¹W¹W¾WÉWÎWÓWØWçWçWøWþWþW XXX"X,X:XOXRXTX^XmXrXrXrXzXXˆX�X�X“X›X X X­X³X³XÁXÇXÍX×XáXïXYY YY"Y'Y'Y'Y/Y4Y=YBYBYHYPYUYUYbYhYhYvY|Y‚YŒY–Y¤Y¹Y¼Y¾YÈY×YÜYÜYÜYäYéYòY÷Y÷YZ ZZZZZZ$Z8Z=Z=ZCZMZSZXZXZaZoZxZ†Z‹Z‹Z”Z¢Z®Z¿ZÌZÓZÛZåZóZóZøZøZ[[[[ [ [[[[$[*[,[5[D[L[Q[W[W[_[h[v[�[†[Œ[”[™[™[™[™[™[™[™[™[™[™[²[¸[Á[Ç[Ï[Ô[Ù[â[í[ö[þ[\\\ \\\\\ \ \(\6\B\K\Q\Q\Z\p\p\v\\•\•\ž\ \¦\¯\Å\Å\Î\Î\Î\×\Ü\Ü\ä\é\é\]] ]%]+]5]=]B]B]B]V]_]e]w]�]�]‰]‰]‘]“]“]¬]¶]¿]Á]Á]Á]Ç]Ë]Í]Í]Í]Í]Ò]Ø]Þ]â][a¹Ìz©'k'kIkTkjk†k“kªk½kÈkÞkÊkíkõkõkll ll.lClRl]lplvlvlvl{l€l�lšl´l¶l»lÊlÕlâlìlìlúlº”*K€¤€¤˜¤Ÿ¤¦¤©¤²¤µ¤¸¤¼¤Á¤ã¤Ð¤ó¤û¤¥¥¥¥!¥*¥0¥3¥D¥b¥s¥~¥°¥»à.¢·A·AÕAàAñAôAøABBB%B;BLB]BoB�B�BŸB°B¿B¿BÍBÑBÕBÚBÞBëBòBCCC#C1CJCLCPCZCZC_C_C_CdCdCsC|C„CšCšCšCŸCŸC·CÃCÎCÓCÓCÖCÛCÛCúCDDDDDDD:DFDRDTDTDWDYDYDfDhDhDkDkDtDzDD›D›D›D›D›D›D›D›D›D›D›D›D�D®DÀDÏDÞDÞDâDâDêDEE E§E¼,ÖÖ$Ö+Ö3Ö8Ö>Ö½l3JçQçQýQRR&RKR7RZR_RfRfRlRoRsR{R“RžR´R©RÌRÖR¾PQaâ$â$ð$þ$%%&%+%H%N%U%\%j%v%ˆ%Ä%¿D+ÖäÖäêäøäþä!å'å-åRåXå^ådådålåÀô#œï5ï5÷56
­ 66$686G6d6q6ƒ6¥6Í6Û6÷6 7!787C7d7‚7‘7¬7·7Ò7ë7ë78/8I8d8v8…8”8”8Ÿ8²8Ã8Ö8æ8ó8ÿ89+9+9393939D9Q9X9w9€9‘9•9�9¨9À9Ø9á9ñ9ù9þ9":2:B:M:a:f:n:”:–:¡:Ô:î:î:;;;,;5;=;O;q;y;�;Œ;Ž;ž;¶;Î;æ;þ;<'<0<9<K<Y<]<a<Á ؇؇ᇈˆÂ\ˆ[¾Ì¾ÌØÌßÌìÌ÷ÌüÌÍÍÍ2Í8ÍVÍlÍwÍ}ͯ͟͟ÍÄÍÆÍÉÍÕÍÝÍåÍíÍûÍÎ
­­­!­&­&­+­8­Q­p­s­‰­¨­¨­¨­°­²­²­²­º­¼­¼­¼­Ä­Æ­Æ­Æ­Î­Ð­Ð­Û­Û­á­æ­æ­æ­æ­í­ø­ ÎÎÎÎ*Î0Î5Î5ÎLÎLÎjÎjÎ}ΊÎ�Î�ΦίξÎÔÎßÎíÎøÎÏÏ'Ï-Ï7ÏCÏPÏRÏRÏZÏ_Ï_ÏgÏlÏlÏtÏyÏyÏ�φφόϑϑϘÏ�Ï�ϤϩϩϴϹϹÏÄÏÉÏÉÏÔÏÙÏÙÏäÏäÏÿÏÐ ÐÐÐÐ1Ð>ÐMÐTÐWÐiÐkÐqЅВССССЫÐÅÐÚÐìÐýÐÑÑÑ"Ñ-Ñ?ÑPÑ_ÑeÑvÑ�ыћѪѰѻÑÁÑÖÑÜÑíÑøÑþÑÒÒÒ1Ò=ÒEÒUÒ\ÒbÒsÒ~ÒƒÒ ÒµÒÃÒÓÒßÒñÒüÒ Ó Ó Ó'Ó,Ó3Ó7ÓEÓOÓUÓ_ÓeÓpÓvÓxӅӒӜӵÓÃÓÃÓÉÓÐÓÖÃD#° ¬ ¬?¬a¬i¬i¬w¬Š¬¤¬§¬°¬Ì¬Ì¬Ì¬Ô¬Ö¬Ö¬Þ¬à¬à¬è¬ê¬ê¬ò¬ò¬û¬­­­­­"­'­-­2­2­2­2­:­C­I­N­N­S­`­y­˜­›­±­Ð­Ð­Ð­Ø­Ú­Ú­Ú­â­ä­ä­ä­ì­î­î­î­ö­ø­ø­®® ®®®®®® ®2®@®N®X®X®X®h®h®o®s®y®‘®Ÿ®²®¿®è®ë®ô®û®¯¯ ¯+¯+¯6¯<¯A¯A¯A¯H¯N¯c¯k¯q¯|¯“¯ª¯¶¯¼¯Á¯Á¯È¯Ó¯Ó¯Ø¯ê¯ð¯ð¯ð¯ð¯L°Äd*CC*C4C7C7CACTCVCcCeCpC„CŒCœC¡C§C¯C²CÄCÅLWf11.12171B1B1L1R1R1V1^1Æ\CV²0²0È0È0Ì0Ñ0ä0ç0ì0ì0ö0ü0ü0
®®&®0®0®0®@®@®G®K®Q®i®w®Š®—®À®Ã®Ì®Ó®ç®ï®ø®¯¯¯¯¯¯¯ ¯&¯;¯C¯I¯T¯k¯‚¯Ž¯”¯™¯™¯ ¯«¯«¯°¯Â¯È¯È¯È¯È¯$°Äd*,C,CNCXC[C[CeCxCzC‡C‰C”C¨C°CÀCÅCËCÓCÖCèCÅLWfG1G1[1_1d1o1o1y111ƒ1‹1Æ\CVß0ß0õ0õ0ù0þ01111#1)1)17191C1Ç8(2ÆÖÆÖÏÖÏÖÝÖáÖèÖëÖðÖȨYæ]æ]þ]^^$^^V^º^ ^•^{^d^À^Õ^Å^õ^ú^__1__@_F_F_M_w_¢_…_¹_×_×_×_ã_ÉlF]n,n,ˆ,±,“,À,à,ü,ò,-,--;-T-t-†-Ÿ-Ÿ-¦-È-È-Ò-Ê4Š“¾ë¾ëÒë×ëÝëáëåëì ìËxÌæN‚N‚y‚f‚ˆ‚’‚™‚¯‚´‚¹‚½‚¿‚ł˂á‚΂ð‚ ƒƒ#ƒFƒ<ƒUƒaƒÌ”"ȪȪ֪èªìªôªüª«««%«0«5«K«R«Y«d«o«q«|«‡«‰«•« «««´«¼«¼«À«÷«Í€ÚöO5O5m5q5u5}5‹5Ž5‘5§5­5¯5Á5Å5É5Ñ5Ù5å5ú5 6666&6;6ÎÞ`VEVE†E‘EE˜EÐEF F FFF0F?FAFIFkFŒFžF«FÆFÚFßFùFGG 1 11Ç8(2îÖîÖ÷Ö÷Ö× ××××ȨY^^ ^'^2^E^9^w^Û^Á^^œ^…^á^ö^æ^__8_=_R_?_a_g_g_n_˜_Ã_¦_Ú_ø_ø_ø_`ÉlF]�,�,©,Ò,´,á,---5-M-:-\-u-•-§-À-À-Ç-é-é-ó-Ê4Š“ßëßëóëøëþëìì%ì-ìËxÌæo‚o‚š‚‡‚©‚³‚º‚ЂÕ‚Ú‚Þ‚à‚æ‚삃*ƒ2ƒDƒgƒ]ƒvƒ‚ƒÌ”"ðªðªþª«««$«/«:«B«M«X«]«s«z«�«Œ«—«™«¤«¯«±«½«È«Ó«Ü«ä«ä«è« ¬Í€Úö"5"5@5D5H5P5^5a5d5z5€5‚5”5˜5œ5¤5¬5¸5Í5Þ5å5ì5ì5ù56ÎÞ`wEwE§E²E×E¹EñE'F,F,F/F9FQF`FbFjFŒF­F¿FÌFçFûFGG$G&G+GBGiG{GˆG£GÃG¹GÝGãGãGìG HHHH8H"HGHGHYHYHgHqHœH’H¶H¶H»H¾HÔHàHõHI#I)I9IaIPIpIrI„I˜I¬I¢IÁIÇIÖIþIíI JJ!J+J?JIJRJiJsJuJ‰J“J“J²J¸J¸J¸JÁJáJ KøJKK/K7KbKXKwKwKwK�K�K¯KÏ`8Ìo1o1¦1­1µ1¾1É1Ð1è1í1ð1ó1ü1
G!GHGZGgG‚G¢G˜G¼GÂGÂGËGëG÷GúGüGHH&H&H8H8HFHPH{HqH•H•HšH�H³H¿HÔHøHIII@I/IOIQIcIwI‹I�I I¦IµIÝIÌIìIîIJ 222A2F2S22„2‘2±2¶2Å2ñ2ù2þ23?3G3L3L3_3r3†3Š3¬3½3Â3Â3î3î3î3î3î344 4"4%4%4R4W4`4m4u4�4§4µ4À4Ü4Ü4Ü4é455555&5(5(555L5L5\5a5ˆ5Ÿ5±5Í5Í5Í5Ú5ñ5ó5ó5ó56666&6=6=6M6U6Z6z6‘6£6¿6¿6¿6Ì6ã6å6å6ò6 7 77 7-7O7m7r7€7Ž7˜7š7š7š7·7¿7Á7Á7é7/8Ф%JGèGèaè�è�è¬è¼èÁèÁèÐèâèüèé éé+é3é3é3é5é5é5é5éQéQéQéQéhéjéjéjéjé…é�éÅéÑÐ燃‡ƒ�ƒ©ƒ®ƒ®ƒºƒ¿ƒăσÔƒÔƒÔƒ „öƒ„?„?„X„q„Š„£„¨„¨„Á„Ú„ó„ ………*…C…\…u…w…w…�…©…Â…Û…Û…Û…í…Ò0�‰ëë�ë“ë—ë¶ë×ë×ëÝëÓ<:E888&848@8L8U8^8g8m8r8ÔluŒª&ª&¸&Â&É&à&à&å&ç&ó&ý& '('*':':'?'A'H'z'ÕÈŸÍWtWtkt•tŠtvtµtçtÍtÀtuu"u0u?uVusuÌu´u uÒuÝu vvv5v=vbvWvCvuvŽvzv±v�vÈvÏvûvûvûvûvwÖL^m÷-÷-.'...P.P.b.o..u.—.¡.×$qv§M§M»MÃMÎMÔMØÈg•b1b1†1Š1©1Ë1×1Þ1é1÷12 2 22242?2O2[2b2m2~2€2‘2“2•2•2•2�2�2§2§2¯2·2¿2Ç2Ë2Ö2"3Ù H‡H‡V‡m‡s‡Ú`FZr8r8‚8‰8‹8�8Ÿ8¥8º8º8È8È8Ô8Ý8à8î8ø8û89Û<ög�g�p�{�†�‘�œ�¦�Ä�Ï�ß�Ü 5—f—f¯fÁfÇfÓfÞfìføfgg*g<gBgHgNgagggpgvgˆgŽg™g¡g¯g¼gùgÝ,29ß/ß/í/þ/0+0.040Þ4ˆˆˆ ˆ)ˆ0ˆ7ˆAˆAˆGˆßÄMz¯ý¯ýÛýÞýãýðýõýþ þ þþþ'þ@þfþoþzþ�þšþÀþÅþÞþÿ ÿÿ)ÿOÿQÿjÿ�ÿ�ÿ�ÿ¨ÿÂÿÑÿãÿà ˆÇ7v7vUvXv^vrvzv‹v˜vžv£v£v°v¹v¿vÏvÝvßvþvww%w5w5wCwVwawewvwvwvw{w{w‡w–w©w¯w´wÈwÎwÖwèwîwðwÿw xxxx#x)x0x<xCxExJxRxTxYxexgxlxtxvx{xƒx…xŠx’x”x™x¡x¡x¡x±x±x±xÈxÎxÔxßxäxýxyyy y$y*yCyNyYy_ylyqyvyvy‹y“y�y¥y­yÎyÙyäyðyêyùyzz z!z(z1z=zCzOzSzXz]zhzsz~z€z†z“z˜z�z¶zÁzÌzÌzÒzßzázæzïz{{{${1{1{5{:{:{K{M{M{`{b{b{u{w{w{Š{Œ{Œ{Ÿ{¡{¡{³{³{¹{¾{¾{Õ{é{Þ{ö{þ{| ||&|1|(|A|A|C|[|^|`|o|�|‘|�|´|Î|Ó|ç|÷|
JJ(J1JHJRJTJhJrJrJ‘J—J—J—J JÀJèJ×J÷JüJKKAK7KVKVKVK|K|KŽKÏ`8ÌN1N1…1Œ1”1�1¨1¯1Ç1Ì1Ï1Ò1Û1é1ó1ø1 2%222^2c2p2�2•2¤2Ð2Ø2Ý2ò23&3+3+3>3Q3e3i3‹3œ3¡3¡3Í3Í3Í3Í3Í3á3ù3þ34441464?4L4T4o4†4”4Ÿ4»4»4»4È4ß4á4á4á4î45555+5+5;5@5g5~5�5¬5¬5¬5¹5Ð5Ò5Ò5Ò5ß5ö5ø5ø5666,64696Y6p6‚6ž6ž6ž6«6Â6Ä6Ä6Ñ6è6è6ü6þ6 7.7L7Q7_7m7w7y7y7y7–7ž7 7 7È78Ф%J&è&è@èlèlè‹è›è è è¯èÁèÛèãèêèïè }}}},}>}I}Q}Y}]}k}q}v}v}|}�} }¥}¥}«}±}¶}¶}¶}¼}Ë}Þ}ë}ï}ô}ô}ø}ý}ý}~ ~~3~I~U~U~[~h~j~w~ƒ~’~¥~¥~²~¾~¾~¾~¾~Â~Ç~Ø~ê~õ~ý~,;ANNeuu‰•— ¬ÃÃÉÖØêêõõõõõq‚á „È/U/UMU[UrUwUœU¢U§U­U»UÂUÑUÖUâUôUôUVV0V7VQVnVzV•V­VÉVÒVáVéVöVÿVWW"WBWGWOWhWzWŠW�W›W¤WªWðWÚWËWX;X%XXKXNXsXYâ<+6ÈCÈCéCïCøC
éééééééé0é0é0é0éGéIéIéIéIédéoé¤éÑÐçfƒfƒ|ƒˆƒ�ƒ�ƒ™ƒžƒ£ƒ®ƒ³ƒ³ƒ³ƒèƒÕƒ÷ƒ„„7„P„i„‚„‡„‡„ „¹„Ò„ë„ð„ð„ …"…;…T…V…V…o…ˆ…¡…º…º…º…Ì…Ò0�‰^ë^ëlërëvë•ë¶ë¶ë¼ëÓ<:E?8?8H8S8a8m8y8‚8‹8”8š8Ÿ8ÔluŒ×&×&å&ï&ö& ' ''' '*'8'U'W'g'g'l'n'u'§'ÕÈŸÍ6t6tJtttitUt”tÆt¬tŸtñtötuuu5uRu«u“uu±u¼uèuíuõuvvAv6v"vTvmvYv�v|v§v®vÚvÚvÚvÚvâvÖL^mÖ-Ö-ô-. ././.A.N.^.T.v.€.×$qv†M†MšM¢M­M³MØÈg•�1�1³1·1Ö1ø12 22$212:2:2?2I2a2l2|2ˆ2�2š2«2­2¾2À2Â2Â2Â2Ê2Ê2Ô2Ô2Ü2ä2ì2ô2ø23O3Ù  ‡ ‡.‡E‡K‡Ú`FZŸ8Ÿ8¯8¶8¸8½8Ì8Ò8ç8ç8õ8õ89 D#D+DEDQDã„ |† † ¨ ³ º  Å Å Õ à à ã ê ñ ÷ ý  
9 99%9(909Û<öF�F�O�Z�e�p�{�…�£�®�¾�Ü 5vfvfŽf f¦f²f½fËf×fîfùf gg!g'g-g@gFgOgUgggmgxg€gŽg›gØgÝ,29¾/¾/Ì/Ý/ö/  ! ! # , 8 > c g j z ‚ ‡ ‡ Ž — ¨ ® ·  Ó Ó Ü á ë ò ù !! !!.!1!@!M!Z!Z!Z!Z!`!r!{!Œ!­!¾!Ö!Ý!ç!ï!ö!ö!ÿ!""""-"-"-"A"U"e"h"##ä„9ê6ê677767c7y7Š7“7¡7³7Ì7Ì7Þ7ø7888åX{Í^^‰“¦±ÃÑ×èï÷ (=MWYiy‚ˆ�”𠦱¼¿Æàè$'/3ET[c~›Ÿ¨¯ÁÉÐÔÝßñ "///1HNN`æ 
0 00Þ4à‡à‡î‡ø‡ˆˆˆˆˆ ˆßÄMzŽýŽýºý½ýÂýÏýÔýæýèýìýðýóýþ þEþNþYþ`þyþŸþ¤þ½þãþèþïþÿ.ÿ0ÿIÿoÿoÿoÿ‡ÿ¡ÿ°ÿÂÿà ˆÇvv4v7v=vQvYvjvwv}v‚v‚v�v˜vžv®v¼v¾vÝvñvøvwww"w5w@wDwUwUwUwZwZwfwuwˆwŽw“w§w­wµwÇwÍwÏwÞwëwñw÷wüwxxxx"x$x)x1x3x8xDxFxKxSxUxZxbxdxixqxsxxx€x€x€x�x�x�x§x­x³x¾xÃxÜxâxíxõxÿxy y"y-y8y>yKyPyUyUyjyry|y„yŒy­y¸yÃyÏyÉyØyáyæyëyzzzz"z.z2z7z<zGzRz]z_zezrzwz|z•z z«z«z±z¾zÀzÅzÎzçzòzýz{{{{{{*{,{,{?{A{A{T{V{V{i{k{k{~{€{€{’{’{˜{�{�{´{È{½{Õ{Ý{ä{ê{ò{||| | |"|:|=|?|N|`|p|||“|­|²|Æ|Ö|é|î|î|÷| }}(}0}8}<}J}P}U}U}[}o}}„}„}Š}�}•}•}•}›}ª}½}Ê}Î}Ó}Ó}×}Ü}Ü}á}ì}ø}~(~4~4~:~G~I~V~b~q~„~„~‘~�~�~�~�~¡~¦~·~É~Ô~Ü~ä~æ~ø~ý~  --DTThtv‹¢¢¨µ·ÉÉÔÔÔÔÔP‚á „ÈUU,U:UQUVU{U�U†UŒUšU¡U°UµUÁUÓUÓUñUüUVV0VMVYVtVŒV¨V±VÀVÈVÕVÞVãVóVW!W&W.WGWYWiWoWzWƒW‰WÏW¹WªWßWXXõW*X-XRXáXâ<+6ìCìC DDD.DGDODiDuDã„ |f f ˆ “ š ¢ ¥ ¥ µ À À à Ê Ñ × Ý ã ê ð       C G J Z b g g n w ˆ Ž — ¢ ³ ³ ¼ Á Ë Ò Ù á ç é ÷ !! !-!:!:!:!:!@!R![!l!�!ž!¶!½!Ç!Ï!Ö!Ö!ß!æ!ò!" " " "!"5"E"H"#ä„97737B7I7c7�7¦7·7À7Î7à7ù7ù7 8%8-808<8åX{Í>>is†‘£±·ÈÏ×íõ-79IYbhmtz€†‘œŸ¦ÀÈâ÷%4;C^{ˆ�¡©°´½¿Ñèöü(..@æ  x‡x‡�‡•‡š‡ç¤ŸÄ‡€‡€£€©€»€À€Æ€É€Í€Í€ð€õ€"��1�J�6�Y�o�[�~�†�‹�‘�”�˜�š�³�Ÿ�Â�Â�Â�Ý� ‚‚è˜Ìîââëææúõ ""11@@OO^^m�|‹‹š©¸#éxËå7c7cUcgcmcyc�c�c¢c¨c³cÃcÏcØcÞcäcïcýc
P‡P‡Y‡m‡r‡ç¤ŸÄf€f€‚€ˆ€š€Ÿ€¥€¨€¬€¬€Ï€Ô€�í€�)��8�N�:�]�e�j�p�s�w�y�’�~�¡�¡�¡�¼�ë�÷�è˜Íï'"61@OO^^mm||‹‹š®©¸¸ÇÖåPéxËåcc4cFcLcXcococ�c‡c’c¢c®c·c½cÃcÎcÜcécõcdddBdêd”©ììì%ì%ì?ìFìRìRìiìiì€ì€ì—ì—ì®ì®ìÅìÇìÇìËìëÌÂñ>>`grˆˆš¥¹½ÂÆÈÎàì+///BWWcis~Œ“¢¤½××éìP7G|D|D’DžD¦DªD»DÉDÏDÛDãDîDôD÷DEí ®-þ<þ<=#='=0=7=>=T=e=v=ˆ=š=©=¸=É=Ø=Ø=ß=ã=ì=ù=> >>>4>4>4>4>4>@>D>G>O>]>e>r>z>‚>“>ž>£>£>°>¶>Å>Ü>Þ>é>ö>?? dd$d3d3dcdêd”©/ì/ì3ìFìFì`ìgìsìsìŠìŠì¡ì¡ì¸ì¸ìÏìÏìæìèìèìììëÌÂñ__�ˆ“©©»ÆÚÞãçéï "$=LPPPcxx„Š”Ÿ­´ÃÅÞøø
???5?7?E?G?R?X?X?`?`?r?y?�?�?�?”?”?¬?º?Å?Ê?Ê?Í?Ò?Ò?ñ?ÿ? @@@@@@3@A@M@O@O@R@T@T@a@c@c@f@f@f@f@f@o@u@y@…@¥@²@À@Ç@�Aî(rxPŠPŠ^ŠeŠuŠxŠ~Šï(nt‡&‡&�&š&«&¶&¶&Ô&ðTzKÞòÞòüòóóóó0ó@óIóOóRóVóXópó€ó�ó“ó—ó�óŸó¢ó¦ó¦óÉóÍóÓóÓóÚóüóô$ô7ô=ôDôOôYô]ô`ôgômôqôwôˆôŽô“ô˜ô¥ô§ô¹ô»ôÂôÏôÑôãôãôãôãôãôõõõ5õ5õJõVõsõ—õ±õ¶õÍõÒõàõ÷õüõöö(ö.ö>öKö_öföröŠö–ö–ö–öœöŸö¢ö»öÁöÕöÛöàöëöëöðöýö ìP7GXDXDnDzD‚D†D—D¥D«D·D¿DÊDÐDÓDÝDí ®- = =9=D=H=Q=X=_=u=†=—=©=»=Ê=Ù=ê=ù=ù=>> >>!>*>1>5>U>U>U>U>U>a>e>h>p>~>†>“>›>£>´>¿>Ä>Ä>Ñ>×>æ>ý>ÿ>
÷ ??"?%?+?'???V?X?f?h?s?y?y?�?�?“?š?°?°?°?µ?µ?Í?Û?æ?ë?ë?î?ó?ó?@ @-@/@/@3@5@5@T@b@n@p@p@s@u@u@‚@„@„@‡@‡@‡@‡@‡@�@–@š@¦@Æ@Ó@á@è@°Aî(rxxŠxІŠ�Š�РЦŠï(ntZ&Z&c&m&~&‰&‰&§&ðTzKþòþòó"ó%ó.ó8óPó`óióoóróvóxó�ó ó­ó³ó·ó½ó¿óÂóÆóÆóéóíóóóóóúóô1ôDôWô]ôdôoôyô}ô€ô‡ô�ô‘ô—ô¨ô®ô³ô¸ôÅôÇôÙôÛôâôïôñôõõõõõ'õ2õ>õUõUõjõvõ“õ·õÑõÖõíõòõööö"ö3öHöNö^ököö†ö’öªö¶ö¶ö¶ö¼ö¿öÂöÛöáöõöûö÷ ÷ ÷÷÷*÷*÷0÷>÷U÷[÷^÷a÷h÷q÷x÷x÷}÷Š÷—÷—÷�÷«÷Â÷È÷Ë÷Î÷Õ÷Õ÷æ÷í÷ú÷øøøø ø%ø,ø7øKøKøeøjøqøyø€ø�ø”ø�øµøºøÁøãøîøôøüøù)ù)ùDùDù^ùlùsùzùœù¯ùÓùÕùßùúúúú&ú7úPúTú)ûñÀ€¬`` `#`(`7`B`N`o`P`~`ƒ`ƒ`¨`Ù`¼`¯`ü`a*a/a;a\a=akapa‰a�a³aÉaÉaïaïaûaò ././=/V/\/ó4‘šçNçNÿN"O/O5O;O>O_Oô8 â.â.ð.÷./
÷÷÷5÷;÷>÷A÷H÷Q÷X÷X÷]÷j÷w÷w÷}÷‹÷¢÷¨÷«÷®÷µ÷µ÷Æ÷Í÷Ú÷ç÷ç÷î÷ø÷ÿ÷ø øø+ø+øEøJøQøYø`øpøtø}ø•øšø¡øÃøÎøÔøÜøõø ù ù$ù$ù>ùLùSùZù|ù�ù³ùµù¿ùáùáùáùúùúú0ú4ú ûñÀ€¬æ_æ_þ_```!`-`N`/`]`b`b`‡`¸`›`Ž`Û`à` aaa;aaJaOahaoa’a¨a¨aÎaÎaÚaò ///6/</ó4‘šÆNÆNÞNOOOOO>Oô8 ///$///7/>/D/J/J/P/õ :>00 0(0-0öÎPævævww w5wRwaw…w³w¹w¿wÇwÉwÑwæwéwôwxx3xBxfx”xšx x¨x­xµxÊxÍxØxäxéxïxõxýxy yy5yCyqywy|y„y”yºyèyîyóyóyzzz7zOz[zczqzqzvz‰z z¢z¿z×zãzëzùzùzþz{{({?{V{o{�{Ž{°{Ç{Þ{ì{î{|||%|1|G|`|s|~|‘|•|•|•|œ|¡|´|¿|Ù|Û|à|ó|þ| }}}'}÷˜k ¬9¬9Â9Î9Î9ä9ï9ñ9::::":&:*:-:-:6:::P:P:†:’:¤:´:Ë:Ð:Ó:Ø:Ø:Ø:ô:û:;;;;;8;D;L;Q;Q;m;z;‚;‡;‡;£;¯;¸;À;È;Ô;ê;õ;<<*<2<7<7<S<m<w<ƒ<‹<�<�<¯<»<Í<Ò<î<ú< ===*=/=/=/=/=2=7=7=7=V=b=t=v=y=~=~=~=ˆ=�=—=Ÿ=¨=³=¹=Æ=Ô=Ô=Þ=ç=ï=$>*>1>@>Z>_>_>r>z>z>|>|>|>�>�>ˆ>Ž>’>™>�>�>�>�>¬>¬>Ñ>Ú>Ú>Þ>ùBø(üBüB /////#/õ :>7070A0I0N0öÎPww%w5w@wVwsw‚w¦wÔwÚwàwèwêwòwx
CC!C'Cù�ªÊÞlÞlülmm&m;mImTmcmimimimnmsm�mŒm¥m§m¬mºmÅmÒmÙmçmú\2EN+N+h+�+o+œ+¸+®+Ð+å+Ò+ô+ , ,8,8,?,a,a,k,û8fpMMM-MAMPMVM\M_M€Mü0�—H‹H‹\‹h‹v‹y‹‘‹”‹œ‹ý0S[Ž×Ž×¢×ª×·×Á×Ô×þP>NȈȈԈèˆëˆÿˆ‰ ‰‰ ‰'‰*‰0‰ÿT¡²nOnOˆO›OžO¨OµOÊOÌOÞOèOüOüOPPYP<˜£ ‹ ‹´‹»‹Ç‹Ó‹ã‹è‹ë‹ï‹÷‹ 26NåNå\åhåH!/Ž[Ž[¢[®[Ä[°[Ó[Õ[Ü[ç[ó[û[ DƒSSBSISNSVSpSyS{SˆSˆSŠS¤SªS¬S®S»S»S»S»S¿SÎS×SßSèSðS÷SýSÿST T1TDTJT^TcTpTpT„T‹T’T›T©T²TÕTÛTßTäTéTìTöTùT Uläû.ã.ãBãXãfãqãuã|ã€ã‰ã˜ãšãšã®ã°ã¹ã¿ã¿ã¿ã¿ãÇã´KtEE6EGELESE]E]EeExE|E�E–E˜E›EŸE¦EºE¾EÆEÒEÙEÝEåEçEïEýEFF xx!x7xTxcx‡xµx»xÁxÉxÎxÖxëxîxùxy
F#F+F3FAFEFSF %I–q–q¦q²q¾qÎqæqìqúq rrr3r`rzr‡r”r¤rªr¬r½rßrærìrúrss#s)s/sRsôB»ii"i%i,i7iFiHiSibibioi}i€i‚i‚i‡iŒi•i i¦i¯iÂiÇiÜiçiñiñijj4jHj_jejjjqjwj~jƒjƒj‰j�j”j”j§jµjÍjÓjØjìjöjýjýjk5k;k@k@kkkpkpk›kÂkÇkÇkÇkÊkÑk×kÞkãkãkékïkôkôk l l%lHlNl^ljlpl~l…l‡l›l¡l¨l¨lªlªlªl¯lµlºl¾lÀlÃlÎlÝlàlâlælælëlëlùl#m˜}Ÿ##"#'#.#8#>#I#Y#a#i#n#y#ƒ#‰#”#¤#¬#¼#Ã#Ë#Ó#Û#ã#è#ó#$$$  B†Î=Î=æ=í=>(>3>@>N>B>w>w>ƒ>‹>š>Ô>Ö>? ? ?@?X?E?y?g?ˆ?Ž?�?²?´?¿?Ç?Ç?è?í?ö?@ yyyy&y.y>yVydy’y˜y�y¥yµyÛy zzzz%z0z;zXzpz|z„z’z’z—zªzÁzÃzàzøz{ {{{ {2{?{I{`{w{�{¢{¯{Ñ{è{ÿ{ ||&|=|=|F|R|h|�|”|Ÿ|²|¶|¶|¶|½|Â|Õ|à|ú|ü|}} },}6}6}H}÷˜k ˆ9ˆ9ž9ª9ª9À9Ë9Í9í9í9í9ô9þ9:: : :::,:,:b:n:€:�:§:¬:¯:´:´:´:Ð:×:ä:ë:ó:ø:ø:; ;(;-;-;I;V;^;c;c;;‹;”;œ;¤;°;Æ;Ñ;ô;ø;<<<</<I<S<_<g<l<l<‹<—<©<®<Ê<Ö<å<ê<ù<= = = = =====2=>=P=R=U=Z=Z=Z=d=l=s={=„=�=•=¢=°=°=º=Ã=Ë=>> >>6>;>;>N>V>V>X>X>X>]>]>d>j>n>u>y>y>y>y>ˆ>ˆ>­>¶>¶>º>ÕBø(ØBØBæBïBýBCù�ªÊÿlÿlm%m1mGm\mjmum„mŠmŠmŠm�m”m¢m­mÆmÈmÍmÛmæmómúmnú\2Eo+o+‰+®+�+½+Ù+Ï+ñ+,ó+,.,@,Y,Y,`,‚,‚,Œ,û8fp'M'M?MNMbMqMwM}M€M¡Mü0�—p‹p‹„‹�‹ž‹¡‹¹‹¼‹Ä‹ý0S[¶×¶×Ê×Ò×ß×é×ü×þP>Nðˆðˆüˆ‰‰'‰/‰3‰=‰G‰O‰R‰X‰ÿT¡²�O�O©O¼O¿OÉOÖOëOíOÿO PPP#P&PzP<˜£È‹È‹Ü‹ã‹ï‹û‹ ŒŒŒŒ Œ 26nånå|åˆåH!/¯[¯[Ã[Ï[å[Ñ[ô[ö[ý[\\\ Dƒ?S?ScSjSoSwS‘SšSœS©S©S«SÅSËSÍSÏSÜSÜSÜSÜSàSïSøST TTTT T<T@TRTeTkTT„T‘T‘T¥T¬T³T¼TÊTÓTöTüTUU
@(@@]@C@7@l@‰@t@©@Á@®@ã@Ð@Aò@A%AA<A<A<AeAeAqA U UUU*UläûNãNãbãxã†ã‘ã•ãœã ã©ã¸ãºãºãÎãÐãÙãßãßãßãßãçã´KtèDèDE E$E+E5E5E=EPETEYEnEpEsEwE~E’E–EžEªE±EµE½E¿EÇEÕEÝEßEâEûEF FFF+F %I·q·qÇqÓqßqïqr rr,r4r;rTr�r›r¨rµrÅrËrÍrÞrss ss#s9sDsJsPsssôB»0i0iJiMiTi_inipi{iŠiŠi—i¥i¨iªiªi¯i´i½iÈiÎi×iêiïijjjj/j/j\jpj‡j�j’j™jŸj¦j«j«j±j·j¼j¼jÏjÝjõjûjkkk%k%kBk]kckhkhk“k˜k˜kÃkêkïkïkïkòkùkÿkl l lllll3lGlMlplvl†l’l˜l¦l­l¯lÃlÉlÐlÐlÒlÒlÒl×lÝlâlælèlëlölmm
Ð1ð‘ð‘’’*’*’J’N’S’S’S’_’d’t’y’y’y’~’~’—’ž’­’»’Ä’Ô’Ý’ß’ß’ß’ß’æ’í’ô’û’“ ““““““ “$“+” D$þpþp qq q0q5q>qJqLq^q^q`q�q mmmmm!mKm˜}Ÿ&#&#B#G#N#X#^#i#y#�#‰#Ž#™#£#©#´#Ä#Ì#Ü#ã#ë#ó#û#$$$!$!$7$  B†ï=ï=>>!>I>T>a>o>c>˜>˜>¤>¬>»>õ>÷>$?,?,?a?y?f?š?ˆ?©?¯?¾?Ó?Õ?à?è?è? @@@#@+@I@6@~@d@X@�@ª@•@Ê@â@Ï@Añ@%AA4AFA<A]A]A]A†A†A’A
Ð1’’,’,’R’R’r’v’{’{’{’‡’Œ’œ’¡’¡’¡’¦’¦’¿’Æ’Õ’ã’ì’ü’““““““““#“*“1“8“?“?“A“A“G“L“S” D$ q q-q7qAqQqVq_qkqmqqq�q±q
+74 -76
View File
@@ -158,84 +158,83 @@ class CIntermediateStruct
#define IC_RIP 0x75 #define IC_RIP 0x75
#define IC_RDTSC 0x76 #define IC_RDTSC 0x76
#define IC_HPET 0x77
#define IC_BT 0x78 #define IC_BT 0x77
#define IC_BTS 0x79 #define IC_BTS 0x78
#define IC_BTR 0x7A #define IC_BTR 0x79
#define IC_BTC 0x7B #define IC_BTC 0x7A
#define IC_LBTS 0x7C #define IC_LBTS 0x7B
#define IC_LBTR 0x7D #define IC_LBTR 0x7C
#define IC_LBTC 0x7E #define IC_LBTC 0x7D
#define IC_BSF 0x7F #define IC_BSF 0x7E
#define IC_BSR 0x80 #define IC_BSR 0x7F
#define IC_QUE_INIT 0x81 #define IC_QUE_INIT 0x80
#define IC_QUE_INS 0x82 #define IC_QUE_INS 0x81
#define IC_QUE_INS_REV 0x83 #define IC_QUE_INS_REV 0x82
#define IC_QUE_REM 0x84 #define IC_QUE_REM 0x83
#define IC_STRLEN 0x85 #define IC_STRLEN 0x84
#define IC_BR_ZERO 0x86 #define IC_BR_ZERO 0x85
#define IC_BR_NOT_ZERO 0x87 #define IC_BR_NOT_ZERO 0x86
#define IC_BR_CARRY 0x88 #define IC_BR_CARRY 0x87
#define IC_BR_NOT_CARRY 0x89 #define IC_BR_NOT_CARRY 0x88
#define IC_BR_EQU_EQU 0x8A #define IC_BR_EQU_EQU 0x89
#define IC_BR_NOT_EQU 0x8B #define IC_BR_NOT_EQU 0x8A
#define IC_BR_LESS 0x8C #define IC_BR_LESS 0x8B
#define IC_BR_GREATER_EQU 0x8D #define IC_BR_GREATER_EQU 0x8C
#define IC_BR_GREATER 0x8E #define IC_BR_GREATER 0x8D
#define IC_BR_LESS_EQU 0x8F #define IC_BR_LESS_EQU 0x8E
#define IC_BR_EQU_EQU2 0x90 #define IC_BR_EQU_EQU2 0x8F
#define IC_BR_NOT_EQU2 0x91 #define IC_BR_NOT_EQU2 0x90
#define IC_BR_LESS2 0x92 #define IC_BR_LESS2 0x91
#define IC_BR_GREATER_EQU2 0x93 #define IC_BR_GREATER_EQU2 0x92
#define IC_BR_GREATER2 0x94 #define IC_BR_GREATER2 0x93
#define IC_BR_LESS_EQU2 0x95 #define IC_BR_LESS_EQU2 0x94
#define IC_BR_AND_ZERO 0x96 #define IC_BR_AND_ZERO 0x95
#define IC_BR_AND_NOT_ZERO 0x97 #define IC_BR_AND_NOT_ZERO 0x96
#define IC_BR_MM_ZERO 0x98 #define IC_BR_MM_ZERO 0x97
#define IC_BR_MM_NOT_ZERO 0x99 #define IC_BR_MM_NOT_ZERO 0x98
#define IC_BR_AND_AND_ZERO 0x9A #define IC_BR_AND_AND_ZERO 0x99
#define IC_BR_AND_AND_NOT_ZERO 0x9B #define IC_BR_AND_AND_NOT_ZERO 0x9A
#define IC_BR_OR_OR_ZERO 0x9C #define IC_BR_OR_OR_ZERO 0x9B
#define IC_BR_OR_OR_NOT_ZERO 0x9D #define IC_BR_OR_OR_NOT_ZERO 0x9C
#define IC_BR_BT 0x9E #define IC_BR_BT 0x9D
#define IC_BR_BTS 0x9F #define IC_BR_BTS 0x9E
#define IC_BR_BTR 0xA0 #define IC_BR_BTR 0x9F
#define IC_BR_BTC 0xA1 #define IC_BR_BTC 0xA0
#define IC_BR_NOT_BT 0xA2 #define IC_BR_NOT_BT 0xA1
#define IC_BR_NOT_BTS 0xA3 #define IC_BR_NOT_BTS 0xA2
#define IC_BR_NOT_BTR 0xA4 #define IC_BR_NOT_BTR 0xA3
#define IC_BR_NOT_BTC 0xA5 #define IC_BR_NOT_BTC 0xA4
#define IC_SWAP_U8 0xA6 #define IC_SWAP_U8 0xA5
#define IC_SWAP_U16 0xA7 #define IC_SWAP_U16 0xA6
#define IC_SWAP_U32 0xA8 #define IC_SWAP_U32 0xA7
#define IC_SWAP_I64 0xA9 #define IC_SWAP_I64 0xA8
#define IC_ABS_I64 0xAA #define IC_ABS_I64 0xA9
#define IC_SIGN_I64 0xAB #define IC_SIGN_I64 0xAA
#define IC_MIN_I64 0xAC #define IC_MIN_I64 0xAB
#define IC_MIN_U64 0xAD #define IC_MIN_U64 0xAC
#define IC_MAX_I64 0xAE #define IC_MAX_I64 0xAD
#define IC_MAX_U64 0xAF #define IC_MAX_U64 0xAE
#define IC_MOD_U64 0xB0 #define IC_MOD_U64 0xAF
#define IC_SQR_I64 0xB1 #define IC_SQR_I64 0xB0
#define IC_SQR_U64 0xB2 #define IC_SQR_U64 0xB1
#define IC_SQR 0xB3 #define IC_SQR 0xB2
#define IC_ABS 0xB4 #define IC_ABS 0xB3
#define IC_SQRT 0xB5 #define IC_SQRT 0xB4
#define IC_SIN 0xB6 #define IC_SIN 0xB5
#define IC_COS 0xB7 #define IC_COS 0xB6
#define IC_TAN 0xB8 #define IC_TAN 0xB7
#define IC_ATAN 0xB9 #define IC_ATAN 0xB8
#define IC_NUM_ENTRIES 0xBA #define IC_NUM_ENTRIES 0xB9
#define KW_INCLUDE 0 #define KW_INCLUDE 0
#define KW_DEFINE 1 #define KW_DEFINE 1
@@ -325,14 +324,13 @@ class CIntermediateStruct
#define CMP_TEMPLATE_SIGN_I64 0x09 #define CMP_TEMPLATE_SIGN_I64 0x09
#define CMP_TEMPLATE_FSTP 0x0A #define CMP_TEMPLATE_FSTP 0x0A
#define CMP_TEMPLATE_FLD 0x0B #define CMP_TEMPLATE_FLD 0x0B
#define CMP_TEMPLATE_HPET 0x0C #define CMP_TEMPLATE_SQR 0x0C
#define CMP_TEMPLATE_SQR 0x0D #define CMP_TEMPLATE_ABS 0x0D
#define CMP_TEMPLATE_ABS 0x0E #define CMP_TEMPLATE_SQRT 0x0E
#define CMP_TEMPLATE_SQRT 0x0F #define CMP_TEMPLATE_SIN 0x0F
#define CMP_TEMPLATE_SIN 0x10 #define CMP_TEMPLATE_COS 0x10
#define CMP_TEMPLATE_COS 0x11 #define CMP_TEMPLATE_TAN 0x11
#define CMP_TEMPLATE_TAN 0x12 #define CMP_TEMPLATE_ATAN 0x12
#define CMP_TEMPLATE_ATAN 0x13
#define ASSOCF_LEFT 1 #define ASSOCF_LEFT 1
#define ASSOCF_RIGHT 2 #define ASSOCF_RIGHT 2
+32 -26
View File
@@ -96,7 +96,7 @@ Bool LexDollar(CCmpCtrl *cc,CDoc *doc,CDocEntry *doc_e)
if (cc->flags&CCF_IN_QUOTES) { if (cc->flags&CCF_IN_QUOTES) {
Free(cc->dollar_buf); Free(cc->dollar_buf);
st=Doc2PlainText(doc,doc_e); st=Doc2PlainText(doc,doc_e);
cc->dollar_buf=MStrPrint("$$%Q$$",st); cc->dollar_buf=MStrPrint("$$%$$Q$$",st);
cc->dollar_cnt=2; cc->dollar_cnt=2;
Free(st); Free(st);
return TRUE; return TRUE;
@@ -217,7 +217,7 @@ lgc_start2:
} }
if (doc_e!=doc) if (doc_e!=doc)
goto lgc_start1; goto lgc_start1;
tempf->cur_entry=doc->root.last; //When take next, will still be end. tempf->cur_entry=doc->head.last; //When take next, will still be end.
} }
tempf=cc->lex_include_stk; tempf=cc->lex_include_stk;
if (tempf->next) { if (tempf->next) {
@@ -338,7 +338,7 @@ U0 LexAttachDoc(CCmpCtrl *cc,CLexFile *tempf=NULL,
tempf=LexFilePush(cc); tempf=LexFilePush(cc);
} }
if (!doc_e) if (!doc_e)
doc_e=doc->root.next; doc_e=doc->head.next;
tempf->full_name=StrNew(doc->filename.name); tempf->full_name=StrNew(doc->filename.name);
tempf->doc=doc; tempf->doc=doc;
while (doc_e!=doc) { while (doc_e!=doc) {
@@ -372,7 +372,7 @@ U0 LexAttachDoc(CCmpCtrl *cc,CLexFile *tempf=NULL,
I64 LexInStr(CCmpCtrl *cc,U8 *buf,I64 size,Bool *done) I64 LexInStr(CCmpCtrl *cc,U8 *buf,I64 size,Bool *done)
{ {
I64 i=0,j,ch; I64 i=0,j,k,ch;
*done=TRUE; *done=TRUE;
while (i<size-1) { while (i<size-1) {
ch=LexGetChar(cc); ch=LexGetChar(cc);
@@ -381,14 +381,8 @@ I64 LexInStr(CCmpCtrl *cc,U8 *buf,I64 size,Bool *done)
return i; return i;
} else if (ch=='\\') { } else if (ch=='\\') {
switch (ch=LexGetChar(cc)) { switch (ch=LexGetChar(cc)) {
case 'n': case '0':
buf[i++]='\n'; buf[i++]=0;
break;
case 'r':
buf[i++]='\r';
break;
case '"':
buf[i++]='"';
break; break;
case '\'': case '\'':
buf[i++]='\''; buf[i++]='\'';
@@ -399,27 +393,37 @@ I64 LexInStr(CCmpCtrl *cc,U8 *buf,I64 size,Bool *done)
case '\\': case '\\':
buf[i++]='\\'; buf[i++]='\\';
break; break;
case '"':
buf[i++]='"';
break;
case 'd':
buf[i++]='$$';
break;
case 'n':
buf[i++]='\n';
break;
case 'r':
buf[i++]='\r';
break;
case 't': case 't':
buf[i++]='\t'; buf[i++]='\t';
break; break;
case '0':
buf[i++]=0;
break;
case 'x': case 'x':
case 'X': case 'X':
j=0; j=0;
while (TRUE) { for (k=0;k<2;k++) {
ch=ToUpper(LexGetChar(cc)); ch=ToUpper(LexGetChar(cc));
if (Bt(chars_bmp_hex_numeric,ch)) { if (Bt(chars_bmp_hex_numeric,ch)) {
if (ch<='9') if (ch<='9')
j=j<<4+ch-'0'; j=j<<4+ch-'0';
else else
j=j<<4+ch-'A'+10; j=j<<4+ch-'A'+10;
} else } else {
cc->flags|=CCF_USE_LAST_U16;
break; break;
}
} }
buf[i++]=j; buf[i++]=j;
cc->flags|=CCF_USE_LAST_U16;
break; break;
default: default:
cc->flags|=CCF_USE_LAST_U16; cc->flags|=CCF_USE_LAST_U16;
@@ -442,7 +446,7 @@ I64 LexInStr(CCmpCtrl *cc,U8 *buf,I64 size,Bool *done)
I64 Lex(CCmpCtrl *cc) I64 Lex(CCmpCtrl *cc)
{//Fetch next token. {//Fetch next token.
I64 i,j,k,ch; I64 i,j,k,l,ch;
CHash *temph; CHash *temph;
Bool str_done,neg_e; Bool str_done,neg_e;
U8 *fbuf,*buf2,*buf3,buf[STR_LEN]; U8 *fbuf,*buf2,*buf3,buf[STR_LEN];
@@ -640,29 +644,31 @@ lex_float_start:
break; break;
if (ch=='\\') { if (ch=='\\') {
switch (ch=LexGetChar(cc)) { switch (ch=LexGetChar(cc)) {
case 'n': k.u8[j]='\n'; break; case '0': k.u8[j]=0; break;
case 'r': k.u8[j]='\r'; break;
case '"': k.u8[j]='"'; break;
case '\'': k.u8[j]='\''; break; case '\'': k.u8[j]='\''; break;
case '\`': k.u8[j]='\`'; break; case '\`': k.u8[j]='\`'; break;
case '"': k.u8[j]='"'; break;
case '\\': k.u8[j]='\\'; break; case '\\': k.u8[j]='\\'; break;
case 'd': k.u8[j]='$$'; break;
case 'n': k.u8[j]='\n'; break;
case 'r': k.u8[j]='\r'; break;
case 't': k.u8[j]='\t'; break; case 't': k.u8[j]='\t'; break;
case '0': k.u8[j]=0; break;
case 'x': case 'x':
case 'X': case 'X':
i=0; i=0;
while (TRUE) { for (l=0;l<2;l++) {
ch=ToUpper(LexGetChar(cc)); ch=ToUpper(LexGetChar(cc));
if (Bt(chars_bmp_hex_numeric,ch)) { if (Bt(chars_bmp_hex_numeric,ch)) {
if (ch<='9') if (ch<='9')
i=i<<4+ch-'0'; i=i<<4+ch-'0';
else else
i=i<<4+ch-'A'+10; i=i<<4+ch-'A'+10;
} else } else {
cc->flags|=CCF_USE_LAST_U16;
break; break;
}
} }
k.u8[j]=i; k.u8[j]=i;
cc->flags|=CCF_USE_LAST_U16;
break; break;
default: default:
k.u8[j]='\\'; k.u8[j]='\\';
+35 -17
View File
@@ -816,7 +816,7 @@ OPCODE INSB 0x6C;
OPCODE INSW 0x6D, 16; OPCODE INSW 0x6D, 16;
OPCODE INSD 0x6D, 32; OPCODE INSD 0x6D, 32;
OPCODE INTO 0xCE; OPCODE INTO 0xCE;
OPCODE INT3 0xCC; OPCODE INT3 0xCC, :BPT;
OPCODE INT OPCODE INT
0xCD, IB &UIMM8 0xCD, IB &UIMM8
0xCD, IB IMM8; 0xCD, IB IMM8;
@@ -906,40 +906,58 @@ OPCODE OUT
OPCODE OUTSB 0x6E; OPCODE OUTSB 0x6E;
OPCODE OUTSW 0x6F, 16; OPCODE OUTSW 0x6F, 16;
OPCODE OUTSD 0x6F, 32; OPCODE OUTSD 0x6F, 32;
OPCODE REP_INSB 0xF3 0x6C; OPCODE REP_INSB
0xF3 0x6C, %
0xF3 0x48 0x6C;
OPCODE REP_INSW 0xF3 0x6D, 16; OPCODE REP_INSW 0xF3 0x6D, 16;
OPCODE REP_INSD 0xF3 0x6D, 32; OPCODE REP_INSD 0xF3 0x6D, 32;
OPCODE REP_MOVSB 0xF3 0xA4; OPCODE REP_MOVSB
0xF3 0xA4, %
0xF3 0x48 0xA4;
OPCODE REP_MOVSW 0xF3 0xA5, 16; OPCODE REP_MOVSW 0xF3 0xA5, 16;
OPCODE REP_MOVSD 0xF3 0xA5, 32; OPCODE REP_MOVSD 0xF3 0xA5, 32;
OPCODE REP_MOVSQ 0xF3 0x48 0xA5, 32=; OPCODE REP_MOVSQ 0xF3 0x48 0xA5, 32;
OPCODE REP_OUTSB 0xF3 0x6E; OPCODE REP_OUTSB,
0xF3 0x6E, %
0xF3 0x48 0x6E;
OPCODE REP_OUTSW 0xF3 0x6F, 16; OPCODE REP_OUTSW 0xF3 0x6F, 16;
OPCODE REP_OUTSD 0xF3 0x6F, 32; OPCODE REP_OUTSD 0xF3 0x6F, 32;
OPCODE REP_LODSB 0xF2 0xAC; OPCODE REP_LODSB
0xF2 0xAC, %
0xF2 0x48 0xAC;
OPCODE REP_LODSW 0xF2 0xAD, 16; OPCODE REP_LODSW 0xF2 0xAD, 16;
OPCODE REP_LODSD 0xF2 0xAD, 32; OPCODE REP_LODSD 0xF2 0xAD, 32;
OPCODE REP_LODSQ 0xF2 0x48 0xAD, 32=; OPCODE REP_LODSQ 0xF2 0x48 0xAD, 32;
OPCODE REP_STOSB 0xF3 0xAA; OPCODE REP_STOSB
0xF3 0xAA, %
0xF3 0x48 0xAA;
OPCODE REP_STOSW 0xF3 0xAB, 16; OPCODE REP_STOSW 0xF3 0xAB, 16;
OPCODE REP_STOSD 0xF3 0xAB, 32; OPCODE REP_STOSD 0xF3 0xAB, 32;
OPCODE REP_STOSQ 0xF3 0x48 0xAB, 32=; OPCODE REP_STOSQ 0xF3 0x48 0xAB, 32;
OPCODE REPE_CMPSB 0xF3 0xA6; OPCODE REPE_CMPSB
0xF3 0xA6, %
0xF3 0x48 0xA6;
OPCODE REPE_CMPSW 0xF3 0xA7, 16; OPCODE REPE_CMPSW 0xF3 0xA7, 16;
OPCODE REPE_CMPSD 0xF3 0xA7, 32; OPCODE REPE_CMPSD 0xF3 0xA7, 32;
OPCODE REPE_CMPSQ 0xF3 0x48 0xA7, 32=; OPCODE REPE_CMPSQ 0xF3 0x48 0xA7, 32;
OPCODE REPE_SCASB 0xF3 0xAE; OPCODE REPE_SCASB
0xF3 0xAE, %
0xF3 0x48 0xAE;
OPCODE REPE_SCASW 0xF3 0xAF, 16; OPCODE REPE_SCASW 0xF3 0xAF, 16;
OPCODE REPE_SCASD 0xF3 0xAF, 32; OPCODE REPE_SCASD 0xF3 0xAF, 32;
OPCODE REPE_SCASQ 0xF3 0x48 0xAF, 32=; OPCODE REPE_SCASQ 0xF3 0x48 0xAF, 32;
OPCODE REPNE_CMPSB 0xF2 0x48 0xA6; OPCODE REPNE_CMPSB
0xF2 0xA6, %
0xF2 0x48 0xA6;
OPCODE REPNE_CMPSW 0xF2 0xA7, 16; OPCODE REPNE_CMPSW 0xF2 0xA7, 16;
OPCODE REPNE_CMPSD 0xF2 0xA7, 32; OPCODE REPNE_CMPSD 0xF2 0xA7, 32;
OPCODE REPNE_CMPSQ 0xF2 0x48 0xA7, 32=; OPCODE REPNE_CMPSQ 0xF2 0x48 0xA7, 32;
OPCODE REPNE_SCASB 0xF2 0xAE; OPCODE REPNE_SCASB
0xF2 0xAE, %
0xF2 0x48 0xAE;
OPCODE REPNE_SCASW 0xF2 0xAF, 16; OPCODE REPNE_SCASW 0xF2 0xAF, 16;
OPCODE REPNE_SCASD 0xF2 0xAF, 32; OPCODE REPNE_SCASD 0xF2 0xAF, 32;
OPCODE REPNE_SCASQ 0xF2 0x48 0xAF, 32=; OPCODE REPNE_SCASQ 0xF2 0x48 0xAF, 32;
OPCODE RET 0xC3; OPCODE RET 0xC3;
OPCODE RET1 0xC2, IW IMM16; OPCODE RET1 0xC2, IW IMM16;
OPCODE RETF 0xCB; OPCODE RETF 0xCB;
+1 -2
View File
@@ -38,7 +38,7 @@ args.
ps=cc->ps=MAlloc(sizeof(CPrsStk)); ps=cc->ps=MAlloc(sizeof(CPrsStk));
ps->ptr=0; ps->ptr=0;
ps->ptr2=0; ps->ptr2=0;
tempi=cc->coc.coc_root.next; tempi=cc->coc.coc_head.next;
while (code=tempi->ic_code) { while (code=tempi->ic_code) {
tempc=tempi->ic_class; tempc=tempi->ic_class;
tempi->ic_class2=tempc; tempi->ic_class2=tempc;
@@ -1214,7 +1214,6 @@ args.
case IC_GET_LABEL: case IC_GET_LABEL:
case IC_TYPE: case IC_TYPE:
case IC_RDTSC: case IC_RDTSC:
case IC_HPET:
case IC_SET_RFLAGS: case IC_SET_RFLAGS:
case IC_SET_RBP: case IC_SET_RBP:
case IC_SET_RSP: case IC_SET_RSP:
+1 -2
View File
@@ -49,7 +49,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets)
} else } else
member_cnt=0; member_cnt=0;
tempi=cc->coc.coc_root.next; tempi=cc->coc.coc_head.next;
while (code=tempi->ic_code) { while (code=tempi->ic_code) {
tempi_next=tempi->next; tempi_next=tempi->next;
if (code==IC_NOP1) if (code==IC_NOP1)
@@ -419,7 +419,6 @@ here1:
case IC_GET_RFLAGS: case IC_GET_RFLAGS:
case IC_CARRY: case IC_CARRY:
case IC_RDTSC: case IC_RDTSC:
case IC_HPET:
case IC_SET_RFLAGS: case IC_SET_RFLAGS:
case IC_GET_RBP: case IC_GET_RBP:
case IC_SET_RBP: case IC_SET_RBP:
+1 -2
View File
@@ -144,7 +144,7 @@ U0 OptPass4(CCmpCtrl *cc,COptReg *reg_offsets,I64 *_type)
if (_type) if (_type)
*_type=RT_I64; *_type=RT_I64;
tempi=cc->coc.coc_root.next; tempi=cc->coc.coc_head.next;
while (code=tempi->ic_code) { while (code=tempi->ic_code) {
tempi_next=tempi->next; tempi_next=tempi->next;
if (dead_code&&code!=IC_LABEL) { if (dead_code&&code!=IC_LABEL) {
@@ -587,7 +587,6 @@ p4_sib:
case IC_GET_RFLAGS: case IC_GET_RFLAGS:
case IC_CARRY: case IC_CARRY:
case IC_RDTSC: case IC_RDTSC:
case IC_HPET:
case IC_SET_RFLAGS: case IC_SET_RFLAGS:
case IC_GET_RBP: case IC_GET_RBP:
case IC_SET_RBP: case IC_SET_RBP:
+1 -1
View File
@@ -6,7 +6,7 @@ U0 OptPass5(CCmpCtrl *cc)
ps->ptr=0; ps->ptr=0;
ps->ptr2=0; ps->ptr2=0;
tempi=cc->coc.coc_root.next; tempi=cc->coc.coc_head.next;
while (code=tempi->ic_code) { while (code=tempi->ic_code) {
if (code>IC_NOP2) { if (code>IC_NOP2) {
if (tempi->ic_flags&ICF_PASS_TRACE) { if (tempi->ic_flags&ICF_PASS_TRACE) {
+1 -1
View File
@@ -105,7 +105,7 @@ U0 OptPass6(CCmpCtrl *cc)
else else
reg_stk_size=1; reg_stk_size=1;
#assert REGG_STK_TEMP==1<<9 #assert REGG_STK_TEMP==1<<9
tempi=cc->coc.coc_root.next; tempi=cc->coc.coc_head.next;
old_tempil2=NULL; old_tempil2=NULL;
tempil1=tempil2=&cmp.ic_nop; tempil1=tempil2=&cmp.ic_nop;
while (tempi->ic_code) { while (tempi->ic_code) {
+1 -4
View File
@@ -40,7 +40,7 @@ cc->pass==10 is final pass, code is placed into buf.
"$$FG$$$$IV,0$$$$BK,0$$"; "$$FG$$$$IV,0$$$$BK,0$$";
cc->last_float_op_ic=NULL; cc->last_float_op_ic=NULL;
tempi=&cc->coc.coc_root; tempi=&cc->coc.coc_head;
tempi->ic_last_start=-1; tempi->ic_last_start=-1;
tempi->ic_cnt=0; tempi->ic_cnt=0;
tempi=tempi->next; tempi=tempi->next;
@@ -756,9 +756,6 @@ cc->pass==10 is final pass, code is placed into buf.
case IC_RDTSC: case IC_RDTSC:
ICCopyTemplate(cc,tempi,CMP_TEMPLATE_RDTSC,TRUE,FALSE,FALSE,CN_MAIN); ICCopyTemplate(cc,tempi,CMP_TEMPLATE_RDTSC,TRUE,FALSE,FALSE,CN_MAIN);
break; break;
case IC_HPET:
ICCopyTemplate(cc,tempi,CMP_TEMPLATE_HPET,TRUE,FALSE,FALSE,CN_MAIN);
break;
case IC_SET_RFLAGS: case IC_SET_RFLAGS:
ICPush(tempi,tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2); ICPush(tempi,tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip2);
ICU8(tempi,0x9D); ICU8(tempi,0x9D);
+15 -15
View File
@@ -14,7 +14,7 @@
CIntermediateCode *PrsAddOp(CCmpCtrl *cc,I64 stk_op,CHashClass *tempc) CIntermediateCode *PrsAddOp(CCmpCtrl *cc,I64 stk_op,CHashClass *tempc)
{ {
CIntermediateCode *tempi=cc->coc.coc_root.last; CIntermediateCode *tempi=cc->coc.coc_head.last;
Bool div_sizeof=FALSE; Bool div_sizeof=FALSE;
switch (stk_op.u16[0]) { switch (stk_op.u16[0]) {
case IC_ADD: case IC_ADD:
@@ -108,7 +108,7 @@ pe_unary_term1:
i=IC_PP_+PREC_UNARY_PRE<<16; i=IC_PP_+PREC_UNARY_PRE<<16;
cc->flags&=~(CCF_PREINC|CCF_PREDEC|CCF_POSTINC|CCF_POSTDEC); cc->flags&=~(CCF_PREINC|CCF_PREDEC|CCF_POSTINC|CCF_POSTDEC);
} }
tempi=cc->coc.coc_root.last; tempi=cc->coc.coc_head.last;
if (cc->flags & (CCF_RAX|CCF_ARRAY)) { if (cc->flags & (CCF_RAX|CCF_ARRAY)) {
if (tempi->ic_code==IC_DEREF) if (tempi->ic_code==IC_DEREF)
tempi->ic_code=i; tempi->ic_code=i;
@@ -142,11 +142,11 @@ pe_check_binary_ops2:
left_prec=cur_op.i8[2]; left_prec=cur_op.i8[2];
PrsPush(ps,tempc); PrsPush(ps,tempc);
PrsPush(ps,stk_op); PrsPush(ps,stk_op);
PrsPush(ps,cc->coc.coc_root.last->ic_class); PrsPush(ps,cc->coc.coc_head.last->ic_class);
PrsPush(ps,cur_op); PrsPush(ps,cur_op);
goto pe_unary_term1; goto pe_unary_term1;
} else { } else {
tempi=cc->coc.coc_root.last; tempi=cc->coc.coc_head.last;
tempc=tempi->ic_class; tempc=tempi->ic_class;
if (stk_op.u16[0]==IC_DEREF && tempc->ptr_stars_cnt) if (stk_op.u16[0]==IC_DEREF && tempc->ptr_stars_cnt)
tempc--; tempc--;
@@ -172,7 +172,7 @@ pe_do_binary_op:
switch (cur_op.u16[0]) { switch (cur_op.u16[0]) {
case IC_ADD: case IC_ADD:
case IC_SUB: case IC_SUB:
tempi=cc->coc.coc_root.last; tempi=cc->coc.coc_head.last;
if (!tempi->ic_class->ptr_stars_cnt && if (!tempi->ic_class->ptr_stars_cnt &&
tempi->ic_class->raw_type!=RT_F64) { tempi->ic_class->raw_type!=RT_F64) {
ICAdd(cc,IC_SIZEOF,1,cmp.internal_types[RT_I64]); ICAdd(cc,IC_SIZEOF,1,cmp.internal_types[RT_I64]);
@@ -199,7 +199,7 @@ pe_do_binary_op:
max_prec=cur_op.u8[2]; max_prec=cur_op.u8[2];
left_prec=cur_op.u8[2]; left_prec=cur_op.u8[2];
if (intermediate_code_table[cur_op.u16[0]].type==IST_ASSIGN) { if (intermediate_code_table[cur_op.u16[0]].type==IST_ASSIGN) {
tempi=cc->coc.coc_root.last; tempi=cc->coc.coc_head.last;
tempc=OptClassFwd(tempi->ic_class); tempc=OptClassFwd(tempi->ic_class);
if (intermediate_code_table[tempi->ic_code].type!=IST_DEREF || if (intermediate_code_table[tempi->ic_code].type!=IST_DEREF ||
!tempc->ptr_stars_cnt && !Bt(&tempc->flags,Cf_INTERNAL_TYPE)) !tempc->ptr_stars_cnt && !Bt(&tempc->flags,Cf_INTERNAL_TYPE))
@@ -236,7 +236,7 @@ pe_pop_higher:
pe_push_lower: pe_push_lower:
PrsPush(ps,tempc); PrsPush(ps,tempc);
PrsPush(ps,stk_op); PrsPush(ps,stk_op);
PrsPush(ps,cc->coc.coc_root.last->ic_class); PrsPush(ps,cc->coc.coc_head.last->ic_class);
PrsPush(ps,cur_op); PrsPush(ps,cur_op);
goto pe_unary_term1; goto pe_unary_term1;
@@ -415,7 +415,7 @@ I64 PrsFunCall(CCmpCtrl *cc,CPrsStk *ps,Bool indirect,CHashFun *tempf)
if (indirect) { if (indirect) {
if (!(cc->flags & (CCF_RAX | CCF_ARRAY))) if (!(cc->flags & (CCF_RAX | CCF_ARRAY)))
ICAdd(cc,IC_DEREF,0,cmp.internal_types[RT_PTR]); ICAdd(cc,IC_DEREF,0,cmp.internal_types[RT_PTR]);
cc->coc.coc_root.last->ic_class=cmp.internal_types[RT_PTR]; cc->coc.coc_head.last->ic_class=cmp.internal_types[RT_PTR];
ICAdd(cc,IC_SET_RAX,0,cmp.internal_types[RT_PTR]); ICAdd(cc,IC_SET_RAX,0,cmp.internal_types[RT_PTR]);
ICAdd(cc,IC_NOP2,1,cmp.internal_types[RT_PTR]); //balance the books ICAdd(cc,IC_NOP2,1,cmp.internal_types[RT_PTR]); //balance the books
} }
@@ -544,7 +544,7 @@ I64 PrsFunCall(CCmpCtrl *cc,CPrsStk *ps,Bool indirect,CHashFun *tempf)
tempcbh1=tempcbh->coc_next; tempcbh1=tempcbh->coc_next;
COCAppend(cc,tempcbh); COCAppend(cc,tempcbh);
if (!Bt(&tempf->flags,Ff_INTERNAL)) if (!Bt(&tempf->flags,Ff_INTERNAL))
cc->coc.coc_root.last->ic_flags|=ICF_PUSH_RES; cc->coc.coc_head.last->ic_flags|=ICF_PUSH_RES;
tempcbh=tempcbh1; tempcbh=tempcbh1;
} }
if (Bt(&tempf->flags,Ff_INTERNAL)) if (Bt(&tempf->flags,Ff_INTERNAL))
@@ -970,7 +970,7 @@ I64 PrsUnaryModifier(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,
goto um_join; goto um_join;
case TK_DEREFERENCE: case TK_DEREFERENCE:
tempi=cc->coc.coc_root.last; tempi=cc->coc.coc_head.last;
if (!(cc->flags & (CCF_RAX | CCF_ARRAY))) if (!(cc->flags & (CCF_RAX | CCF_ARRAY)))
ICAdd(cc,IC_DEREF+PREC_UNARY_PRE<<16,0,tempi->ic_class-1); ICAdd(cc,IC_DEREF+PREC_UNARY_PRE<<16,0,tempi->ic_class-1);
else else
@@ -979,7 +979,7 @@ I64 PrsUnaryModifier(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,
um_join: um_join:
if (!*unary_post_prec) if (!*unary_post_prec)
*unary_post_prec=PREC_TERM; *unary_post_prec=PREC_TERM;
tempc=cc->coc.coc_root.last->ic_class; tempc=cc->coc.coc_head.last->ic_class;
if ((!tempc->ptr_stars_cnt || cc->flags & CCF_ARRAY) && cc->token=='.') if ((!tempc->ptr_stars_cnt || cc->flags & CCF_ARRAY) && cc->token=='.')
LexExcept(cc,"Must be address, not value "); LexExcept(cc,"Must be address, not value ");
if (!(cc->flags & CCF_RAX)) if (!(cc->flags & CCF_RAX))
@@ -1038,7 +1038,7 @@ I64 PrsUnaryModifier(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,
} }
if (!(cc->flags&(CCF_RAX|CCF_ARRAY))) if (!(cc->flags&(CCF_RAX|CCF_ARRAY)))
tempc++; tempc++;
tempi=cc->coc.coc_root.last; tempi=cc->coc.coc_head.last;
tempi->ic_class=tempc; tempi->ic_class=tempc;
ICAdd(cc,IC_HOLYC_TYPECAST,was_paren,tempc); ICAdd(cc,IC_HOLYC_TYPECAST,was_paren,tempc);
if (cc->token!=')') if (cc->token!=')')
@@ -1049,7 +1049,7 @@ I64 PrsUnaryModifier(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,
if (!*unary_post_prec) if (!*unary_post_prec)
*unary_post_prec=PREC_TERM; *unary_post_prec=PREC_TERM;
Lex(cc); Lex(cc);
tempc=OptClassFwd(cc->coc.coc_root.last->ic_class); tempc=OptClassFwd(cc->coc.coc_head.last->ic_class);
if (!tempc->ptr_stars_cnt) if (!tempc->ptr_stars_cnt)
LexExcept(cc,"Not array or ptr "); LexExcept(cc,"Not array or ptr ");
if (!(cc->flags & (CCF_ARRAY | CCF_RAX))) { if (!(cc->flags & (CCF_ARRAY | CCF_RAX))) {
@@ -1069,7 +1069,7 @@ I64 PrsUnaryModifier(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,
if (cc->token!=']') if (cc->token!=']')
LexExcept(cc,"Missing ']' at "); LexExcept(cc,"Missing ']' at ");
Lex(cc); //skip ] Lex(cc); //skip ]
tempi1=cc->coc.coc_root.last; tempi1=cc->coc.coc_head.last;
tempi1->ic_flags|=ICF_R_TO_INT; tempi1->ic_flags|=ICF_R_TO_INT;
ICAdd(cc,IC_MUL,0,tempc); ICAdd(cc,IC_MUL,0,tempc);
ICAdd(cc,IC_ADD,0,tempc); ICAdd(cc,IC_ADD,0,tempc);
@@ -1085,7 +1085,7 @@ I64 PrsUnaryModifier(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,
if (cc->token!=']') if (cc->token!=']')
LexExcept(cc,"Missing ']' at "); LexExcept(cc,"Missing ']' at ");
Lex(cc); //skip ] Lex(cc); //skip ]
tempi1=cc->coc.coc_root.last; tempi1=cc->coc.coc_head.last;
tempi1->ic_flags|=ICF_R_TO_INT; tempi1->ic_flags|=ICF_R_TO_INT;
ICAdd(cc,IC_MUL,0,tempc); ICAdd(cc,IC_MUL,0,tempc);
ICAdd(cc,IC_ADD,0,tempc); ICAdd(cc,IC_ADD,0,tempc);
+10 -10
View File
@@ -92,16 +92,16 @@ CIntermediateCode *ICAdd(CCmpCtrl *cc,
flags|=ICF_LOCK; flags|=ICF_LOCK;
tempi->ic_flags=flags; tempi->ic_flags=flags;
tempi->ic_line=cc->last_line_num; tempi->ic_line=cc->last_line_num;
QueIns(tempi,cc->coc.coc_root.last); QueIns(tempi,cc->coc.coc_head.last);
return tempi; return tempi;
} }
U0 COCInit(CCmpCtrl *cc) U0 COCInit(CCmpCtrl *cc)
{ {
CCodeCtrl *tempcbh=&cc->coc; CCodeCtrl *tempcbh=&cc->coc;
QueInit(&tempcbh->coc_root.next); QueInit(&tempcbh->coc_head.next);
QueInit(&tempcbh->coc_next_misc); QueInit(&tempcbh->coc_next_misc);
tempcbh->coc_root.ic_code=IC_END; tempcbh->coc_head.ic_code=IC_END;
} }
U0 COCPush(CCmpCtrl *cc) U0 COCPush(CCmpCtrl *cc)
@@ -125,11 +125,11 @@ U0 COCPop(CCmpCtrl *cc)
U0 COCAppend(CCmpCtrl *cc, CCodeCtrl *tempcbh) U0 COCAppend(CCmpCtrl *cc, CCodeCtrl *tempcbh)
{ {
if (tempcbh->coc_root.next!=&cc->coc.coc_root.next) { if (tempcbh->coc_head.next!=&cc->coc.coc_head.next) {
cc->coc.coc_root.last->next=tempcbh->coc_root.next; cc->coc.coc_head.last->next=tempcbh->coc_head.next;
tempcbh->coc_root.next->last=cc->coc.coc_root.last; tempcbh->coc_head.next->last=cc->coc.coc_head.last;
cc->coc.coc_root.last=tempcbh->coc_root.last; cc->coc.coc_head.last=tempcbh->coc_head.last;
tempcbh->coc_root.last->next=&cc->coc.coc_root.next; tempcbh->coc_head.last->next=&cc->coc.coc_head.next;
} }
if (tempcbh->coc_next_misc!=&cc->coc.coc_next_misc) { if (tempcbh->coc_next_misc!=&cc->coc.coc_next_misc) {
cc->coc.coc_last_misc->next=tempcbh->coc_next_misc; cc->coc.coc_last_misc->next=tempcbh->coc_next_misc;
@@ -187,7 +187,7 @@ U0 COCDel(CCmpCtrl *cc,CCodeCtrl *coc)
{ {
CCodeMisc *cm,*cm1; CCodeMisc *cm,*cm1;
U8 *undef=NULL; U8 *undef=NULL;
QueDel(&coc->coc_root.next); QueDel(&coc->coc_head.next);
cm=coc->coc_next_misc; cm=coc->coc_next_misc;
while (cm!=&coc->coc_next_misc) { while (cm!=&coc->coc_next_misc) {
cm1=cm->next; cm1=cm->next;
@@ -233,7 +233,7 @@ U0 COCHeaderPut(CCmpCtrl *cc,I64 pass,Bool put)
if (put) { if (put) {
if (Bt(&cc->saved_pass_trace,pass-1)) { if (Bt(&cc->saved_pass_trace,pass-1)) {
"$$IV,1$$Pass %d:$$IV,0$$\n",pass-1; "$$IV,1$$Pass %d:$$IV,0$$\n",pass-1;
tempi=cc->coc.coc_root.next; tempi=cc->coc.coc_head.next;
while (tempi->ic_code) { while (tempi->ic_code) {
if (tempi->ic_flags&ICF_PASS_TRACE) if (tempi->ic_flags&ICF_PASS_TRACE)
ICPut(cc,tempi); ICPut(cc,tempi);
+19 -19
View File
@@ -578,7 +578,7 @@ class CSwitchCase {
U0 PrsSwitch(CCmpCtrl *cc,I64 try_cnt) U0 PrsSwitch(CCmpCtrl *cc,I64 try_cnt)
{ {
CSwitchCase *header=NULL,*temps,*temps1; //Leaks on except CSwitchCase *header=NULL,*temps,*temps1; //Leaks on except
CSubSwitch root,*tempss; //Leaks on except CSubSwitch head,*tempss; //Leaks on except
CCodeMisc *lb_dft,*lb_fwd_case,*mc_jt,*lb_entry,**jmp_table; CCodeMisc *lb_dft,*lb_fwd_case,*mc_jt,*lb_entry,**jmp_table;
CIntermediateCode *tempi_sub,*tempi_cmp,*tempi_jmp,*tempi_start; CIntermediateCode *tempi_sub,*tempi_cmp,*tempi_jmp,*tempi_start;
Bool dft_found=FALSE,nobound; Bool dft_found=FALSE,nobound;
@@ -591,10 +591,10 @@ U0 PrsSwitch(CCmpCtrl *cc,I64 try_cnt)
else else
LexExcept(cc,"Expecting '(' or '[' at "); LexExcept(cc,"Expecting '(' or '[' at ");
Lex(cc); Lex(cc);
QueInit(&root); QueInit(&head);
root.last->lb_break=COCMiscNew(cc,CMT_LABEL); head.last->lb_break=COCMiscNew(cc,CMT_LABEL);
root.last->lb_break->use_cnt++; head.last->lb_break->use_cnt++;
lb_dft=COCMiscNew(cc,CMT_LABEL); lb_dft=COCMiscNew(cc,CMT_LABEL);
lb_dft->use_cnt++; lb_dft->use_cnt++;
mc_jt=COCMiscNew(cc,CMT_JMP_TABLE); mc_jt=COCMiscNew(cc,CMT_JMP_TABLE);
@@ -630,9 +630,9 @@ sw_cont:
else else
LexExcept(cc,"Expecting ':' at "); LexExcept(cc,"Expecting ':' at ");
tempss=MAlloc(sizeof(CSubSwitch)); tempss=MAlloc(sizeof(CSubSwitch));
QueIns(tempss,root.last); QueIns(tempss,head.last);
root.last->lb_break=COCMiscNew(cc,CMT_LABEL); head.last->lb_break=COCMiscNew(cc,CMT_LABEL);
root.last->lb_break->use_cnt++; head.last->lb_break->use_cnt++;
lb_fwd_case=COCMiscNew(cc,CMT_LABEL); lb_fwd_case=COCMiscNew(cc,CMT_LABEL);
tempi_jmp=ICAdd(cc,IC_JMP,lb_fwd_case,0); tempi_jmp=ICAdd(cc,IC_JMP,lb_fwd_case,0);
@@ -646,7 +646,7 @@ sw_cont:
case KW_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_head.last==tempi_start) {
OptFree(tempi_jmp); OptFree(tempi_jmp);
tempss->lb_start=NULL; tempss->lb_start=NULL;
} else { } else {
@@ -661,7 +661,7 @@ sw_cont:
} }
break; break;
case KW_CASE: case KW_CASE:
if (root.next!=&root) { if (head.next!=&head) {
lb_fwd_case=COCMiscNew(cc,CMT_LABEL); lb_fwd_case=COCMiscNew(cc,CMT_LABEL);
tempi_jmp=ICAdd(cc,IC_JMP,lb_fwd_case,0);//In case fall-thru tempi_jmp=ICAdd(cc,IC_JMP,lb_fwd_case,0);//In case fall-thru
} }
@@ -669,9 +669,9 @@ sw_cont:
lb_entry=COCMiscNew(cc,CMT_LABEL); lb_entry=COCMiscNew(cc,CMT_LABEL);
ICAdd(cc,IC_LABEL,lb_entry,0); ICAdd(cc,IC_LABEL,lb_entry,0);
lb_entry->use_cnt++; lb_entry->use_cnt++;
if (root.next!=&root) { if (head.next!=&head) {
tempss=root.next; tempss=head.next;
while (tempss!=&root) { while (tempss!=&head) {
if (tempss->lb_start) if (tempss->lb_start)
ICAdd(cc,IC_SUB_CALL,tempss->lb_start,0); ICAdd(cc,IC_SUB_CALL,tempss->lb_start,0);
tempss=tempss->next; tempss=tempss->next;
@@ -717,7 +717,7 @@ sw_cont:
LexExcept(cc,"Expecting ':' at "); LexExcept(cc,"Expecting ':' at ");
break; break;
case KW_DFT: case KW_DFT:
if (root.next!=&root) { if (head.next!=&head) {
lb_fwd_case=COCMiscNew(cc,CMT_LABEL); lb_fwd_case=COCMiscNew(cc,CMT_LABEL);
tempi_jmp=ICAdd(cc,IC_JMP,lb_fwd_case,0);//In case fall-thru tempi_jmp=ICAdd(cc,IC_JMP,lb_fwd_case,0);//In case fall-thru
} }
@@ -727,9 +727,9 @@ sw_cont:
Lex(cc); Lex(cc);
else else
LexExcept(cc,"Expecting ':' at "); LexExcept(cc,"Expecting ':' at ");
if (root.next!=&root) { if (head.next!=&head) {
tempss=root.next; tempss=head.next;
while (tempss!=&root) { while (tempss!=&head) {
if (tempss->lb_start) if (tempss->lb_start)
ICAdd(cc,IC_SUB_CALL,tempss->lb_start,0); ICAdd(cc,IC_SUB_CALL,tempss->lb_start,0);
tempss=tempss->next; tempss=tempss->next;
@@ -739,13 +739,13 @@ sw_cont:
dft_found=TRUE; dft_found=TRUE;
break; break;
default: default:
PrsStmt(cc,try_cnt,root.last->lb_break); PrsStmt(cc,try_cnt,head.last->lb_break);
} }
} }
sw_sub_end: sw_sub_end:
tempss=root.last; tempss=head.last;
ICAdd(cc,IC_LABEL,tempss->lb_break,0); ICAdd(cc,IC_LABEL,tempss->lb_break,0);
if (tempss==&root) { if (tempss==&head) {
if (cc->token!='}') if (cc->token!='}')
LexExcept(cc,"Missing '}' at "); LexExcept(cc,"Missing '}' at ");
Lex(cc); Lex(cc);
+7 -7
View File
@@ -70,7 +70,7 @@ U0 PrsVarInit(CCmpCtrl *cc,U8 **_dst,CHashClass *tempc,CArrayDim *tempad,
ICAdd(cc,IC_ADD,0,tempc+1); ICAdd(cc,IC_ADD,0,tempc+1);
if (!PrsExpression(cc,NULL,TRUE)) if (!PrsExpression(cc,NULL,TRUE))
throw('Compiler'); throw('Compiler');
tempi=cc->coc.coc_root.last; tempi=cc->coc.coc_head.last;
if (tempi->ic_code==IC_END_EXP) { if (tempi->ic_code==IC_END_EXP) {
tempi->ic_code=IC_NOP1; tempi->ic_code=IC_NOP1;
tempi->ic_flags=0; tempi->ic_flags=0;
@@ -125,7 +125,7 @@ U0 PrsVarInit2(CCmpCtrl *cc,U8 **_dst,CHashClass *tempc,
{ {
I64 i,j,cnt; I64 i,j,cnt;
U8 *st,*_b; U8 *st,*_b;
CVI2 root,*tempvi,*tempvi1; CVI2 head,*tempvi,*tempvi1;
CArrayDim *tempad1; CArrayDim *tempad1;
tempc=OptClassFwd(tempc); tempc=OptClassFwd(tempc);
if (tempad1=tempad->next) { if (tempad1=tempad->next) {
@@ -157,13 +157,13 @@ U0 PrsVarInit2(CCmpCtrl *cc,U8 **_dst,CHashClass *tempc,
Lex(cc); Lex(cc);
} }
if (tempad1->cnt<0) {//[] if (tempad1->cnt<0) {//[]
QueInit(&root); QueInit(&head);
cnt=0; cnt=0;
while (cc->token!='}') { while (cc->token!='}') {
tempvi=MAlloc(offset(CVI2.base)+tempad1->total_cnt*tempc->size); tempvi=MAlloc(offset(CVI2.base)+tempad1->total_cnt*tempc->size);
_b=&tempvi->base; _b=&tempvi->base;
PrsVarInit2(cc,&_b,tempc,tempad1,data_addr_ip,_base,data_heap,pass); PrsVarInit2(cc,&_b,tempc,tempad1,data_addr_ip,_base,data_heap,pass);
QueIns(tempvi,root.last); QueIns(tempvi,head.last);
if (cc->token==',') if (cc->token==',')
Lex(cc); Lex(cc);
cnt++; cnt++;
@@ -178,8 +178,8 @@ U0 PrsVarInit2(CCmpCtrl *cc,U8 **_dst,CHashClass *tempc,
*_base=_b=MAlloc(i); *_base=_b=MAlloc(i);
else else
*_base=_b=MAlloc(i,Fs->code_heap); *_base=_b=MAlloc(i,Fs->code_heap);
tempvi=root.next; tempvi=head.next;
while (tempvi!=&root) { while (tempvi!=&head) {
tempvi1=tempvi->next; tempvi1=tempvi->next;
MemCpy(_b,&tempvi->base,j); MemCpy(_b,&tempvi->base,j);
_b+=j; _b+=j;
@@ -226,7 +226,7 @@ U0 PrsStaticInit(CCmpCtrl *cc,CMemberLst *tempm,I64 pass)
PrsVarInit2(cc,&dst,tempc,&tempm->dim,tempm->static_data_ip, PrsVarInit2(cc,&dst,tempc,&tempm->dim,tempm->static_data_ip,
&tempm->static_data,Bt(&cc->flags,CCf_AOT_COMPILE),pass); &tempm->static_data,Bt(&cc->flags,CCf_AOT_COMPILE),pass);
if (cc->flags&CCF_AOT_COMPILE && pass==2) { if (cc->flags&CCF_AOT_COMPILE && pass==2) {
if (cc->coc.coc_root.next!=&cc->coc.coc_root) { if (cc->coc.coc_head.next!=&cc->coc.coc_head) {
ICAdd(cc,IC_RET,0,0); ICAdd(cc,IC_RET,0,0);
if (machine_code=COCCompile(cc,&size,NULL,NULL)) { if (machine_code=COCCompile(cc,&size,NULL,NULL)) {
if (pass==2) { if (pass==2) {
+52 -65
View File
@@ -4,8 +4,7 @@ CMP_TEMPLATES::
DU32 @@05,@@10,@@15,@@25,@@30, DU32 @@05,@@10,@@15,@@25,@@30,
@@35,@@40,@@45,@@55,@@60, @@35,@@40,@@45,@@55,@@60,
@@75,@@80,@@85,@@90,@@95, @@75,@@80,@@85,@@90,@@95,
@@100,@@105,@@110,@@115,@@125, @@100,@@105,@@110,@@120,@@130;
@@135;
@@05: //INC @@05: //INC
PUSH RAX PUSH RAX
@@ -109,77 +108,72 @@ CMP_TEMPLATES::
@@70: @@70:
@@75: @@75:
@@80: @@80:
@@85: @@85: //Sqr
MOV EAX,HPET_MAIN_CNT
MOV RAX,U64 [RAX]
@@90: //Sqr
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
FMUL ST0,ST0 FMUL ST0,ST0
FSTP U64 [RSP] FSTP U64 [RSP]
POP RAX POP RAX
@@95: //Abs @@90: //Abs
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
FABS FABS
FSTP U64 [RSP] FSTP U64 [RSP]
POP RAX POP RAX
@@100: //Sqrt @@95: //Sqrt
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
FSQRT FSQRT
FSTP U64 [RSP] FSTP U64 [RSP]
POP RAX POP RAX
@@105: //Sin @@100: //Sin
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
FSIN FSIN
FSTP U64 [RSP] FSTP U64 [RSP]
POP RAX POP RAX
@@110: //Cos @@105: //Cos
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
FCOS FCOS
FSTP U64 [RSP] FSTP U64 [RSP]
POP RAX POP RAX
@@115: //Tan @@110: //Tan
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
@@120: FPTAN @@115: FPTAN
FSTSW FSTSW
TEST AX,0x400 TEST AX,0x400
JNZ @@120 JNZ @@115
FFREE ST0 FFREE ST0
FINCSTP FINCSTP
FSTP U64 [RSP] FSTP U64 [RSP]
POP RAX POP RAX
@@125: //Atan @@120: //Atan
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
FLD1 FLD1
@@130: FPATAN @@125: FPATAN
FSTSW FSTSW
TEST AX,0x400 TEST AX,0x400
JNZ @@130 JNZ @@125
FSTP U64 [RSP] FSTP U64 [RSP]
POP RAX POP RAX
@@135: @@130:
//************************************ //************************************
CMP_TEMPLATES_DONT_POP:: CMP_TEMPLATES_DONT_POP::
DU32 @@05,@@10,@@15,@@20,@@25, DU32 @@05,@@10,@@15,@@20,@@25,
@@30,@@35,@@40,@@45,@@50, @@30,@@35,@@40,@@45,@@50,
@@55,@@60,@@65,@@70,@@75, @@55,@@60,@@65,@@70,@@75,
@@80,@@85,@@90,@@95,@@105, @@80,@@85,@@90,@@100,@@110;
@@115;
@@05: //INC @@05: //INC
PUSH RAX PUSH RAX
@@ -208,67 +202,65 @@ CMP_TEMPLATES_DONT_POP::
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
ADD RSP,8 ADD RSP,8
@@65:
@@70: //Sqr @@65: //Sqr
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
FMUL ST0,ST0 FMUL ST0,ST0
ADD RSP,8 ADD RSP,8
@@75: //Abs @@70: //Abs
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
FABS FABS
ADD RSP,8 ADD RSP,8
@@80: //Sqrt @@75: //Sqrt
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
FSQRT FSQRT
ADD RSP,8 ADD RSP,8
@@85: //Sin @@80: //Sin
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
FSIN FSIN
ADD RSP,8 ADD RSP,8
@@90: //Cos @@85: //Cos
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
FCOS FCOS
ADD RSP,8 ADD RSP,8
@@95: //Tan @@90: //Tan
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
@@100: FPTAN @@95: FPTAN
FSTSW FSTSW
TEST AX,0x400 TEST AX,0x400
JNZ @@100 JNZ @@95
FFREE ST0 FFREE ST0
FINCSTP FINCSTP
ADD RSP,8 ADD RSP,8
@@105: //Atan @@100: //Atan
PUSH RAX PUSH RAX
FLD U64 [RSP] FLD U64 [RSP]
FLD1 FLD1
@@110: FPATAN @@105: FPATAN
FSTSW FSTSW
TEST AX,0x400 TEST AX,0x400
JNZ @@110 JNZ @@105
ADD RSP,8 ADD RSP,8
@@115: @@110:
//************************************ //************************************
CMP_TEMPLATES_DONT_PUSH:: CMP_TEMPLATES_DONT_PUSH::
DU32 @@05,@@10,@@15,@@20,@@30, DU32 @@05,@@10,@@15,@@20,@@30,
@@35,@@40,@@50,@@55,@@60, @@35,@@40,@@50,@@55,@@60,
@@65,@@70,@@75,@@80,@@85, @@65,@@70,@@75,@@80,@@85,
@@90,@@95,@@100,@@105,@@115, @@90,@@95,@@100,@@110,@@120;
@@125;
@@05: //INC @@05: //INC
SUB RSP,8 SUB RSP,8
@@ -336,66 +328,64 @@ CMP_TEMPLATES_DONT_PUSH::
FSTP U64 [RSP] FSTP U64 [RSP]
POP RAX POP RAX
@@70: @@70:
@@75: @@75: //Sqr
@@80: //Sqr
SUB RSP,8 SUB RSP,8
FMUL ST0,ST0 FMUL ST0,ST0
FSTP U64 [RSP] FSTP U64 [RSP]
POP RAX POP RAX
@@85: //Abs @@80: //Abs
SUB RSP,8 SUB RSP,8
FABS FABS
FSTP U64 [RSP] FSTP U64 [RSP]
POP RAX POP RAX
@@90: //Sqrt @@85: //Sqrt
SUB RSP,8 SUB RSP,8
FSQRT FSQRT
FSTP U64 [RSP] FSTP U64 [RSP]
POP RAX POP RAX
@@95: //Sin @@90: //Sin
SUB RSP,8 SUB RSP,8
FSIN FSIN
FSTP U64 [RSP] FSTP U64 [RSP]
POP RAX POP RAX
@@100: //Cos @@95: //Cos
SUB RSP,8 SUB RSP,8
FCOS FCOS
FSTP U64 [RSP] FSTP U64 [RSP]
POP RAX POP RAX
@@105: //Tan @@100: //Tan
SUB RSP,8 SUB RSP,8
@@110: FPTAN @@105: FPTAN
FSTSW FSTSW
TEST AX,0x400 TEST AX,0x400
JNZ @@110 JNZ @@105
FFREE ST0 FFREE ST0
FINCSTP FINCSTP
FSTP U64 [RSP] FSTP U64 [RSP]
POP RAX POP RAX
@@115: //Atan @@110: //Atan
SUB RSP,8 SUB RSP,8
FLD1 FLD1
@@120: FPATAN @@115: FPATAN
FSTSW FSTSW
TEST AX,0x400 TEST AX,0x400
JNZ @@120 JNZ @@115
FSTP U64 [RSP] FSTP U64 [RSP]
POP RAX POP RAX
@@125: @@120:
//************************************ //************************************
CMP_TEMPLATES_DONT_PUSH_POP:: CMP_TEMPLATES_DONT_PUSH_POP::
DU32 @@05,@@10,@@15,@@20,@@25, DU32 @@05,@@10,@@15,@@20,@@25,
@@30,@@35,@@40,@@45,@@50, @@30,@@35,@@40,@@45,@@50,
@@55,@@60,@@65,@@70,@@75, @@55,@@60,@@65,@@70,@@75,
@@80,@@85,@@90,@@95,@@100, @@80,@@85,@@90,@@95,@@105;
@@110;
@@05: //INC @@05: //INC
SUB RSP,8 SUB RSP,8
@@ -421,45 +411,43 @@ CMP_TEMPLATES_DONT_PUSH_POP::
@@50: @@50:
@@55: @@55:
@@60: @@60:
@@65: @@65: //Sqr
@@70: //Sqr
FMUL ST0,ST0 FMUL ST0,ST0
@@75: //Abs @@70: //Abs
FABS FABS
@@80: //Sqrt @@75: //Sqrt
FSQRT FSQRT
@@85: //Sin @@80: //Sin
FSIN FSIN
@@90: //Cos @@85: //Cos
FCOS FCOS
@@95: //Tan @@90: //Tan
FPTAN FPTAN
FSTSW FSTSW
TEST AX,0x400 TEST AX,0x400
JNZ @@95 JNZ @@90
FFREE ST0 FFREE ST0
FINCSTP FINCSTP
@@100: //Atan @@95: //Atan
FLD1 FLD1
@@105: FPATAN @@100: FPATAN
FSTSW FSTSW
TEST AX,0x400 TEST AX,0x400
JNZ @@105 JNZ @@100
@@110: @@105:
//************************************ //************************************
CMP_TEMPLATES_DONT_PUSH2:: CMP_TEMPLATES_DONT_PUSH2::
DU32 @@05,@@10,@@15,@@20,@@25, DU32 @@05,@@10,@@15,@@20,@@25,
@@35,@@45,@@50,@@55,@@60, @@35,@@45,@@50,@@55,@@60,
@@65,@@70,@@75,@@80,@@85, @@65,@@70,@@75,@@80,@@85,
@@90,@@95,@@100,@@105,@@110, @@90,@@95,@@100,@@105,@@110;
@@115;
@@05: @@05:
@@10: @@10:
@@ -521,5 +509,4 @@ CMP_TEMPLATES_DONT_PUSH2::
@@100: @@100:
@@105: @@105:
@@110: @@110:
@@115:
} }
+4 -4
View File
@@ -41,7 +41,7 @@ U0 DocHiddenDel(CDoc *doc=NULL)
if (doc) { if (doc) {
unlock=DocLock(doc); unlock=DocLock(doc);
DocRecalc(doc); DocRecalc(doc);
doc_e=doc->root.next; doc_e=doc->head.next;
while (doc_e!=doc) { while (doc_e!=doc) {
doc_e1=doc_e->next; doc_e1=doc_e->next;
if (doc_e->de_flags&(DOCEF_FILTER_SKIP|DOCEF_SKIP)) if (doc_e->de_flags&(DOCEF_FILTER_SKIP|DOCEF_SKIP))
@@ -165,7 +165,7 @@ Bool MyPutKey(I64 ch,I64 sc)
else { else {
FifoU8Flush(god.fifo); FifoU8Flush(god.fifo);
GodBitsIns(GOD_GOOD_BITS,KbdMouseEvtTime>>GOD_BAD_BITS); GodBitsIns(GOD_GOOD_BITS,KbdMouseEvtTime>>GOD_BAD_BITS);
GodBooksPassage("C:/Home/Downloads/Text/*"); GodBooksPassage("C:/Home/Sup1/Sup1Texts/*");
} }
} else { } else {
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
@@ -319,9 +319,9 @@ Bool MyPutKey(I64 ch,I64 sc)
return TRUE; return TRUE;
case 'p': case 'p':
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Cmd /JukeBox(Home/Downloads)"); KeyDescSet("Cmd /JukeBox(Home/Sup1)");
else else
JukeBox("~/Downloads/Psalmody"); JukeBox("~/Sup1/Sup1Psalmody");
return TRUE; return TRUE;
case 'P': case 'P':
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
+1 -1
View File
@@ -9,7 +9,7 @@ U0 UserStartUp()
WinToTop; WinToTop;
WinZBufUpdate; WinZBufUpdate;
Dir; Dir;
"$TX,"80,142",D="DD_TEMPLEOS_LOC_OFFICIAL"$LOC:"; "$TX,"81,125",D="DD_TEMPLEOS_LOC_OFFICIAL"$LOC:";
CPURep; CPURep;
} }
+1 -1
View File
@@ -1,7 +1,7 @@
#help_index "Cmd Line (Typically)" #help_index "Cmd Line (Typically)"
#define FILEMASK_OFF_LIMITS "!*/Misc/PCIDevices.TXT*;!*/Misc/Bible.TXT*;"\ #define FILEMASK_OFF_LIMITS "!*/Misc/PCIDevices.TXT*;!*/Misc/Bible.TXT*;"\
"!*/Downloads/Text/*;!*/Downloads/Words/*;!*/Downloads/Bin/*;"\ "!*/Sup1/Sup1Texts/*;!*/Sup1/Sup1Words/*;!*/Sup1/Sup1Bin/*;"\
"!*/God/Vocab.TXT*" "!*/God/Vocab.TXT*"
public I64 F(U8 *needle_str,U8 *fu_flags=NULL) public I64 F(U8 *needle_str,U8 *fu_flags=NULL)
Binary file not shown.
+10 -12
View File
@@ -1,5 +1,5 @@
$WW,1$$FG,5$$TX+CX,"TODO"$$FG$ $WW,1$$FG,5$$TX+CX,"TODO"$$FG$
* $LK,"::/Demo/Games/RawHide.CPP"$ fix waterfall code so not in center. * Cursor in $LK,"::/Home/TOSToHtml.CPP"$.
* Investigate why packet loss $LK,"Training Sleep(1)",A="FF:::/Adam/Training.CPP,Sleep(1)"$. * Investigate why packet loss $LK,"Training Sleep(1)",A="FF:::/Adam/Training.CPP,Sleep(1)"$.
@@ -10,8 +10,7 @@ $WW,1$$FG,5$$TX+CX,"TODO"$$FG$
* God said this is bad. $LK,"FL:::/Adam/DolDoc/DocFind.CPP,41"$ * God said this is bad. $LK,"FL:::/Adam/DolDoc/DocFind.CPP,41"$
* Backward <SHIFT-F3> is broken? * Backward <SHIFT-F3> is broken?
* Cannot entering a '$$' in $$TX command's tag. * Cannot include ':' in $LK,"Document Links",A="FF:::/Adam/DolDoc/DocLink.CPP,AD"$ search string.
* $$DA fixed width string: <Del> or <BACKSPACE> permanently shortens. * $$DA fixed width string: <Del> or <BACKSPACE> permanently shortens.
* Editor overstrike mode at cmd line with menu macro? Probably, many other overstrike issues. * Editor overstrike mode at cmd line with menu macro? Probably, many other overstrike issues.
@@ -20,8 +19,6 @@ $WW,1$$FG,5$$TX+CX,"TODO"$$FG$
* $LK,"FL:::/Adam/Gr/SpriteEd.CPP,789"$ Resize bitmap? * $LK,"FL:::/Adam/Gr/SpriteEd.CPP,789"$ Resize bitmap?
* Cannot include ':' in $LK,"Document Links",A="FF:::/Adam/DolDoc/DocLink.CPP,AD"$ search string.
* $LK,"DOCEF_REMALLOC_DATA",A="FF:::/Adam/DolDoc/DocChar.CPP,DOCEF_REMALLOC_DATA"$ HexEdit Remalloc. * $LK,"DOCEF_REMALLOC_DATA",A="FF:::/Adam/DolDoc/DocChar.CPP,DOCEF_REMALLOC_DATA"$ HexEdit Remalloc.
* $LK,"DOCF_DBL_DOLLARS",A="MN:DOCF_DBL_DOLLARS"$ in $LK,"Reindention",A="MN:EdCodeTools2"$. * $LK,"DOCF_DBL_DOLLARS",A="MN:DOCF_DBL_DOLLARS"$ in $LK,"Reindention",A="MN:EdCodeTools2"$.
@@ -52,7 +49,7 @@ $WW,1$$FG,5$$TX+CX,"TODO"$$FG$
* Use pen_width and pen_height when clipping with pen_width>1. * Use pen_width and pen_height when clipping with pen_width>1.
* $LK,"~/Downloads/Games/Rocks.CPP"$. * $LK,"~/Sup1/Sup1Games/Rocks.CPP"$.
* Asm LIST NOLIST bugs. * Asm LIST NOLIST bugs.
@@ -69,6 +66,8 @@ $WW,1$$FG,5$$TX+CX,"TODO"$$FG$
* $LK,"GrLineFat3",A="MN:GrLineFat3"$() needs a little work. * $LK,"GrLineFat3",A="MN:GrLineFat3"$() needs a little work.
* $LK,"GrFillTri0",A="MN:GrFillTri0"$() with both $LK,"GrHLine",A="MN:GrHLine"$() and $LK,"GrVLine",A="MN:GrVLine"$() don't match in $LK,"::/Demo/Games/CastleFrankenstein.CPP"$ causing wall spot pixels.
$FG,5$$TX+CX,"TODO? Meh"$$FG$ $FG,5$$TX+CX,"TODO? Meh"$$FG$
* Compiler: lock{} needs warn on invalid modes or something. * Compiler: lock{} needs warn on invalid modes or something.
@@ -153,7 +152,6 @@ $FG,5$$TX+CX,"Bugs? Not really sure."$$FG$
* 1/1/2015 Bug messing-up keyboard, like no CTRL key. Was working on Sprites. * 1/1/2015 Bug messing-up keyboard, like no CTRL key. Was working on Sprites.
* 4/13/14 Strut or RawHide crashed when $LK,"sys_var_init_flag",A="MN:sys_var_init_flag"$ was set during testsuite. Perhaps, floodfill? * 4/13/14 Strut or RawHide crashed when $LK,"sys_var_init_flag",A="MN:sys_var_init_flag"$ was set during testsuite. Perhaps, floodfill?
* 3/19/14: RESET during RawHide.
* $LK,"ChkDsk",A="MN:ChkDsk"$ alloc unalloced. I don't know if I fixed this. * $LK,"ChkDsk",A="MN:ChkDsk"$ alloc unalloced. I don't know if I fixed this.
@@ -268,7 +266,7 @@ $FG,5$$TX+CX,"Committee Needed"$$FG$
* Note: We will never put multiple $LK,"Keyboard Tables",A="FI:::/Kernel/SerialDev/Keyboard.CPP"$. Each country must make their own version of TempleOS. The $LK,"Intel Factory ROM",A="FF:::/Doc/Demands.TXT,English"$ will have just English. Our $LK,"Charter",A="FI:::/Doc/Charter.TXT"$ bans multiple country or architectures in the same version. * Note: We will never put multiple $LK,"Keyboard Tables",A="FI:::/Kernel/SerialDev/Keyboard.CPP"$. Each country must make their own version of TempleOS. The $LK,"Intel Factory ROM",A="FF:::/Doc/Demands.TXT,English"$ will have just English. Our $LK,"Charter",A="FI:::/Doc/Charter.TXT"$ bans multiple country or architectures in the same version.
* 12 border chars in screen font codes 0x02-0x0D. $LK,"TextBorder",A="MN:TextBorder"$() $LK,"RawDr",A="MN:RawDr"$() LineFeed shows-up in $FG,2$<CTRL-m>$FG$ PersonalMenu. * 12 border chars in screen font codes 0x02-0x0D. $LK,"TextBorder",A="MN:TextBorder"$() $LK,"RawDr",A="MN:RawDr"$() $LK,"::/Demo/Games/CharDemo.CPP"$. LineFeed shows-up in $FG,2$<CTRL-m>$FG$ PersonalMenu.
* Super-simple high speed serial needs flow control. $FG,2$<CTRL-s>$FG$ and $FG,2$<CTRL-q>$FG$? * Super-simple high speed serial needs flow control. $FG,2$<CTRL-s>$FG$ and $FG,2$<CTRL-q>$FG$?
@@ -410,10 +408,10 @@ New wineskins $TX,"Mark 2:22",HTML="http://www.biblegateway.com/verse/en/Mark
$FG,5$$TX+CX,"Misc Notes"$$FG$ $FG,5$$TX+CX,"Misc Notes"$$FG$
Intel CEO's name: Brian Krzanich Intel CEO's name: Brian Krzanich
>$FG,2$lspci -v$FG$ >$FG,2$lspci -v$FG$
Size:$TX,"17412 KB",D="DD_TEMPLEOSCD_K_SIZE"$ Size:$TX,"17422 KB",D="DD_TEMPLEOSCD_K_SIZE"$
$FG,5$$TX+CX,"My Web Bookmarks"$$FG$$WW,0$ $FG,5$$TX+CX,"My Web Bookmarks"$$FG$$WW,0$
$TX,"My FireFox Bookmarks",HTML="http://www.templeos.org/Wb/Home/Downloads/Blog/Bookmarks"$ $TX,"My FireFox Bookmarks",HTML="http://www.templeos.org/Wb/Home/Sup1/Sup1Blog/Bookmarks"$
Machine $HC,"<center><img src=\"http://www.templeos.org/images/Machine.jpg\" width=\"600\" height=\"400\" alt=\"\"></center>"$ Machine $HC,"<center><img src=\"http://www.templeos.org/images/Machine.jpg\" width=\"600\" height=\"400\" alt=\"\"></center>"$
Frosting $HC,"<center><img src=\"http://www.templeos.org/images/Frosting.jpg\" width=\"600\" height=\"400\" alt=\"\"></center>"$ Frosting $HC,"<center><img src=\"http://www.templeos.org/images/Frosting.jpg\" width=\"600\" height=\"400\" alt=\"\"></center>"$
Soap Carvings $HC,"<center><img src=\"http://www.templeos.org/images/SoapCarvings.jpg\" width=\"640\" height=\"480\" alt=\"\"></center>"$ Soap Carvings $HC,"<center><img src=\"http://www.templeos.org/images/SoapCarvings.jpg\" width=\"640\" height=\"480\" alt=\"\"></center>"$
@@ -437,7 +435,6 @@ qFeDAsBDeDqCeF2G3sGGeF2sG3C2G3CBCeF
$FG,5$$TX+CX,"Web Bookmarks"$$FG$ $FG,5$$TX+CX,"Web Bookmarks"$$FG$
Cop tying shoe $HC,"<center><img src=\"https://goodtimestories.files.wordpress.com/2013/04/cop-tying-shoe-cambridge-county-pd.jpg\" width=\"480\" height=\"376\" alt=\"\"></center>"$ Cop tying shoe $HC,"<center><img src=\"https://goodtimestories.files.wordpress.com/2013/04/cop-tying-shoe-cambridge-county-pd.jpg\" width=\"480\" height=\"376\" alt=\"\"></center>"$
$TX,"Good Time Bad Times Lyrics",HTML="https://www.google.com/#q=led+zep+good+times+bad+times+lyrics"$
$TX,"Unikernels",HTML="https://ma.ttias.be/what-is-a-unikernel"$ $TX,"Unikernels",HTML="https://ma.ttias.be/what-is-a-unikernel"$
$TX,"Handford school",HTML="https:/pinterest.com/pin/255368241346360278"$ $TX,"Handford school",HTML="https:/pinterest.com/pin/255368241346360278"$
$TX,"Look at PCI interrupt routing.",HTML="http://forum.osdev.org/viewtopic.php?f=1&t=29558"$ $TX,"Look at PCI interrupt routing.",HTML="http://forum.osdev.org/viewtopic.php?f=1&t=29558"$
@@ -445,8 +442,9 @@ $TX,"The sins of Newton",HTML="https://www.brainpickings.org/2012/01/04/isaac-ne
$TX,"Stalin's Tanks",HTML="https://boardgamegeek.com/boardgame/5198/stalins-tanks"$ $TX,"Stalin's Tanks",HTML="https://boardgamegeek.com/boardgame/5198/stalins-tanks"$
$TX,"Lamp shades",HTML="http://www.lampsplus.com/products/lamp-shades"$ $TX,"Lamp shades",HTML="http://www.lampsplus.com/products/lamp-shades"$
$TX,"The Original Jewish Temple",HTML="http://www.jewishvirtuallibrary.org/jsource/Judaism/The_Temple.html"$ $TX,"The Original Jewish Temple",HTML="http://www.jewishvirtuallibrary.org/jsource/Judaism/The_Temple.html"$
$TX,"KingJamesBible with LineNums",HTML="http://www.templeos.org/files/NumBible.TXT"$ $TX,"KingJamesBible with LineNums",HTML="http://www.templeos.org/Wb/Home/Sup1/Sup1Blog/NumBible.TXT"$
$TX,"Higgs 5-Sigma Proof",HTML="http://understandinguncertainty.org/explaining-5-sigma-higgs-how-well-did-they-do"$ $TX,"Higgs 5-Sigma Proof",HTML="http://understandinguncertainty.org/explaining-5-sigma-higgs-how-well-did-they-do"$
$TX,"The Number Bleem",HTML="http://www.strangehorizons.com/2000/20001120/secret_number.shtml"$
$TX,"Dwight: Nerd torture",HTML="http://www.noob.us/humor/the-office-dwight-faces-nerd-torture-of-the-highest-form"$ $TX,"Dwight: Nerd torture",HTML="http://www.noob.us/humor/the-office-dwight-faces-nerd-torture-of-the-highest-form"$
$TX,"TOSZ Compression",HTML="http://www.templeos.org/Wb/Linux/TOSZ.CPP"$ $TX,"TOSZ Compression",HTML="http://www.templeos.org/Wb/Linux/TOSZ.CPP"$
$TX,"ATA/ATAPI spec",HTML="http://www.t13.org/Documents/UploadedDocuments/docs2007/D1532v1r4b-AT_Attachment_with_Packet_Interface_-_7_Volume_1.pdf"$ $TX,"ATA/ATAPI spec",HTML="http://www.t13.org/Documents/UploadedDocuments/docs2007/D1532v1r4b-AT_Attachment_with_Packet_Interface_-_7_Volume_1.pdf"$
+25 -25
View File
@@ -2,8 +2,8 @@ $TR-UL,"Adam"$
$ID,2$$TR,"SysMsgFlags"$ $ID,2$$TR,"SysMsgFlags"$
$ID,2$sys_msg_flags[0]=0xFF; $ID,2$sys_msg_flags[0]=0xFF;
$ID,-2$$TR,"SysRegVer"$ $ID,-2$$TR,"SysRegVer"$
$ID,2$registry_version=4.090; $ID,2$registry_version=4.100;
$ID,-2$$ID,-2$$TR-C-UL,"TempleOS"$ $ID,-2$$ID,-2$$TR-UL,"TempleOS"$
$ID,2$$TR,"TOS"$ $ID,2$$TR,"TOS"$
$ID,2$I64 tos_code_walk_thru=105,tos_after_egypt_in_action=46; $ID,2$I64 tos_code_walk_thru=105,tos_after_egypt_in_action=46;
$ID,-2$$TR,"CircleTrace"$ $ID,-2$$TR,"CircleTrace"$
@@ -13,37 +13,37 @@ $ID,2$F64 best_score=9999.0000;
$ID,-2$$TR,"Staff"$ $ID,-2$$TR,"Staff"$
$ID,2$#define PERSONAL_INITIALS "TAD" $ID,2$#define PERSONAL_INITIALS "TAD"
#define MACHINE_CFG 0 #define MACHINE_CFG 0
$ID,-2$$TR,"BlackDiamond"$
$ID,2$I64 best_score=9;
$ID,-2$$TR,"DunGen"$
$ID,2$F64 best_score=20.5295;
$ID,-2$$TR,"ZoneOut"$
$ID,2$F64 best_score=8.1373;
$ID,-2$$TR,"Varoom"$
$ID,2$F64 best_score=46.2643;
$ID,-2$$TR,"FlapBat"$
$ID,2$F64 best_score=16.4090;
$ID,-2$$TR,"TimeOut"$
$ID,2$I64 best_score=22202;
$ID,-2$$TR,"RawHide"$
$ID,2$F64 best_score=96.1279;
$ID,-2$$TR,"KeepAway"$ $ID,-2$$TR,"KeepAway"$
$ID,2$I64 best_score0=68,best_score1=30; $ID,2$I64 best_score0=68,best_score1=30;
$ID,-2$$TR,"CastleFrankenstein"$
$ID,2$F64 best_score=33.8405;
$ID,-2$$TR,"ZoneOut"$
$ID,2$F64 best_score=8.1373;
$ID,-2$$TR,"DunGen"$
$ID,2$F64 best_score=20.5295;
$ID,-2$$TR,"Wenceslas"$
$ID,2$F64 best_score=43.9944;
$ID,-2$$TR,"FlapBat"$
$ID,2$F64 best_score=16.3077;
$ID,-2$$TR,"RawHide"$
$ID,2$F64 best_score=96.1279;
$ID,-2$$TR,"Varoom"$
$ID,2$F64 best_score=46.2643;
$ID,-2$$TR,"TimeOut"$
$ID,2$I64 best_score=22202;
$ID,-2$$TR,"BlackDiamond"$
$ID,2$I64 best_score=9;
$ID,-2$$TR,"BomberGolf"$
$ID,2$I64 best_score=175;
$ID,-2$$TR,"XCaliber"$ $ID,-2$$TR,"XCaliber"$
$ID,2$I64 best_score=248; $ID,2$I64 best_score=248;
I64 msg_flags=1; I64 msg_flags=1;
$ID,-2$$TR,"Wenceslas"$
$ID,2$F64 best_score=43.9944;
$ID,-2$$TR,"BomberGolf"$
$ID,2$I64 best_score=175;
$ID,-2$$TR,"CastleFrankenstein"$
$ID,2$F64 best_score=33.8405;
$ID,-2$$TR,"EagleDive"$ $ID,-2$$TR,"EagleDive"$
$ID,2$I64 best_score=8; $ID,2$F64 best_score=147.6932;
$ID,-2$$ID,-2$$TR,"DemoCompany"$ $ID,-2$$ID,-2$$TR,"DemoCompany"$
$ID,2$ $ID,2$
$TR,"Game1"$ $TR,"Game1"$
$ID,2$F64 best_score=168.87967; $ID,2$F64 best_score=388.68032;
$TR,"SimpleVal"$ $TR,"SimpleVal"$
$ID,2$1330; $ID,2$1332;
$ID,-2$$ID,-2$ $ID,-2$$ID,-2$
+3 -2
View File
@@ -75,7 +75,7 @@ U0 BlogScreenShot()
gr.fp_draw_input_ptr=NULL; gr.fp_draw_input_ptr=NULL;
WinMgrSync(2); WinMgrSync(2);
dc1=DCScreenCapture; dc1=DCScreenCapture;
dc2=DCExtract(dc1,0,FONT_HEIGHT,GR_WIDTH-1,GR_HEIGHT-1); dc2=DCExt(dc1,0,FONT_HEIGHT,GR_WIDTH-1,GR_HEIGHT-1);
BlogDCImgWrite(dc2); BlogDCImgWrite(dc2);
gr.fp_draw_input_ptr=old_fp_draw_input_ptr; gr.fp_draw_input_ptr=old_fp_draw_input_ptr;
DCDel(dc1); DCDel(dc1);
@@ -89,7 +89,7 @@ public U0 MakeWebSitePartial()
MkDir("D:/Wb/Home"); MkDir("D:/Wb/Home");
MkDir("D:/Wb/Home/Web"); MkDir("D:/Wb/Home/Web");
MkDir("D:/Wb/Home/Web/TAD"); MkDir("D:/Wb/Home/Web/TAD");
MkDir("D:/Wb/Home/Web/TAD/Blog"); MkDir("D:/Wb/Home/Web/TAD/BlogDir");
FreshenWebDir("/Home/Web"); FreshenWebDir("/Home/Web");
FreshenWebDir("/Home/Web/" PERSONAL_INITIALS); FreshenWebDir("/Home/Web/" PERSONAL_INITIALS);
@@ -109,6 +109,7 @@ public U0 Blog()
Msg(MSG_KEY_DOWN_UP,0,SC_F6|SCF_ALT); Msg(MSG_KEY_DOWN_UP,0,SC_F6|SCF_ALT);
Msg(MSG_KEY_DOWN_UP,'\n',0); Msg(MSG_KEY_DOWN_UP,'\n',0);
if (Ed(BlogLocalFile,EDF_WAS_WRITE)) { if (Ed(BlogLocalFile,EDF_WAS_WRITE)) {
DocOpt(BlogLocalFile,"-r");
Copy(BlogLocalFile,"::" DAILY_BASE ".TXT.Z"); Copy(BlogLocalFile,"::" DAILY_BASE ".TXT.Z");
Copy(BlogLocalFile,"D:" DAILY_BASE ".TXT.Z"); Copy(BlogLocalFile,"D:" DAILY_BASE ".TXT.Z");
Copy(BlogLocalFile,"D:/Wb" DAILY_BASE ".TXT.Z"); Copy(BlogLocalFile,"D:/Wb" DAILY_BASE ".TXT.Z");
+1 -1
View File
@@ -7,7 +7,7 @@ RegSetDftEntry("TempleOS/Staff",
RegExeBranch("TempleOS/Staff"); RegExeBranch("TempleOS/Staff");
#define PERSONAL_WEB "http:/" "/www.templeos.org/Wb" #define PERSONAL_WEB "http:/" "/www.templeos.org/Wb"
#define BLOG_BASE "/Home/Web/" PERSONAL_INITIALS "/Blog" #define BLOG_BASE "/Home/Web/" PERSONAL_INITIALS "/BlogDir"
#define DAILY_BASE "/Home/Web/" PERSONAL_INITIALS "/DailyBlog" #define DAILY_BASE "/Home/Web/" PERSONAL_INITIALS "/DailyBlog"
#define BLOG_LOCAL_BASE "::" BLOG_BASE #define BLOG_LOCAL_BASE "::" BLOG_BASE
#define BLOG_WEB_BASE PERSONAL_WEB BLOG_BASE #define BLOG_WEB_BASE PERSONAL_WEB BLOG_BASE
Loaded 100 of 181 files, more files were not shown because too many files have changed in this diff. Show more