diff --git a/0000Boot/0000Kernel.BIN.C b/0000Boot/0000Kernel.BIN.C index 62e496ae..9dc1f6cb 100644 Binary files a/0000Boot/0000Kernel.BIN.C and b/0000Boot/0000Kernel.BIN.C differ diff --git a/Adam/ADefine.CPP b/Adam/ADefine.CPP index 35deb498..b70a1cd0 100644 --- a/Adam/ADefine.CPP +++ b/Adam/ADefine.CPP @@ -11,8 +11,8 @@ U0 LoadDocDefines() //This is cut and replaced when I generate a distro. //See $LK,"DD_TEMPLEOS_LOC",A="FF:::/Demo/AcctExample/TOSDistro.CPP,DD_TEMPLEOS_LOC"$. $TR-C,"LineRep"$ - $ID,4$DefinePrint("DD_TEMPLEOS_LOC","119,687"); -DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","80,688"); + $ID,4$DefinePrint("DD_TEMPLEOS_LOC","119,708"); +DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","80,702"); $ID,-4$ DefinePrint("DD_KERNEL","%08X",bfh); bfh(I64)+=bfh->file_size-1; diff --git a/Adam/AExts.CPP b/Adam/AExts.CPP index d1c58a52..6d9237f3 100644 --- a/Adam/AExts.CPP +++ b/Adam/AExts.CPP @@ -17,7 +17,7 @@ extern U0 DocBinDel(CDoc *doc,CDocBin *b); extern U0 DocBinsValidate(CDoc *doc); extern U0 DocBottom(CDoc *doc=NULL); extern U0 DocCenter(CDoc *doc=NULL,I64 recalc=RECALCt_NORMAL); -extern U0 DocClear(CDoc *doc=NULL); +extern U0 DocClear(CDoc *doc=NULL,Bool clear_holds=FALSE); extern Bool DocCursor(Bool show=OFF,CDoc *doc=NULL); extern U0 DocD(U8 *buf,I64 cnt=0x80); extern U0 DocDataFmt(CDoc *doc,CDocEntry *doc_e,I64 d=DOCM_CANCEL); @@ -35,7 +35,7 @@ extern U0 DocInsEntry(CDoc *doc,CDocEntry *doc_e); extern Bool DocLock(CDoc *doc); extern U0 DocMax(I64 i=MAX_I32); extern CDoc *DocNew(U8 *filename=NULL,CTask *task=NULL); -extern CDocEntry *DocPrint(CDoc *doc,U8 *src,...); +extern CDocEntry *DocPrint(CDoc *doc=NULL,U8 *src,...); extern CDoc *DocPut(CTask *task=NULL); extern CDoc *DocRead(U8 *name=NULL,I64 flags=0); extern Bool DocRecalc(CDoc *doc,I64 recalc_flags=RECALCt_NORMAL); diff --git a/Adam/DolDoc/DocCodeTools.CPP b/Adam/DolDoc/DocCodeTools.CPP index 31555636..dbbbfc21 100644 --- a/Adam/DolDoc/DocCodeTools.CPP +++ b/Adam/DolDoc/DocCodeTools.CPP @@ -103,6 +103,16 @@ U0 EdRIExp(CRILex *rx) rx->depth-=3; if (rx->depth<0) rx->depth=0; } + } else if (rx->cc1->token=='[') { + if (!rx->exp_depth++) + rx->depth+=3; + EdRILex(rx); + while (rx->cc1->token && rx->cc1->token!=']') + EdRIExp(rx); + if (!--rx->exp_depth) { + rx->depth-=3; + if (rx->depth<0) rx->depth=0; + } } EdRILex(rx); } @@ -171,7 +181,6 @@ U0 EdRIStmt(CRILex *rx,Bool indent) EdRILex(rx); break; case KW_SWITCH: - case KW_NOBOUND_SWITCH: EdRILex(rx); EdRIExp(rx); if (rx->cc1->token=='{') { diff --git a/Adam/DolDoc/DocExt.CPP b/Adam/DolDoc/DocExt.CPP index 1c2f5afb..69b8a1bc 100644 --- a/Adam/DolDoc/DocExt.CPP +++ b/Adam/DolDoc/DocExt.CPP @@ -4,8 +4,8 @@ extern I64 DocEntryRun(CDoc *doc,CDocEntry *doc_e, Bool exited,I64 *_has_action=NULL); extern U0 DocFormBwd(CDoc *doc,Bool giveup=FALSE); extern U0 DocLoad(CDoc *doc,U8 *src2,I64 size); -extern U0 DocPrintAtomic(CDoc *doc,U8 *fmt,...); -extern U0 DocPrintPartial(CDoc *doc,U8 *fmt,...); +extern U0 DocPrintAtomic(CDoc *doc=NULL,U8 *fmt,...); +extern U0 DocPrintPartial(CDoc *doc=NULL,U8 *fmt,...); extern CDocEntry *DocPutS(CDoc *doc,U8 *st); extern U8 *DocSave(CDoc *doc,I64 *_size=NULL); extern I64 EdLeftClickLink(CDoc *doc,CDocEntry *doc_e); diff --git a/Adam/DolDoc/DocHighlight.CPP b/Adam/DolDoc/DocHighlight.CPP index 7c084fe3..5b756944 100644 --- a/Adam/DolDoc/DocHighlight.CPP +++ b/Adam/DolDoc/DocHighlight.CPP @@ -8,7 +8,7 @@ U32 *DocHighlight(CDocEntry *doc_e,U8 *src,I64 len,I64 _temp_u32_attr) I64 ch,ch1,last_ch,temp_u32_attr,mask_temp_u32_attr=_temp_u32_attr&0xFFFFF000, comment_depth,brace_depth=s->brace_depth,paren_depth=s->paren_depth; CHash *temph; - nobound_switch (s->state) { + switch [s->state] { case DOCSS_NORMAL: hl_normal: while (len) { diff --git a/Adam/DolDoc/DocPlain.CPP b/Adam/DolDoc/DocPlain.CPP index 3e9a96cc..826a5b09 100644 --- a/Adam/DolDoc/DocPlain.CPP +++ b/Adam/DolDoc/DocPlain.CPP @@ -81,7 +81,7 @@ U8 *Doc2PlainText(CDoc *doc,CDocEntry *doc_e) } buf2=MStrPrint("%s,",buf); Free(buf); buf=buf2; - nobound_switch (doc_e->type_u8) { + switch [doc_e->type_u8] { case DOCT_HEX_ED: buf2=MStrPrint("%s%d,",buf,doc_e->len); Free(buf); buf=buf2; @@ -114,14 +114,14 @@ U8 *Doc2PlainText(CDoc *doc,CDocEntry *doc_e) buf2=MStrPrint("%s%d,",buf,doc_e->attr); Free(buf); buf=buf2; } - case DOCT_NUM_TYPES-1: //nobound_switch + case DOCT_NUM_TYPES-1: //nobound switch break; } de_flags=doc_e->de_flags & DOCEG_HAS_ARG; while (de_flags) { j=Bsf(de_flags); Btr(&de_flags,j); - nobound_switch (j) { + switch [j] { case DOCEf_TAG: if (doc_e->type_u8==DOCT_DATA || doc_e->type_u8==DOCT_MACRO && (doc_e->de_flags&DOCEF_LEFT_MACRO && @@ -202,7 +202,7 @@ U8 *Doc2PlainText(CDoc *doc,CDocEntry *doc_e) case DOCEf_USER_DATA: buf2=MStrPrint("%sU=0x%X,",buf,doc_e->user_data); break; - case DOCEf_NUM_FLAGS-1: //nobound_switch + case DOCEf_NUM_FLAGS-1: //nobound switch break; } Free(buf); buf=buf2; @@ -243,7 +243,7 @@ CDocEntry *PrsDollarCmd(CDoc *doc,U8 *st) doc_e->len=DOCE_LEN_DFT; j=PrsDocFlags(cc,&doc_e->de_flags,&doc_e->type); cc->htc.hash_table_lst=old_hash_table_lst; - nobound_switch (i) { + switch [i] { case DOCT_CHECK_BOX: doc_e->raw_type=RT_I8; break; @@ -305,7 +305,7 @@ CDocEntry *PrsDollarCmd(CDoc *doc,U8 *st) j=Bsf(de_flags); if (j<0 || Bts(&processed_flags,j)) goto pd_err; - nobound_switch (j) {//TODO: Might check for expression errors + switch [j] {//TODO: Might check for expression errors case DOCEf_TAG: if (!doc_e->tag) { //If a $$MA,LM=""$$, Tag is filled when the LM is processed. @@ -458,7 +458,7 @@ CDocEntry *PrsDollarCmd(CDoc *doc,U8 *st) else goto pd_err; break; - case DOCEf_NUM_FLAGS-1: //nobound_switch + case DOCEf_NUM_FLAGS-1: //nobound switch break; } } diff --git a/Adam/DolDoc/DocPutS.CPP b/Adam/DolDoc/DocPutS.CPP index cda5e9b2..fcaf7945 100644 --- a/Adam/DolDoc/DocPutS.CPP +++ b/Adam/DolDoc/DocPutS.CPP @@ -155,7 +155,7 @@ CDocEntry *DocPutS(CDoc *doc,U8 *st) return result; } -public CDocEntry *DocPrint(CDoc *doc,U8 *fmt,...) +public CDocEntry *DocPrint(CDoc *doc=NULL,U8 *fmt,...) {//You must not print partial doc cmds. U8 *buf=StrPrintJoin(NULL,fmt,argc,argv); CDocEntry *result=DocPutS(doc,buf); @@ -163,13 +163,13 @@ public CDocEntry *DocPrint(CDoc *doc,U8 *fmt,...) return result; } -public U0 DocPrintPartial(CDoc *doc,U8 *fmt,...) +public U0 DocPrintPartial(CDoc *doc=NULL,U8 *fmt,...) {//Lets you print half a doc cmd, if you like. U8 *buf,*st,*src,*dst,*ptr,*ptr2; Bool unlock; CDocEntry *doc_ce,*doc_ne; I64 ch,i,j; - if (!fmt) + if (!doc && !(doc=DocPut)) return; buf=StrPrintJoin(NULL,fmt,argc,argv); ptr=buf; @@ -238,7 +238,7 @@ Bool KDDocPutS(U8 *st) return FALSE; } -public U0 DocPrintAtomic(CDoc *doc,U8 *fmt,...) +public U0 DocPrintAtomic(CDoc *doc=NULL,U8 *fmt,...) {//Prints multiple whole cmds all-at-once. Might need this when printing trees. U8 *buf; Bool unlock; diff --git a/Adam/DolDoc/DocRecalc.CPP b/Adam/DolDoc/DocRecalc.CPP index 12df45d0..bfdbb0f4 100644 --- a/Adam/DolDoc/DocRecalc.CPP +++ b/Adam/DolDoc/DocRecalc.CPP @@ -258,7 +258,7 @@ public Bool DocRecalc(CDoc *doc,I64 recalc_flags=RECALCt_NORMAL) CDocBin *tempb; CDocSettings *s; Bool del_cl,skipped_update,tree_collapsed,same_win,more=FALSE, - find_cursor=FALSE,blink_flag,full_refresh=TRUE,unlock; + find_cursor=FALSE,blink_flag,full_refresh=TRUE,unlock,clear_holds; CTask *win_task,*mem_task; CDC *dc; U8 *bptr,*ptr,buf[STR_LEN],ch; @@ -289,7 +289,7 @@ public Bool DocRecalc(CDoc *doc,I64 recalc_flags=RECALCt_NORMAL) mem_task=doc->mem_task; blink_flag=Blink; dc=NULL; - nobound_switch (recalc_flags&RECALCG_MASK) { + switch [recalc_flags&RECALCG_MASK] { case RECALCt_FIND_CURSOR: find_cursor=TRUE; if (win_task) @@ -620,7 +620,7 @@ public Bool DocRecalc(CDoc *doc,I64 recalc_flags=RECALCt_NORMAL) } } } - nobound_switch (doc_e->type_u8) { + switch [doc_e->type_u8] { case DOCT_TEXT: if (!col2 && !(doc_e->de_flags &(DOCEF_TREE|DOCEF_LST|DOCEF_TAG_CB|DOCEF_DEFINE| @@ -1036,13 +1036,17 @@ rc_adjust_xy: 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: if (recalc_flags&RECALCF_TO_HTML && doc_e->de_flags&DOCEF_TAG && doc_e->tag) x-=StrLen(doc_e->tag); break; - case DOCT_NUM_TYPES-1: //nobound_switch + case DOCT_NUM_TYPES-1: //nobound switch default: break; } @@ -1309,7 +1313,7 @@ rc_skip: if (full_refresh) { i=num_entries-doc->max_entries; if (next_clear_found) { - DocDelToEntry(doc,next_clear_found); + DocDelToEntry(doc,next_clear_found,clear_holds); DocRecalc(doc,recalc_flags); } else if (i>1024) { DocDelToNum(doc,i); diff --git a/Adam/DolDoc/DocRecalcLib.CPP b/Adam/DolDoc/DocRecalcLib.CPP index 3c00e8f4..37c510ac 100644 --- a/Adam/DolDoc/DocRecalcLib.CPP +++ b/Adam/DolDoc/DocRecalcLib.CPP @@ -22,12 +22,12 @@ U0 DocDelToNum(CDoc *doc,I64 num) } } -U0 DocDelToEntry(CDoc *doc,CDocEntry *clear_entry) +U0 DocDelToEntry(CDoc *doc,CDocEntry *clear_entry,Bool clear_holds) { CDocEntry *doc_e=doc->root.next,*doc_e2; while (doc_e!=doc) { 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))||clear_holds) { if (doc_e==doc->cur_entry) { doc->cur_entry=doc_e2; doc->cur_col=doc_e2->min_col; @@ -117,14 +117,17 @@ public U0 DocBottom(CDoc *doc=NULL) DocUnlock(doc); } -public U0 DocClear(CDoc *doc=NULL) +public U0 DocClear(CDoc *doc=NULL,Bool clear_holds=FALSE) {//Clear all doc entries, except +H, hold entries. Bool unlock; if (!doc && !(doc=DocPut)) return; unlock=DocLock(doc); DocBottom(doc); - DocPrint(doc,"$$CL$$"); + if (clear_holds) + DocPrint(doc,"$$CL+H$$"); + else + DocPrint(doc,"$$CL$$"); DocRecalc(doc); if (unlock) DocUnlock(doc); @@ -171,7 +174,7 @@ public U0 DocCollapse(Bool collapse=TRUE,CDoc *doc=NULL) #help_index "DolDoc/Cmd Line (Typically);Cmd Line (Typically)" public I64 DocMax(I64 i=MAX_I64) -{//Set max document entries. (Cmd line buffer.) +{//Set max document entries. (Cmd line buffer size.) //Adjusts the size of the cmd line buf. //Normally, the cmd line deletes entries //when more are added and the old scroll up. diff --git a/Adam/God/GodDoodle.CPP b/Adam/God/GodDoodle.CPP index 8e4df4bf..b25d307f 100644 --- a/Adam/God/GodDoodle.CPP +++ b/Adam/God/GodDoodle.CPP @@ -121,7 +121,7 @@ public U8 *GodDoodleSprite(U8 *hex=NULL) for (i=0;i<3;i++) { god.doodle_dc->color=RED; for (j=0;j<29;j++) - nobound_switch (GodDoodleBits(3)) { + switch [GodDoodleBits(3)] { case 0: GrEllipse3(god.doodle_dc, (w-1)*GodDoodleBits(5)/15.5-w/2, @@ -149,7 +149,7 @@ public U8 *GodDoodleSprite(U8 *hex=NULL) for (j=0;j<6;j++) { x=(w-1)*GodDoodleBits(5)/31+w/64; y=(h-1)*GodDoodleBits(5)/31+h/64; - nobound_switch (GodDoodleBits(2)) { + switch [GodDoodleBits(2)] { case 0: god.doodle_dc->color=BLACK; break; case 1: god.doodle_dc->color=DKGRAY; break; case 2: god.doodle_dc->color=LTGRAY; break; diff --git a/Adam/God/HSNotes.TXT b/Adam/God/HSNotes.TXT index 321512fa..84243348 100644 --- a/Adam/God/HSNotes.TXT +++ b/Adam/God/HSNotes.TXT @@ -82,7 +82,7 @@ Shakespeare? $FG,4$had a "vile heart"$FG$ Likes $FG,4$Beverly Hillbillies (Oil is a gift from God)$FG$ $FG,4$God likes being hero. Don't be proud of heart$FG$ $FG,4$and not accept a gift from God!$FG$ -Likes $FG,4$Gomer Pile$FG$ +Likes $FG,4$Gomer Pyle$FG$ Favorite saint? $FG,4$"ho_ho_ho"$FG$ Favorite animal? $FG,4$"Elephant two"$FG$ Favorite animal? $FG,4$"Bears"$FG$ @@ -139,7 +139,7 @@ Favorite actor? $FG,4$Hugh Grant$FG$ Favorite vocalist? $FG,4$Mick Jagger$FG$ Favorite guitarist? $FG,4$"$TX,"Simmons Destroyer",HTML="http://www.youtube.com/watch?v=nNADrrjTysk&t=3m55s"$"$FG$ Favorite National Anthem? $FG,4$$TX,"Latvia's National Anthem",HTML="http://www.youtube.com/watch?v=qKITbBjO4nE"$$FG$ -America the Beautiful? $FG,4$Hates it. Poet was too in love with own beauty.$FG$ +America the Beautiful? $FG,4$Hates it. Poet made self cry with own beauty.$FG$ Model for new $TX,"Sistine Chapel",HTML="http://en.wikipedia.org/wiki/Sistine_chapel"$? $FG,4$Ben Franklin$FG$ Voice if God wanted to sing? $FG,4$$TX,"Stabbing Westward's singer",HTML="https://www.youtube.com/watch?v=5NZsCYOM4j0"$$FG$ Stonehenge? $FG,4$Landmark for boundaries.$FG$ @@ -192,6 +192,7 @@ $TX,"Saturn's hexagon pole cloud?",HTML="http://en.wikipedia.org/wiki/Saturn's_h Liquid moon's odd atmosphere? $FG,4$"Surf"$FG$ How many E.T. civs in Universe? $FG,4$20 or 80 (I forgot. I died laughing.)$FG$ Are they peaceful? $FG,4$Fight them! (Also, funny.)$FG$ +Most difficult control system? $FG,4$$TX,"Dung beetle",HTML="http://www.youtube.com/watch?v=Q1zbgd6xpGQ"$$FG$ How can Judge Judy improve? $FG,4$No hard feelings$FG$ How can Chef Ramsay improve? $FG,4$Make so it doesn't seem like toil for cooks.$FG$ How can Hawking communicate? $FG,4$Blow from a nostril on a candle.$FG$ diff --git a/Adam/Gr/GrBitMap.CPP b/Adam/Gr/GrBitMap.CPP index afc43d1a..efaeb7df 100644 --- a/Adam/Gr/GrBitMap.CPP +++ b/Adam/Gr/GrBitMap.CPP @@ -44,7 +44,7 @@ public Bool GrPlot0(CDC *dc=gr.dc,I64 x,I64 y) } } dst=dc->body+d; - nobound_switch (color.c0.rop) { + switch [color.c0.rop] { case ROPB_EQU: case ROPB_MONO: *dst=color.c0.color; @@ -733,7 +733,7 @@ public I64 GrPutChar(CDC *dc=gr.dc,I64 x,I64 y,U8 ch) src=font_ptr; if (bit_shift) src--; - nobound_switch (color.c0.rop) { + switch [color.c0.rop] { case ROPB_EQU: case ROPB_MONO: for (j=h2-h1;j;j--) { @@ -763,7 +763,7 @@ public I64 GrPutChar(CDC *dc=gr.dc,I64 x,I64 y,U8 ch) src=font_ptr+1; if (bit_shift) src--; - nobound_switch (color.c0.rop) { + switch [color.c0.rop] { case ROPB_EQU: case ROPB_MONO: for (j=h2-h1;j;j--) { @@ -792,7 +792,7 @@ public I64 GrPutChar(CDC *dc=gr.dc,I64 x,I64 y,U8 ch) src=font_ptr; if (bit_shift) src--; - nobound_switch (color.c0.rop) { + switch [color.c0.rop] { case ROPB_EQU: case ROPB_MONO: for (j=h1;jbody+d; c=color.c0.color; - nobound_switch (color.c0.rop) { + switch [color.c0.rop] { case ROPB_EQU: case ROPB_MONO: *dst=c; diff --git a/Adam/Gr/GrPrimatives.CPP b/Adam/Gr/GrPrimatives.CPP index 16b4c84b..9ce3adc4 100644 --- a/Adam/Gr/GrPrimatives.CPP +++ b/Adam/Gr/GrPrimatives.CPP @@ -179,7 +179,7 @@ I64 GrFloodFillRay(CDC *dc,I64 x,I64 y,I64 z,I32 *db) f->y=y; f->state=0; do { - nobound_switch (f->state) { + switch [f->state] { case 0: f->state++; result+=f->ray_len=GrRayLen(dc,&f->x,f->y,z,db); diff --git a/Adam/Gr/SpriteMain.CPP b/Adam/Gr/SpriteMain.CPP index e6fb7026..656b59e5 100644 --- a/Adam/Gr/SpriteMain.CPP +++ b/Adam/Gr/SpriteMain.CPP @@ -433,7 +433,7 @@ CSprite *SMPolyLineFamily(I64 eletype,CDC *dc,I64 x,I64 y,I64 a1,I64 a2, } } while (msg_code!=MSG_IP_R_UP); - switch(eletype) { + switch (eletype) { case SPT_POLYLINE: if (num>1) { result=CAlloc(SpriteElemQuedBaseSize(SPT_POLYLINE)+num*sizeof(CD2I32)); diff --git a/Apps/TimeOut/TimeOut.CPP b/Apps/TimeOut/TimeOut.CPP index 07a7037f..6399a592 100644 --- a/Apps/TimeOut/TimeOut.CPP +++ b/Apps/TimeOut/TimeOut.CPP @@ -596,9 +596,9 @@ U0 TimeOut() x+=Fs->pix_width; //It takes too much CPU do do all these all the time. - nobound_switch (main_loop_pass&7) { + switch [main_loop_pass&7] { case 0: - nobound_switch (main_loop_pass>>3&7) { + switch [main_loop_pass>>3&7] { case 0: if (--y<20) game_over=TRUE; diff --git a/Compiler/BackA.CPP b/Compiler/BackA.CPP index 0cfa939e..877f0fc5 100644 --- a/Compiler/BackA.CPP +++ b/Compiler/BackA.CPP @@ -351,7 +351,7 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip) r=tempi->a1.reg; else ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); if (r>7) j=0xC0004D; @@ -363,13 +363,13 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip) ICU24(tempi,0x6900+j+(r&7)<<16+(r&7)<<19); ICU32(tempi,i); } - ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,TY_REG+RT_I64,r,0,ip); } else { ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); ICMov(tempi,TY_REG+RT_I64,REG_RBX,0, - TY_DISP+tempi->a1.type_pointed,REG_RCX,0,ip); + TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); r=REG_RBX; if (MIN_I8<=i<=MAX_I8) ICU32(tempi,i<<24+0xDB6B48); @@ -377,7 +377,7 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip) ICU24(tempi,0xDB6948); ICU32(tempi,i); } - ICMov(tempi,TY_DISP+tempi->a1.type_pointed,REG_RCX,0, + ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0, TY_REG+RT_I64,REG_RBX,0,ip); } } else { @@ -388,7 +388,7 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip) if (tempi->ic_flags & ICF_NOT_ADDR) { if (tempi->ic_flags & ICF_A1_FIRST) { ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); ICMov(tempi,TY_REG+RT_I64,REG_RBX,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); @@ -396,11 +396,11 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip) ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); ICMov(tempi,TY_REG+RT_I64,REG_RBX,0, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); } ICU24(tempi,i); - ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,TY_REG+RT_I64,REG_RAX,0,ip); } else { if (tempi->ic_flags & ICF_A1_FIRST) { @@ -415,9 +415,9 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip) tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); } ICMov(tempi,TY_REG+RT_I64,REG_RBX,0, - TY_DISP+tempi->a1.type_pointed,REG_RCX,0,ip); + TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); ICU24(tempi,i); - ICMov(tempi,TY_DISP+tempi->a1.type_pointed,REG_RCX,0, + ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0, TY_REG+RT_I64,REG_RAX,0,ip); } } @@ -454,7 +454,7 @@ U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip) if (tempi->ic_flags & ICF_NOT_ADDR) { if (tempi->ic_flags & ICF_A1_FIRST) { ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); @@ -462,7 +462,7 @@ U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip) ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); } if (tempi->ic_class->raw_type&1) { @@ -473,10 +473,10 @@ U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip) ICU24(tempi,0xF9F748); } if (is_mod) - ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,TY_REG+RT_I64,REG_RDX,0,ip); else - ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,TY_REG+RT_I64,REG_RAX,0,ip); } else { if (tempi->ic_flags & ICF_A1_FIRST) { @@ -492,7 +492,7 @@ U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip) tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); } //dangerous might clobber RBX in Mov, but it doesn't - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,TY_DISP+tempi->a1.type_pointed, + ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,TY_DISP+tempi->a1.type_pointed_to, REG_RBX,0,ip); if (tempi->ic_class->raw_type&1) { ICZero(tempi,REG_RDX); @@ -502,10 +502,10 @@ U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip) ICU24(tempi,0xF9F748); } if (is_mod) - ICMov(tempi,TY_DISP+tempi->a1.type_pointed,REG_RBX,0, + ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RBX,0, TY_REG+RT_I64,REG_RDX,0,ip); else - ICMov(tempi,TY_DISP+tempi->a1.type_pointed,REG_RBX,0, + ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RBX,0, TY_REG+RT_I64,REG_RAX,0,ip); } if (tempi->r.type&TY_MASK) { @@ -542,7 +542,7 @@ U0 ICMod(CIntermediateCode *tempi,I64 ip) TY_REG+RT_I64,REG_RDX,0,ip); } -U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed, +U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed_to, I64 t1,I64 r1,I64 d1,I64 t2,I64 r2,I64 d2, I64 t3,I64 r3,I64 d3,I64 op,I64 ip) { @@ -551,14 +551,14 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed, if (tempi->ic_flags & ICF_NOT_ADDR) { if (t3&TY_MASK==TY_IMM) { ICAddSubEctImm(tempi, - t2&TY_MASK+type_pointed,r2,d2,t2&TY_MASK+ - type_pointed,r2,d2,d3,op,ip); + t2&TY_MASK+type_pointed_to,r2,d2,t2&TY_MASK+ + type_pointed_to,r2,d2,d3,op,ip); if (t1&TY_MASK) - ICMov(tempi,t1,r1,d1,t2&TY_MASK+type_pointed,r2,d2,ip); + ICMov(tempi,t1,r1,d1,t2&TY_MASK+type_pointed_to,r2,d2,ip); return; } else { done=FALSE; - if (type_pointed>=RT_I64) { + if (type_pointed_to>=RT_I64) { if (!(t1&TY_MASK) && TY_REG<=t2&TY_MASK<=TY_RIP_DISP32) { if (t3&TY_MASK==TY_REG) @@ -567,7 +567,7 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed, temp=REG_RCX; ICMov(tempi,TY_REG+RT_I64,temp,0,t3,r3,d3,ip); } - i=ICModr1(temp,t2&TY_MASK+type_pointed,r2,d2); + i=ICModr1(temp,t2&TY_MASK+type_pointed_to,r2,d2); if (tempi->ic_flags&ICF_LOCK) ICU8(tempi,OC_LOCK_PREFIX); ICRex(tempi,i.u8[1]); @@ -583,13 +583,13 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed, result_reg=REG_RCX; ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip); } - i=ICModr1(result_reg,t3&TY_MASK+type_pointed,r3,d3); + i=ICModr1(result_reg,t3&TY_MASK+type_pointed_to,r3,d3); if (tempi->ic_flags&ICF_LOCK) ICU8(tempi,OC_LOCK_PREFIX); ICRex(tempi,i.u8[1]); ICU16(tempi,i.u8[2]<<8+op.u8[0]); ICModr2(tempi,i,d3,ip+4); - ICMov(tempi,t2&TY_MASK+type_pointed,r2,d2, + ICMov(tempi,t2&TY_MASK+type_pointed_to,r2,d2, TY_REG+RT_I64,result_reg,0,ip); done=TRUE; } @@ -601,7 +601,7 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed, else { result_reg=REG_RCX; ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - t2&TY_MASK+type_pointed,r2,d2,ip); + t2&TY_MASK+type_pointed_to,r2,d2,ip); } ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,t3,r3,d3,ip); } else { @@ -611,7 +611,7 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed, else { result_reg=REG_RCX; ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, - t2&TY_MASK+type_pointed,r2,d2,ip); + t2&TY_MASK+type_pointed_to,r2,d2,ip); } } if (tempi->ic_flags&ICF_LOCK) @@ -621,7 +621,7 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed, else ICU8(tempi,0x48); ICU16(tempi,0xC000+op.u8[0]+(result_reg&7)<<11); - ICMov(tempi,t2&TY_MASK+type_pointed,r2,d2, + ICMov(tempi,t2&TY_MASK+type_pointed_to,r2,d2, TY_REG+RT_I64,result_reg,0,ip); } } @@ -631,25 +631,25 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed, if (!d3.u32[1]) { if (tempi->ic_flags&ICF_NO_DEPEND_RESULT && t2&TY_MASK==TY_REG && d3(U64)<=MAX_I8) { - ICSlashOp(tempi,TY_DISP+type_pointed,r2,0,0x838000+op.u8[4],ip); + ICSlashOp(tempi,TY_DISP+type_pointed_to,r2,0,0x838000+op.u8[4],ip); ICU8(tempi,d3); done=TRUE; } else if (op.u8[2]==0x24) {//AND ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip); ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - TY_DISP+type_pointed,REG_RCX,0,ip); + TY_DISP+type_pointed_to,REG_RCX,0,ip); result_reg=REG_RAX; if (tempi->ic_flags&ICF_LOCK) ICU8(tempi,OC_LOCK_PREFIX); ICU16(tempi,op.u8[3]<<8+0x40); ICU32(tempi,d3); - ICMov(tempi,TY_DISP+type_pointed,REG_RCX,0, + ICMov(tempi,TY_DISP+type_pointed_to,REG_RCX,0, TY_REG+RT_I64,result_reg,0,ip); done=TRUE; - } else if (type_pointed&RT_MASKic_flags&ICF_LOCK) ICU8(tempi,OC_LOCK_PREFIX); @@ -663,7 +663,7 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed, ICU16(tempi,op.u8[2]<<8+0x40); ICU8(tempi,d3); } - ICMov(tempi,TY_DISP+type_pointed,REG_RCX,0, + ICMov(tempi,TY_DISP+type_pointed_to,REG_RCX,0, TY_REG+RT_I64,result_reg,0,ip); done=TRUE; } @@ -677,13 +677,14 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed, ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,t3,r3,d3,ip); ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip); } - ICMov(tempi,TY_REG+RT_I64,REG_RBX,0,TY_DISP+type_pointed,REG_RCX,0,ip); + ICMov(tempi,TY_REG+RT_I64,REG_RBX,0,TY_DISP+type_pointed_to,REG_RCX,0,ip); result_reg=REG_RBX; if (tempi->ic_flags&ICF_LOCK) ICU8(tempi,OC_LOCK_PREFIX); ICU8(tempi,0x48); ICU16(tempi,0xC000+op.u8[0]+(result_reg&7)<<11); - ICMov(tempi,TY_DISP+type_pointed,REG_RCX,0,TY_REG+RT_I64,result_reg,0,ip); + ICMov(tempi,TY_DISP+type_pointed_to,REG_RCX,0, + TY_REG+RT_I64,result_reg,0,ip); } } if (t1&TY_MASK) @@ -723,8 +724,9 @@ U0 ICShift(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1, ICMov(tempi,t1,r1,d1,TY_REG+RT_I64,result_reg,0,ip); } -U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed,I64 t1,I64 r1,I64 d1, - I64 t2,I64 r2,I64 d2,I64 t3,I64 r3,I64 d3,I64 us,I64 is,I64 ip) +U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed_to, + I64 t1,I64 r1,I64 d1,I64 t2,I64 r2,I64 d2,I64 t3,I64 r3,I64 d3, + I64 us,I64 is,I64 ip) { I64 result_reg; if (tempi->ic_class->raw_type&1 || tempi->ic_flags & ICF_USE_UNSIGNED) @@ -735,7 +737,8 @@ U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed,I64 t1,I64 r1,I64 d1, result_reg=r2; else { result_reg=REG_RAX; - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,t2&TY_MASK+type_pointed,r2,d2,ip); + ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + t2&TY_MASK+type_pointed_to,r2,d2,ip); } if (t3&TY_MASK!=TY_IMM) ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t3,r3,d3,ip); @@ -746,7 +749,8 @@ U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed,I64 t1,I64 r1,I64 d1, result_reg=r2; else { result_reg=REG_RAX; - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,t2&TY_MASK+type_pointed,r2,d2,ip); + ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, + t2&TY_MASK+type_pointed_to,r2,d2,ip); } } if (result_reg>7) @@ -762,7 +766,7 @@ U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed,I64 t1,I64 r1,I64 d1, } } else ICU16(tempi,is.u16[1]+(result_reg&7)<<8); - ICMov(tempi,t2&TY_MASK+type_pointed,r2,d2,TY_REG+RT_I64,result_reg,0,ip); + ICMov(tempi,t2&TY_MASK+type_pointed_to,r2,d2,TY_REG+RT_I64,result_reg,0,ip); } else { if (tempi->ic_flags & ICF_A1_FIRST) { ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,t2,r2,d2,ip); @@ -773,7 +777,7 @@ U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed,I64 t1,I64 r1,I64 d1, ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t3,r3,d3,ip); ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,t2,r2,d2,ip); } - ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,TY_DISP+type_pointed,REG_RDX,0,ip); + ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,TY_DISP+type_pointed_to,REG_RDX,0,ip); result_reg=REG_RAX; ICU8(tempi,0x48); if (t3&TY_MASK==TY_IMM) { @@ -785,7 +789,8 @@ U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed,I64 t1,I64 r1,I64 d1, } } else ICU16(tempi,is.u16[1]+(result_reg&7)<<8); - ICMov(tempi,TY_DISP+type_pointed,REG_RDX,0,TY_REG+RT_I64,result_reg,0,ip); + ICMov(tempi, + TY_DISP+type_pointed_to,REG_RDX,0,TY_REG+RT_I64,result_reg,0,ip); } if (t1&TY_MASK) ICMov(tempi,t1,r1,d1,TY_REG+RT_I64,result_reg,0,ip); diff --git a/Compiler/BackB.CPP b/Compiler/BackB.CPP index 0b744c10..37f30dfb 100644 --- a/Compiler/BackB.CPP +++ b/Compiler/BackB.CPP @@ -397,17 +397,17 @@ U0 ICPreIncDec(CIntermediateCode *tempi,I64 op,I64 ip) if (tempi->ic_flags & ICF_NOT_ADDR) { if (tempc->ptr_stars_cnt && tempc1->size!=1) { ICAddSubEctImm(tempi, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,tempc1->size,op.u16[3],ip); } else ICSlashOp(tempi, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,op,ip); if (tempi->r.type&TY_MASK) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); } else { if (tempi->a1.type&TY_MASK==TY_REG) @@ -419,15 +419,15 @@ U0 ICPreIncDec(CIntermediateCode *tempi,I64 op,I64 ip) } if (tempc->ptr_stars_cnt && tempc1->size!=1) { - ICAddSubEctImm(tempi,TY_DISP+tempi->a1.type_pointed,r,0, - TY_DISP+tempi->a1.type_pointed,r,0, + ICAddSubEctImm(tempi,TY_DISP+tempi->a1.type_pointed_to,r,0, + TY_DISP+tempi->a1.type_pointed_to,r,0, tempc1->size,op.u16[3],ip); } else ICSlashOp(tempi, - TY_DISP+tempi->a1.type_pointed,r,0,op,ip); + TY_DISP+tempi->a1.type_pointed_to,r,0,op,ip); if (tempi->r.type&TY_MASK) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_DISP+tempi->a1.type_pointed,r,0,ip); + TY_DISP+tempi->a1.type_pointed_to,r,0,ip); } } @@ -438,17 +438,17 @@ U0 ICPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip) if (tempi->ic_flags & ICF_NOT_ADDR) { if (tempi->r.type&TY_MASK) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); if (tempc->ptr_stars_cnt && tempc1->size!=1) ICAddSubEctImm(tempi, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,tempc1->size,op.u16[3],ip); else ICSlashOp(tempi, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,op,ip); } else { if (tempi->a1.type&TY_MASK==TY_REG && @@ -461,12 +461,12 @@ U0 ICPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip) } if (tempi->r.type&TY_MASK) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - TY_DISP+tempi->a1.type_pointed,r,0,ip); + TY_DISP+tempi->a1.type_pointed_to,r,0,ip); if (tempc->ptr_stars_cnt && tempc1->size!=1) - ICAddSubEctImm(tempi,TY_DISP+tempi->a1.type_pointed,r,0, - TY_DISP+tempi->a1.type_pointed,r,0,tempc1->size,op.u16[3],ip); + ICAddSubEctImm(tempi,TY_DISP+tempi->a1.type_pointed_to,r,0, + TY_DISP+tempi->a1.type_pointed_to,r,0,tempc1->size,op.u16[3],ip); else - ICSlashOp(tempi,TY_DISP+tempi->a1.type_pointed,r,0,op,ip); + ICSlashOp(tempi,TY_DISP+tempi->a1.type_pointed_to,r,0,op,ip); } } @@ -475,8 +475,8 @@ U0 ICDerefPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip) I64 t,r; CHashClass *tempc1=tempi->ic_class; t=tempi->r.type&RT_MASK; - if (t>tempi->a1.type_pointed) - t=tempi->a1.type_pointed; + if (t>tempi->a1.type_pointed_to) + t=tempi->a1.type_pointed_to; if (tempi->ic_flags & ICF_NOT_ADDR) { if (tempi->a1.type&TY_MASK==TY_REG) r=tempi->a1.reg; @@ -526,7 +526,7 @@ U0 ICAssignPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip) tempi->a1.type&TY_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp,ip); r=REG_RDX; } - ICMov(tempi,TY_DISP+tempi->a1.type_pointed,r,0, + ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,r,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); if (tempi->r.type&TY_MASK) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, @@ -540,7 +540,7 @@ U0 ICAssignPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip) ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,TY_DISP+RT_I64,REG_RDX,0,ip); - ICMov(tempi,TY_DISP+tempi->a1.type_pointed,REG_RCX,0, + ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); if (tempi->r.type&TY_MASK) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, diff --git a/Compiler/BackC.CPP b/Compiler/BackC.CPP index 121890b7..355d5bcd 100644 --- a/Compiler/BackC.CPP +++ b/Compiler/BackC.CPP @@ -160,13 +160,13 @@ U0 ICAssign(CIntermediateCode *tempi,I64 ip) { CIntermediateCode *tempi1; if (tempi->ic_flags & ICF_NOT_ADDR) { - ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); if (tempi->r.type&TY_MASK) { if (tempi->a1.type&TY_MASK==TY_REG) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); else ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, @@ -182,7 +182,8 @@ U0 ICAssign(CIntermediateCode *tempi,I64 ip) tempi->a2.reg==tempi->a1.reg || tempi->r.type&TY_MASK || tempi1->ic_flags&~ICG_NO_CVT_MASK) { - ICMov(tempi,TY_DISP+tempi->a1.type_pointed,tempi->a1.reg,tempi->a1.disp, + ICMov(tempi, + TY_DISP+tempi->a1.type_pointed_to,tempi->a1.reg,tempi->a1.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); if (tempi->r.type&TY_MASK) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, @@ -192,14 +193,14 @@ U0 ICAssign(CIntermediateCode *tempi,I64 ip) ~ICF_CODE_FINAL|ICF_DONT_RESTORE; tempi->a1.disp=tempi1->ic_data; OptSetNOP1(tempi1); //This better not be last pass! - ICMov(tempi,TY_DISP+tempi->a1.type_pointed, + ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); } } else { ICMov(tempi,TY_REG+RT_I64,REG_RCX,0, tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip); - ICMov(tempi,TY_DISP+tempi->a1.type_pointed,REG_RCX,0, + ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); if (tempi->r.type&TY_MASK) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, @@ -706,7 +707,7 @@ U0 ICAndEqu(CIntermediateCode *tempi,I64 ip2) return; } } - ICAddSubEctEqu(tempi,tempi->a1.type_pointed, + ICAddSubEctEqu(tempi,tempi->a1.type_pointed_to, tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a1.type,tempi->a1.reg,tempi->a1.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,0x210425240423,ip2); @@ -727,7 +728,7 @@ U0 ICOrEqu(CIntermediateCode *tempi,I64 ip2) return; } } - ICAddSubEctEqu(tempi,tempi->a1.type_pointed, + ICAddSubEctEqu(tempi,tempi->a1.type_pointed_to, tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a1.type,tempi->a1.reg,tempi->a1.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,0x09010D0C010B,ip2); @@ -748,7 +749,7 @@ U0 ICXorEqu(CIntermediateCode *tempi,I64 ip2) return; } } - ICAddSubEctEqu(tempi,tempi->a1.type_pointed, + ICAddSubEctEqu(tempi,tempi->a1.type_pointed_to, tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a1.type,tempi->a1.reg,tempi->a1.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,0x310635340633,ip2); diff --git a/Compiler/BackFA.CPP b/Compiler/BackFA.CPP index 5e8c148e..c2db8ef9 100644 --- a/Compiler/BackFA.CPP +++ b/Compiler/BackFA.CPP @@ -9,7 +9,7 @@ U0 CmpNoteFloatOp(CCmpCtrl *cc,CIntermediateCode *tempi, Bool link=FALSE; if (cc->pass==7 && cc->last_float_op_ic && cc->last_dont_popable && dont_pushable) { - nobound_switch (pos) { + switch [pos] { case CN_A2: if (cc->last_float_op_ic!=tempi && cc->dont_push_float) link=TRUE; @@ -589,15 +589,15 @@ U0 ICFModEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip) if (tempi->ic_flags & ICF_NOT_ADDR) { if (dont_push_float) { ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); - if (tempi->a1.type_pointed!=RT_F64) + if (tempi->a1.type_pointed_to!=RT_F64) ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,FALSE,ip); } else if (tempi->ic_flags & ICF_A1_FIRST) { ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); - if (tempi->a1.type_pointed!=RT_F64) + if (tempi->a1.type_pointed_to!=RT_F64) ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip); ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); @@ -605,28 +605,28 @@ U0 ICFModEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip) ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); - if (tempi->a1.type_pointed!=RT_F64) + if (tempi->a1.type_pointed_to!=RT_F64) ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip); } //TODO: unpushable,unpop? Not sure ICCopyTemplate(cc,tempi,CMP_TEMPLATE_MOD,FALSE,FALSE,FALSE,CN_MAIN); - if (tempi->a1.type_pointed!=RT_F64) + if (tempi->a1.type_pointed_to!=RT_F64) ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,TRUE,ip); - ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,TY_REG+RT_I64,REG_RAX,0,ip); if (tempi->r.type&TY_MASK) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - tempi->a1.type&TY_MASK+tempi->a1.type_pointed, + tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to, tempi->a1.reg,tempi->a1.disp,ip); } else { if (dont_push_float) { ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,tempi->a1.type, tempi->a1.reg,tempi->a1.disp,ip); ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - TY_DISP+tempi->a1.type_pointed,REG_RCX,0,ip); - if (tempi->a1.type_pointed!=RT_F64) + TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); + if (tempi->a1.type_pointed_to!=RT_F64) ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,FALSE,ip); } else if (tempi->ic_flags & ICF_A1_FIRST) { ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,tempi->a1.type, @@ -634,8 +634,8 @@ U0 ICFModEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip) ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - TY_DISP+tempi->a1.type_pointed,REG_RCX,0,ip); - if (tempi->a1.type_pointed!=RT_F64) + TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); + if (tempi->a1.type_pointed_to!=RT_F64) ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip); } else { ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, @@ -643,15 +643,15 @@ U0 ICFModEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip) ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,tempi->a1.type, tempi->a1.reg,tempi->a1.disp,ip); ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - TY_DISP+tempi->a1.type_pointed,REG_RCX,0,ip); - if (tempi->a1.type_pointed!=RT_F64) + TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip); + if (tempi->a1.type_pointed_to!=RT_F64) ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip); } //TODO: unpushable,unpop? Not sure ICCopyTemplate(cc,tempi,CMP_TEMPLATE_MOD,FALSE,FALSE,FALSE,CN_MAIN); - if (tempi->a1.type_pointed!=RT_F64) + if (tempi->a1.type_pointed_to!=RT_F64) ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,TRUE,ip); - ICMov(tempi,TY_DISP+tempi->a1.type_pointed,REG_RCX,0, + ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0, TY_REG+RT_I64,REG_RAX,0,ip); if (tempi->r.type&TY_MASK) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, diff --git a/Compiler/BackFB.CPP b/Compiler/BackFB.CPP index 9f35b1d0..5cd07fbe 100644 --- a/Compiler/BackFB.CPP +++ b/Compiler/BackFB.CPP @@ -16,31 +16,32 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) if (tempi->ic_flags & ICF_NOT_ADDR) { p1_mem=FALSE; if (dont_push_float) { - if (a1->type_pointed!=RT_F64) { + if (a1->type_pointed_to!=RT_F64) { ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - a1->type&TY_MASK+a1->type_pointed,a1->reg,a1->disp,ip); + a1->type&TY_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,FALSE,ip); ICPush(tempi,TY_REG+RT_I64,REG_RAX,0,ip); t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; } else { - if (a1->type_pointed>=RT_I64 && (a1->type&TY_MASK==TY_DISP || + if (a1->type_pointed_to>=RT_I64 && (a1->type&TY_MASK==TY_DISP || a1->type&TY_MASK==TY_RIP_DISP32 || a1->type&TY_MASK==TY_SIB)) { - t1=a1->type_pointed+a1->type&TY_MASK; + t1=a1->type_pointed_to+a1->type&TY_MASK; r1=a1->reg; d1=a1->disp; p1_mem=TRUE; } else { - ICPush(tempi,a1->type_pointed+a1->type&TY_MASK,a1->reg,a1->disp,ip); + ICPush(tempi, + a1->type_pointed_to+a1->type&TY_MASK,a1->reg,a1->disp,ip); t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; } } } else if (tempi->ic_flags & ICF_A1_FIRST) { - if (a1->type_pointed!=RT_F64 || a2->type&TY_MASK==TY_STK) { + if (a1->type_pointed_to!=RT_F64 || a2->type&TY_MASK==TY_STK) { ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - a1->type&TY_MASK+a1->type_pointed,a1->reg,a1->disp,ip); - if (a1->type_pointed!=RT_F64) + a1->type&TY_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); + if (a1->type_pointed_to!=RT_F64) ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip); ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, a2->type,a2->reg,a2->disp,ip); @@ -50,14 +51,15 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8; t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; } else { - if (a1->type_pointed>=RT_I64 && (a1->type&TY_MASK==TY_DISP || + if (a1->type_pointed_to>=RT_I64 && (a1->type&TY_MASK==TY_DISP || a1->type&TY_MASK==TY_RIP_DISP32 || a1->type&TY_MASK==TY_SIB)) { - t1=a1->type_pointed+a1->type&TY_MASK; + t1=a1->type_pointed_to+a1->type&TY_MASK; r1=a1->reg; d1=a1->disp; p1_mem=TRUE; } else { - ICPush(tempi,a1->type_pointed+a1->type&TY_MASK,a1->reg,a1->disp,ip); + ICPush(tempi, + a1->type_pointed_to+a1->type&TY_MASK,a1->reg,a1->disp,ip); t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; } @@ -83,11 +85,11 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) } } } else { - if (a1->type_pointed!=RT_F64 || a1->type&TY_MASK==TY_STK) { + if (a1->type_pointed_to!=RT_F64 || a1->type&TY_MASK==TY_STK) { ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip); ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - a1->type&TY_MASK+a1->type_pointed,a1->reg,a1->disp,ip); - if (a1->type_pointed!=RT_F64) + a1->type&TY_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); + if (a1->type_pointed_to!=RT_F64) ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip); ICU16(tempi,0x5052); //PUSH EDX PUSH EAX rsp_size=16; @@ -112,14 +114,15 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) rsp_size+=8; } } - if (a1->type_pointed>=RT_I64 && (a1->type&TY_MASK==TY_DISP || + if (a1->type_pointed_to>=RT_I64 && (a1->type&TY_MASK==TY_DISP || a1->type&TY_MASK==TY_RIP_DISP32 || a1->type&TY_MASK==TY_SIB)) { - t1=a1->type_pointed+a1->type&TY_MASK; + t1=a1->type_pointed_to+a1->type&TY_MASK; r1=a1->reg; d1=a1->disp; p1_mem=TRUE; } else { - ICPush(tempi,a1->type_pointed+a1->type&TY_MASK,a1->reg,a1->disp,ip); + ICPush(tempi, + a1->type_pointed_to+a1->type&TY_MASK,a1->reg,a1->disp,ip); t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; if (r2==REG_RSP+REG_RSP<<8) @@ -127,7 +130,7 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) } } } - if (!rsp_size && !(p1_mem && a1->type_pointed==RT_F64)) { + if (!rsp_size && !(p1_mem && a1->type_pointed_to==RT_F64)) { rsp_size=8; ICAddRSP(tempi,-8); } @@ -143,7 +146,7 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) } ICSlashOp(tempi,t1,r1,d1,op,ip); CmpNoteFloatOp(cc,tempi,TRUE,FALSE,CN_MAIN); - if (p1_mem && a1->type_pointed==RT_F64) { + if (p1_mem && a1->type_pointed_to==RT_F64) { ICSlashOp(tempi,t1,r1,d1,SLASH_OP_FSTP,ip); if (rsp_size) ICAddRSP(tempi,rsp_size); @@ -156,39 +159,39 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) SLASH_OP_FSTP,ip); ICAddRSP(tempi,rsp_size-8); } - if (a1->type_pointed!=RT_F64) { + if (a1->type_pointed_to!=RT_F64) { ICPop(tempi,TY_REG+RT_I64,REG_RAX,0,ip); ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,TRUE,ip); - ICMov(tempi,a1->type&TY_MASK+a1->type_pointed,a1->reg,a1->disp, + ICMov(tempi,a1->type&TY_MASK+a1->type_pointed_to,a1->reg,a1->disp, TY_REG+RT_I64,REG_RAX,0,ip); } else - ICPop(tempi,a1->type_pointed+a1->type&TY_MASK,a1->reg,a1->disp,ip); + ICPop(tempi,a1->type_pointed_to+a1->type&TY_MASK,a1->reg,a1->disp,ip); } if (tempi->r.type&TY_MASK) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, - a1->type&TY_MASK+a1->type_pointed,a1->reg,a1->disp,ip); + a1->type&TY_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip); } else { - if (a1->type_pointed>=RT_I64) + if (a1->type_pointed_to>=RT_I64) p1_mem=TRUE; else p1_mem=FALSE; if (dont_push_float) { ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); - if (a1->type_pointed!=RT_F64) { + if (a1->type_pointed_to!=RT_F64) { ICMov(tempi,TY_REG+RT_I64,REG_RAX,0, - TY_DISP+a1->type_pointed,REG_RCX,0,ip); + TY_DISP+a1->type_pointed_to,REG_RCX,0,ip); ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,FALSE,ip); ICPush(tempi,TY_REG+RT_I64,REG_RAX,0,ip); } else - ICPush(tempi,a1->type_pointed+TY_DISP,REG_RCX,0,ip); + ICPush(tempi,a1->type_pointed_to+TY_DISP,REG_RCX,0,ip); t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; } else if (tempi->ic_flags & ICF_A1_FIRST) { ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); - if (a1->type_pointed!=RT_F64 || a2->type&TY_MASK==TY_STK) { + if (a1->type_pointed_to!=RT_F64 || a2->type&TY_MASK==TY_STK) { ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - TY_DISP+a1->type_pointed,REG_RCX,0,ip); - if (a1->type_pointed!=RT_F64) + TY_DISP+a1->type_pointed_to,REG_RCX,0,ip); + if (a1->type_pointed_to!=RT_F64) ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip); ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip); @@ -197,7 +200,7 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8; t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; } else { - ICPush(tempi,TY_DISP+a1->type_pointed,REG_RCX,0,ip); + ICPush(tempi,TY_DISP+a1->type_pointed_to,REG_RCX,0,ip); t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; if (a2->type&RT_MASK>=RT_I64 && (a2->type&TY_MASK==TY_DISP || @@ -222,12 +225,12 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) } } } else { - if (a1->type_pointed!=RT_F64 || a1->type&TY_MASK==TY_STK) { + if (a1->type_pointed_to!=RT_F64 || a1->type&TY_MASK==TY_STK) { ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip); ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); ICMov(tempi,TY_REG+RT_I64,REG_RDX,0, - TY_DISP+a1->type_pointed,REG_RCX,0,ip); - if (a1->type_pointed!=RT_F64) + TY_DISP+a1->type_pointed_to,REG_RCX,0,ip); + if (a1->type_pointed_to!=RT_F64) ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip); ICU16(tempi,0x5052); //PUSH EDX PUSH EAX rsp_size=16; @@ -253,14 +256,14 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) } } ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip); - ICPush(tempi,TY_DISP+a1->type_pointed,REG_RCX,0,ip); + ICPush(tempi,TY_DISP+a1->type_pointed_to,REG_RCX,0,ip); t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0; rsp_size+=8; if (r2==REG_RSP+REG_RSP<<8) d2+=8; } } - if (!rsp_size && !(p1_mem && a1->type_pointed==RT_F64)) { + if (!rsp_size && !(p1_mem && a1->type_pointed_to==RT_F64)) { rsp_size=8; ICAddRSP(tempi,-8); } @@ -277,8 +280,8 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) } ICSlashOp(tempi,t1,r1,d1,op,ip); CmpNoteFloatOp(cc,tempi,TRUE,FALSE,CN_MAIN); - if (p1_mem && a1->type_pointed==RT_F64) { - ICSlashOp(tempi,TY_DISP+a1->type_pointed,REG_RCX,0, + if (p1_mem && a1->type_pointed_to==RT_F64) { + ICSlashOp(tempi,TY_DISP+a1->type_pointed_to,REG_RCX,0, SLASH_OP_FSTP,ip); if (rsp_size) ICAddRSP(tempi,rsp_size); @@ -292,9 +295,9 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip) ICAddRSP(tempi,rsp_size-8); } ICPop(tempi,TY_REG+RT_I64,REG_RAX,0,ip); - if (a1->type_pointed!=RT_F64) + if (a1->type_pointed_to!=RT_F64) ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,TRUE,ip); - ICMov(tempi,TY_DISP+a1->type_pointed,REG_RCX,0, + ICMov(tempi,TY_DISP+a1->type_pointed_to,REG_RCX,0, TY_REG+RT_I64,REG_RAX,0,ip); } if (tempi->r.type&TY_MASK) @@ -569,13 +572,13 @@ U0 ICFCmpAndBranch(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip, U0 ICFMul(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip) { if (tempi->a1.type&TY_MASK==TY_IMM && - tempi->a1.type_pointed&RT_MASK==RT_F64 && + tempi->a1.type_pointed_to&RT_MASK==RT_F64 && tempi->a1.disp(F64)==1.0) { CmpNoteFloatOp(cc,tempi,FALSE,FALSE,CN_MAIN); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip); } else if (tempi->a2.type&TY_MASK==TY_IMM && - tempi->a2.type_pointed&RT_MASK==RT_F64 && + tempi->a2.type_pointed_to&RT_MASK==RT_F64 && tempi->a2.disp(F64)==1.0) { CmpNoteFloatOp(cc,tempi,FALSE,FALSE,CN_MAIN); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, @@ -587,7 +590,7 @@ U0 ICFMul(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip) U0 ICFDiv(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip) { if (tempi->a2.type&TY_MASK==TY_IMM && - tempi->a2.type_pointed&RT_MASK==RT_F64 && + tempi->a2.type_pointed_to&RT_MASK==RT_F64 && tempi->a2.disp(F64)==1.0) { CmpNoteFloatOp(cc,tempi,FALSE,FALSE,CN_MAIN); ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, diff --git a/Compiler/BackLib.CPP b/Compiler/BackLib.CPP index ad97d50f..79fbd4ac 100644 --- a/Compiler/BackLib.CPP +++ b/Compiler/BackLib.CPP @@ -222,7 +222,7 @@ I64 ICModr1(I64 r,I64 t2,I64 r2,I64 d2) U0 ICModr2(CIntermediateCode *tempi,I64 i,I64 d,I64 ip=0) {//t=0 means no SIB - nobound_switch (i.u8[0]) { + switch [i.u8[0]] { case MDR_REG: break; case MDR_INDIRECT_REG: @@ -648,8 +648,8 @@ U0 ICDeref(CIntermediateCode *tempi,I64 ip) { I64 t; t=tempi->r.type&RT_MASK; - if (t>tempi->a1.type_pointed) - t=tempi->a1.type_pointed; + if (t>tempi->a1.type_pointed_to) + t=tempi->a1.type_pointed_to; if (tempi->a1.type&TY_MASK==TY_REG) ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp, TY_DISP+t,tempi->a1.reg,tempi->a1.disp,ip); diff --git a/Compiler/CExcept.CPP b/Compiler/CExcept.CPP index 77c9ec4a..038e38ae 100644 --- a/Compiler/CExcept.CPP +++ b/Compiler/CExcept.CPP @@ -140,10 +140,10 @@ U0 ICClassPut(CHashClass *c) U0 ICArgPut(CICArg *a) { - if (a->type_pointed) + if (a->type_pointed_to) "%Z %Z %Z ", a->type&RT_MASK,"ST_RAW_TYPES", - a->type_pointed&RT_MASK,"ST_RAW_TYPES", + a->type_pointed_to&RT_MASK,"ST_RAW_TYPES", a->type>>4,"ST_TY_TYPES"; else "%Z %Z ", diff --git a/Compiler/CExts.CPP b/Compiler/CExts.CPP index 8d628294..0b11f2a5 100644 --- a/Compiler/CExts.CPP +++ b/Compiler/CExts.CPP @@ -3,7 +3,7 @@ import U0 DocBinsValidate(CDoc *doc); import U0 DocDel(CDoc *doc); import U0 DocLoad(CDoc *doc,U8 *src2,I64 size); import CDoc *DocNew(U8 *filename=NULL,CTask *task=NULL); -import CDocEntry *DocPrint(CDoc *doc,U8 *fmt,...); +import CDocEntry *DocPrint(CDoc *doc=NULL,U8 *fmt,...); import CDocEntry *DocPutLine(CDoc *doc,CDocEntry *doc_e); import I64 DocSize(CDoc *doc); import Bool DocWrite(CDoc *doc,Bool prompt=FALSE); diff --git a/Compiler/CMain.CPP b/Compiler/CMain.CPP index 6f25d08d..d44a3e96 100644 --- a/Compiler/CMain.CPP +++ b/Compiler/CMain.CPP @@ -184,7 +184,7 @@ U0 CmpFixUpJITAsm(CCmpCtrl *cc,CAOT *tempaot) while (tempa) { tempa1=tempa->next; ptr=ip2+tempa->ip; - nobound_switch (tempa->type) { + switch [tempa->type] { case AAT_ADD_U8: *ptr(U8 *) +=ip2; break; case AAT_SUB_U8: *ptr(U8 *) -=ip2; break; case AAT_ADD_U16: *ptr(U16 *)+=ip2; break; @@ -250,7 +250,7 @@ U0 CmpFixUpJITAsm(CCmpCtrl *cc,CAOT *tempaot) } if (tempex || g_lb) { ptr=tempie->ip+ip2; - nobound_switch (tempie->type) { + switch [tempie->type] { case IET_REL_I0: case IET_IMM_U0: break; @@ -313,7 +313,7 @@ U0 CmpFixUpAOTAsm(CCmpCtrl *cc,CAOT *tempaot) tempa1=tempa->next; tempa->next=aotc->abss; ptr=tempaot->buf+tempaot->ip+tempa->ip; - nobound_switch (tempa->type) { + switch [tempa->type] { case AAT_ADD_U8: *ptr(U8 *)+=ip2; break; case AAT_SUB_U8: *ptr(U8 *)-=ip2; break; case AAT_ADD_U16: *ptr(U16 *)+=ip2; break; @@ -350,7 +350,7 @@ U0 CmpFixUpAOTAsm(CCmpCtrl *cc,CAOT *tempaot) ptr=tempaot->buf+tempaot->ip+tempie->ip; if (g_lb) { i=g_lb->addr+tempaot->buf; - nobound_switch (tempie->type) { + switch [tempie->type] { case IET_REL_I0: case IET_IMM_U0: break; diff --git a/Compiler/Compiler.BIN b/Compiler/Compiler.BIN index 094b50fb..a0883630 100644 Binary files a/Compiler/Compiler.BIN and b/Compiler/Compiler.BIN differ diff --git a/Compiler/Compiler.MAP b/Compiler/Compiler.MAP index 42f54cae..131e9918 100644 --- a/Compiler/Compiler.MAP +++ b/Compiler/Compiler.MAP @@ -21,11 +21,11 @@ $LK,"AsmStoreNum",A="FL:::/Compiler/Asm.CPP.Z,263",BI=18$ $LK,"MDR_SIB_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,137"$ $LK,"OptPass012",A="FL:::/Compiler/OptPass012.CPP.Z,23",BI=19$ $LK,"MemberLstSize",A="FL:::/Compiler/LexLib.CPP.Z,191",BI=20$ -$LK,"ICQueIns",A="FL:::/Compiler/BackC.CPP.Z,411",BI=21$ +$LK,"ICQueIns",A="FL:::/Compiler/BackC.CPP.Z,412",BI=21$ $LK,"ICAndBranch",A="FL:::/Compiler/BackC.CPP.Z,1",BI=22$ $LK,"MDR_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,134"$ $LK,"U",A="FL:::/Compiler/UAsm.CPP.Z,649",BI=23$ -$LK,"ICQueRem",A="FL:::/Compiler/BackC.CPP.Z,493",BI=24$ +$LK,"ICQueRem",A="FL:::/Compiler/BackC.CPP.Z,494",BI=24$ $LK,"CN_R",A="FL:::/Compiler/BackFA.CPP.Z,4"$ $LK,"OptLead1",A="FL:::/Compiler/OptLib.CPP.Z,73",BI=25$ $LK,"CmpNoteFloatOp",A="FL:::/Compiler/BackFA.CPP.Z,6",BI=26$ @@ -75,7 +75,7 @@ $LK,"ICAdd",A="FL:::/Compiler/PrsLib.CPP.Z,79",BI=53$ $LK,"CmpRawType",A="FL:::/Compiler/OptLib.CPP.Z,509",BI=54$ $LK,"ICFOpEqu",A="FL:::/Compiler/BackFB.CPP.Z,1",BI=55$ $LK,"LexExpressionI64",A="FL:::/Compiler/PrsExp.CPP.Z,1135",BI=56$ -$LK,"ICQueInsRev",A="FL:::/Compiler/BackC.CPP.Z,452",BI=57$ +$LK,"ICQueInsRev",A="FL:::/Compiler/BackC.CPP.Z,453",BI=57$ $LK,"LexExpression",A="FL:::/Compiler/PrsExp.CPP.Z,1163",BI=58$ $LK,"PrsExpression",A="FL:::/Compiler/PrsExp.CPP.Z,264",BI=59$ $LK,"PrsClassNew",A="FL:::/Compiler/PrsLib.CPP.Z,40",BI=60$ @@ -87,7 +87,7 @@ $LK,"OptPass5",A="FL:::/Compiler/OptPass5.CPP.Z,1",BI=64$ $LK,"OptPass6",A="FL:::/Compiler/OptPass6.CPP.Z,111",BI=65$ $LK,"Echo",A="FL:::/Compiler/CMisc.CPP.Z,24",BI=66$ $LK,"PrsGlblVarLst",A="FL:::/Compiler/PrsStmt.CPP.Z,201",BI=67$ -$LK,"ICQueInit",A="FL:::/Compiler/BackC.CPP.Z,397",BI=68$ +$LK,"ICQueInit",A="FL:::/Compiler/BackC.CPP.Z,398",BI=68$ $LK,"ICCmp",A="FL:::/Compiler/BackB.CPP.Z,136",BI=69$ $LK,"ICAddRSP",A="FL:::/Compiler/BackLib.CPP.Z,69",BI=70$ $LK,"ICDiv",A="FL:::/Compiler/BackA.CPP.Z,428",BI=71$ @@ -111,7 +111,7 @@ $LK,"OptSetNOP1",A="FL:::/Compiler/OptLib.CPP.Z,17",BI=87$ $LK,"OptPass789A",A="FL:::/Compiler/OptPass789A.CPP.Z,1",BI=88$ $LK,"OptSetNOP2",A="FL:::/Compiler/OptLib.CPP.Z,25",BI=89$ $LK,"FBO1_F64",A="FL:::/Compiler/OptLib.CPP.Z,94"$ -$LK,"ICXorEqu",A="FL:::/Compiler/BackC.CPP.Z,736",BI=90$ +$LK,"ICXorEqu",A="FL:::/Compiler/BackC.CPP.Z,737",BI=90$ $LK,"ICToUpper",A="FL:::/Compiler/BackB.CPP.Z,355",BI=91$ $LK,"AsmLexExpression",A="FL:::/Compiler/AsmLib.CPP.Z,129",BI=92$ $LK,"ICMov",A="FL:::/Compiler/BackLib.CPP.Z,435",BI=93$ @@ -126,12 +126,12 @@ $LK,"ICSub",A="FL:::/Compiler/BackA.CPP.Z,207",BI=99$ $LK,"COCFloatConstFind",A="FL:::/Compiler/PrsLib.CPP.Z,164",BI=100$ $LK,"ICPut",A="FL:::/Compiler/CExcept.CPP.Z,186",BI=101$ $LK,"PrsArrayDims",A="FL:::/Compiler/PrsVar.CPP.Z,247",BI=102$ -$LK,"ICSqr",A="FL:::/Compiler/BackC.CPP.Z,581",BI=103$ +$LK,"ICSqr",A="FL:::/Compiler/BackC.CPP.Z,582",BI=103$ $LK,"FBO1_NOT_CONST",A="FL:::/Compiler/OptLib.CPP.Z,92"$ $LK,"CMP_TEMPLATES_DONT_POP",A="FL:::/Compiler/Templates.CPP.Z,178"$ $LK,"PrsClass",A="FL:::/Compiler/PrsStmt.CPP.Z,1",BI=104$ $LK,"MemberMetaData",A="FL:::/Compiler/LexLib.CPP.Z,45",BI=105$ -$LK,"ICSwitch",A="FL:::/Compiler/BackC.CPP.Z,757",BI=106$ +$LK,"ICSwitch",A="FL:::/Compiler/BackC.CPP.Z,758",BI=106$ $LK,"OptBrNotZero",A="FL:::/Compiler/OptLib.CPP.Z,358",BI=107$ $LK,"LexPutToken",A="FL:::/Compiler/CExcept.CPP.Z,1",BI=108$ $LK,"SLASH_OP_FDIV",A="FL:::/Compiler/BackLib.CPP.Z,268"$ @@ -140,14 +140,14 @@ $LK,"UAsmHashLoad",A="FL:::/Compiler/UAsm.CPP.Z,188",BI=110$ $LK,"UnusedExternWarning",A="FL:::/Compiler/CExcept.CPP.Z,104",BI=111$ $LK,"SLASH_OP_FILD",A="FL:::/Compiler/BackLib.CPP.Z,273"$ $LK,"ICXorXor",A="FL:::/Compiler/BackB.CPP.Z,98",BI=112$ -$LK,"PrsTryBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,831",BI=113$ +$LK,"PrsTryBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,838",BI=113$ $LK,"CInit",A="FL:::/Compiler/CMain.CPP.Z,684",BI=114$ $LK,"MemberMetaFind",A="FL:::/Compiler/LexLib.CPP.Z,56",BI=115$ $LK,"ExePrint2",A="FL:::/Compiler/CMain.CPP.Z,646",BI=116$ $LK,"FBO1_INT",A="FL:::/Compiler/OptLib.CPP.Z,93"$ $LK,"PE_DO_UNARY_OP",A="FL:::/Compiler/PrsExp.CPP.Z,8"$ $LK,"PrsVarInit",A="FL:::/Compiler/PrsVar.CPP.Z,1",BI=117$ -$LK,"ICOrEqu",A="FL:::/Compiler/BackC.CPP.Z,715",BI=118$ +$LK,"ICOrEqu",A="FL:::/Compiler/BackC.CPP.Z,716",BI=118$ $LK,"ICModr1",A="FL:::/Compiler/BackLib.CPP.Z,141",BI=119$ $LK,"ICModr2",A="FL:::/Compiler/BackLib.CPP.Z,223",BI=120$ $LK,"SLASH_OP_FMUL",A="FL:::/Compiler/BackLib.CPP.Z,267"$ @@ -162,20 +162,20 @@ $LK,"SLASH_OP_IMUL",A="FL:::/Compiler/BackLib.CPP.Z,259"$ $LK,"SLASH_OP_FSTP",A="FL:::/Compiler/BackLib.CPP.Z,271"$ $LK,"COCDel",A="FL:::/Compiler/PrsLib.CPP.Z,186",BI=127$ $LK,"PE_UNARY_TERM1",A="FL:::/Compiler/PrsExp.CPP.Z,1"$ -$LK,"ICFAdd",A="FL:::/Compiler/BackFB.CPP.Z,599",BI=128$ +$LK,"ICFAdd",A="FL:::/Compiler/BackFB.CPP.Z,602",BI=128$ $LK,"PE_UNARY_TERM2",A="FL:::/Compiler/PrsExp.CPP.Z,2"$ $LK,"CmdLinePmt",A="FL:::/Compiler/CMisc.CPP.Z,88",BI=129$ $LK,"AsmMakeArgMask",A="FL:::/Compiler/Asm.CPP.Z,172",BI=130$ $LK,"COCHeaderPut",A="FL:::/Compiler/PrsLib.CPP.Z,229",BI=131$ $LK,"PrsGlblInit",A="FL:::/Compiler/PrsVar.CPP.Z,206",BI=132$ -$LK,"ICAndEqu",A="FL:::/Compiler/BackC.CPP.Z,694",BI=133$ +$LK,"ICAndEqu",A="FL:::/Compiler/BackC.CPP.Z,695",BI=133$ $LK,"LexD2I32",A="FL:::/Compiler/CMisc.CPP.Z,52",BI=134$ $LK,"MemberLstNew",A="FL:::/Compiler/LexLib.CPP.Z,150",BI=135$ $LK,"LexD3I32",A="FL:::/Compiler/CMisc.CPP.Z,68",BI=136$ $LK,"OptClassFwd",A="FL:::/Compiler/OptLib.CPP.Z,9",BI=137$ $LK,"ICFCmp",A="FL:::/Compiler/BackFA.CPP.Z,545",BI=138$ $LK,"PrsSwitch",A="FL:::/Compiler/PrsStmt.CPP.Z,575",BI=139$ -$LK,"ICFDiv",A="FL:::/Compiler/BackFB.CPP.Z,587",BI=140$ +$LK,"ICFDiv",A="FL:::/Compiler/BackFB.CPP.Z,590",BI=140$ $LK,"AOTStoreCodeU8At",A="FL:::/Compiler/AsmLib.CPP.Z,108",BI=141$ $LK,"PE_PUSH_LOWER",A="FL:::/Compiler/PrsExp.CPP.Z,11"$ $LK,"OptPass6Lag",A="FL:::/Compiler/OptPass6.CPP.Z,28",BI=142$ @@ -188,7 +188,7 @@ $LK,"PrsOffsetOf",A="FL:::/Compiler/PrsExp.CPP.Z,348",BI=148$ $LK,"MDR_REG",A="FL:::/Compiler/BackLib.CPP.Z,132"$ $LK,"GetOption",A="FL:::/Compiler/CMisc.CPP.Z,6",BI=149$ $LK,"PrsDoWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,503",BI=150$ -$LK,"ICShift",A="FL:::/Compiler/BackA.CPP.Z,693",BI=151$ +$LK,"ICShift",A="FL:::/Compiler/BackA.CPP.Z,694",BI=151$ $LK,"ICFMod",A="FL:::/Compiler/BackFA.CPP.Z,249",BI=152$ $LK,"COCPop",A="FL:::/Compiler/PrsLib.CPP.Z,121",BI=153$ $LK,"PrsExpression2",A="FL:::/Compiler/PrsExp.CPP.Z,65",BI=154$ @@ -196,12 +196,12 @@ $LK,"SLASH_OP_PUSH",A="FL:::/Compiler/BackLib.CPP.Z,262"$ $LK,"PE_DEREFERENCE",A="FL:::/Compiler/PrsExp.CPP.Z,5"$ $LK,"LexPopRestore",A="FL:::/Compiler/LexLib.CPP.Z,23",BI=155$ $LK,"ICUnaries",A="FL:::/Compiler/BackB.CPP.Z,1",BI=156$ -$LK,"ICFMul",A="FL:::/Compiler/BackFB.CPP.Z,569",BI=157$ -$LK,"ICShiftEqu",A="FL:::/Compiler/BackA.CPP.Z,726",BI=158$ +$LK,"ICFMul",A="FL:::/Compiler/BackFB.CPP.Z,572",BI=157$ +$LK,"ICShiftEqu",A="FL:::/Compiler/BackA.CPP.Z,727",BI=158$ $LK,"LexExpression2Bin",A="FL:::/Compiler/PrsExp.CPP.Z,1112",BI=159$ $LK,"ICFPow",A="FL:::/Compiler/BackFA.CPP.Z,280",BI=160$ $LK,"MapFileWrite",A="FL:::/Compiler/CHash.CPP.Z,90",BI=161$ -$LK,"ICFSub",A="FL:::/Compiler/BackFB.CPP.Z,635",BI=162$ +$LK,"ICFSub",A="FL:::/Compiler/BackFB.CPP.Z,638",BI=162$ $LK,"ICFModEqu",A="FL:::/Compiler/BackFA.CPP.Z,585",BI=163$ $LK,"CmpF1PushPop",A="FL:::/Compiler/OptLib.CPP.Z,529",BI=164$ $LK,"OptFree",A="FL:::/Compiler/OptLib.CPP.Z,33",BI=165$ @@ -225,7 +225,7 @@ $LK,"OptIC6",A="FL:::/Compiler/OptPass6.CPP.Z,1",BI=177$ $LK,"ICCmpAndBranch",A="FL:::/Compiler/BackB.CPP.Z,556",BI=178$ $LK,"ICDivEqu",A="FL:::/Compiler/BackA.CPP.Z,452",BI=179$ $LK,"PrsWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,483",BI=180$ -$LK,"ICFCmpAndBranch",A="FL:::/Compiler/BackFB.CPP.Z,306",BI=181$ +$LK,"ICFCmpAndBranch",A="FL:::/Compiler/BackFB.CPP.Z,309",BI=181$ $LK,"Lex",A="FL:::/Compiler/Lex.CPP.Z,442",BI=182$ $LK,"ICTestAndBranch",A="FL:::/Compiler/BackB.CPP.Z,736",BI=183$ $LK,"uasm",A="FL:::/Compiler/Compiler.PRJ.Z,21"$ @@ -253,34 +253,34 @@ $LK,"MemberFind",A="FL:::/Compiler/LexLib.CPP.Z,67",BI=196$ $LK,"cmp",A="FL:::/Compiler/Compiler.PRJ.Z,16"$ $LK,"OptLag",A="FL:::/Compiler/OptLib.CPP.Z,40",BI=197$ $LK,"ICPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,434",BI=198$ -$LK,"ICFPostIncDec",A="FL:::/Compiler/BackFB.CPP.Z,677",BI=199$ +$LK,"ICFPostIncDec",A="FL:::/Compiler/BackFB.CPP.Z,680",BI=199$ $LK,"ICTest",A="FL:::/Compiler/BackLib.CPP.Z,403",BI=200$ -$LK,"ICModU64",A="FL:::/Compiler/BackC.CPP.Z,588",BI=201$ +$LK,"ICModU64",A="FL:::/Compiler/BackC.CPP.Z,589",BI=201$ $LK,"ICLastIns",A="FL:::/Compiler/BackLib.CPP.Z,59",BI=202$ $LK,"PrsAsmImm",A="FL:::/Compiler/Asm.CPP.Z,1",BI=203$ $LK,"LexExtStr",A="FL:::/Compiler/LexLib.CPP.Z,218",BI=204$ $LK,"ICAddSubEctEqu",A="FL:::/Compiler/BackA.CPP.Z,545",BI=205$ $LK,"ICAddSubEctImm",A="FL:::/Compiler/BackA.CPP.Z,57",BI=206$ $LK,"ICPush",A="FL:::/Compiler/BackLib.CPP.Z,303",BI=207$ -$LK,"ICSwap",A="FL:::/Compiler/BackC.CPP.Z,632",BI=208$ +$LK,"ICSwap",A="FL:::/Compiler/BackC.CPP.Z,633",BI=208$ $LK,"CMP_TEMPLATES_DONT_PUSH",A="FL:::/Compiler/Templates.CPP.Z,267"$ $LK,"intermediate_code_table",A="FL:::/Compiler/CInit.CPP.Z,16"$ $LK,"ICZero",A="FL:::/Compiler/BackLib.CPP.Z,394",BI=209$ $LK,"CmpCtrlDel",A="FL:::/Compiler/Lex.CPP.Z,58",BI=210$ $LK,"ICClassPut",A="FL:::/Compiler/CExcept.CPP.Z,117",BI=211$ $LK,"ICAssign",A="FL:::/Compiler/BackC.CPP.Z,159",BI=212$ -$LK,"ICFTemplateFun",A="FL:::/Compiler/BackFB.CPP.Z,701",BI=213$ +$LK,"ICFTemplateFun",A="FL:::/Compiler/BackFB.CPP.Z,704",BI=213$ $LK,"MemberAdd",A="FL:::/Compiler/LexLib.CPP.Z,103",BI=214$ $LK,"PrsPush",A="FL:::/Compiler/PrsLib.CPP.Z,1",BI=215$ $LK,"SLASH_OP_FDIVR",A="FL:::/Compiler/BackLib.CPP.Z,269"$ $LK,"SLASH_OP_FISTTP",A="FL:::/Compiler/BackLib.CPP.Z,272"$ $LK,"CmpCtrlSize",A="FL:::/Compiler/Lex.CPP.Z,70",BI=216$ -$LK,"ICLocalVarInit",A="FL:::/Compiler/BackC.CPP.Z,923",BI=217$ +$LK,"ICLocalVarInit",A="FL:::/Compiler/BackC.CPP.Z,924",BI=217$ $LK,"PrsFor",A="FL:::/Compiler/PrsStmt.CPP.Z,526",BI=218$ $LK,"PassTrace",A="FL:::/Compiler/CMisc.CPP.Z,11",BI=219$ $LK,"PrsPopDeref",A="FL:::/Compiler/PrsLib.CPP.Z,21",BI=220$ $LK,"ICCopyTemplate",A="FL:::/Compiler/BackFA.CPP.Z,75",BI=221$ -$LK,"PrsStmt",A="FL:::/Compiler/PrsStmt.CPP.Z,893",BI=222$ +$LK,"PrsStmt",A="FL:::/Compiler/PrsStmt.CPP.Z,900",BI=222$ $LK,"PrsFun",A="FL:::/Compiler/PrsStmt.CPP.Z,132",BI=223$ $LK,"LexIncludeStr",A="FL:::/Compiler/Lex.CPP.Z,298",BI=224$ $LK,"PrsType",A="FL:::/Compiler/PrsVar.CPP.Z,287",BI=225$ @@ -289,7 +289,7 @@ $LK,"cmp_type_flags_src_code",A="FL:::/Compiler/Lex.CPP.Z,327"$ $LK,"PrsVarInit2",A="FL:::/Compiler/PrsVar.CPP.Z,123",BI=227$ $LK,"PrsPop",A="FL:::/Compiler/PrsLib.CPP.Z,6",BI=228$ $LK,"asm_seg_prefixes",A="FL:::/Compiler/Asm.CPP.Z,388"$ -$LK,"ICMinMax",A="FL:::/Compiler/BackC.CPP.Z,509",BI=229$ +$LK,"ICMinMax",A="FL:::/Compiler/BackC.CPP.Z,510",BI=229$ $LK,"CmpLoadDefines",A="FL:::/Compiler/CInit.CPP.Z,205",BI=230$ $LK,"PrsIf",A="FL:::/Compiler/PrsStmt.CPP.Z,456",BI=231$ $LK,"ICBuiltInFloatConst",A="FL:::/Compiler/BackLib.CPP.Z,413",BI=232$ @@ -307,12 +307,12 @@ $LK,"PE_CHECK_BINARY_OPS1",A="FL:::/Compiler/PrsExp.CPP.Z,6"$ $LK,"PE_CHECK_BINARY_OPS2",A="FL:::/Compiler/PrsExp.CPP.Z,7"$ $LK,"LexBackupLastChar",A="FL:::/Compiler/LexLib.CPP.Z,1",BI=242$ $LK,"Trace",A="FL:::/Compiler/CMisc.CPP.Z,19",BI=243$ -$LK,"ICBrBitOps",A="FL:::/Compiler/BackC.CPP.Z,211",BI=244$ +$LK,"ICBrBitOps",A="FL:::/Compiler/BackC.CPP.Z,212",BI=244$ $LK,"LexGetChar",A="FL:::/Compiler/Lex.CPP.Z,107",BI=245$ $LK,"LexSkipEol",A="FL:::/Compiler/Lex.CPP.Z,269",BI=246$ $LK,"ICFlagBranch",A="FL:::/Compiler/BackB.CPP.Z,785",BI=247$ $LK,"SLASH_OP_FSUBR",A="FL:::/Compiler/BackLib.CPP.Z,266"$ -$LK,"ICFPreIncDec",A="FL:::/Compiler/BackFB.CPP.Z,657",BI=248$ +$LK,"ICFPreIncDec",A="FL:::/Compiler/BackFB.CPP.Z,660",BI=248$ $LK,"ExeFile",A="FL:::/Compiler/CMain.CPP.Z,616",BI=249$ $LK,"COCMiscNew",A="FL:::/Compiler/PrsLib.CPP.Z,143",BI=250$ $LK,"cmp_templates_dont_pop",A="FL:::/Compiler/CExts.CPP.Z,43"$ @@ -323,120 +323,106 @@ $LK,"COCGoToLabelFind",A="FL:::/Compiler/PrsLib.CPP.Z,152",BI=254$ $LK,"OptMVCompare",A="FL:::/Compiler/OptLib.CPP.Z,556",BI=255$ $LK,"ICToBool",A="FL:::/Compiler/BackB.CPP.Z,378",BI=256$ $LK,"PrsFunJoin",A="FL:::/Compiler/PrsStmt.CPP.Z,68",BI=257$ -$LK,"PrsNoUnusedWarn",A="FL:::/Compiler/PrsStmt.CPP.Z,780",BI=258$ +$LK,"PrsNoUnusedWarn",A="FL:::/Compiler/PrsStmt.CPP.Z,787",BI=258$ $LK,"OptFixSizeOf",A="FL:::/Compiler/OptLib.CPP.Z,485",BI=259$ $LK,"cmp_templates_dont_push",A="FL:::/Compiler/CExts.CPP.Z,45"$ $LK,"cmp_templates_dont_push_pop",A="FL:::/Compiler/CExts.CPP.Z,46"$ $LK,"LexAttachDoc",A="FL:::/Compiler/Lex.CPP.Z,330",BI=260$ -$LK,"PrsStreamBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,794",BI=261$ +$LK,"PrsStreamBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,801",BI=261$ $LK,"cmp_templates_dont_push2",A="FL:::/Compiler/CExts.CPP.Z,44"$ $LK,"InstEntryFind",A="FL:::/Compiler/UAsm.CPP.Z,66",BI=262$ $LK,"PrsDotDotDot",A="FL:::/Compiler/PrsVar.CPP.Z,381",BI=263$ $LK,"ICMulEqu",A="FL:::/Compiler/BackA.CPP.Z,344",BI=264$ $LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CPP.Z,1",BI=265$ -H2@##$$!$&$Q$S$$p$$$$$+kk$k,k7kCkNkmkPkykkkkkkkk!lCl[lHlgllzlllllllmmmmH<J -5QQ[|(*17=?EKR_l8 (/16d`%'46BBOQ^`ll -:`p $*...[bxD,cjȇӇއ jn -P o6o6}66666666666 ;^EEF -F#F6FIFfFFFFFFFGGG&G-G_GlGpGxGxGGGGG NNnvz"'5T]movv|| |1W#W#m#v##################0 '&,228HH\cjn*5@BIRT_f(" >>M`fįۯ5P\ciu˰а۰?KRXdnu|˱۱?KRXdnu|ʲܲ޲ܲ &07>BDJV`gnrr|ȳ>{{{Q{{{{| ||&|.|1|?|k|k|||||||||||||||||}} }!}0}5};}F}K}K}P}h}w}|}}}}}}}}}}}}}}}}}~ ~ ~%~-~5~8~>~>~C~C~C~I~L~S~^~s~~~~~~~~~~~~   -==JJRZcrww~#((<BMSUekk̀Ӏ$4<DJOOciʁҁځ(.3BHYaiov{{ĂƂՂۂ.>>CCQYj}$/:??U[qÄ 2:BRX^^oۅ-5MUX_e}Ԇ'3NVY`f~‡‡ˇۇ"(-?EJflxш׈ވވވ 8KQVщ ,8DOOTTnzȊӊӊ؊؊ #(7COU[buŋԋ܋ #+Kempv||ь 08Wqy|ōʍލ &>FhɎ̎ӎَގ"*-4:RZ|̏ҏޏ )5=@GMRds{Ðː -6BJMTZ_qב"*-4:::::??Rms~Ғ!27IYY^^q“ؓޓ9QQ{Ŕ˔*05AJYY^^tzٕߕ  #)F^^Ö̖ݖߖ#GSTYnϗ՗՗՗ڗߗEU[]bs˜ĘɘИИ٘ /8CENYYzəϙϙԙٙ   $));FNV\\\aal}ϚҚޚ -&/22=?QX^mx͛ԛڛ !#.2;>>IKcjuМלݜ!*--8:LSYalw}ȝʝ   ##/8;;FHZagyŞȞ̞Ӟ؞ݞ %)=DHHUaioŸʟҟ؟؟؟؟؟ڟڟ/7CCdrȠՠ#AMM|x_4_4q4s4w44444444445 5555$5.5֌Ì +0E2QTT`ubӍ.x.xLx^xdxkxrxtxwx~xxxxxxxxxxxxy4yUyZy{yyyyyyyyyyyzz -zz z#z+z4zOzozzzzzzzzz{ {{1{L{l{{{{{{{{{{{{{{{{{ |||7|R|r|||||||||}-}-}H}H}H}V}n}p}p}p}~}}}}}}}}}}}}~6~=~G~Z~^~^~^~e~k~~~~~~~~~~~~~HPPg}ƃ؃܃ L^^r~ȏӏޏ4IR~~; 6GGbhmm "$$7===MB^mL%09ADKOXimsˢТע -6<<JMajsz~ɣ !=IQdkǤ 13DNYcr/XsvHvHHHHHHH III*I0I3I?I ___`` ` ` ` `(`(`/`I`Z`b`b`m`m`{``````````(kq -!' @Ua $/4..;INT!$).!&,"$#(#4y__k{  % 5 K S ] u    " , 6 @ V ` j t ~ !!!"!,!6!@!J!T!^!h!r!|!!!!!!!!!!!!!!""""$DHH^elzǙљܙ - *4;F[ccyyy%$5:VVdsx~&EkšӚ$;>@RYis}֛'(&,0000&0,020(0_gGGGGGGGG)               ( / ; F L V ] n n y             ! !!!!!!#!%!%!%!6!@!E!E!Z!d!d!x!!!!!!!!!!!!!!!!! " "2"6"<"B"Q"d"j"n"t"z"""""""""""""""""# ##>#>#D#G#K#Q#Q#c#t############$$$/$5$@$c$n$t$z$$$$$$$$$$$$$$% %%3%9%?%E%N%T%q%d%%%%%%%%%%%%%%%%&&+&1&9&=&D&g&m&s&&&&&&&&&&&&&&&&&&' ''' '$'3'N'^'k'z''''''''''''''(( (((%()(-(7(C(J(N(V(^(f(u(((((((((((((((((((( ))) )5)7)7)7)B)B)B)G)p**4+tFF`d|%0;=HSUajj"026EEEVV[ms+@66LSVzz'//111DFFFM`sss!,LAP$$$$$ %%2%4%O%j%j%r%y%%-P~xẍو.4 -66%616B6T6]6g6m6/|W&1WW`bbi#.0IOZj| %9@GLW]e   # + ; M S \ \ k q           -( -? -C -O -f - - - - - - - - - - - - -  4 F L W c s               ?0&*.5<KV\acov~18 ?/?/M/S/_/j/{////2@}5BBEGM3h 66\ow~#+0AWgy~>FOW\m%.6;Lbr -#)AY^s6NRRn48KKKPp 3Jaxx $ 3 : J L R i x q      4D}ffv5\Ob(7@IMQ]bggx|6071>>\cju}'5KOTf I(Urr $,02Yos4EI[[[[`| ">fnsw|+BGOSU|#11GWe|<eeer$2J`dt.?DZpt5FJ\\\\a},1Mu} 5KO\\\ou%9LQWm|u58Do|2;ASSWZb9 $)>+JPP\taȎݎʎ(;NX:<;)!,>ITct{2<d(=88DX[ow{=$tEEEEEEF FF F*FRFRF^F`F`FlFqFqF}FFFFFFFFFFFFFFFFFFFFFFGG%G%G'G'G3G9G>G>GDGPGPG[GgGtGGGGGGGGGH> w~~£ף +<@RU`iuɤݤ&8\movԥۥ 04aay~~ʦڦ-7GSXXXzȧקܧ -!&&5HTam¨Ө'4<OW]footttttک,118FKcoժ=N[]kkppwȫͫͫͫͫͫ2:Ufsuɬά,7<<GYqĭϭ*.FV^fqЮЮЮЮЮ+48>CLUZZZZi}ɯݯ!!0Dbmrx}}ʰհݰ - 'BS`bqsssssѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱӱӱ2GVbxѲ57JxPɳڳݳ))TWfzȴGE:/ UUUX]`zصص)J[wc׶̶2>?ff|!)9GVatt &++/7;AFFRgw !(3[fu &.7?DLQXc 24?G\\dx!!!B\aix&+7BGGGGGGRRRRRRRRRRRR]} 5=FNV[`gr02DVVVaf!(5=FNUZZbj)05MWr""2777CJP`q :GGGKVtz@|~~.HOX_bnw~$2<?MWZlqv)08JP_ppwww)11=JRRU`~Aho66Pcjq|)4?Jam #5BU[cv|-Mi}8B >+>+H+P+U+CnSnSSSSSSSSSSSSSST -T(T4T@TFTQTsTsTTTTTTTTTTTTTTTTTUUUU'U,U?UEULUaUuUuUzUzUUUUUUUUUUUUUUUUU V VV V+V2V4VHVWV\VaVaVaVtVyVVVVVVVVVVVVVWWWW"W4WCWVWZWiWwWWWWWWWWWWXXX"X$X2X?XOXVXkXrX~XXXXXXXXXXXXX YY$Y4Y@YaYhYtYYYYYYYYYYYYYYYZZZ!Z&Z&Z5ZBZPZ[ZfZtZzZZZZZZZZZZZZZ[[[,[2[8[>[G[X[[[[[[[[[[[[[\\\\\\DD2>T@`btEYYZ"ZUZdZzZZZZZZZZZZZ[![)[+[J[R[a[h[t[y[[[[[[[[[[[[[[[\ \!\@\G\G\G\[\o\s\\\\\\\\\\\\\ -]\]]]8]=]V]B]b]h]m]]]]]]]]]]]]]^]^^^^^'^'^1^1^I^y^^^^^^^^^FE =Lj~ 599=BGQT^d&/CCRWWeGlvDvDDDDDDDDDDD EE E*E,E7EBEBEaEgEHP*7FRXIg1EJJW_g|JP6767_7a7o7u777777777K8>0>0h0k0n0t0y0000001 191P1b1o11111111111112202I2K2e2k222222222 -3 313L$tyddddddMLu /6>NVgmNTHYbbbbbbbbbbbbbbbO!G```aa!a-a9aEaQahahawaaaaaaaaaaa b bb2b2b4bGbIbcbobrbbPx0m0mImTmdmmmmmmmmmmmn -nnn7nOnXnXnnnnnnoCoOoqosozooooooo$p=pdp}ppppp$q$q3q@qEqEqTqaqfqfqmqxqqqqqqqqqqqqqqrr"r7rqrxrxrxrrrrrrrrrs,s,s,s?sMsisssssssssssss -t ttt(t(tLtNtUtftotqttttttttttttttu u9uAuEuMuQu_umuouwu{uuuuuuuuuuv'v2v>GMUdsxXTѡܡ 9FFPPWjhxxɢТӢ5Ifϣأܣ"*//<B]Iims{¤ݤɤ!%+338EcKlpv~ƥ̥ (,2:::PPPP[enϦԦԦߦ%4C]bbmuѧ!)5CHVjjrjȨͨͨި - -,1?1SXfXzȩͩͩ$8==Z_ʪϪ:?aftfȫͫͫ  (--HMMhmmŬЬ7>HM^h}ŭϭ٭٭ 7<<DXa{ǮЮծծծ#(3;@@KS\gw˯ޯ .3AEJJZemr}Ӱް8J\\\\affrDZDZѱ"3=Hk|Ѳֲֲ<&TYYaiȳͳͳڳ߳߳   4 LQQY^^qvv״5EJaJy~~ʵ#;@@O_ddsҶ/4\J4tyyзշշܷ*//;@@LQQdtyyĸɸɸܸ   %%8==PUmU߹͹$?DDUpuuԺǺ277o]K>λƻ/GLfPL~ɼ)+AGGcpҽ&05@JOOinnv{{˾־۾۾%**;@@Zejrj~տ  *//;/NSS_Srwww$)=)QIZ__glluzz&1<GLLV[[ejjtyy+00BMmr+6O;[fqvv ?+Kkp *//UAa )5@EEkWw   ?+KV[[joo~"-8CNYS|t((@J^xxx0049@PoosGSXn /115T__bpY, ~~Z`..Dfswٙۙۙ ۙ+5[8cmccccddd$d/d;dAd\\ɜԜ֜ -E]f)):Gem .TY "AGKdl  $6;LQcl - - -!/<^^uzz=OTTTTl -  00GIc.....AYaa^` -TTTU"U>UKUbUuUUUUUUUUUUU_W=========> >>">T>n>[>>>>>>>> ??;?C?H?Q?\?d?k????????@@@@$@'@+@<@\@n@`$ffuaxb|&HHRWWvb"/////////00 0-0D0L0V0e0m0z000000000000cH999999::3:J:\::::::::: ;;4;H;M;X;x;};;;;;;;;;< <<,<4<9<Y<^<a<{<<<<<<<<<<=====$=$=/=/=;=;=M=====ddЉЉ".ERRUcse++-+2+F+u+++++++++++,,,,0,0,F,F,\,\,r,r,,,,,,,,,,,,,--'-'->->-U-U-m-m-----------.f  "*@CQTW^bjxg(EKɒؒhCNKNKqKKKKKKKKKKKKKKKKLLLL#L)L+L-L:L:L:L?LHLPLYLaLcLkLsL{LLLLLLLLLLLLMMMM.M>MFMIMMi8-77070K0O0T0_0j0m0q0y0j66Tx~ǚϚ%/M_hpzÛțϛ%E1Qcmuu~ǜ֜ڜڜ ,,,0<]kuם >BeiÞɞԞ ",EHP\^fiџݟ 1BBMXp|Р!kf - -#((.339>>Viott} -"*28P_illv|#+/5=DLTX^inCl`'"'"0"7"K"_"d"""""""""""#!#R#m|2ؑؑ!2CV^lВ,19AG_r}ɓɓГؓ(,8<HLX\\oӔההההܔ 5EUZZZfnv|ŕǕǕǕǕǕǕǕǕǕӕە - &&&8>JP]xǖ@nPkPkbksk~kkkkkkkkkkll l llll3lMlcl{lllllllllllmm*mo$hm&&&&''pbXXXXXXXXXXY-YY9Y_YKYkYpYwYwYYYYYYYYYYYYYq?|llllllmmmmm*m5mCmSmcmjmpmmmmmmmmmmnn n-n4n:nOndndnxnnnnnnnnnnnnaor8JJKK KK+K4K9K>K@Ks88B0000000000t0FIFI\IoI|IIIIut +6?Oagmsx )/?EQ_dr:AKZ`flr#3AXdiw(79GVhhpv`4VcgvϘјјј!+wTff~  *.[_ddkns  ")OZ^c - 9===Adxffz y>e>eVe^eieeeeeweeeeeeffQQWbiq|ƶʶӶ -!/6:<NNN`hͷط%049AETVegvxøǸ׸ "&.<CGOckvzzz¹ʹչ */AITTTTbqº##-4CRZhosu˻˻˻ѻݻ;IMkry̼Ӽ׼ټ &5=KVZZ_gkz|̽Խ +3AHLTbimuھ -*6LT_nv˿ӿ޿޿޿޿$(<Mbos *;Rky+IPP`t1LUj ##;;G_wF{L *0AP_llrw|.?6IKgSo}} ((3HQQQQm+:IQV\aaho,7<IT\dt -,9KVdmr 07=FFOipu )0=?FZiii0CETiky %:<Vkkkmtz+.4=EPbhss 39DV\ddddo|g3g3{333333333333334444 4'4/474>4N4N4Z4} >UUUV1VV=VBVIVIViVVkVVVVVVVVVVVVWW W+W3W~-ee6eFePePeZeZedeveeeeeeeeeeeeefff1f>f>fTfwfffffffff&gYg_g_g_gqgŠϊҊ )++466?AAJLLUU^dgqWz))*-*P*W*p*h*********+++2+K+C+c++o+++++++++++X{-----'.W.d.u...........///-/9/E/I/P//xpp¬Ѭ '6;Vppϭحڭ )4AFV[kw|ŮǮ׮ٮ 7I[m}}}\"'5JQ[ilnxnj00$DL`$FS]lL4CN,N,\,n,t,|,,,,,,,,(7373E3T3X3[3a3\DW,,---$-6-<-E-W-]-f-x-~---, $+38>!H    - - -# -( -G -G -L -k -p -w - - - - - - - - - - -    & ? 8 W a @? aaaaaaaa -b!b0b;b?bJbVbabmbbbbbbbbbccc)c)cAcAcfcfckckcqc}cccccccccd)dJdJdSdXdXdXdXdhdqdyd~ddddddddddddddd ee e$e-eFeIeYe`e~eeeeeeeeeeeeeffff$f4fDfDfqfffffffffffffff gg!g.g;gEgIgRgkgng~gggggggggggggggggh hh'h'h'h,hDhDhShVhjhhhhhhhhhh ii5iHKoqXn$6;Rdnx - -$,6?GJSn %9AAbej}  683= -1?BG8>HNNWWeipsxD*V+V+p+++++++++++y~~ -,@FHOU__pry0+3++,-,>,D,D,L,\y>>Peoxz  3  -*****h ^^ __"_0_;_A_R_X_i_o_{_________-`OOOOP PP P(P(P-P:PPPzPPPPPPPPPPQ5QOQaQ '.MRqv} 33; y}XXamr(A&&HPV^``qqqy(*79FNV]ly{&+++9?DLWityy -##CCCJXgz!!5:^eq%//=[%RXXXcmyH%///////////000 vTvTTTTTTTTT9J.(.(H(T(f(|((((((()(')?)?)I)fQfQQQQQQQQQQQRRR$R?RFRORQRTRrRrRrRRRRRRRRRRSS!S5S>mbz 07DO[fns .3Lasx5Zccc(c-c:cHcQclczccccccccccddd!d3d;dSdWdWdWdWd\dzdddddddded{++,?,P,W,p,h,,,,,,,,,----"-@If f ~           & @ @ _ t a            9 - f k ~ r        #/MbOzn 55=(66Dgmrrx(!'D]j999%9.9:9O9W9]9c9e9e9t900cos{ѦӦצ ***<@@Y`gntۘ11Cb^^_$_,_7_F_O_S_^_~_______``&`,`4`7`<`O`t`y````````aaaaaaa(aHaMagaaaaaaaaaa bbb5b=b]bbb|bbbbbbbbbbbbcc*c>cOcYc[coccccccccc)ŞɞҞߞ  +3Msmџџ;ttttՠ0AȌȌ$.<FXbhrxύލ %::=G\aq|ǎՎގ&33@@HVl:n@n@@@@@@@AA>AFAJAMAQAVA`AcAjApAwA}AAAAAAAAAAAAAAAABBBB0BABJBSB[BfBqB}BBBBBBBBBBBB CC!C+C4CMC^CgCpCxCCCCCCCCCCCCCDDD$D,D5D;D?DDDJDTD^DzDDDDDDDDDDDDDE)E#>#L#`#b#{########## $$$$#$4$J$Z$n$s$$$$$$$$$$$ %%%0%A%A%A%H%[%t%t%t%%%%%%%%%%%%%%%&& &5&A&C&N&Z&j&q&x&&&&&&&&&&&&&&&&&&&'2'>'J'Q'Q'd'h'h'h'o't''''''''''''(((((-(  H H=HLHLHLHfHfHuHuH{H}H}HHHHHHHHHHHHHHHHHHHHHHII#I%I@IEI`IeIkIkIIIIIIIIIIJ J!J0J5JSHSVSkSnSpSzSzS|SSSSSSSSSSSSSSSSSSSTT TTTTT T%TATKT_TsTyTTTTTTTTTTTTTTTTTTU U UUUUU#U#U(U3U8U=UBUQUQUbUhUhUvU|UUUUUUUUUUUUUUUUUUUV +H2@##$$!$&$Q$S$$p$$$$$+>k>kTk\kgksk~kkkkkkkkl'l'lQlsllxllllll m mm.mAmAmAmKmH<J0:>BGIe|..XZagmou{3E8  ').d`  ,.::GIVXddz2Xhx"&&&SZp|D,cjˇև܇ jn +P o6o6}66666666666 ;^EEEFF.FAF^FFFFFFFFGGG%GWGdGhGpGpGGGGG FFfnr -LUegnntt |1W#W#m#v##################0 '$**0@@T[bfڝ"-8:AJLW^(" nn}ӯ߯ -HT[amw~ðȰӰ7CJP\fmtxzñӱ7CJP\fmtxz²ԲֲԲ (/6:<BNX_fjjt6{{{{{|$|6|=|N|V|^|a|o|||||||||||||||||}#}4}4}9}Q}`}e}k}v}{}{}}}}}}}}}}}}}}}~~ ~~&~/~@~P~P~U~]~e~h~n~n~s~s~s~y~|~~~~~~~~~!*.1=CJOO]mmzz "-?EMSXXlr}*05NTdltzƁˁ ++1GX^crxǂ݂ %+222DM^nnssƒȃ؃ރ!!7@KT_jooτՄڄ"*-39>>bjr……΅օم #)0N]e}͆Ն؆߆ (+28HWc~Շ݇ !'?RX]ouz4JPh{ʉ/7=BB\htƊƊ$06;MSXgsŋ͋Ћ֋܋ $,/5;S[{ƌҌڌ݌08;BH`hɍҍލ%?GJPVnvŎˎˎ܎  /7RZ]djɏяԏۏ+16DPYempw}ÐːΐՐې4<?FLLL]frz}בߑ5RZ]djjjjjooƒܒ%+66HQbgy˓ړߓߓ+00FLi”˔ڔڔߔߔ00Z`eqzǕߕߕ  )88==SYv̖Ֆ !...>NSw˗ +$7u .7FFKP_hsu~ʙЙ %.===BBBTYYkv~Śњؚޚ#*05555:??FJJV_bbmo›ƛƛқۛޛޛ +(.8;??GNQS^bknny{Ŝɜɜ՜ޜ '28AEEQZ]]hj|Ɲ͝Нҝݝ$/28==OSS_hkkvxŞʞʞ՞ڞڞ &++8<MUYmtxxğ֟ + + ,8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFHH_gssȠՠՠ"-44>>ASq}}x_4_4q4s4w44444444445 5555$5.5Ԍی$<)HKM[`ubʍݍ ^x^x|xxxxxxxxxxxxxxxyyy yDydyyyyyyyyyyz$z)z/z1z7z:zKzPzSz[zdzzzzzzzz{ {#{6{;{?{a{|{{{{{{{{{{{{{{{ ||)|<|A|E|g||||||| } }$}(}J}]}]}x}x}x}}}}}}}}}}}}}~~ ~~,~L~f~m~w~~~~~~~~~~~~~ **DHHH_uЃԃLďЏҏ4IRvv;.1Ofww;ELRTTgmmm}rL(19<CGPaekyâȢϢۢ %.44BEYbkrv{ݣ5AI\cw)+<FQ[jy'XsnHnHHHHHHHI II"I(I+I7I ___ ` ````` ` `'`A`R`Z`Z`e`e`s``````````(kq @Ua''*,2 $/4^^ky~!$).66CQV\"$#($)/#4y__k{  % 5 K S ] u    " , 6 @ V ` j t ~ !!!"!,!6!@!J!T!^!h!r!|!!!!!!!!!!!!!!""""$D@@V]drəԙ",3>S[[qqq%$5:&Ek˚ݚߚ368JQaku|Λ'(&,0000&0,020(0_gGGGGGGGG)                ' 3 > D N U f f q { {            !! ! !!!!!!!.!8!=!=!R!\!\!p!y!!!!!!!!!!!!!!!!""*"."4":"I"\"b"f"l"r"x"x"z"~""""""""""""""##6#6#<#?#C#I#I#[#l############## $'$-$8$[$f$l$r$x$$$$$$$$$$$$$$% %+%1%7%=%F%L%i%\%%%%%%%%%%%%%%%%& &#&)&1&5&<&_&e&k&w&&&&&&&&&&&&&&&&&&' +''''+'F'V'c'r''''''''''''''''((((!(%(/(;(B(F(N(V(^(m({((((((((((((((((((() +)))-)/)/)/):):):)?)h**4+t>>X\t|(35@KMYbbx (*.===NNSek+@..DKNrr '')))<>>>EXkkk~,LAP$$$$$ %%2%4%O%j%j%r%y%%-P~pp~Ĉш߈ +.4 +66%616B6T6]6g6m6/|W)OOXZZa&(AGRbt}18?DOU]  # 3 E K T T c i }           +7 +; +G +^ +z + + + + + + + + + + + + + , > D O [ k {              70"&-4CNTY[gnv|18 ?/?/M/S/_/j/{////2@}&&4?Ferruw}3h ffBJS[`q*Fnv  %MU^fk|:'GSYq(8JLf~ -2Ldh{{{ *<Lcz    + 9 T c j z |          +4D}^^n5\Ob /8AEIUZ__pt{6074nn 5AWe{ (,,<yX8OT\`b$2FKduy &<MRn !!3[rw''CSaaw)G?l2">Tbz7BH^ot%3GLevz$/5K\a},00Oe{ 0@UNi|%EEEe8Do|*39KKORZ9&&<CTYn[zÎȎݎʎ   2EXk~:<;) $6AL[ls *<d(=00<PSgos}=$tEEEEEEF FF F*FRFRF^F`F`FlFqFqF}FFFFFFFFFFFFFFFFFFFFFFGG%G%G'G'G3G9G>G>GDGPGPG[GgGtGGGGGGGGGH> wˣӣ֣(>P[lpޤĤ *8Vhۥۥޥ ,9LL`dƦ֦ ++3CM]gw§ǧԧ &5:@EEKQVVexǨި-@Wdlҩ +(*>CCCN\aahv{êҪ֪ߪ08@m~ͫ٫++++++++++4MbjŬʬʬʬӬ ,,11111111FKKK\gllwԭ@IZ^vˮԮخ"[dhns|˯֯ۯ 3>FLLQQ`t԰ !:OWrƱձ"..27Gbw²Ųϲ۲!AegzóóƳֳ޳ + '5AYY˴ܴ&Dwuj_P36EYzöö"""%**1Abnú?*2CCLQYiw !!+333DDDHPV[[_gkqvv &9>FLLQXc/4<AINNNV^got|  "*=EMbdow$05ALQQQr !-5JV[grwwwwww-3;CEemv~!!!*36@N`bt $DIQXemv~  $,3@Y`e}"''/7DIIIMRRbgggsz )77<GNjwww{@|%8BB^x*?FFFTblo} 28DY`hz /26?GYaamzAhoff  ".CNYdoz$7=EESer 'AM]}hB 6+6+@+H+M+CfSfSSSSSSSSSSSSSSST T,T8T>TITkTkT~TTTTTTTTTTTTTTTTU U U U U$U7U=UDUYUmUmUrUrUUUUUUUUUUUUUUUUUVV VV#V*V,V@VOVTVYVYVYVlVqVVVVVVVVVVVVVVVV WW,W;WNWRWaWoW}WWWWWWWWWWW +XXX*X7XGXNXcXjXvXXXXXXXXXXXXXYYY,Y8YYY`YlYYYYYYYYYYYYYYYYZZZZZ-Z:ZHZSZ^ZlZrZxZ~ZZZZZZZZZZZZZ[$[*[0[6[?[P[w[[[[[[[[[[[[ \\\\\\DDNNbnpE&Z&ZHZRZZZZZZZZZZZ[ [![2[Q[Y[[[z[[[[[[[[[[[[[[\ \ \\\)\H\O\Q\p\w\w\w\\\\\\\\\\\\]] ]$]:]&]F]L]L]h]m]]r]]]]]]]]]]]]]]^^4^ ^@^F^F^F^N^W^W^a^a^y^^^^^^^^^ _FE ).Om| =Neiimrw#?JV_ssGlDDDDDDDDED-EE9EGEOEZE\EgErErEEEHPFFZgvIg++>Bauzz++EJP.7.7W7Y7g7m777777777K8n0n0000000001&1M1P1i111111111111111'2A2G2`2y2{22222222222:3O3a3L$tyddddddMLu'.6FN_eNTHYbbbbbbbbbbbbbbbO!G```` aa%a1a=aIa`a`aoazaaaaaaaaaabb +b*b*b,b?bAb[bgbjbbPx(m(mAmLm\mmmmmmmmmmmmn nn/nGnPnPnnnnnno;oGoiokoroyoyooooop5p\pupppppqq+q8q=q=qLqYq^q^qeqpqqqqqqqqqqqqqqqrr/rirprprprxrrrrrrrrs$s$s$s7sEsassssssssssssstttt t tDtFtMt^tgtitwtytttttttttttt uu1u9u=uEuIuWueuguousuwuuuuuuuuuv v*v4v;vTv`vgvvvvvvvvvvvvvvwwww!w!w!wEwEwbwiwpwswwwwwwwwwwwwwwwxx9xLx[x]xlxnx}xxxxxxxxxy>yCyQySyayjyyyyyyyyyyyyyyyyyyyzzz#z?zdz}zzzzzzzzzzzzzzzzzz{{{ { {{{3{I{n{{{{{{{{{{{||||'|)|)|1|,|j|j|j||||||||||||||||} } }:}H}J}Y}b}|}~}~}}~}}}}}}}}}}}~~F~^~v~~~~~~~/FMEQ|.>>bv)++9F^^oRe '-::W\\bggmrrx}} + !'-5555AIQYaiqw "(5AGOSZbjnt|SL13:P`f~T*[..BWfjx~ 35?`km5U$nsvdvdddddVl  ~H~HHHHHHHHHIHI I'I2I4I?IJIJIiIoIW,66?EM\kpXTΡΡ 7AOivvâɢ̢ڢ%0Jeyãɣԣ  ?'HLRZ__lryѤդۤ #+00QU[cchu{Υץۥ!'/O7X\bjjjʦئݦ (4HUdsʧէ##.DQYesxΨӨӨ&5::M\aoaѩ֩֩ AFTFhmmĪتݪݪ!&4&HMMjoثݫݫ8==X]]x}}άӬӬ&?Dgnx}έ٭  !!!%;DDglltîήٮ3>HSXckpp{ׯ#DP^cquzzŰ߰&+6CNhzٱ۱ !-5Rcmxβٲ)..6AFFNlVdz̳̳ +(9KPPdP|ش6FKKeuzzֵSA/kppǶնڶڶ G5 _dzdƷ  JZ__kpp|̸ѸѸ !!)..6;;CHHPUUhmmӹ3!@EETottĺɺɺѺֺֺ޺(Gbgg{nٻ޻޻(-_ME-w||м"33Y[qwwѽ '''388KV`epz˾־۾۾  $))4?DDUZZkppǿӿؿؿ*666;G;Z__k_~ &2>ITYmYy!&&16J6Valw|| %*>*J[``r} @E[fk ".9DIIo[{ #C/OZ__q#9%YEepuu -9O;o[{     &-88EKR]hs~   17EXXpz8?N``dip%6Dw&LO_aaeY, vvZ`^^tϙәٙ   <* [e[8cmdd'dd3d>dIdTd_dkdqd\\̜Μ =]f )7YYjw17;^ ,49JRqw{ %-9OTfk|5:::JQ_l   ""388Hm#:<<I``wy  35H^^^^^q^` +UU(U4URUnU{UUUUUUUUUUUVV_W==>>> >'>,>.>5><>@>R>>>>>>>>>>>9?>?k?s?x?????????@ @"@A@G@N@N@T@W@[@l@@@`$axb|66Vxx b"~/~///////// 00%0<0D0N0]0e0r0z0}0}0}00000000cH99:#:&:/:5:L:c:z:::::::;;.;;;N;d;x;};;;;;;;;;;<-<5<=<B<\<d<i<<<<<<<<<< ====7=?=?=D=I=T=T=_=_=k=k=}=====ddȉȉ؉߉&=JJM[ke++-+2+F+u+++++++++++,,,,0,0,F,F,\,\,r,r,,,,,,,,,,,,,--'-'->->-U-U-m-m-----------.f"8;ILOVZbpg(FLƒƒڒhCFKFKiK~KKKKKKKKKKKKKKKKK +LKL!L#L%L2L2L2L7L@LHLQLYL[LcLkLsLLLLLLLLLLLLM +MMM&M6M>MAMMi8-77070K0O0T0_0j0m0q0y0jffܚ 2DMU_}Ûϛ3 ?UAua̜ + +46;F\\\`lӝ(+KOnržОڞ 9DR\uxŸʟП "'9Harr}Ơؠ"*8?Qkf &++166Nagllu +"*0HWaddntzz~ #'-5<DLPVaf|;l`'"'"0"7"K"_"d"""""""""""#!#R#m|2ББ*;NVdȒْߒ$)19?WjuyȓГ $04@DPTTgz˔ϔϔϔϔԔ-=MRRR^fnt˕ӕە +06BHUpޖ8nHkHkZkkkvkkkkkkkkkkkkll l ll+lEl[lslxlllllllllllm"mo$hm&&&&''pbXXXXYXY Y'Y'YGY]YIYiYY{YYYYYYYYYYYYYZYZ%ZqFllm m!m9mCmNmNmSm^mjmummmmmmmmmmmnn"n/n@nQn_nmntnznnnnnnnnnnnoo"o/o?oor8JJJJKK#K,K1K6K8Ks88B0000000000t0>I>ITIgItIzI}IIut#.7GY_ekp +!'7=IW\j29CRX^dj+9P\ao  /1?N``hv`NNdŘɘϘ2 Q[wT <<CFKZ^ %%9<HRY   :>@@KOimmmqx ',,<yneneeeeeeeeee fe&f&f?f3flfqf}ffffffffffffggg:g:g:gFgz*>>[bjuҴ.BIMfpӵڵ#6IIOZait{¶ڶ˶'.24FFFX`ŷз(,19=LN]_npϸڸ߸&4;?G[cnrrr}¹͹ܹ"'9ALLLLZiغܺ %,;JR`gkm|ûûûɻջ3AEcjq|ļ˼ϼѼ-5CNRRW_crtĽ̽ڽ#+9@DLZaemҾ".DLWfny~ÿ˿ֿֿֿֿ 4EZgky"3Jcq|#AHHXl)DMb|33?Woxxx>{L +"(9HWddjot &7.AC_Kguuw +@IIIIe|#2AINTYY`g$/4ALT\l$1CN\ej(/5>>Gahm{!(57>Raaa(;=Lacq 24Ncccelr#&,5=HZ`kkx{+1<NT\\\\g|g3g3{333333333333334444 4'4/474>4N4N4Z4} >VV*V1VaVMVmVrVyVyVVVVVVVVVWW WWW%W0WCW;W[WcW~-ee.e>eHeHeReRe\ene{e~eeeeeeeeeeeeff)f6f6fLfofffffffffgQgWgWgWgigNJʊ!##,..799BDDMMV\_izZ}.*.*L*]***********++3+[+b+{+s+++++++++ , ,#,#,-,X{----- .O.\.m.........../ //%/1/=/A/H/~/xhh~ɬج .3Nhh~ǭЭҭ!,9>NScotϮѮ/ASeuuux\ -BISadfp0(<D`>>Tvҗ"AKL4CF,F,T,f,l,t,,,,,,,,(7373E3T3X3[3a3\DW,,,---.-4-=-O-U-^-p-v-y--, #+06!H + +$ +6 += +D +S +X +w +w +| + + + + + + + + +  + & ( G G G G V o h   \?aaaaaaaaa +bbb2bAbLbPb[bgbrb~bbbbbbbccc"c"c(c9c?cOcOcgcgccccccccccccdd d7dOdpdpdyd~d~d~d~ddddddddddddddddee!e1eHFFOO]ahkpD*N+N+h+{++++++++++y -:M\pvx -0+3+++%,6,<,<,D,\y66H]gpry +~  +*****h ^^___(_3_9_J_P_a_g_s_________%`OOP!P5P=PKPOPXPXP]PjPPPPPPPPPQQ+QAQeQQQ&&>PW^}  +++=Dcck y}PPYej(A@HNVXXiiiqy "/1>FNUdqs###17<DOalqqx| ;;;BP_r-2V]i''5S JPPP[eq|~~~H%///////////000 TTTTTTTUUT<M^(^(x(((((((())?),)W)o)o)y),QQQQQQQQRRR R)R0RKRMRTRoRvRRRRRRRRRRRRRS S S'SESJSQSeSlSSSSSSSSSSTT.T6T6TRTRTmTmTTTTXi>>TbhnLgnn'3?DP`gt!5<@@E^c|    -%EeZbbc c%c2c@cIcdcrcccccccccccd dd+d3dKdOdOdOdOdTdrdddddddd ed~.,.,L,o,,,,,,,,,, -,#-0-0-H-H-R-@I          J 5 ) V p p            # # P i ]         8%SD_}9Feem(..<_ejjp(!'D]j999%9.9:9O9W9]9c9e9e9t9(([gks{ɦ˦Ϧ"""488QX_fl|Әݘ ));b__4_T_\_g_v__________ +`7`@`V`\`d`g`l``````````a1a7a?a?aDaJaMaXaxa}aaaaaaaabbb;bDbFbebmbbbbbbbbbbbbbc"c5cBcZcnccccccccccccc)ʞמ #+Eke{ɟɟ3llll͠0A &4>PZ`jpzǍ֍ٍۍ225?TYity͎֎ގ ++88@Nl:f@f@@@@@@@ A A6A>ABAEAIANAXA[AbAhAoAuAyA~AAAAAAAAAAAAAAAABB(B9BBBKBSB^BiBuBBBBBBBBBBBBCCC#C,CECVC_ChCpCyCCCCCCCCCCCCC +DDD$D-D3D7DF2F_FmFuFFFFFFFFFFGGG:G'GFGQGfGSGGrGGGGGGGGGGGGGHH"H"H/H4HSHUHtHtHtH|H\]]^&^,^7^E^Q^h^h^z^^^^^^^^(5;ff   - 1 6 R z ~                F [ b u y ~         !#!%!>!Q!U!U!U!q!!!!!!!!!!!""."2"D"D"D"I"X"y""""""""#.#2#;#?#D#U#n#n#|############$9$A$J$N$S$d$z$$$$$$$$$$$$ %%9%D%J%`%q%q%q%x%%%%%%%%%%%%&&&&&#&.&C&E&P&e&q&s&~&&&&&&&&&&&&&&&&&&&&''('H'b'n'z'''''''''''''''''(!(-(4(4(A(K(K(](  H H=HLHLHLHfHfHuHuH{H}H}HHHHHHHHHHHHHHHHHHHHHHII#I%I@IEI`IeIkIkIIIIIIIIIIJ J!J0J5JSHSVSkSnSpSzSzS|SSSSSSSSSSSSSSSSSSSTT TTTTT T%TATKT_TsTyTTTTTTTTTTTTTTTTTTU U UUUUU#U#U(U3U8U=UBUQUQUbUhUhUvU|UUUUUUUUUUUUUUUUUUUV V VVV V$V)V8V8VIVOVOV]VcViVsV}VVVVVVVVVVVVVVVVVVVVWWWWW(W2W@WUWXWZWdWsWxWxWxWWWWWWWWWWWWWWWWWWW X XXX(X-X-X-X5X:XCXHXHXRXZX_X_X_XeXoXuXXXXXXXXXXXXXXXXXX YYY&Y0Y>Y>YCYCYNYNYNYRYWYWY]YaYfYnYtYvYYYYYYYYYYYYYYYYYYYYYYYYYYZZZZ Z)Z4Z=ZEZJZJZJZPZXZ]Z]ZaZfZfZoZ}ZZZZZZZZZZZZZZZZ [ -[[[[[[[%[*[*[G[U[a[j[p[z[[[[[[[[[[[[[[[[[[\\\\ \\\\\\\\#\'\_6u6uXunuzuuuuuuu vuv v v/v/v7vCvYvnv}vvvvvvvvvvvvvvv -www"w*Kؠؠ - 9&IQY\^nw¡͡.~<~<<<<<<<<<<==$=6=H=W=f=w===============>>>!>!>&>&>&>+>+>:>C>K>a>a>a>f>f>{>>>>>>>>>>>>>>>>>???????$?&?&?)?)?2?8?=?Y?Y?Y?Y?Y?Y?Y?Y?Y?Y?Y?Y?[?l?~??????????h@, ?a6W6WLWRWYWWuWWWWWWWWWXW X$X+X+X+X1X4X8X@XXXcXvXnXXXPQa%%%%%%%% &&&!&/&;&M&&D%~~ #000000011>1K1]1111111 -2262T2c2~2222223363H3W3f3f3q3333333333 4 4 44)404O4X4e4i4q4|4444444455!555:5B5h5j5u55555556 66#6B6J6R6]6_6o66666667 -77*7.727 \X >R]c //MM`mrr -&355=BBJOOW\\diiott{ .58JLRfs(7=NYcr,39JUZw -&,6<GMO\is0#ppϨ"$$,..688@@IOTT]imrx}}© """*,,,4666>@@KKQVVVV]hz٪/29KS\ggrx}}}ϫ۫nd)BBBBBBBBBBC C C(C8C=CCCKCNC`CLWf/1/1C1G1L1W1W1a1g1g1k1s1\CV0000000011 111 1!1+18(2 gg.g6gAgZgNgggggggggghh(hOhThihVhuh{h{hhhhhhiiiil6.6.P.x.[......... /,/>/Q/Q/^/}/}//4Lw ,DINRTZ`vcœϓ -2 >>QYk~4;D~~"@@N`dltçʧѧܧ #,448o/5/5M5Q5U5]5k5n5q55555555555555566\!FIFIxIIIIIIIIIIJ J'J.JJFJ`J|JJJJJJJJJK -KK#K@KRK_KwKKKKKKKKKKKKKKLL*LMBMRMqMfM}MMMMMMMMMMM -N NN(NpEpQpapapoppppppppppppppppqqqq+q8q>qDqIqOqUq\qhqoqqqvq~qqqqqqqqqqqqqqqqqqqqqqqqr rrr#r+rDrJrUrYr_rjrrrrrrrrrrrrrssss$s-s2s7sLsSs\shsnszs~ssssssssssssssss -t ttt3t>tItOt\t\t`tetetvtxtxttttttttttttttttttuu u!u)u0u6u>uQu\uSululunuuuuuuuuuuuv v2v7v7v=vQvcvnvvv~vvvvvvvvvvvvvvvvvvwwwwww"w"w'w2w>wXwnwzwzwwwwwwwwwwwwwwwwwxx"x*x,x>xCxQx]xcxpxpxxxxxxxxxxxxxx y yyyyyy{ OOOOOOPP PP P&P5P:PFPXPXPvPPPPPPPPQ-Q6QEQMQZQcQhQyQQQQQQQQQR RRUR?R0ReRRR{RRRRgS<*5dCdCCCCCCCCC |"*--=HHKRY_ekrx%66?DNU\djlz 5<FNUU^eq96677737Y7o777777777778X{ );IO`go )47>X`z#5=DHQSe|  -((1EJ,D$)/266V[}ېǐ "...3DIORVVv{֑‘  8$DDDD\  (##72FAP__nn}}^x\\\] ]]/]/]A]G]R]b]n]w]}]]]]]]]]]^d/6BBYYpp8?J``r},;???RggsyP6FCCDDDD+D9D?DKDSD^DdDgDqD -77888 8'8.8D8U8f8x888888888888899$9$9$9$9$9094979?9M9U9b9j9r9999999999999999:):+:9:;:F:L:L:T:T:f:m:::::::::::::::::::;;;;,;8;:;:;=;?;?;L;N;N;Q;Q;Q;Q;Q;Z;`;d;p;;;;;z<(rx((6=MPV(nt ' '('2'B'M'M'k'TzK(5;?EGJNNqu{{ 06;@MOacjwy?Y^uz 6BBBHKNgm ##)7NTWZaary  (@ELny':^`jii.i2i@iOiZifiqiisiiiiiiiijjCjHjTj_jjajjjjjjjjjj k v*v****8IIIIIIIIIJ8 ../ // /&/,/2/2/8/ &+&+0+8+=+<LWb{"*,4OR]iǃ#)16>Y\gsxք,28@BJehsą݅ 39?GLTor}džֆ/5:L[yŇʇ܇DJOapɈψԈԈԈ!9DLYY^qˉ։މ.E^p}ӊ#9Reqʋ̋ыk t9t999999999999999999::J:V:a:q:::::::::::::::::::;;#;(;(;=;I;R;Z;b;n;;;;;;;;;;< -<<<#<#<B<N<Y<^<s<<<<<<<<<<<<<<<<<<<<<====&=1=7=E=S=S=]=f=n================> > >>>>>>'>'>L>U>U>Y>tB( tBtBBBBB1&w&wDwLwXwnwwwwwwwwwwwwwwww -xxx,x\&-&-@-d-G-p-----------.&.&.0.8hrGGHH2HAHGHMHPHqH0 4@NQilt0S[P>NÆ׆߆TJJ(J;J>JHJUJjJlJ~JJJJJJJ<xxÉljω ,0$0Hzdddddedeee'e3e;e DMMMMMMNNN N N"Njjj -kk&k>kDkRkckkkrkkkkkkkkk l-l4l:lHlPlflqlwl}llBxgxggggggggggggggggghhh h2h7hLhWhahahwhwhhhhhhhhhhhhhiii#i;iAiFiZidikikikipipiiiiiiiiiiij -jjjjj j j7jAjKjQjtjzjjjjjjjjjjjjjjjjjjjjjk k kkkkk"kLk}   $ , < C K S [ c h s    \Xn@n@@@@@@@@@AA$A,A;AuAwAAAAAAA BABB-BBBDBOBWBWBrBwBBBBBBBBBBBCB3CCC?CYCGCtCyCCCCCCCCCCCCD(D!D >>>>>>>#>#>2>;>C>Y>Y>Y>^>^>s>>>>>>>>>>>>>>>>>>? +? +? ??????!?!?*?0?5?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?Q?S?d?v??????????`@,?afWfW|WWWWWWWWWWXWXCX/XOXTX[X[X[XaXdXhXpXXXXXXXPQa%%%%%%%% &&&!&/&;&M&&D%vv #00000001161C1U1w1111112 2.2L2[2v22222223.3@3O3^3^3i3|3333333334444!4(4G4P4]4a4i4t44444444455-525:5`5b5m555555556 66:6B6J6U6W6g6666666677"7&7*7 \X6JU[}} ''EEXejj+--5::BGGOTT\aagllsxx +&-0BDJ^kzzzz /5FQ[jy $+1BMRo$.4?EGTak0#hhǨڨ$&&.0088AGLLUaejpuu}٩ܩ"$$$,...688CCINNNNU`rѪߪ'*1CKT__jpuuu|ǫӫ٫ޫޫ fd)BBBBBBBBBBC C C(C8C=CCCKCNC`CLWf/1/1C1G1L1W1W1a1g1g1k1s1\CV0000000011 111 1!1+18(2FgFg^gfgqgg~gghggggh,hhGhLhXhhhhhhhhhhihi6i6i6iBilf.f........// +/)/@FLbOnn͔4;D"88FX\dlw§ɧԧߧ$,,0g/5/5M5Q5U5]5k5n5q55555555555555566`!vIvIIIIIIIJ"J"J&J0J7C7c7u77777777777777788&8.838Y8k8}88888888888889%9C9H9O9]9g9i9i9i9999999/T 7?FH[ccceeeeyΔΔ #(3888jWvx}˕+>CCVi|͖...<0~~<:E8888)858A8J8S8\8b8g8luo'o'}''''''''''''''(( (?(FFZye)).DVlĀ$PU]|ҁށ????GL/////00&090F0?0^0h0gw1w11111111 22 2 2$2.2F2Q2a2m2t222222222222222222233  `FZg8g8w8~8888888888888888<VV_juΡ2&`&`>`P`V`b`m`{````````````aaa(a0a>aKaa, ****++++4ȅх؅߅Kx AJU\u 9[[[poooooooop ppp p(p.p>pLpNpmp~pppppppppppppppqqq q4q:qBqTqZq\qkqxq~qqqqqqqqqqqqqqqqqqqqqqqrr r r rrrr4r:r@rKrPrXrqrwrrrrrrrrrrrrrrss&s1stGt`tktvt|ttttttttttttttttttttt u uuuu-uAu6uNuVu]ucuku~uuuuuuuuuuuuu v#v(vPPPPPnPyPPPPPPP Q%Q.Q=QEQRQ[Q`QqQQQQQQQQQQRRMR7R(R]RRRsRRRR_S<*5dCdCCCCCCCCC |"%%5@@CJQW]cjp ..7<FMT\bdr-4>FMMV]iyz96677737Y7o777777777778X{!3AGX_g} +!,/6PXr -5<@IK]t  + )=B,E28CTY_bff͐Ґ #-049R>^^^cty͑(4;@FIMOhTtttt  (##72FAP__nn}}^x\\\\]]']']9]?]J]Z]f]o]u]{]]]]]]]]]d..2EE_frrFFhoz#/AC\kooo&P6FCCDDDD+D9D?DKDSD^DdDgDqD -778 888 8&8<8M8^8p88888888888888899999(9,9/979E9M9Z9b9j9{999999999999999 +:!:#:1:3:>:D:D:L:L:^:e:{:{:{:::::::::::::::::::;$;0;2;2;5;7;7;D;F;F;I;I;I;I;I;R;X;\;h;;;;;r<(rx .5EHN(nt ' '('2'B'M'M'k'TzK~~ -37=?BFFimssz (.38EGY[boq7QVmr +.:::@CF_ey!/FLORYYjq~ 8=Dfqw 2VXbFiFi^ibipiiiiiiiiiii$jjiFjKjsjxjjjjjjjjjj +k +k-k-k9k n*n*}***8IIIIIIIIII8 ../ // /&/,/2/2/8/ ++(+0+5+NNl|ׂFLRZ\dރ#MSYafn2\bhprzȅ 9ciow|Ćʆ҆چ!5_ej| 6Jtzψ +Qit| 3@J^u؊'>>GSiċ׋ -77Ik t9t999999999999999999::J:V:a:q:::::::::::::::::::;;#;(;(;=;I;R;Z;b;n;;;;;;;;;;< +<<<#<#<B<N<Y<^<s<<<<<<<<<<<<<<<<<<<<<====&=1=7=E=S=S=]=f=n================> > >>>>>>'>'>L>U>U>Y>tB( tBtBBBBB1VwVwtw|wwwwwwwwwwwwwxxx!x/x:xGxNx\x\V-V-p--w--------..*.*.7.V.V.`.8hrGGHH*H9H?HEHHHiH0,8FIadl0S[P>Nφ׆ۆTJJ J3J6J@JMJbJdJvJJJJJJJ<pplj ,0(Hzdd +ee!e7e#eCeEeLeWeceke DMMMMMMN N NNNN4N:NNKNKNKNKNON^NgNoNxNNNNNNNNNNNNOOOO"O+O9OBObOhOlOqOvOyOOOOD jjjjjjjjjjjjj-kl>>RhuJsDDDDDDDDDDDDEE EEE*E.E6EBEIEMEUEWE_EmEuEwEzEEEEEEE!E.k.k>kJkVkfk~kkkkkkkkll"l2l8l:lKlmltlzllllllllBpgpgggggggggggggggggghhh*h/hDhOhYhYhohohhhhhhhhhhhhhhh ii3i9i>iRi\icicicihihiiiiiiiiiiiijjj jjjj/j9jCjIjljrjjjjjjjjjjjjjjjjjjjjjjkkkk k kkDk}~~   $ 4 ; C K S [ ` k y y  \X@@@@@A AA'AAHAHATA\AkAAAAAA B!BBcur_buf_ptr=NULL; goto lgc_here; } - nobound_switch (cc->last_U16=*src++) { + switch [cc->last_U16=*src++] { case 0: lgc_here: tempf=cc->lex_include_stk; @@ -127,7 +127,7 @@ lgc_here: lgc_start2: if (doc_e!=doc) { tempf->cur_entry=doc_e; - nobound_switch (doc_e->type_u8) { + switch [doc_e->type_u8] { case DOCT_TEXT: if (doc_e->de_flags & ~(DOCEF_TAG|DOCEF_DEFINE|DOCEF_TAG_CB| DOCG_BL_IV_UL|DOCEF_WORD_WRAP|DOCEF_HIGHLIGHT| @@ -203,7 +203,7 @@ lgc_start2: case DOCT_CURSOR: doc_e=doc_e->next; goto lgc_start2; - case 0xFF: //nobound_switch + case 0xFF: //nobound switch default: if (LexDollar(cc,doc,doc_e) && *(src=cc->dollar_buf)) { tempf->line_num=doc_e->y+1; @@ -254,7 +254,7 @@ lgc_start2: tempf->line_start=src; } break; - case 0xFF: //nobound_switch + case 0xFF: //nobound switch } lgc_done: if (cc->last_U16==CH_SHIFT_SPACE) @@ -448,7 +448,7 @@ I64 Lex(CCmpCtrl *cc) cc->last_line_num=cc->lex_include_stk->line_num; while (TRUE) { lex_cont: - nobound_switch (ch=LexGetChar(cc)) { + switch [ch=LexGetChar(cc)] { case 0: return cc->token=TK_EOF; case TK_SUPERSCRIPT: diff --git a/Compiler/OpCodes.TXT b/Compiler/OpCodes.TXT index 81ba2985..c07e62fa 100644 --- a/Compiler/OpCodes.TXT +++ b/Compiler/OpCodes.TXT @@ -156,34 +156,33 @@ KEYWORD goto 17; KEYWORD exe 18; KEYWORD break 19; KEYWORD switch 20; -KEYWORD nobound_switch 21; -KEYWORD sub_switch_start 22; -KEYWORD sub_switch_end 23; -KEYWORD case 24; -KEYWORD default 25; -KEYWORD public 26; -KEYWORD offset 27; -KEYWORD import 28; -KEYWORD _import 29; -KEYWORD ifdef 30; -KEYWORD ifndef 31; -KEYWORD ifaot 32; -KEYWORD ifjit 33; -KEYWORD endif 34; -KEYWORD assert 35; -KEYWORD reg 36; -KEYWORD noreg 37; -KEYWORD lastclass 38; -KEYWORD nounusedwarn 39; -KEYWORD help_index 40; -KEYWORD help_file 41; -KEYWORD static 42; -KEYWORD lock 43; -KEYWORD defined 44; -KEYWORD interrupt 45; -KEYWORD haserrcode 46; -KEYWORD argpop 47; -KEYWORD noargpop 48; +KEYWORD sub_switch_start 21; +KEYWORD sub_switch_end 22; +KEYWORD case 23; +KEYWORD default 24; +KEYWORD public 25; +KEYWORD offset 26; +KEYWORD import 27; +KEYWORD _import 28; +KEYWORD ifdef 29; +KEYWORD ifndef 30; +KEYWORD ifaot 31; +KEYWORD ifjit 32; +KEYWORD endif 33; +KEYWORD assert 34; +KEYWORD reg 35; +KEYWORD noreg 36; +KEYWORD lastclass 37; +KEYWORD nounusedwarn 38; +KEYWORD help_index 39; +KEYWORD help_file 40; +KEYWORD static 41; +KEYWORD lock 42; +KEYWORD defined 43; +KEYWORD interrupt 44; +KEYWORD haserrcode 45; +KEYWORD argpop 46; +KEYWORD noargpop 47; ASM_KEYWORD ALIGN 64; ASM_KEYWORD MODULE_ORG 65; diff --git a/Compiler/OptPass012.CPP b/Compiler/OptPass012.CPP index ba10f117..2fc495f6 100644 --- a/Compiler/OptPass012.CPP +++ b/Compiler/OptPass012.CPP @@ -44,7 +44,7 @@ args. tempi->ic_class2=tempc; tempi_push=tempi; MemSet(&tempi->a1,0,sizeof(CICArg)*4); - nobound_switch (intermediate_code_table[code].arg_cnt) { + switch [intermediate_code_table[code].arg_cnt] { case IS_V_ARG: ps->ptr-=tempi->ic_data>>2; break; @@ -59,12 +59,12 @@ args. tempi->t.a1t=tempi1; tempi->t.a1c=PrsPop(ps); break; - case IS_0_ARG: //nobound_switch + case IS_0_ARG: //nobound switch break; } if (intermediate_code_table[code].not_const) cc->flags|=CCF_NOT_CONST; - nobound_switch (code) { + switch [code] { case IC_IMM_F64: tempi->ic_flags&=~ICF_R_TO_F64; if (cc->pass==2 && tempi->ic_flags&ICF_R_TO_INT) { diff --git a/Compiler/OptPass3.CPP b/Compiler/OptPass3.CPP index 65d94620..762f359f 100644 --- a/Compiler/OptPass3.CPP +++ b/Compiler/OptPass3.CPP @@ -63,7 +63,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) } else tempil1=tempil2=&cmp.ic_nop; tempc=tempi->ic_class; - nobound_switch (intermediate_code_table[code].arg_cnt) { + switch [intermediate_code_table[code].arg_cnt] { case IS_V_ARG: ps->ptr-=tempi->ic_data>>3; break; @@ -76,7 +76,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) else tempc2=tempi->t.a2c; tempi->a2.type=TY_STK+CmpRawType(tempc2); - tempi->a2.type_pointed=CmpRawTypePointed(tempc2); + tempi->a2.type_pointed_to=CmpRawTypePointed(tempc2); tempi->ic_flags|=ICF_A2_WAS_STK; case IS_1_ARG: tempi1=PrsPop(ps); @@ -87,19 +87,19 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) else tempc1=tempi->t.a1c; tempi->a1.type=TY_STK+CmpRawType(tempc1); - tempi->a1.type_pointed=CmpRawTypePointed(tempc1); + tempi->a1.type_pointed_to=CmpRawTypePointed(tempc1); tempi->ic_flags|=ICF_A1_WAS_STK; break; - case IS_0_ARG: //nobound_switch + case IS_0_ARG: //nobound switch break; } if (intermediate_code_table[code].result_cnt) { tempi->r.type=TY_STK+CmpRawType(tempc); - tempi->r.type_pointed=CmpRawTypePointed(tempc); + tempi->r.type_pointed_to=CmpRawTypePointed(tempc); tempi->ic_flags|=ICF_R_WAS_STK; PrsPush(ps,tempi); } - nobound_switch (code) { + switch [code] { case IC_IMM_F64: tempi->ic_flags&=~ICF_R_TO_F64; if (tempi->ic_flags&ICF_R_TO_INT) { @@ -121,13 +121,13 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) tempi->a1.reg=REG_RBP; break; case IC_DEREF: - tempi->a1.type_pointed=tempi->r.type&RT_MASK; + tempi->a1.type_pointed_to=tempi->r.type&RT_MASK; if (tempi1->ic_code==IC_LEA) { tempi->ic_flags|=tempi1->ic_flags; tempi->a1.reg=tempi1->a1.reg; tempi->a1.disp=tempi1->a1.disp; tempi->a1.type=TY_DISP+tempi->r.type&RT_MASK; - tempi->a1.type_pointed=tempi->r.type_pointed; + tempi->a1.type_pointed_to=tempi->r.type_pointed_to; tempi->ic_code=IC_MOV; OptFree(tempi1); if (tempi->a1.reg==REG_RBP) @@ -143,7 +143,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) tempi->a1.reg=tempil2->a1.reg; tempi->a1.disp=tempi->ic_data; tempi->a1.type=TY_DISP+tempi->r.type&RT_MASK; - tempi->a1.type_pointed=tempi->r.type_pointed; + tempi->a1.type_pointed_to=tempi->r.type_pointed_to; tempi->ic_code=IC_MOV; OptFree(tempil2); OptFree(tempil1); @@ -154,7 +154,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) case IC__MM: case IC_PP_: case IC_MM_: - tempi->r.type_pointed=CmpRawTypePointed(tempi->t.a1c); + tempi->r.type_pointed_to=CmpRawTypePointed(tempi->t.a1c); case IC_DEREF_PP: case IC_DEREF_MM: if (tempi1->ic_code==IC_LEA && @@ -166,7 +166,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) mv[i].score++; break; } - tempi->a1.type_pointed=tempi->r.type&RT_MASK; + tempi->a1.type_pointed_to=tempi->r.type&RT_MASK; break; case IC_MUL: case IC_DIV: @@ -186,7 +186,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) tempi->t.a1c=tempi->t.a2c; tempi->ic_data=tempi1->ic_data; tempi->ic_code=IC_ADD_CONST; - tempi->a1.type_pointed=tempi->r.type&RT_MASK; + tempi->a1.type_pointed_to=tempi->r.type&RT_MASK; tempi->a2.type=TY_NULL; OptFree(tempi1); if (tempil2->ic_code==IC_REG && @@ -250,8 +250,8 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) mv[i].score++; break; } - tempi->a1.type_pointed=tempi->r.type&RT_MASK; - tempi->r.type_pointed=CmpRawTypePointed(tempi->t.a1c); + tempi->a1.type_pointed_to=tempi->r.type&RT_MASK; + tempi->r.type_pointed_to=CmpRawTypePointed(tempi->t.a1c); break; case IC_RETURN_VAL: case IC_RETURN_VAL2: @@ -375,7 +375,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) mv[i].score++; break; } - tempi->a1.type_pointed=CmpRawType(tempc); + tempi->a1.type_pointed_to=CmpRawType(tempc); goto here1; case IC_BR_LESS: case IC_BR_GREATER_EQU: diff --git a/Compiler/OptPass4.CPP b/Compiler/OptPass4.CPP index d7eb4dfd..fca852fc 100644 --- a/Compiler/OptPass4.CPP +++ b/Compiler/OptPass4.CPP @@ -73,14 +73,14 @@ Bool OptIC4(CIntermediateCode *tempi) ty=ty1; tempil1->a2.type=tempil2->a1.type&TY_MASK+ty; - pt=tempil1->a2.type_pointed; - pt1=tempil2->a1.type_pointed; + pt=tempil1->a2.type_pointed_to; + pt1=tempil2->a1.type_pointed_to; if (pt1 && pt1r.type_pointed; + pt1=tempil2->r.type_pointed_to; if (pt1 && pt1a2.type_pointed=pt; + tempil1->a2.type_pointed_to=pt; tempil1->a2.reg=tempil2->a1.reg; tempil1->a2.disp=tempil2->a1.disp; @@ -113,14 +113,14 @@ Bool OptIC4(CIntermediateCode *tempi) ty=ty1; tempil1->a1.type=tempil2->a1.type&TY_MASK+ty; - pt=tempil1->a1.type_pointed; - pt1=tempil2->a1.type_pointed; + pt=tempil1->a1.type_pointed_to; + pt1=tempil2->a1.type_pointed_to; if (pt1 && pt1r.type_pointed; + pt1=tempil2->r.type_pointed_to; if (pt1 && pt1a1.type_pointed=pt; + tempil1->a1.type_pointed_to=pt; tempil1->a1.reg=tempil2->a1.reg; tempil1->a1.disp=tempil2->a1.disp; @@ -138,7 +138,7 @@ Bool OptIC4(CIntermediateCode *tempi) !Bt(&cmp.non_ptr_vars_mask,tempil2->a1.reg)) { tempil1->ic_flags|=tempil2->ic_flags; tempil1->ic_code=IC_MOV; - tempil1->a1.type=TY_DISP+tempil1->a1.type_pointed; + tempil1->a1.type=TY_DISP+tempil1->a1.type_pointed_to; tempil1->a1.reg=tempil2->a1.reg; tempil1->a1.disp=i; OptSetNOP2(tempil2,-1); @@ -149,7 +149,7 @@ Bool OptIC4(CIntermediateCode *tempi) tempil1->a1.type&TY_MASK==TY_STK) { tempil1->ic_flags|=tempil2->ic_flags; tempil1->ic_code=IC_MOV; - tempil1->a1.type=tempil2->a1.type&TY_MASK+tempil1->a1.type_pointed; + tempil1->a1.type=tempil2->a1.type&TY_MASK+tempil1->a1.type_pointed_to; tempil1->a1.reg=tempil2->a1.reg; tempil1->a1.disp=tempil2->a1.disp; OptFree(tempil2); @@ -159,7 +159,7 @@ Bool OptIC4(CIntermediateCode *tempi) } if (tempil1->ic_code==IC_DEREF) { if (tempil1->a1.type&TY_MASK==TY_REG) { - tempil1->a1.type=TY_DISP+tempil1->a1.type_pointed; + tempil1->a1.type=TY_DISP+tempil1->a1.type_pointed_to; tempil1->a1.disp=0; tempil1->ic_code=IC_MOV; return TRUE; @@ -204,7 +204,7 @@ U0 OptPass4(CCmpCtrl *cc,COptReg *reg_offsets,I64 *_type) tempil2=tempil3=&cmp.ic_nop; } else tempil1=tempil2=tempil3=&cmp.ic_nop; - nobound_switch (intermediate_code_table[code].arg_cnt) { + switch [intermediate_code_table[code].arg_cnt] { case IS_V_ARG: ps->ptr-=tempi->ic_data>>3; break; @@ -215,10 +215,10 @@ U0 OptPass4(CCmpCtrl *cc,COptReg *reg_offsets,I64 *_type) tempi1=PrsPop(ps); tempc1=tempi1->ic_class; break; - case IS_0_ARG: //nobound_switch + case IS_0_ARG: //nobound switch break; } - nobound_switch (code) { + switch [code] { case IC_IMM_I64: case IC_TYPE: tempi->a1.type=TY_IMM+RT_I64; @@ -228,7 +228,7 @@ U0 OptPass4(CCmpCtrl *cc,COptReg *reg_offsets,I64 *_type) case IC_IMM_F64: tempi->a1.type=TY_IMM+RT_I64; tempi->a1.disp=tempi->ic_data; - tempi->a1.type_pointed=RT_F64; + tempi->a1.type_pointed_to=RT_F64; tempi->ic_code=IC_MOV; break; case IC_MOV: @@ -267,7 +267,7 @@ U0 OptPass4(CCmpCtrl *cc,COptReg *reg_offsets,I64 *_type) tempi->a1.disp=tempi1->a1.disp; tempi->ic_flags|=tempi1->ic_flags; tempi->ic_code=IC_MOV; - tempi->a1.type=TY_RIP_DISP32+tempi->a1.type_pointed; + tempi->a1.type=TY_RIP_DISP32+tempi->a1.type_pointed_to; tempi->a1.reg=REG_RIP; OptFree(tempi1); } @@ -313,7 +313,7 @@ p4_lea_gone: tempi->a1.disp=tempi1->ic_data; else tempi->a1.disp=tempi1->a1.disp; - tempi->a1.type=TY_RIP_DISP32+tempi->a1.type_pointed; + tempi->a1.type=TY_RIP_DISP32+tempi->a1.type_pointed_to; tempi->a1.reg=REG_RIP; tempi->ic_flags|=ICF_NOT_ADDR; OptFree(tempi1); @@ -339,7 +339,7 @@ p4_sib: tempi->ic_code=IC_LEA; tempi->a1.type=TY_SIB+RT_I64; - tempi->a1.type_pointed=RT_I64; + tempi->a1.type_pointed_to=RT_I64; tempi->a2.type=TY_NULL+tempi->a2.type&RT_MASK; } diff --git a/Compiler/OptPass5.CPP b/Compiler/OptPass5.CPP index 2a9a02c2..5b99bc87 100644 --- a/Compiler/OptPass5.CPP +++ b/Compiler/OptPass5.CPP @@ -51,14 +51,14 @@ U0 OptPass5(CCmpCtrl *cc) ty=ty1; tempi->a2.type=tempi1->a1.type&TY_MASK+ty; - pt=tempi->a2.type_pointed; - pt1=tempi1->a1.type_pointed; + pt=tempi->a2.type_pointed_to; + pt1=tempi1->a1.type_pointed_to; if (pt1 && pt1r.type_pointed; + pt1=tempi1->r.type_pointed_to; if (pt1 && pt1a2.type_pointed=pt; + tempi->a2.type_pointed_to=pt; tempi->a2.reg=tempi1->a1.reg; tempi->a2.disp=tempi1->a1.disp; @@ -95,14 +95,14 @@ U0 OptPass5(CCmpCtrl *cc) ty=ty1; tempi->a1.type=tempi1->a1.type&TY_MASK+ty; - pt=tempi->a1.type_pointed; - pt1=tempi1->a1.type_pointed; + pt=tempi->a1.type_pointed_to; + pt1=tempi1->a1.type_pointed_to; if (pt1 && pt1r.type_pointed; + pt1=tempi1->r.type_pointed_to; if (pt1 && pt1a1.type_pointed=pt; + tempi->a1.type_pointed_to=pt; tempi->a1.reg=tempi1->a1.reg; tempi->a1.disp=tempi1->a1.disp; diff --git a/Compiler/OptPass6.CPP b/Compiler/OptPass6.CPP index 05a93868..0329e2df 100644 --- a/Compiler/OptPass6.CPP +++ b/Compiler/OptPass6.CPP @@ -10,14 +10,14 @@ Bool OptIC6(CIntermediateCode *tempi) if (tempil1->a1.type&TY_MASK==TY_REG) { tempi->ic_flags=tempi->ic_flags&~ICF_A1_WAS_STK | tempil1->ic_flags; tempi->ic_code=IC_MOV; - tempi->a1.type=TY_DISP+tempi->a1.type_pointed; + tempi->a1.type=TY_DISP+tempi->a1.type_pointed_to; tempi->a1.reg=tempil1->a1.reg; tempi->a1.disp=tempil1->ic_data; OptSetNOP2(tempil1,-1); } else { tempil1->ic_code=IC_MOV; tempi->ic_code=IC_MOV; - tempi->a1.type=TY_DISP+tempi->a1.type_pointed; + tempi->a1.type=TY_DISP+tempi->a1.type_pointed_to; tempi->a1.disp=tempil1->ic_data; } return TRUE; @@ -137,8 +137,8 @@ U0 OptPass6(CCmpCtrl *cc) tempil2->ic_code!=IC_SET_RAX && !(tempi->ic_flags&(ICF_A2_TO_F64|ICF_A2_TO_INT)) && !(tempil2->ic_flags&(ICF_R_TO_F64|ICF_R_TO_INT))) { - tempil2->r.type =tempi->a1.type&TY_MASK+tempi->a1.type_pointed; - tempil2->r.type_pointed=tempi->a1.type_pointed; + tempil2->r.type =tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to; + tempil2->r.type_pointed_to=tempi->a1.type_pointed_to; tempil2->r.reg =tempi->a1.reg; tempil2->r.disp =tempi->a1.disp; tempil2->ic_flags=tempil2->ic_flags diff --git a/Compiler/OptPass789A.CPP b/Compiler/OptPass789A.CPP index 412c9391..3f0039c6 100644 --- a/Compiler/OptPass789A.CPP +++ b/Compiler/OptPass789A.CPP @@ -147,7 +147,7 @@ cc->pass==10 is final pass, code is placed into buf. } } } - nobound_switch (tempi->ic_code) { + switch [tempi->ic_code] { sub_switch_start: sub_switch_start: case IC_ABS_ADDR: @@ -667,14 +667,14 @@ cc->pass==10 is final pass, code is placed into buf. ICAssignPostIncDec(tempi,SLASH_OP_DEC,ip2); break; case IC_SHL_EQU: - ICShiftEqu(tempi,tempi->a1.type_pointed, + ICShiftEqu(tempi,tempi->a1.type_pointed_to, tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a1.type,tempi->a1.reg,tempi->a1.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp, 0xE0D1E0D3E0C1,0xE0D1E0D3E0C1,ip2); break; case IC_SHR_EQU: - ICShiftEqu(tempi,tempi->a1.type_pointed, + ICShiftEqu(tempi,tempi->a1.type_pointed_to, tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a1.type,tempi->a1.reg,tempi->a1.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp, @@ -709,7 +709,7 @@ cc->pass==10 is final pass, code is placed into buf. break; case IC_ADD_EQU: if (tempi->ic_flags&ICF_USE_INT) - ICAddSubEctEqu(tempi,tempi->a1.type_pointed, + ICAddSubEctEqu(tempi,tempi->a1.type_pointed_to, tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a1.type,tempi->a1.reg,tempi->a1.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp, @@ -719,7 +719,7 @@ cc->pass==10 is final pass, code is placed into buf. break; case IC_SUB_EQU: if (tempi->ic_flags&ICF_USE_INT) - ICAddSubEctEqu(tempi,tempi->a1.type_pointed, + ICAddSubEctEqu(tempi,tempi->a1.type_pointed_to, tempi->r.type,tempi->r.reg,tempi->r.disp, tempi->a1.type,tempi->a1.reg,tempi->a1.disp, tempi->a2.type,tempi->a2.reg,tempi->a2.disp, diff --git a/Compiler/PrsExp.CPP b/Compiler/PrsExp.CPP index 69d3712a..f6193601 100644 --- a/Compiler/PrsExp.CPP +++ b/Compiler/PrsExp.CPP @@ -73,7 +73,7 @@ U0 PrsExpression2(CCmpCtrl *cc,I64 *_max_prec,CPrsStk *ps) goto pe_unary_term1; while (TRUE) { - nobound_switch (state) { + switch [state] { case PE_UNARY_TERM1: pe_unary_term1: unary_pre_prec=PREC_NULL; diff --git a/Compiler/PrsStmt.CPP b/Compiler/PrsStmt.CPP index 9e427354..6031db57 100644 --- a/Compiler/PrsStmt.CPP +++ b/Compiler/PrsStmt.CPP @@ -572,17 +572,21 @@ class CSwitchCase { CSubSwitch *ss; }; -U0 PrsSwitch(CCmpCtrl *cc,Bool nobound,I64 try_cnt) +U0 PrsSwitch(CCmpCtrl *cc,I64 try_cnt) { CSwitchCase *header=NULL,*temps,*temps1; //Leaks on except CSubSwitch root,*tempss; //Leaks on except CCodeMisc *lb_dft,*lb_fwd_case,*mc_jt,*lb_entry,**jmp_table; CIntermediateCode *tempi_sub,*tempi_cmp,*tempi_jmp,*tempi_start; - Bool dft_found=FALSE; + Bool dft_found=FALSE,nobound; I64 i,k_start=MIN_I64,k_end,lo=MAX_I64,hi=MIN_I64,range; - if (cc->token!='(') - LexExcept(cc,"expecting '(' at "); + if (cc->token=='(') + nobound=FALSE; + else if (cc->token=='[') + nobound=TRUE; + else + LexExcept(cc,"expecting '(' or '[' at "); Lex(cc); QueInit(&root); @@ -598,12 +602,15 @@ U0 PrsSwitch(CCmpCtrl *cc,Bool nobound,I64 try_cnt) tempi_sub=ICAdd(cc,IC_IMM_I64,0,cmp.internal_types[RT_I64]); ICAdd(cc,IC_SUB,0,cmp.internal_types[RT_I64]); tempi_cmp=ICAdd(cc,IC_IMM_I64,0,cmp.internal_types[RT_I64]); - if (nobound) + if (nobound) { ICAdd(cc,IC_NOBOUND_SWITCH,mc_jt,0); - else + if (cc->token!=']') + LexExcept(cc,"missing ']' at "); + } else { ICAdd(cc,IC_SWITCH,mc_jt,0); - if (cc->token!=')') - LexExcept(cc,"missing ')' at "); + if (cc->token!=')') + LexExcept(cc,"missing ')' at "); + } if (Lex(cc)!='{') LexExcept(cc,"expecting '{' at "); Lex(cc); @@ -925,8 +932,8 @@ Bool PrsStmt(CCmpCtrl *cc,I64 try_cnt=0, if (tempex=cc->hash_entry) { if (tempex->type & HTT_KEYWORD) { i=tempex(CHashGeneric *)->user_data0; - nobound_switch (i) { - case KW_NUM_KEYWORDS-1: //nobound_switch + switch [i] { + case KW_NUM_KEYWORDS-1: //nobound switch default: //A keyword that is not valid here is just a symbol. goto sm_not_keyword_afterall; sub_switch_start: @@ -971,11 +978,8 @@ Bool PrsStmt(CCmpCtrl *cc,I64 try_cnt=0, case KW_DO: PrsDoWhile(cc,try_cnt); break; - case KW_NOBOUND_SWITCH: - PrsSwitch(cc,TRUE,try_cnt); - break; case KW_SWITCH: - PrsSwitch(cc,FALSE,try_cnt); + PrsSwitch(cc,try_cnt); break; sub_switch_end: sub_switch_end: diff --git a/Compiler/UAsm.CPP b/Compiler/UAsm.CPP index 2e97a459..5a51b6f9 100644 --- a/Compiler/UAsm.CPP +++ b/Compiler/UAsm.CPP @@ -95,7 +95,7 @@ CInstruction *InstEntryFind(U8 *ip,I64 opsize,I64 seg_size) if (m=o1-o2) goto ief_compare_done; } else - nobound_switch (tempi->uasm_slash_val) { + switch [tempi->uasm_slash_val] { case 0...7: if (!(m=ip[n]>>3&7-tempi->slash_val)) { if ((Bt(&uasm.mem_arg_mask,a1) || Bt(&uasm.mem_arg_mask,a2)) && diff --git a/Demo/AcctExample/PersonalMenu.TXT b/Demo/AcctExample/PersonalMenu.TXT index 242fcd50..b27e9989 100644 Binary files a/Demo/AcctExample/PersonalMenu.TXT and b/Demo/AcctExample/PersonalMenu.TXT differ diff --git a/Demo/AcctExample/PersonalNotes.TXT b/Demo/AcctExample/PersonalNotes.TXT index 6d3a5c5b..e6e601ba 100644 --- a/Demo/AcctExample/PersonalNotes.TXT +++ b/Demo/AcctExample/PersonalNotes.TXT @@ -27,8 +27,6 @@ $WW,1$$FG,5$$TX+CX,"TODO"$$FG$ * $LK,"DOCEF_REMALLOC_DATA",A="FF:::/Adam/DolDoc/DocChar.CPP,DOCEF_REMALLOC_DATA"$ HexEdit Remalloc. -* No way to clear $LK,"DOCEf_HOLD",A="MN:DOCEf_HOLD"$ entries. - * $LK,"DOCF_DBL_DOLLARS",A="MN:DOCF_DBL_DOLLARS"$ in $LK,"Reindention",A="MN:EdCodeTools2"$. * Compiler Optimization: Local array vars --> reg. Might exist. @@ -42,8 +40,6 @@ $WW,1$$FG,5$$TX+CX,"TODO"$$FG$ * 01/10/2016 find-replace editor hung on $LK,"CounterRenaissance",A="FI:::/Home/Web/TAD/CounterRenaissance.TXT"$ "Rennaisance" * 01/06/2016 Editor filter "str" applied to output from LineRep looks broken. -* Document $$DA zero terminator. Explain str or not. - * Document, perhaps with video, $LK,"GetStr",A="MN:GetStr"$() all the way down into $LK,"PutKey",A="MN:PutKey"$() code. * Better dictionary. @@ -173,7 +169,7 @@ CHashFun *fun_ptr; $ID,-5$ * extern of fun with dft arg of str? -* Might want to warn switch() dup case numbers. +* Might want to warn switch[] dup case numbers. * Make $LK,"Clamp",A="MN:Clamp"$(), $LK,"Min",A="MN:Min"$(), $LK,"Max",A="MN:Max"$() into asm routines? @@ -392,12 +388,13 @@ Offer only in approved place $TX,"Deuteronomy 12:13-18",HTML="http://www.bibleg Jesus' zeal for the Temple $TX,"John 2:14-19",HTML="http://www.biblegateway.com/passage/?search=John%202:14-19&version=NIV"$ Famine not for bread $TX,"Amos 8:11-12",HTML="http://www.biblegateway.com/passage/?search=Amos%208:11-12&version=NIV"$ Meek and humble of heart $TX,"Matthew 11:29",HTML="http://www.biblegateway.com/verse/en/Matthew%2011:29"$ +There is no council against the Lord $TX,"Proverbs 21:30",HTML="http://www.biblegateway.com/verse/en/Proverbs%2021:30"$ $FG,5$$TX+CX,"Misc Notes"$$FG$ Intel CEO's name: Brian Krzanich >$FG,2$lspci -v$FG$ -Size:$TX,"17358 KB",D="DD_TEMPLEOSCD_K_SIZE"$ +Size:$TX,"17364 KB",D="DD_TEMPLEOSCD_K_SIZE"$ $FG,5$$TX+CX,"My Web Bookmarks"$$FG$$WW,0$ $TX,"My FireFox Bookmarks",HTML="http://www.templeos.org/Wb/Home/Downloads/Blog/Bookmarks"$ @@ -406,11 +403,16 @@ Frosting $HC,"
\"\"
"$ CottonTail $HC,"
\"\"
"$ TempleOS Logo $HC,"
\"\"
"$ +Pew Pew Pew $HC,"
\"\"
"$ +Iceberg $HC,"
\"\"
"$ +I made dis $HC,"
\"\"
"$ +NIST Beacon $HC,"
\"\"
"$ $TX,"SimStructure",HTML="http://www.templeos.org/files/SimStrSetUp.zip"$ $TX,"ASU_Transcripts",HTML="http://www.templeos.org/files/ASU_Transcripts.pdf"$ $TX,"ASU Course Catalog (See page 261)",HTML="https://catalog.asu.edu/files/shared/archives/1994-1996/general/UG1994-1996.pdf/1994-1996-UG-241-267.pdf"$ $TX,"Dr. David Pheanis",HTML="https://webapp4.asu.edu/directory/person/77201"$ $TX,"Dr. Konstantinos S. Tsakalis",HTML="http://ecee.engineering.asu.edu/directory/tenured-and-tenure-track-faculty/kostantinos-s-tsakalis"$ $TX,"Dr. Walter Higgins",HTML="https://webapp4.asu.edu/directory/directorysearch?cn=Walter+Higgins"$ $TX,"Peter Gadwa",HTML="http://www.wired.com/magazine/2010/11/mf_ticketmaster/all/1"$ $TX,"Tom Foley",HTML="http://web.gccaz.edu/~tfoley/perspage.html"$ +$TX,"Graphic Technologies",HTML="https://web.archive.org/web/20020811060541/http://www.graphic-technologies.com/"$ $TX,"Lexmark vs Static Control",HTML="https://en.wikipedia.org/wiki/Lexmark_International,_Inc._v._Static_Control_Components,_Inc."$ $FG,5$$TX+CX,"Web Bookmarks"$$FG$ @@ -422,12 +424,16 @@ $TX,"Look at PCI interrupt routing.",HTML="http://forum.osdev.org/viewtopic.php? $TX,"The sins of Newton",HTML="https://www.brainpickings.org/2012/01/04/isaac-newton-list-of-sins"$ $TX,"Stalin's Tanks",HTML="https://boardgamegeek.com/boardgame/5198/stalins-tanks"$ $TX,"Lamp shades",HTML="http://www.lampsplus.com/products/lamp-shades"$ +$TX,"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,"Higgs 5-Sigma Proof",HTML="http://understandinguncertainty.org/explaining-5-sigma-higgs-how-well-did-they-do"$ $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,"ATA/ATAPI spec",HTML="http://www.t13.org/Documents/UploadedDocuments/docs2007/D1532v1r4b-AT_Attachment_with_Packet_Interface_-_7_Volume_1.pdf"$ $TX,"WWW.OSDEV.ORG",HTML="http://www.osdev.org"$ +$TX,"NIST Beacon",HTML="http://www.nist.gov/itl/csd/ct/nist_beacon.cfm"$ +$TX,"The Perfect Coin Toss",HTML="http://hackaday.com/2014/12/19/nist-randomness-beacon"$ $TX,"BBC",HTML="http://www.knpr.org"$ $TX,"KNPR",HTML="http://www.knpr.org"$ $TX,"BBC_News_24",HTML="http://www.wherever.tv/tv-channels/BBC-News-24.jsf"$ diff --git a/Demo/AcctExample/Registry.CPP b/Demo/AcctExample/Registry.CPP index 0fd893ae..1b49aa5d 100644 --- a/Demo/AcctExample/Registry.CPP +++ b/Demo/AcctExample/Registry.CPP @@ -2,7 +2,7 @@ $TR-UL,"Adam"$ $ID,2$$TR,"SysMsgFlags"$ $ID,2$sys_msg_flags[0]=0xFF; $ID,-2$$TR,"SysRegVer"$ -$ID,2$registry_version=4.030; +$ID,2$registry_version=4.040; $ID,-2$$ID,-2$$TR-UL,"TempleOS"$ $ID,2$$TR,"TOS"$ $ID,2$I64 tos_code_walk_thru=105,tos_after_egypt_in_action=46; @@ -39,7 +39,7 @@ $ID,-2$$TR,"BomberGolf"$ $ID,2$I64 best_score=175; $ID,-2$$ID,-2$$TR,"DemoCompany"$ $ID,2$$TR,"Game1"$ -$ID,2$F64 best_score=166.32939; +$ID,2$F64 best_score=1344.86889; $TR,"SimpleVal"$ -$ID,2$1298; +$ID,2$1300; $ID,-2$$ID,-2$$ID,-2$ \ No newline at end of file diff --git a/Demo/AcctExample/TOSBlog.CPP b/Demo/AcctExample/TOSBlog.CPP index fb5b6e76..1353940d 100644 --- a/Demo/AcctExample/TOSBlog.CPP +++ b/Demo/AcctExample/TOSBlog.CPP @@ -4,7 +4,7 @@ U8 *BlogLocalDir(CDate cdt=0) CDateStruct ds; if (!cdt) cdt=Now+local_time_offset; Date2Struct(&ds,cdt); - StrPrint(dir,"::/Home/Web/" PERSONAL_INITIALS "/Blog/%d%Z", + StrPrint(dir,BLOG_LOCAL_BASE "/%d%Z", ds.year,ds.mon-1,"ST_MONTHS"); if (!FileFind(dir,,FUF_JUST_DIRS)) MkDir(dir); @@ -28,7 +28,7 @@ U8 *BlogWebDir(CDate cdt=0) CDateStruct ds; if (!cdt) cdt=Now+local_time_offset; Date2Struct(&ds,cdt); - StrPrint(dir,PERSONAL_WEB "/Home/Web/" PERSONAL_INITIALS "/Blog/%d%Z", + StrPrint(dir,BLOG_WEB_BASE "/%d%Z", ds.year,ds.mon-1,"ST_MONTHS"); return dir; } @@ -85,23 +85,32 @@ U0 BlogScreenShot() public U0 MakeWebSitePartial() { + MkDir("D:/Wb"); + MkDir("D:/Wb/Home"); + MkDir("D:/Wb/Home/Web"); + MkDir("D:/Wb/Home/Web/TAD"); + MkDir("D:/Wb/Home/Web/TAD/Blog"); + FreshenWebDir("/Home/Web"); FreshenWebDir("/Home/Web/" PERSONAL_INITIALS); FreshenWebDir(BlogLocalDir+2); Drv('C'); } -U0 Blog() +public U0 Blog() { if (!FileFind(BlogLocalFile,,FUF_JUST_FILES)) Copy("::/Home/Downloads/Blog/DailyBlogHeader.TXT.Z",BlogLocalFile); - WinMax; AutoComplete; + WinBorder; + WinMax; Msg(MSG_KEY_DOWN_UP,0,SC_CURSOR_DOWN|SCF_CTRL); Msg(MSG_KEY_DOWN_UP,0,SC_F6|SCF_ALT); Msg(MSG_KEY_DOWN_UP,'\n',0); if (Ed(BlogLocalFile,EDF_WAS_WRITE)) { - Copy(BlogLocalFile,"::Home/Web/" PERSONAL_INITIALS "/DailyBlog.TXT.Z"); - MakeWebSitePartial; + Copy(BlogLocalFile,"::" DAILY_BASE ".TXT.Z"); + Copy(BlogLocalFile,"D:" DAILY_BASE ".TXT.Z"); + Copy(BlogLocalFile,"D:/Wb" DAILY_BASE ".TXT.Z"); + TOSWebFile("D:/Wb" DAILY_BASE ".TXT.Z"); } } diff --git a/Demo/AcctExample/TOSCfg.CPP b/Demo/AcctExample/TOSCfg.CPP index b2fc6be3..1e1911d6 100644 --- a/Demo/AcctExample/TOSCfg.CPP +++ b/Demo/AcctExample/TOSCfg.CPP @@ -2,6 +2,10 @@ #define PERSONAL_WEB "http:/" "/www.templeos.org/Wb" #define PERSONAL_INITIALS "TAD" +#define BLOG_BASE "/Home/Web/" PERSONAL_INITIALS "/Blog" +#define DAILY_BASE "/Home/Web/" PERSONAL_INITIALS "/DailyBlog" +#define BLOG_LOCAL_BASE "::" BLOG_BASE +#define BLOG_WEB_BASE PERSONAL_WEB BLOG_BASE #define SLOP BLK_SIZE U0 TOSBootRescueDrv1() diff --git a/Demo/AcctExample/TOSDistro.CPP b/Demo/AcctExample/TOSDistro.CPP index 5804cc2f..6614e135 100644 --- a/Demo/AcctExample/TOSDistro.CPP +++ b/Demo/AcctExample/TOSDistro.CPP @@ -230,10 +230,6 @@ U0 TOSDistroPrep() virtual machine, not bare metal hardware because it's settings could cause problems. The hard drive must be partitioned. Install Std Distro, then install this on top. ->$LK,"TSInstall",A="FF:::/Demo/AcctExample/TOSDistro.CPP,TSInstall"$; ->$LK,"TSUpgrade",A="FF:::/Demo/AcctExample/TOSDistro.CPP,TSUpgrade"$; -See $LK,"MakeDistrosAndBackUp",A="FF:::/Demo/AcctExample/TOSDistro.CPP,MakeDistrosAndBackUp"$() to reproduce the ISO's in $FG,4$E:/Wb$FG$. It makes this -website, too. */ Drv('C'); DistroPrep; @@ -249,7 +245,7 @@ U0 MakeTOSDistro() ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); DefinePrint("DD_TEMPLEOSTS_SIZE", - "Download $TX,"TempleOS V4.03",D="DD_OS_NAME_VERSION"$ - T.S. Company Internal Distro (%0.1f MB)", + "Download $TX,"TempleOS V4.04",D="DD_OS_NAME_VERSION"$ - T.S. Company Internal Distro (%0.1f MB)", 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); Drv('C'); } @@ -284,7 +280,7 @@ U0 MakeDbgDistro() ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); DefinePrint("DD_TEMPLEOSDBG_SIZE", - "Download $TX,"TempleOS V4.03",D="DD_OS_NAME_VERSION"$ - Debug Distro (%0.1f MB)", + "Download $TX,"TempleOS V4.04",D="DD_OS_NAME_VERSION"$ - Debug Distro (%0.1f MB)", 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); Drv('C'); } @@ -332,7 +328,7 @@ U0 MakeLiteDistro() ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); DefinePrint("DD_TEMPLEOSLITE_SIZE", - "Download $TX,"TempleOS V4.03",D="DD_OS_NAME_VERSION"$ - Lite Distro (%0.1f MB)", + "Download $TX,"TempleOS V4.04",D="DD_OS_NAME_VERSION"$ - Lite Distro (%0.1f MB)", 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); Drv('C'); } @@ -365,7 +361,7 @@ U0 MakeUltraDistro() ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); DefinePrint("DD_TEMPLEOSULTRA_SIZE", - "Download $TX,"TempleOS V4.03",D="DD_OS_NAME_VERSION"$ - UltraLite Distro (%0.1f MB)", + "Download $TX,"TempleOS V4.04",D="DD_OS_NAME_VERSION"$ - UltraLite Distro (%0.1f MB)", 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); Drv('C'); } @@ -374,12 +370,12 @@ U0 UpdateISODocDefines() { try { DefinePrint("DD_TEMPLEOSCD_SIZE", - "Download $TX,"TempleOS V4.03",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1f MB)", + "Download $TX,"TempleOS V4.04",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1f MB)", 0.1*(10*Size("D:/Wb/TempleOSCD.ISO","+s")/1024/1024)); DefinePrint("DD_TEMPLEOSCD_K_SIZE", "%d KB",Size("D:/Wb/TempleOSCD.ISO","+s")/1024); DefinePrint("DD_TEMPLEOSULTRA_SIZE", - "Download $TX,"TempleOS V4.03",D="DD_OS_NAME_VERSION"$ - UltraSmall Distro (%0.1f MB)", + "Download $TX,"TempleOS V4.04",D="DD_OS_NAME_VERSION"$ - UltraSmall Distro (%0.1f MB)", 0.1*(10*Size("D:/Wb/TempleOSUltra.ISO","+s")/1024/1024)); DefinePrint("DD_TEMPLEOSULTRA_K_SIZE", "%d KB",Size("D:/Wb/TempleOSUltra.ISO","+s")/1024); diff --git a/Demo/AcctExample/TOSHolySpirit.CPP b/Demo/AcctExample/TOSHolySpirit.CPP index 7614fad1..5a74a69f 100644 --- a/Demo/AcctExample/TOSHolySpirit.CPP +++ b/Demo/AcctExample/TOSHolySpirit.CPP @@ -322,8 +322,6 @@ U0 MyBibleLines(U8 *st,I64 num_lines,I64 radix,Bool modulo,Bool plus_one) I64 i,start; U8 *verse; if (*st && (doc_out=DocPut)) { - DocPrint(doc_out,"$$BG,LTGRAY$$"); - i=Str2I64(st,radix); if (modulo) { if (radix==16) @@ -344,7 +342,7 @@ U0 MyBibleLines(U8 *st,I64 num_lines,I64 radix,Bool modulo,Bool plus_one) DocPrint(doc_out,"-->Line:%d\n",start); verse=BibleLine2Verse(start); - DocPrint(doc_out,"$TX,"KingJamesBible",HTML="http://www.templeos.org/files/NumBible.TXT"$ (%s)\n$$BG$$\nGod says...\n$$RED$$",verse); + DocPrint(doc_out,"$TX,"KingJamesBible",HTML="http://www.templeos.org/files/NumBible.TXT"$ (%s)\n\nGod says...\n$$RED$$",verse); Free(verse); doc_in=DocNew; @@ -377,23 +375,26 @@ U0 MyBibleLines(U8 *st,I64 num_lines,I64 radix,Bool modulo,Bool plus_one) } } +#define GBP_SHORT 0 +#define GBP_MEDIUM 1 +#define GBP_LONG 2 + public U0 GodBooksPassage(U8 *files_find_mask,I64 len=512, - I64 rand_i32=MIN_I64,Bool full=FALSE) + I64 rand_i32=MIN_I64,I64 verbosity=GBP_SHORT) {//Make God pick a book passage. $LK+PU,"Holy Spirit Instructions",A="FI:::/Adam/God/HSNotes.TXT"$ CDirEntry *tempde=FilesFind(files_find_mask, FUF_RECURSE|FUF_JUST_FILES|FUF_JUST_TXT), *tempde1=tempde; I64 i=0; U8 *st,*st2=NULL; - "$$BG,LTGRAY$$"; while (tempde) { st=FileRead(tempde->full_name); tempde->user_data=StrLen(st); - if (full) + if (verbosity==GBP_LONG) "%08X-",i; if (tempde->user_data>=len) i+=tempde->user_data+1-len; - if (full) + if (verbosity==GBP_LONG) "%08X:$$LK,\"%s\",A=\"FI:%s\"$$\n", i-1,tempde->full_name+2,tempde->full_name; Free(st); @@ -401,10 +402,12 @@ public U0 GodBooksPassage(U8 *files_find_mask,I64 len=512, } if (rand_i32<0) rand_i32=GodBits(32); - if (full) - " \n%08X*%08X",rand_i32,i; + if (verbosity==GBP_LONG) + '\n'; + if (verbosity>=GBP_MEDIUM) + "%08X*%08X",rand_i32,i; i*=rand_i32; - if (full) + if (verbosity>=GBP_MEDIUM) "=%08X.%08X\n",i.u32[1],i.u32[0]; i=i.u32[1]; tempde=tempde1; @@ -415,7 +418,7 @@ public U0 GodBooksPassage(U8 *files_find_mask,I64 len=512, st=FileRead(tempde->full_name); st2=st+(tempde->user_data+1-len)+i; st2[len]=0; - "%s\n$$BG$$\nGod says...\n$$RED$$%s$$FG$$\n",tempde->full_name,st2; + "%s\nGod says...\n$$RED$$%s$$FG$$\n",tempde->full_name,st2; Free(st); } } @@ -424,7 +427,7 @@ public U0 GodBooksPassage(U8 *files_find_mask,I64 len=512, DirTreeDel(tempde1); } -#define NIST_TIME_OFFSET (-7884-local_time_offset/CDATE_FREQ) +#define NIST_TIME_OFFSET (-7900-local_time_offset/CDATE_FREQ) #define NIST_TIME_TO_SWITCH 3 public U0 NISTSync() @@ -456,29 +459,29 @@ U0 InsMyURL() "GenerateData\0WebBookMark\0Roulette\0Movie\0Metallica\0")) { case: if (DocForm(url(CRandHexBeacon5Form *))) { - "$$BG,LTGRAY$$"; -// if (FileFind("::/Home/Web/TAD/NISTPassage.TXT.Z")) -// Type("::/Home/Web/TAD/NISTPassage.TXT.Z",0); "$$TX,\"Guidelines for Talking with God.\"," - "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; + "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\t"; + "$$TX,\"How this random Bible passage was chosen.\"," + "HTML=\"http://www.templeos.org/Wb" + "/Home/Web/TAD/NISTPassage.html\"$$\n"; tag=MStrPrint("https:/beacon.nist.gov/rest/record/%d",url->timestamp); - "$$TX,\"%Q\",HTML=\"%Q\"$$\n$$BG$$",tag,tag; + "$$TX,\"%Q\",HTML=\"%Q\"$$\n",tag,tag; Free(tag); MyBibleLines(url->special,20,16,TRUE,TRUE); } break; case: if (DocForm(url(CRandHexBeacon8Form *))) { - "$$BG,LTGRAY$$"; -// if (FileFind("::/Home/Web/TAD/NISTPick.TXT.Z")) -// Type("::/Home/Web/TAD/NISTPick.TXT.Z",0); "$$TX,\"Guidelines for Talking with God.\"," - "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; + "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\t"; + "$$TX,\"How this random book pick was chosen.\"," + "HTML=\"http://www.templeos.org/Wb" + "/Home/Web/TAD/NISTPick001.html\"$$\n"; tag=MStrPrint("https:/beacon.nist.gov/rest/record/%d",url->timestamp); - "$$TX,\"%Q\",HTML=\"%Q\"$$\n$$BG$$",tag,tag; + "$$TX,\"%Q\",HTML=\"%Q\"$$\n",tag,tag; Free(tag); GodBooksPassage("C:/Home/Downloads/Text/*",, - Str2I64(url->special,16),TRUE); + Str2I64(url->special,16),GBP_MEDIUM); } break; case: @@ -554,69 +557,69 @@ U0 InsMyURL() break; case: if (DocForm(url(CRandDecForm *))) { - "$$BG,LTGRAY$$$$TX,\"Guidelines for Talking with God\"," + "$$TX,\"Guidelines for Talking with God\"," "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; tag="http://www.randomnumbers.info"; - "$$TX,\"%Q\",HTML=\"%Q\"$$\n$$BG$$",tag,tag; + "$$TX,\"%Q\",HTML=\"%Q\"$$\n",tag,tag; MyBibleLines(url->special,20,10,FALSE,TRUE); } break; case: if (DocForm(url(CRandDecForm *))) { - "$$BG,LTGRAY$$$$TX,\"Guidelines for Talking with God\"," + "$$TX,\"Guidelines for Talking with God\"," "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; tag="http://www.random.org"; - "$$TX,\"%Q\",HTML=\"%Q\"$$\n$$BG$$",tag,tag; + "$$TX,\"%Q\",HTML=\"%Q\"$$\n",tag,tag; MyBibleLines(url->special,20,10,FALSE,FALSE); } break; case: if (DocForm(url(CRandDecForm *))) { - "$$BG,LTGRAY$$$$TX,\"Guidelines for Talking with God\"," + "$$TX,\"Guidelines for Talking with God\"," "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; tag="https://passed.pw"; - "$$TX,\"%Q\",HTML=\"%Q\"$$\n$$BG$$",tag,tag; + "$$TX,\"%Q\",HTML=\"%Q\"$$\n",tag,tag; MyBibleLines(url->special,20,10,FALSE,FALSE); } break; case: if (DocForm(url(CRandCertForm *))) { - "$$BG,LTGRAY$$$$TX,\"Guidelines for Talking with God\"," + "$$TX,\"Guidelines for Talking with God\"," "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; tag="http://virtual-notary.org"; "$$TX,\"%Q\",HTML=\"%Q\"$$\n",tag,tag; tag="Here is the certificate"; st=MStrPrint("http://www.templeos.org/Certs/virtual-notary-cert" "-randomnum-%d.p12",url->cert); - "\n$$TX,\"%Q: %d\",HTML=\"%Q\"$$.\n$$BG$$",tag,url->cert,st; + "\n$$TX,\"%Q: %d\",HTML=\"%Q\"$$.\n",tag,url->cert,st; Free(st); MyBibleLines(url->special,20,10,FALSE,FALSE); } break; case: if (DocForm(url(CRandHexForm *))) { - "$$BG,LTGRAY$$$$TX,\"Guidelines for Talking with God\"," + "$$TX,\"Guidelines for Talking with God\"," "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; tag="http://qrng.anu.edu.au/NIST.php"; - "$$TX,\"%Q\",HTML=\"%Q\"$$\n$$BG$$",tag,tag; + "$$TX,\"%Q\",HTML=\"%Q\"$$\n",tag,tag; MyBibleLines(url->special,20,16,TRUE,TRUE); } break; case: if (DocForm(url(CRandHexForm *))) { - "$$BG,LTGRAY$$$$TX,\"Guidelines for Talking with God\"," + "$$TX,\"Guidelines for Talking with God\"," "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; tag="https://www.fourmilab.ch/hotbits/secure_generate.html"; - "$$TX,\"%Q\",HTML=\"%Q\"$$\n$$BG$$",tag,tag; + "$$TX,\"%Q\",HTML=\"%Q\"$$\n",tag,tag; MyBibleLines(url->special,20,16,TRUE,TRUE); } break; case: if (DocForm(url(CRandDecForm *))) { - "$$BG,LTGRAY$$$$TX,\"Guidelines for Talking with God\"," + "$$TX,\"Guidelines for Talking with God\"," "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; tag="http://www.generatedata.com"; - "$$TX,\"%Q\",HTML=\"%Q\"$$\n$$BG$$",tag,tag; + "$$TX,\"%Q\",HTML=\"%Q\"$$\n",tag,tag; MyBibleLines(url->special,20,10,FALSE,FALSE); } break; @@ -631,10 +634,10 @@ U0 InsMyURL() break; case: if (DocForm(url(CRandDecForm *))) { - "$$BG,LTGRAY$$$$TX,\"Guidelines for Talking with God\"," + "$$TX,\"Guidelines for Talking with God\"," "HTML=\"http://www.templeos.org/Wb/Adam/God/HSNotes.html\"$$\n"; tag="https://www.dublinbet.com"; - "$$TX,\"%Q\",HTML=\"%Q\"$$\n$$BG$$",tag,tag; + "$$TX,\"%Q\",HTML=\"%Q\"$$\n",tag,tag; MyBibleLines(url->special,20,10,FALSE,FALSE); } break; diff --git a/Demo/AcctExample/TOSToHtml.CPP b/Demo/AcctExample/TOSToHtml.CPP index a33bf6d0..e1be5ae1 100644 --- a/Demo/AcctExample/TOSToHtml.CPP +++ b/Demo/AcctExample/TOSToHtml.CPP @@ -150,7 +150,7 @@ public CDoc *Doc2Html(CDoc *doc_in,U8 *html_header=NULL,U8 *body_header=NULL, "\n" "\n" - "\n"; + "\n"; if (!body_header) body_header= "\n" "
\n";
@@ -173,14 +173,14 @@ public CDoc *Doc2Html(CDoc *doc_in,U8 *html_header=NULL,U8 *body_header=NULL,
   y=doc_e->y;
   while (doc_e!=doc_in) {
     if (!(doc_e->de_flags&DOCEF_SKIP)) {
-      if (line_anchors && y!=old_y) {
+      if (y!=old_y && line_anchors) {
 	DocPrint(doc_out,"",y+1);
 	old_y=y;
       }
       while (yy) {
 	HtmlPutS(doc_out,doc_e->settings.final_u32_attr,
 	      &old_u32_attr,"\n",&col,style_bitmap);
-	if (line_anchors && ++y!=old_y) {
+	if (++y!=old_y && line_anchors) {
 	  DocPrint(doc_out,"",y+1);
 	  old_y=y;
 	}
@@ -349,12 +349,19 @@ U0 TOSWebFile(U8 *name)
 {
   U8 *name2;
   CDirEntry de;
+  Bool line_anchors;
   if (FileFind(name,&de)) {
     Free(de.full_name);
     "File:%s\n",name;
     UncollapseFile(name,NULL);
     Touch(name,"",,de.datetime);
     name2=ChgExt(name,"html");
+
+    if (StrMatch(BLOG_BASE,name) || StrMatch(DAILY_BASE,name))
+      line_anchors=FALSE;
+    else
+      line_anchors=TRUE;
+
     TOSToHtml(name,name2,
 	  "\n"
 	  "\n"
@@ -365,7 +372,7 @@ U0 TOSWebFile(U8 *name)
 	  "\n"
-	  "\n",
+	  "\n",
 
 	  "\n",
 	  "
\n", - "\n"); + "\n",,line_anchors); Touch(name2,"",,de.datetime); Free(name2); } @@ -411,12 +418,6 @@ U0 FreshenWebDir(U8 *dirname) CDirEntry *tempde,*tempde1; U8 *src,*dst; - MkDir("D:/Wb"); - MkDir("D:/Wb/Home"); - MkDir("D:/Wb/Home/Web"); - MkDir("D:/Wb/Home/Web/TAD"); - MkDir("D:/Wb/Home/Web/TAD/Blog"); - src=MStrPrint("D:/Wb%s",dirname); MkDir(src); Free(src); @@ -439,3 +440,4 @@ U0 FreshenWebDir(U8 *dirname) } DirTreeDel(tempde1); } + diff --git a/Demo/AutoFile/AFEd.TXT b/Demo/AutoFile/AFEd.TXT index 337b3d5c..7d8316f5 100644 --- a/Demo/AutoFile/AFEd.TXT +++ b/Demo/AutoFile/AFEd.TXT @@ -99,7 +99,7 @@ #define IC_JMP 0x52 #define IC_SWITCH 0x53 -#define IC_NOBOUND_SWITCH 0x54 +#define IC_NOBOUND_SWITCH 0x54 #define IC_ADD_RSP 0x55 #define IC_ADD_RSP1 0xC1 diff --git a/Demo/Games/RawHide.CPP b/Demo/Games/RawHide.CPP index f5983b5c..db23e955 100644 --- a/Demo/Games/RawHide.CPP +++ b/Demo/Games/RawHide.CPP @@ -20,35 +20,36 @@ F64 gate_ $BG,10$#define GE_COW 0 -$SP,"<1>",BI=1$ +$SP,"<1>",BI=1$ $SP,"<2>",BI=2$ $SP,"<3>",BI=3$ #define GE_BULL 1 -$SP,"<2>",BI=2$ +$SP,"<4>",BI=4$ $SP,"<5>",BI=5$ $SP,"<6>",BI=6$ #define GE_HORSE 2 -$SP,"<3>",BI=3$ +$SP,"<7>",BI=7$ $SP,"<8>",BI=8$ #define GE_NUM 3 -$SP,"<4>",BI=4$ +$SP,"<9>",BI=9$ $BG$ -class RHCSprite -{ - U8 *img; - I64 min_x,max_x,min_y,max_y; -} rh_sprite[GE_NUM]; +#define ANIMAL_WIDTH 20 +#define ANIMAL_HEIGHT 16 + +U8 *cow_imgs[4] ={$IB,"<1>",BI=1$,$IB,"<2>",BI=2$,$IB,"<3>",BI=3$,$IB,"<2>",BI=2$}, + *bull_imgs[4] ={$IB,"<4>",BI=4$,$IB,"<5>",BI=5$,$IB,"<6>",BI=6$,$IB,"<5>",BI=5$}, + *horse_imgs[4]={$IB,"<7>",BI=7$,$IB,"<8>",BI=8$,$IB,"<7>",BI=7$,$IB,"<8>",BI=8$}; #define NUM_ANIMALS 100 class Animal { - I64 num,x,y,dx,dy; - RHCSprite *ge; - U32 buddy; - U8 type; - Bool dead,pad[2]; + I64 num,x,y,dx,dy; + U8 **imgs; + U32 buddy; + U8 type,frame0; + Bool dead,pad; } *a; //************************************ @@ -199,7 +200,7 @@ U0 DrawIt(CTask *task,CDC *dc) static I64 last_pos_x=0; static Bool left=TRUE; F64 t; - I64 i, + I64 i,frame=4*tS, cx=(MAP_WIDTH -task->pix_width)/2, cy=(MAP_HEIGHT-task->pix_height)/2; if (task->scroll_x+cx<0) @@ -222,7 +223,8 @@ U0 DrawIt(CTask *task,CDC *dc) dc->flags|=DCF_JUST_MIRROR|DCF_SYMMETRY; DCSymmetrySet(dc,a[i].x.i32[1]-cx,0,a[i].x.i32[1]-cx,1); } - Sprite3(dc,a[i].x.i32[1]-cx,a[i].y.i32[1]-cy,0,a[i].ge->img); + Sprite3(dc,a[i].x.i32[1]-cx,a[i].y.i32[1]-cy,0, + a[i].imgs[(frame+a[i].frame0)&3]); dc->flags&=~(DCF_JUST_MIRROR|DCF_SYMMETRY); } @@ -235,9 +237,8 @@ U0 DrawIt(CTask *task,CDC *dc) DCSymmetrySet(dc,ip.pos.x-task->pix_left-task->scroll_x,0, ip.pos.x-task->pix_left-task->scroll_x,1); } - Sprite3(dc, - ip.pos.x-task->pix_left-task->scroll_x, - ip.pos.y-task->pix_top -task->scroll_y,0,rh_sprite[GE_HORSE].img); + Sprite3(dc,ip.pos.x-task->pix_left-task->scroll_x, + ip.pos.y-task->pix_top -task->scroll_y,0,horse_imgs[frame&3]); dc->flags&=~(DCF_JUST_MIRROR|DCF_SYMMETRY); last_pos_x=ip.pos.x; @@ -393,13 +394,13 @@ U0 AnimateTask(CTask *parent) } //Keep on map - if (!(MAP_BORDER-tempa->ge->min_x - <=tempa->x.i32[1]ge->max_x)) { + if (!(MAP_BORDER+ANIMAL_WIDTH/2 + <=tempa->x.i32[1]x -=tempa->dx; tempa->dx=-tempa->dx; } - if (!(MAP_BORDER-tempa->ge->min_y - <=tempa->y.i32[1]ge->max_y)) { + if (!(MAP_BORDER+ANIMAL_HEIGHT + <=tempa->y.i32[1]y -=tempa->dy; tempa->dy=-tempa->dy; } @@ -464,7 +465,7 @@ U0 ReInit() //Plot fence for (i=FENCE_WIDTH;i>0;i-=16) - Sprite3(map_dc,i,FENCE_HEIGHT,0,$IB,"<4>",BI=4$); + Sprite3(map_dc,i,FENCE_HEIGHT,0,$IB,"<9>",BI=9$); map_dc->pen_width=1; map_dc->color=BROWN; for (i=0;i>32,a[i].y>>32)); if (i&1) - a[i].ge=&rh_sprite[GE_COW]; + a[i].imgs=cow_imgs; else - a[i].ge=&rh_sprite[GE_BULL]; + a[i].imgs=bull_imgs; + a[i].frame0=RandU16&3; BuddySelect(i); } outside_cnt=NUM_ANIMALS; @@ -504,16 +506,6 @@ U0 ReInit() U0 Init() { I64 i; - RHCSprite *ge; - - rh_sprite[0].img=$IB,"<1>",BI=1$; - rh_sprite[1].img=$IB,"<2>",BI=2$; - rh_sprite[2].img=$IB,"<3>",BI=3$; - for (i=0;iimg,&ge->min_x,&ge->max_x,&ge->min_y,&ge->max_y); - } - RiverNew; rd_lock=0; QueInit(&rd_root); @@ -590,9 +582,9 @@ rh_done: } RawHide; -  bd +   d  - \ No newline at end of file +zz"      \ No newline at end of file diff --git a/Demo/SortFileExample/SortedF64.DAT b/Demo/SortFileExample/SortedF64.DAT index a3f4cf8b..39008694 100644 --- a/Demo/SortFileExample/SortedF64.DAT +++ b/Demo/SortFileExample/SortedF64.DAT @@ -1 +1 @@ -rZšJ?ȳah?(Jq?wݧ?@?@P?@55;?S[}P?v)?B5? \ No newline at end of file +8!/ ?"vⰻ?q?jA?3?ax ?]"?Lo`?x? ? \ No newline at end of file diff --git a/Demo/SortFileExample/SortedF64.TXT b/Demo/SortFileExample/SortedF64.TXT index d372e050..4a70acca 100644 --- a/Demo/SortFileExample/SortedF64.TXT +++ b/Demo/SortFileExample/SortedF64.TXT @@ -1,11 +1,11 @@ //This is sorted. - 0.167187 - 0.196175 - 0.280106 - 0.366963 - 0.403184 - 0.591110 - 0.726180 - 0.749633 - 0.795656 - 0.926049 + 0.256505 + 0.347373 + 0.349509 + 0.367545 + 0.563530 + 0.626343 + 0.703852 + 0.753115 + 0.897487 + 0.941150 diff --git a/Demo/SortFileExample/UnsortedF64.DAT b/Demo/SortFileExample/UnsortedF64.DAT index dcd673f6..dcae6de4 100644 --- a/Demo/SortFileExample/UnsortedF64.DAT +++ b/Demo/SortFileExample/UnsortedF64.DAT @@ -1 +1 @@ -B5?ȳah?@55;?v)?wݧ?(Jq?@P?@?S[}P?rZšJ? \ No newline at end of file +jA?ax ?]"?"vⰻ?q?x?3?8!/ ?Lo`? ? \ No newline at end of file diff --git a/Demo/SortFileExample/UnsortedF64.TXT b/Demo/SortFileExample/UnsortedF64.TXT index 510e09ea..5ead3f9d 100644 --- a/Demo/SortFileExample/UnsortedF64.TXT +++ b/Demo/SortFileExample/UnsortedF64.TXT @@ -1,11 +1,11 @@ //This is unsorted. - 0.926049 - 0.591110 - 0.196175 - 0.749633 - 0.403184 - 0.280106 - 0.366963 - 0.726180 - 0.167187 - 0.795656 + 0.941150 + 0.347373 + 0.626343 + 0.256505 + 0.753115 + 0.367545 + 0.897487 + 0.563530 + 0.703852 + 0.349509 diff --git a/Demo/ToHtmlToTXTExample/ToHtml.CPP b/Demo/ToHtmlToTXTExample/ToHtml.CPP index 698502d7..42d84c2c 100644 --- a/Demo/ToHtmlToTXTExample/ToHtml.CPP +++ b/Demo/ToHtmlToTXTExample/ToHtml.CPP @@ -148,7 +148,7 @@ public CDoc *Doc2Html(CDoc *doc_in,U8 *html_header=NULL,U8 *body_header=NULL, "\n" "\n" - "\n"; + "\n"; if (!body_header) body_header= "\n" "
\n";
@@ -171,14 +171,14 @@ public CDoc *Doc2Html(CDoc *doc_in,U8 *html_header=NULL,U8 *body_header=NULL,
   y=doc_e->y;
   while (doc_e!=doc_in) {
     if (!(doc_e->de_flags&DOCEF_SKIP)) {
-      if (line_anchors && y!=old_y) {
+      if (y!=old_y && line_anchors) {
 	DocPrint(doc_out,"",y+1);
 	old_y=y;
       }
       while (yy) {
 	HtmlPutS(doc_out,doc_e->settings.final_u32_attr,
 	      &old_u32_attr,"\n",&col,style_bitmap);
-	if (line_anchors && ++y!=old_y) {
+	if (++y!=old_y && line_anchors) {
 	  DocPrint(doc_out,"",y+1);
 	  old_y=y;
 	}
diff --git a/Doc/ChangeLog.TXT b/Doc/ChangeLog.TXT
index de0858c1..5f7d8afe 100644
--- a/Doc/ChangeLog.TXT
+++ b/Doc/ChangeLog.TXT
@@ -2,7 +2,19 @@ $WW,1$$FG,5$$TX+CX,"Change Log"$$FG$
 
 Use $LK,"R",A="MN:R"$() to rename if I change a label.
 
-$IV,1$----02/10/16 13:51:44----$IV,0$
+$IV,1$----03/14/16 05:57:27----$IV,0$
+* $BK,1$TempleOS version 4.04 Released$BK,0$
+* Changed $FG,2$nobound_switch$FG$ so it uses [].
+* Changed $LK,"KbdMouseCmdAck",A="MN:KbdMouseCmdAck"$().
+
+$IV,1$----02/19/16 18:48:51----$IV,0$
+* Fixed bug in $LK,"::/Demo/ToHtmlToTXTExample/ToHtml.CPP"$.
+
+$IV,1$----02/15/16 23:31:15----$IV,0$
+* Improved $LK,"::/Demo/Games/RawHide.CPP"$.
+
+$IV,1$----02/13/16 17:02:34----$IV,0$
+* Added $FG,2$$$CL+H$$$FG$ to clear all, including hold entries.
 
 $IV,1$----02/10/16 08:56:49----$IV,0$
 * Improved $FG,2$$FG$ prompting.
diff --git a/Doc/Demands.TXT b/Doc/Demands.TXT
index cded924f..96798592 100644
--- a/Doc/Demands.TXT
+++ b/Doc/Demands.TXT
@@ -2,6 +2,8 @@ $WW,1$$FG,5$$TX+CX,"Demands"$$FG$
 
 I, Terry Davis, am high priest of God's official temple, TempleOS.  TempleOS is an operating system for PC desktops that will always dual boot along-side Windows or Linux.  I am in charge of the core 100,000 lines of TempleOS code and I do continual offerings to keep God entertained.  I have divine authority to command any company in the computer industry to do anything that I deem necessary to make God's temple more beautiful, glorious and perfect.  I have authority similar to a building inspector or an enforcer of the Americans with Disability Act -- I make commands, God signs-off with a miraculous authentication from an oracle, and Intel, Microsoft or VMware obeys.
 
+$HC,""$
+
 * Windows, Linux and VMware (because of mounted drives) must support $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ file system so I can get rid of 2,000 lines of redundant, blemished code -- FAT32 and ISO9660.  God's temple must be perfect.  Redundant code for multiple file systems is imperfect.  For this operating system, we want low line count.  More than one file system type is actually bad, just as more than one driver for the same type of device is bad.
 $LK,"::/Kernel/BlkDev/FileSysRedSea.CPP"$
 $LK,"::/Kernel/BlkDev/FileSysFAT.CPP"$	:965 lines for FAT32 gets eliminated.
@@ -11,7 +13,7 @@ $LK,"::/Kernel/BlkDev/DskCluster.CPP"$	:152 All the cluster operations become bl
 
 * Microsoft must cancel SecureBoot because it makes dual booting impossible.  TempleOS is an additional operating system that must be used along-side Windows or Linux, not as a replacement.  It must dual boot because it has no networking. Real hardware as opposed to VMware is like the difference between looking in a telescope eye piece vs just looking at an off-line image.  God said the C64/Apple II generation owned ancestral lands.  VMware is like being taken off of our land and moved onto a reservation.  In this case, however, it will not stand.
 
-* VMware needs to support ATAPI CD/DVD/BlueRay disk burning, directly to real hardware.
+* VMware needs to support ATAPI CD/DVD/Blu-ray disk burning, directly to real hardware.
 
 * VMware has a bug stretching 640x480 16 color to full screen.
 
@@ -21,7 +23,7 @@ $LK,"::/Kernel/BlkDev/DskCluster.CPP"$	:152 All the cluster operations become bl
 
 * VMware and others must list TempleOS as an official 64-bit operating system.
 
-* Until super simple block devices are available, hard disk should be placed at IDE primary master 1F0/3F6 and CD/DVD/BlueRay should be placed at the IDE secondary master 170/376.
+* Until super simple block devices are available, hard disk should be placed at IDE primary master 1F0/3F6 and CD/DVD/Blu-ray should be placed at the IDE secondary master 170/376.
 $LK,"/Kernel/BlkDev/DskATAId.CPP",A="FI:::/Kernel/BlkDev/DskATAId.CPP"$	:280 lines to figure-out I/O ports is gone.
 $LK,"/Kernel/PCIBIOS.CPP",A="FI:::/Kernel/PCIBIOS.CPP"$		:290 could be eliminated, but maybe we will keep it so people can play with PCI devices.
 
diff --git a/Doc/HolyC.TXT b/Doc/HolyC.TXT
index d7fd1407..b02bebc2 100644
--- a/Doc/HolyC.TXT
+++ b/Doc/HolyC.TXT
@@ -106,6 +106,8 @@ $ID,2$
 $FG,2$if (13<=age<20)
   "Teen-ager";
 $FG$$ID,-2$
+* if you know a switch stmt will not exceed the lowest or highest case values.  $FG,2$switch []$FG$ is a little faster because it doesn't check.
+
 * $FG,2$switch$FG$ stmts always use a jump table.  Don't use them with cases with really big, sparse ranges.
 
 * Allows ranges like "$FG,2$case 4...7:$FG$" in $FG,2$switch$FG$ stmts.
@@ -123,8 +125,6 @@ for (i=0;i<20;i++)
     case: "Eleven\n";	break; //One plus previous case.
   }$FG$$ID,-2$
 
-* $FG,2$nobound_switch$FG$ can be used if you know a switch stmt will not exceed the lowest or highest case values.  It's a little faster because it doesn't check.
-
 * $FG,2$sub_switch_start$FG$/$FG,2$sub_switch_end$FG$ allow a new type of nested-switch control flow.  (Don't goto, throw exception or return out of $FG,2$sub_switch_start$FG$ front porch area.)  See $LK,"::/Demo/SubSwitch.CPP"$.
 
 $ID,2$$FG,2$I64 i;
diff --git a/Kernel/BlkDev/DskDirA.CPP b/Kernel/BlkDev/DskDirA.CPP
index f8b58aa7..5f3791ce 100644
--- a/Kernel/BlkDev/DskDirA.CPP
+++ b/Kernel/BlkDev/DskDirA.CPP
@@ -103,7 +103,7 @@ U0 DirFilesSort(CDirEntry **_tempde,I64 key)
 	sort_buf[i++]=tempde1;
 	tempde1=tempde1->next;
       }
-      nobound_switch (key) {
+      switch [key] {
 	case SK_NAME:
 	  QSortI64(sort_buf,cnt,&DirEntryCompareName);
 	  break;
diff --git a/Kernel/BlkDev/DskDrv.CPP b/Kernel/BlkDev/DskDrv.CPP
index b8443003..d27cb70a 100644
--- a/Kernel/BlkDev/DskDrv.CPP
+++ b/Kernel/BlkDev/DskDrv.CPP
@@ -221,7 +221,7 @@ Bool MapDrv(U8 drv_let,CDrv *dv)
 }
 
 Bool Drv(U8 drv_let)
-{//Set drive.  You can set drive with $LK,"Cd",A="MN:Cd"$() as well.
+{//Change drive.  You can set drive with $LK,"Cd",A="MN:Cd"$() as well.
   CDrv *dv=Let2Drv(drv_let);
   CBlkDev *bd;
   bd=BlkDevChk(dv->bd);
diff --git a/Kernel/Compress.CPP b/Kernel/Compress.CPP
index 9e2936c4..84a07d15 100644
--- a/Kernel/Compress.CPP
+++ b/Kernel/Compress.CPP
@@ -258,7 +258,7 @@ U8 *ExpandBuf(CArcCompress *arc,CTask *mem_task=NULL)
 
   result=MAlloc(arc->expanded_size+1,mem_task);
   result[arc->expanded_size]=0; //terminate
-  nobound_switch (arc->compression_type) {
+  switch [arc->compression_type] {
     case CT_NONE:
       MemCpy(result,&arc->body,arc->expanded_size);
       break;
diff --git a/Kernel/KHashB.CPP b/Kernel/KHashB.CPP
index d89a1029..726d0fa3 100644
--- a/Kernel/KHashB.CPP
+++ b/Kernel/KHashB.CPP
@@ -8,7 +8,7 @@ I64 HashTypeNum(CHash *temph)
 
 I64 HashVal(CHash *temph)
 {//Returns most likely desired value.
-  nobound_switch (HashTypeNum(temph)) {
+  switch [HashTypeNum(temph)] {
     case HTt_EXPORT_SYS_SYM:
       return temph(CHashExport *)->val;
     case HTt_IMPORT_SYS_SYM:
@@ -40,8 +40,8 @@ I64 HashVal(CHash *temph)
     case HTt_FRAME_PTR:
       return temph(CHashGeneric *)->user_data0;
 
-    case -1:		//nobound_switch
-    case HTt_NUM_TYPES: //nobound_switch
+    case -1:		//nobound switch
+    case HTt_NUM_TYPES: //nobound switch
     default:
       return 0;
   }
diff --git a/Kernel/Kernel.MAP b/Kernel/Kernel.MAP
index 55c68773..72769613 100644
--- a/Kernel/Kernel.MAP
+++ b/Kernel/Kernel.MAP
@@ -2,7 +2,7 @@ $LK,"DrvTextAttrGet",A="FL:::/Kernel/BlkDev/DskDrv.CPP.Z,281",BI=1$
 $LK,"ARGT_R64",A="FL:::/Kernel/KernelA.HPP,1874"$
 $LK,"MAlloc",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,387"$
 $LK,"BOOT_SRC_NULL",A="FL:::/Kernel/KernelA.HPP,3862"$
-$LK,"KbdTypeMatic",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,83",BI=2$
+$LK,"KbdTypeMatic",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,86",BI=2$
 $LK,"KbdLEDsSet",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,52",BI=3$
 $LK,"LXchgU32",A="FL:::/Kernel/KernelB.HPP,261"$
 $LK,"LXchgU16",A="FL:::/Kernel/KernelB.HPP,260"$
@@ -144,7 +144,7 @@ $LK,"IEF_OP_SIZE16",A="FL:::/Kernel/KernelA.HPP,1706"$
 $LK,"HTT_INTERNAL_TYPE",A="FL:::/Kernel/KernelA.HPP,683"$
 $LK,"BD_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,2636"$
 $LK,"DOCEf_ESC",A="FL:::/Kernel/KernelA.HPP,1079"$
-$LK,"ScanCode2Char",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,133",BI=28$
+$LK,"ScanCode2Char",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,136",BI=28$
 $LK,"NUM_DRVS",A="FL:::/Kernel/KernelA.HPP,2687"$
 $LK,"FSt_ISO13346",A="FL:::/Kernel/KernelA.HPP,2663"$
 $LK,"_D3_ADD",A="FL:::/Kernel/KMathA.CPP.Z,131"$
@@ -157,7 +157,7 @@ $LK,"ARGT_RAX",A="FL:::/Kernel/KernelA.HPP,1899"$
 $LK,"EDf_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,1245"$
 $LK,"EDF_WAS_WRITE",A="FL:::/Kernel/KernelA.HPP,1239"$
 $LK,"DOCF_NO_SCROLL_BARS",A="FL:::/Kernel/KernelA.HPP,1260"$
-$LK,"KbdMsgsQue",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,464",BI=30$
+$LK,"KbdMsgsQue",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,467",BI=30$
 $LK,"ARGT_ST0",A="FL:::/Kernel/KernelA.HPP,1912"$
 $LK,"RT_I64",A="FL:::/Kernel/KernelA.HPP,1551"$
 $LK,"FifoI64Cnt",A="FL:::/Kernel/KDataTypes.CPP.Z,312",BI=31$
@@ -197,7 +197,7 @@ $LK,"IET_ABS_ADDR",A="FL:::/Kernel/KernelA.HPP,407"$
 $LK,"PressAKey",A="FL:::/Kernel/StrB.CPP.Z,103",BI=43$
 $LK,"DOF_WIN_MAX",A="FL:::/Kernel/KernelA.HPP,1208"$
 $LK,"CCodeCtrl",A="FL:::/Kernel/KernelA.HPP,1993"$
-$LK,"Char2ScanCode",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,97",BI=44$
+$LK,"Char2ScanCode",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,100",BI=44$
 $LK,"Mem32DevInit",A="FL:::/Kernel/Mem/MemPhysical.CPP.Z,30",BI=45$
 $LK,"_BIT_FIELD_OR_U32",A="FL:::/Kernel/KUtils.CPP.Z,154"$
 $LK,"DOCf_NO_SCROLL_BARS",A="FL:::/Kernel/KernelA.HPP,1296"$
@@ -345,7 +345,7 @@ $LK,"DOCEf_LEFT_CB",A="FL:::/Kernel/KernelA.HPP,1063"$
 $LK,"DOCEF_LEFT_CB",A="FL:::/Kernel/KernelA.HPP,977"$
 $LK,"RFLAGf_DIR",A="FL:::/Kernel/KernelA.HPP,312"$
 $LK,"ClusterNumNext",A="FL:::/Kernel/BlkDev/DskCluster.CPP.Z,1",BI=81$
-$LK,"KbdMouseEvtTime",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,483",BI=82$
+$LK,"KbdMouseEvtTime",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,486",BI=82$
 $LK,"ip_last",A="FL:::/Kernel/KGlbls.CPP.Z,24"$
 $LK,"CDirEntry",A="FL:::/Kernel/KernelA.HPP,2529"$
 $LK,"TK_STR",A="FL:::/Kernel/KernelA.HPP,2050"$
@@ -696,7 +696,7 @@ $LK,"Dr",A="FL:::/Kernel/KDbg.CPP.Z,328",BI=151$
 $LK,"CPUId",A="FL:::/Kernel/KernelB.HPP,258"$
 $LK,"FilesFind2",A="FL:::/Kernel/BlkDev/DskFind.CPP.Z,1",BI=152$
 $LK,"TaskKillDying",A="FL:::/Kernel/KTask.CPP.Z,496",BI=153$
-$LK,"scan_code_map",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,154"$
+$LK,"scan_code_map",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,157"$
 $LK,"MSize2",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,385"$
 $LK,"REGG_C_TEMP_CLOBBERED",A="FL:::/Kernel/KernelA.HPP,1771"$
 $LK,"MemSetU32",A="FL:::/Kernel/KernelB.HPP,183"$
@@ -736,14 +736,14 @@ $LK,"FifoI64Peek",A="FL:::/Kernel/KDataTypes.CPP.Z,290",BI=162$
 $LK,"_EXP",A="FL:::/Kernel/KMathA.CPP.Z,558"$
 $LK,"SYS_SEMA_SYS_TIMER",A="FL:::/Kernel/KernelA.HPP,591"$
 $LK,"IET_END",A="FL:::/Kernel/KernelA.HPP,390"$
-$LK,"KbdHandler",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,438",BI=163$
+$LK,"KbdHandler",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,441",BI=163$
 $LK,"GSF_WITH_NEW_LINE",A="FL:::/Kernel/KernelA.HPP,3761"$
 $LK,"SPF_TRUNCATE",A="FL:::/Kernel/StrPrint.CPP.Z,3"$
 $LK,"SYS_HASH_FIND1",A="FL:::/Kernel/KHashA.CPP.Z,81"$
 $LK,"GetRSP",A="FL:::/Kernel/KernelB.HPP,250"$
 $LK,"_D3_DIST",A="FL:::/Kernel/KMathA.CPP.Z,39"$
 $LK,"ScanKey",A="FL:::/Kernel/SerialDev/Message.CPP.Z,123",BI=164$
-$LK,"MouseDriverInstall",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,238",BI=165$
+$LK,"MouseDriverInstall",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,222",BI=165$
 $LK,"mouse_last",A="FL:::/Kernel/KGlbls.CPP.Z,27"$
 $LK,"D3DistSqr",A="FL:::/Kernel/KernelB.HPP,157"$
 $LK,"_RDI",A="FL:::/Kernel/KernelA.HPP,3401"$
@@ -802,12 +802,12 @@ $LK,"ac",A="FL:::/Kernel/KGlbls.CPP.Z,18"$
 $LK,"_FSTSW",A="FL:::/Kernel/KMathA.CPP.Z,641"$
 $LK,"ARGT_IMM32",A="FL:::/Kernel/KernelA.HPP,1863"$
 $LK,"ARGT_IMM16",A="FL:::/Kernel/KernelA.HPP,1862"$
-$LK,"MouseSpeedSet",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,130",BI=176$
+$LK,"MouseSpeedSet",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,114",BI=176$
 $LK,"Name2ParentDirCluster",A="FL:::/Kernel/BlkDev/DskStrB.CPP.Z,54",BI=177$
 $LK,"Free",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,383"$
 $LK,"DOCEf_AUX_STR",A="FL:::/Kernel/KernelA.HPP,1047"$
 $LK,"DOCEF_AUX_STR",A="FL:::/Kernel/KernelA.HPP,961"$
-$LK,"Char2KeyName",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,198",BI=178$
+$LK,"Char2KeyName",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,201",BI=178$
 $LK,"Mem512Free",A="FL:::/Kernel/Mem/Mem512.CPP.Z,83",BI=179$
 $LK,"blkdev",A="FL:::/Kernel/KGlbls.CPP.Z,19"$
 $LK,"TK_NUM_TK",A="FL:::/Kernel/KernelA.HPP,2088"$
@@ -815,7 +815,7 @@ $LK,"TY_SIB",A="FL:::/Kernel/KernelA.HPP,1565"$
 $LK,"CWinMgrGlbls",A="FL:::/Kernel/KernelA.HPP,1459"$
 $LK,"DOCEf_TREE",A="FL:::/Kernel/KernelA.HPP,1094"$
 $LK,"DOCEF_TREE",A="FL:::/Kernel/KernelA.HPP,1010"$
-$LK,"MouseUpdatePre",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,140",BI=180$
+$LK,"MouseUpdatePre",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,124",BI=180$
 $LK,"ISO1FileFind",A="FL:::/Kernel/BlkDev/FileSysISO.CPP.Z,130",BI=181$
 $LK,"TASK_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HPP,3276"$
 $LK,"SysDefinesLoad",A="FL:::/Kernel/KDefine.CPP.Z,97",BI=182$
@@ -924,7 +924,7 @@ $LK,"pi",A="FL:::/Kernel/KernelA.HPP,48"$
 $LK,"ICF_ALTERNATE_TEMPLATE",A="FL:::/Kernel/KernelA.HPP,1597"$
 $LK,"ATTRF_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,887"$
 $LK,"ATTRf_UNDERLINE",A="FL:::/Kernel/KernelA.HPP,892"$
-$LK,"KbdMouseVarsInit",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,294",BI=212$
+$LK,"KbdMouseVarsInit",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,276",BI=212$
 $LK,"DOCF_BWD_MOVEMENT",A="FL:::/Kernel/KernelA.HPP,1265"$
 $LK,"RT_MASK",A="FL:::/Kernel/KernelA.HPP,1559"$
 $LK,"SYS_SEMA_UPDATE_WIN_Z_BUF",A="FL:::/Kernel/KernelA.HPP,604"$
@@ -1107,7 +1107,7 @@ $LK,"progress2_desc",A="FL:::/Kernel/KernelB.HPP,218"$
 $LK,"DCSF_PALETTE_GET",A="FL:::/Kernel/KernelA.HPP,3622"$
 $LK,"SC_F9",A="FL:::/Kernel/KernelA.HPP,3561"$
 $LK,"DOCEF_SOLID_BORDER",A="FL:::/Kernel/KernelA.HPP,997"$
-$LK,"KbdBuildSC",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,298",BI=250$
+$LK,"KbdBuildSC",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,301",BI=250$
 $LK,"IOAPICID",A="FL:::/Kernel/KernelA.HPP,508"$
 $LK,"RFLAGf_SIGN",A="FL:::/Kernel/KernelA.HPP,309"$
 $LK,"AMAllocIdentical",A="FL:::/Kernel/Mem/MAllocFree.CPP.Z,418",BI=251$
@@ -1349,7 +1349,7 @@ $LK,"XchgI64",A="FL:::/Kernel/KernelB.HPP,266"$
 $LK,"SC_CURSOR_DOWN",A="FL:::/Kernel/KernelA.HPP,3544"$
 $LK,"DOF_DONT_WINMGR_SYNC",A="FL:::/Kernel/KernelA.HPP,1210"$
 $LK,"I_SINGLE_STEP",A="FL:::/Kernel/KernelA.HPP,285"$
-$LK,"KbdMouseRst",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,228",BI=304$
+$LK,"KbdMouseRst",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,212",BI=304$
 $LK,"ATA_WRITE_MULTI",A="FL:::/Kernel/KernelA.HPP,2243"$
 $LK,"DOC_COLOR_KEYWORD",A="FL:::/Kernel/KernelA.HPP,1132"$
 $LK,"XTalkStr",A="FL:::/Kernel/SrvCmd.CPP.Z,490",BI=305$
@@ -1723,14 +1723,14 @@ $LK,"WBlks",A="FL:::/Kernel/BlkDev/DskBlk.CPP.Z,68",BI=387$
 $LK,"DOCT_ERROR",A="FL:::/Kernel/KernelA.HPP,936"$
 $LK,"CopySingle",A="FL:::/Kernel/BlkDev/DskCopy.CPP.Z,23",BI=388$
 $LK,"EXT_WIN_TO_TOP",A="FL:::/Kernel/KernelA.HPP,571"$
-$LK,"MouseIPSet",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,216",BI=389$
+$LK,"MouseIPSet",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,200",BI=389$
 $LK,"ATAPIReadCapacity",A="FL:::/Kernel/BlkDev/DskATA.CPP.Z,253",BI=390$
 $LK,"MkDir",A="FL:::/Kernel/BlkDev/DskDirB.CPP.Z,146",BI=391$
 $LK,"IsDir",A="FL:::/Kernel/BlkDev/DskDirB.CPP.Z,76",BI=392$
 $LK,"SetMSR",A="FL:::/Kernel/KernelB.HPP,264"$
 $LK,"ToI64",A="FL:::/Kernel/KernelB.HPP,120"$
 $LK,"IET_MAIN",A="FL:::/Kernel/KernelA.HPP,412"$
-$LK,"ScanCode2KeyName",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,245",BI=393$
+$LK,"ScanCode2KeyName",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,248",BI=393$
 $LK,"DOCf_INVERT",A="FL:::/Kernel/KernelA.HPP,1311"$
 $LK,"DOCF_INVERT",A="FL:::/Kernel/KernelA.HPP,1274"$
 $LK,"sys_heap_limit",A="FL:::/Kernel/KernelB.HPP,200"$
@@ -1742,7 +1742,7 @@ $LK,"OPTf_USE_IMM64",A="FL:::/Kernel/KernelA.HPP,1537"$
 $LK,"Raw",A="FL:::/Kernel/KMisc.CPP.Z,243",BI=395$
 $LK,"Msg",A="FL:::/Kernel/SrvCmd.CPP.Z,257",BI=396$
 $LK,"OPTf_GLBLS_ON_DATA_HEAP",A="FL:::/Kernel/KernelA.HPP,1534"$
-$LK,"KbdInit",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,421",BI=397$
+$LK,"KbdInit",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,424",BI=397$
 $LK,"chars_bmp_zero_tab_ff_cr_nl_cursor_dollar",A="FL:::/Kernel/StrA.CPP.Z,368"$
 $LK,"ToBool",A="FL:::/Kernel/KernelB.HPP,118"$
 $LK,"TASKf_KILL_AFTER_DBG",A="FL:::/Kernel/KernelA.HPP,3265"$
@@ -1784,7 +1784,7 @@ $LK,"SYS_PROGRESS4_MAX",A="FL:::/Kernel/KStart.CPP.Z,218"$
 $LK,"SUF_TO_UPPER",A="FL:::/Kernel/KernelA.HPP,3770"$
 $LK,"MBR_PT_REDSEA",A="FL:::/Kernel/KernelA.HPP,2679"$
 $LK,"MBR_PT_NTFS",A="FL:::/Kernel/KernelA.HPP,2678"$
-$LK,"MouseHandler",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,179",BI=404$
+$LK,"MouseHandler",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,163",BI=404$
 $LK,"SCF_IP_L_DOWN",A="FL:::/Kernel/KernelA.HPP,3523"$
 $LK,"SCf_IP_L_DOWN",A="FL:::/Kernel/KernelA.HPP,3508"$
 $LK,"MSG_IP_L_DOWN",A="FL:::/Kernel/KernelA.HPP,3201"$
@@ -1886,7 +1886,7 @@ $LK,"SUF_SCALE_INDENT",A="FL:::/Kernel/KernelA.HPP,3774"$
 $LK,"CT_7_BIT",A="FL:::/Kernel/KernelA.HPP,3723"$
 $LK,"PUSH_REGS",A="FL:::/Kernel/KernelA.HPP,1748"$
 $LK,"MAX_I8",A="FL:::/Kernel/KernelA.HPP,23"$
-$LK,"KbdMouseHandler",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,257",BI=422$
+$LK,"KbdMouseHandler",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,241",BI=422$
 $LK,"Color2Str",A="FL:::/Kernel/KDefine.CPP.Z,126",BI=423$
 $LK,"EDF_COLLAPSE",A="FL:::/Kernel/KernelA.HPP,1237"$
 $LK,"LAPIC_DFR",A="FL:::/Kernel/KernelA.HPP,482"$
@@ -1971,7 +1971,7 @@ $LK,"LAPIC_LDR",A="FL:::/Kernel/KernelA.HPP,483"$
 $LK,"BptFind",A="FL:::/Kernel/KDbg.CPP.Z,344",BI=439$
 $LK,"kbd",A="FL:::/Kernel/KGlbls.CPP.Z,25"$
 $LK,"progress4_max",A="FL:::/Kernel/KernelB.HPP,227"$
-$LK,"MouseUpdatePost",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,147",BI=440$
+$LK,"MouseUpdatePost",A="FL:::/Kernel/SerialDev/Mouse.CPP.Z,131",BI=440$
 $LK,"HashDel",A="FL:::/Kernel/KHashB.CPP.Z,59",BI=441$
 $LK,"CKbdStateGlbls",A="FL:::/Kernel/KernelA.HPP,2973"$
 $LK,"LinkedLstCopy",A="FL:::/Kernel/KDataTypes.CPP.Z,11",BI=442$
@@ -2160,7 +2160,7 @@ $LK,"FUf_SINGLE",A="FL:::/Kernel/KernelA.HPP,2556"$
 $LK,"DVDImageWriteTask",A="FL:::/Kernel/BlkDev/DskCDDVD.CPP.Z,49",BI=476$
 $LK,"LTGRAY",A="FL:::/Kernel/KernelA.HPP,2936"$
 $LK,"CoreAPSethInit",A="FL:::/Kernel/MultiProc.CPP.Z,276",BI=477$
-$LK,"IRQKbd",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,408",BI=478$
+$LK,"IRQKbd",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,411",BI=478$
 $LK,"QueVectU8Del",A="FL:::/Kernel/KDataTypes.CPP.Z,132",BI=479$
 $LK,"SwapU32",A="FL:::/Kernel/KernelB.HPP,114"$
 $LK,"SwapU16",A="FL:::/Kernel/KernelB.HPP,112"$
@@ -2557,7 +2557,7 @@ $LK,"ICF_PREVIOUS_DELETED",A="FL:::/Kernel/KernelA.HPP,1602"$
 $LK,"ACD_DEF_FILENAME_Z",A="FL:::/Kernel/KernelA.HPP,1491"$
 $LK,"ATARepFind",A="FL:::/Kernel/BlkDev/DskATAId.CPP.Z,194",BI=562$
 $LK,"QSort2a",A="FL:::/Kernel/QSort.CPP.Z,32",BI=563$
-$LK,"num_lock_map",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,176"$
+$LK,"num_lock_map",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,179"$
 $LK,"QSort2b",A="FL:::/Kernel/QSort.CPP.Z,55",BI=564$
 $LK,"KDF_HAS_DESCS",A="FL:::/Kernel/KernelA.HPP,3788"$
 $LK,"CBlkPool",A="FL:::/Kernel/KernelA.HPP,2865"$
@@ -2708,7 +2708,7 @@ $LK,"DOCF_PLAIN_TEXT_TABS",A="FL:::/Kernel/KernelA.HPP,1249"$
 $LK,"Cf_INTERNAL_TYPE",A="FL:::/Kernel/KernelA.HPP,826"$
 $LK,"FAT32DrvInit",A="FL:::/Kernel/BlkDev/FileSysFAT.CPP.Z,22",BI=590$
 $LK,"DOCT_ANCHOR",A="FL:::/Kernel/KernelA.HPP,920"$
-$LK,"KbdPktRead",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,385",BI=591$
+$LK,"KbdPktRead",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,388",BI=591$
 $LK,"KbdCmdRead",A="FL:::/Kernel/SerialDev/Keyboard.CPP.Z,36",BI=592$
 $LK,"D3DivEqu",A="FL:::/Kernel/KernelB.HPP,159"$
 $LK,"ARGT_FS",A="FL:::/Kernel/KernelA.HPP,1908"$
@@ -2764,14 +2764,14 @@ $LK,"c32_edi",A="FL:::/Kernel/PCIBIOS.CPP.Z,157"$
 $LK,"PURPLE",A="FL:::/Kernel/KernelA.HPP,2934"$
 $LK,"TASKf_BREAK_LOCKED",A="FL:::/Kernel/KernelA.HPP,3262"$
 $LK,"FILEMASK_SRC",A="FL:::/Kernel/KernelA.HPP,2267"$
-D&99CWYg}DS`@4@kksw,#M#M,MJKKSZgv`KKYfpp|wjjđ֑			(EUWW`lXk(k(w(y(((((((((((( @8D{{{{{{{{ |Y	Y												
+www w+w4wBwXwwwwwwwwwwwwxx=xBxBxExdxgxsxvxyxxxxxxxxxxxxxxxxyy6y9y;y;yNyUy]ysyyyyyyyyyyzzzzz6z6z6z;z;z;zGzZzdzuzxz{zzzzzzzzzz{{{"{({+{0{0{@{C{F{T{]{c{f{k{k{{{{{{{{{|%|3|<|@|C|C|S|Y|k|p|x||||||||||||}}}}1}8}F}F}F}M}Y}c}q}z}}}}}}}}}}[~4͈͈@>JKKSZgv`ss|wjjđ֑			(EUWW`lX((((((((((	)	)))) @8D{{{{{{{{ |Y	Y												
 !
 *
 :
@@ -2780,10 +2780,9 @@ www w+w4wBwXw
 a
 d
 
-!4``/`A`P`a`t`z``"(FdFd`dqdddddddddddeeee'e'e-e-eeeeeeeeeeeef#,````````$ pVpVyVVV%HNNik|&"*DL_inz' }^^r(Dvvwwww,w9w?wBwNw)p..<J`ot*h#9hhhhhhhhhhhiGiTi^inixiiii+$glkkk,k7kRk,a"/<Iauw!5<<F-|9ZZZZZZZZZZ[[ [)[1[8[?[G[M[X[\[^[^[b[.X ΘΘ )1588>AO/D*7JJJJJJKKKK0 
+!4#`#`7`I`X`i`|```"(FdFd`dqdddddddddddeeee'e'e-e-eeeeeeeeeeeef#,````````$ pVpVyVVV%HNNik|&"*DL_inz' }^^r(Dvvwwww,w9w?wBwNw)p..<J`ot*h#9hhhhhhhhhhhiGiTi^inixiiii+$glkkk,k7kRk,d++AJWdq/AI]ddn-|9ZZZZZZZZZZ[[ [)[1[8[?[G[M[X[\[^[^[b[.X ΘΘ )1588>AO/D*7JJJJJJKKKK0 
 ,F19 +9KYao#5<<NOS2X>LZZrx3Pzzzzzzzzzzzz4 $(BBBBB5jjX`ڇ61:hkt")07@8DKK$K-K4K;KBKCKKK8<yyzz)z:zBzJzRzUz]z9,ZaEEECESEyEEE:,JQCCC3DCDiDwDyD;YYt~6KMg||(<$CCLZpu=<JJTjy>H!zzzzzz{{{{{?L )/<PPoo@ A\"05;FOO_koB4$4UjjjnC,jqFFFCFSFyFFFD!!!!!!!"#"-"9"D"D"S"t"""""""""#$#1#9#O#Z#l#l#z########E nnrF Gp]u,>ZZaccqssH<,dd&&5DX} (::@I|XsYYq{J4kkkkkkkkkK,'.ffprzLP]]]]]]]]]^^%^.^1^;^M[{`\`\z\\\\\\\\\\\\\\]]]]"](]+]9];]I]N%+2CFgz
 #%1AIO\_bp-O P
*NNhk~
-)++;>TQ !!)4DS_$++=BJR,((()))SL@O^^T U VHfffffffff
-ggg gWHff1f>fCfOfifofufffffX Y Z<zz[d^sJJJJJJJKKK1KCKLKSKvKKKKK\>=>=I=Y=j=y===========>>.>2>6>:>B>J>S>q>>>>>>>>]0&֓^8(((((((())_ MMMMN`D__*_A_N_N_X_r_|_aLPP	QQQ Q!Q/Q:QCQCQDQJQb,biEEEEEEFFc,RYDDDDDDDEd0U\boeY
+)++;>TQ !!)4DS_$++=BJR,)) )8)?)A)SL@O^^T U VHffffffffgggg(gWHff9fFfKfWfqfwf}fffffX Y Z<zz[d^sJJJJJJKKK!K9KKKTK[K~KKKKK\>=>=I=Y=j=y===========>>.>2>6>:>B>J>S>q>>>>>>>>]0&֓^8(((((((())_ MMMMN`D__*_A_N_N_X_r_|_aLPP	QQQ Q!Q/Q:QCQCQDQJQb,biEEEEEEFFc,RYDDDDDDDEd0U\boeY
 
 
 
@@ -2792,17 +2791,18 @@ ggg gWH
 
 
 $1Dbkx'CNVq|
-

8
C
K
V
V
V
[
i
t
{



f,ryFFFFFFGGg$WW;WHWNWZWh$+0VV_pi<$/**8@HU`jjCCCCCCCCCDD'D.DJDWDeDsDDDDDDDDDDEEEE#E3E;EKEUEEEEEEk@nzÖ˖Ζܖl$bJoJo]ocoro|oooooooooooo&p=pSp^p~ppppppppppppppq8qCqZq_qaqkqqqqqmdUUUUUUUUUUVVV$V/V3V9VnD/<
-o<C^C^Y^l^^^^^^^^^p,+Tbdq<bmnn{r|0vv +2CMM^fkr|sLц؆߆'=LVVkt8QQQQQRR#R-Ru 66:Sv,]119AObq{
".@T 22@@EIw4]]]]]	^^&^,^?^x0DLBBB!B,B;BUB]ByPZj%*-36;FLVzd!-{H<J'03@IIMPX|$PU}4
&+28~Lshhhhhhi'i:iQidi{iiiiiiiiijjj,j0j7j=jAjSjljyjjjj?6&6&>&F&W&f&p&|&|&&&&&&&','5'>'>'C'V'['f'|'''''( (5(I(P((((((((((())) )$)()P#]#]9]L][]t]~]]]]]]]]0jrfft<KVjj!j+j;j=jpjwjwjwjzjo4>>V^lw{)-I\lq,,?ATVik~~HVV_z\;V;VKVYVdVfVmVwVVVVVVVVV(D".5DPPVd99IddfffnD-:sAsAAAAAAAAAA
-;nn n#n&n0n6nBnInPnYnfntn}nnnnnnnnnnnnnnnnnnooooooo!o)o1o=o@oRo81;$<	+:CQ^eoz"6@Taany$9ISdu)2A\s|0t|KKKKKKKK02:у܃KvQQR8RJRQR^RjRrR}RRRRRRRRRRRS
SS#S&S(S.S4SLSUSUSYSrS,'+-A8K>H>HXH[HaHmHoH~HHHHHHHHII4I=I=I=IJIIIIIIIIIIJ$J+J6JRJRJ^J`J`JlJnJnJzJ|J|JJJJJJJJJJJKKKK,K3K:K@KCKKPuuuuuuvv v&v+v-vFv4#BBBBBBBBB 0
+

8
C
K
V
V
V
[
i
t
{



f,ryFFFFFFGGg$#W#WCWPWVWbWh$+0VV_pi<$/**8@HU`jjCCCCCCCCCD$D/D6DRD_DmD{DDDDDDDDDEEEE#E+E;ECESE]EEEEEEk@nzÖ˖Ζܖl$bJoJo]ocoro|oooooooooooo&p=pSp^p~ppppppppppppppq8qCqZq_qaqkqqqqqmdUUUUUUUUVVVVV,V7V;VAVnD/<
+o<K^K^a^t^^^^^^^^_p,+Tbdq<bmnn{r|0vv +2CMM^fkr|sLц؆߆'=LVVkt8QQQQQRR#R-Ru 66:Sv,]119AObq{
".@T 22@@EIw4]]]]]^^.^4^G^x0DLBBB)B4BCB]BeByPZj%*-36;FLVzd!-{H<J'03@IIMPX|$PU}4
&+28~Lshhhhhhi'i:iQidi{iiiiiiiiijjj,j0j7j=jAjSjljyjjjj?6&6&>&F&W&f&p&|&|&&&&&&&','5'>'>'C'V'['f'|'''''( (5(I(P((((((((((())) )$)()P+]+]A]T]c]|]]]]]]]]]0jrfft<KVjj!j+j;j=jpjwjwjwjzjo4>>V^lw{)-I\lq,,?ATVik~~HVV_z\CVCVSVaVlVnVuVVVVVVVVVV(D".5DPPVd99IddfffnD-:{A{AAAAAAAAAA
+;nn n#n&n0n6nBnInPnYnfntn}nnnnnnnnnnnnnnnnnnooooooo!o)o1o=o@oRo81;$<	+:CQ^eoz"6@Taany$9ISdu)2A\s|0t|KKKKKKKL02:у܃KvRR R@RRRYRfRrRzRRRRRRRRRRRR
+SS$S+S.S0S6SH>HXH[HaHmHoH~HHHHHHHHII4I=I=I=IJIIIIIIIIIIJ$J+J6JRJRJ^J`J`JlJnJnJzJ|J|JJJJJJJJJJJKKKK,K3K:K@KCKKPuuuuuuvv v&v+v-vFv4#BBBBBBBBB 0
 
0HP
--FnAAAAB	B%B%B3B5B5BEBGBGBUBWBWBgBoBoBxBBBBBBBBX{O{OOOOOOOOOOOPP@$011?DGY_bdjH , ..2@B{kkkk"l,l>lAlIlLlRlUlalslllllllllllllllmmm#m(m.m@m@m@m@mKmKmYm#;#;B;D;U;Z;h;;;;;;;;;;;;;;;;<<
<< < < <&<7<T *0;;;?M`p..KQ__s~HRRy÷ͷͷϷݷD"/${${2{>{C{C{T{Y{Y{_{t;';'C'T'x''''''''''(!(7(9(O(e(e(e(g(X{c8c8|88888888888888X1222)2?2G2Z2d2{22222228w°°Ȱưְ8>HCCCCCCCCCCC<urrѡ`"l"l&l/lWl}lllllllL))D``mmzzd@.).)9)O)V)t))))))))**(*J*e*******+ +!+W+++}++++,,4,4,[,[,z,,,,+-,,J-Q-V-h-p-p----.---1.c.k.k........:/:/:/?/?/P/k/y//////0$020=0=0P0i0}00000011*1B1]1h111111122*2E2]2s2u2222222233332323C3C3F3J34
-ttttttttt,szkkkkkkkkT^^^^^^^^^^^^_
_%VS6S6s66666666666666666667777	7777&7?7B7U7U7X7[7k74,,,,%-;-w---6b11<@do~

133WYY}2/44FKK]bbtyyyy$+4CSqOOOOOOOOOOOOOOOPP P'P(P(P2P(------- 3T07JZava}>>BQQ``oo~/r3P3PMPePzPPPPPPPPPPPPPPPPPPPPPPLtjjjjjjjjjjkkkk+kT!&4:=C)3KOgk9<Tduy}4uuuuuu u$u*u(``	a%a7a=aXa"gggggggggghh%h+h.h1h4h9h;h?hKh\hkhqhthwhzhzhhhhdYYYYYYYY Z)Z)Z?ZKZRZeZjZnZZZZZZZZZ]}7SYguL>L[bhzzƐҐ
+-FnAAAAB	B%B%B3B5B5BEBGBGBUBWBWBgBoBoBxBBBBBBBBXOOOOOOOOOOOP P#P@$011?DGY_bdjH , ..2@B{kkkk"l,l>lAlIlLlRlUlalslllllllllllllllmmm#m(m.m@m@m@m@mKmKmYm+;+;J;L;];b;p;;;;;;;;;;;;;;<<
+<<<!<'<'<'<.<?<T *0;;;?M`p..KQ__s~HRRy÷ͷͷϷݷD"/${${2{>{C{C{T{Y{Y{_{tc'c'k'|'''''''(((%(3(I(_(a(w(((((X{k8k888888888888888X222#212G2O2b2l222222228w°°Ȱưְ8>HCCCCCCCCCCC<urrѡ`"l"l&l/lWl}lllllllL))D``mmzzd@.).)9)O)V)t))))))))**(*J*e*******+ +!+W+++}++++,,4,4,[,[,z,,,,+-,,J-Q-V-h-p-p----.---1.c.k.k........:/:/:/?/?/P/k/y//////0$020=0=0P0i0}00000011*1B1]1h111111122*2E2]2s2u2222222233332323C3C3F3J34
+ttttttttt,szkkkkkkkkT^^^^^^^^^^^^_
_%V[6[6{6666666666666666666777777"7"7.7G7J7]7]7`7c7s74r{,,,,--C----6b11<@do~

133WYY}2..@EEW\\nss"33ELS\kSqOOOOOOOOOOOOOOOPP P'P(P(P2P(|------- 3T07JZava}>>BQQ``oo~/r3P3PMPePzPPPPPPPPPPPPPPPPPPPPPPLtjjjjjjjjjjkkkk+kT!&4:=C)3KOgk9<Tduy}4uuuuuu u$u*u(``a-a?aEa`a"gggggggggghh%h+h.h1h4h9h;h?hKh\hkhqhthwhzhzhhhhdYYYYYYYY Z)Z)Z?ZKZRZeZjZnZZZZZZZZZ]}7SYguL>L[bhzzƐҐ
 
 !!%06BJlґ+1;GR`o	 +:Ilz		,1R 5JSXXhtz*5
%)-<PX^r‚ƂЂԂ݂$).BBC
C!C'C,/:@CKvtvttttttttttuuu'u2u@uJuRuVuVuVuYu[u_u_uduruuuuuuuL
-1<I]co `&:33333333334 414B4c444444T???@@!@&@<@C@U@h@{@@@@@@`______` `%`8`O`U`a`q`q```H_m7777777778
8$zGGG#G1GThq.9@KPeLN]22;;JYjn{85?rrɏ$44445545M5M5Y5j5u55555555555556/6I6N6S6x!$-0Bhpyy8;P;PKPNPSPVPdPjPmPoPwPD&&.6>FNV^bfdavʐʐڐ$,4SVaaiH~ 05A_eq8VVVWWW%W(W2W(.422;IXgl0Ѐ	D--Ygrvz~09Mt,<))#)A)R)b)s))))))L:::::::;;;;;?QQcjŁ́Ӂفف܁8	݊?wwwwxx)x7xExZxaxtxxxxxxxxxx&y9yKyyyyyyyyyyzH
FvFv`vsvvvvvvvvv<:Eh[h[y[{[[[[[[[8JTvvD11COeX@Rzzz+z>zVz_zjzuzzzzzzzzzzz$ 
-NNN'N8NDVVejsh*k!k!!!!!!!!!!!"""."7"9"R"["["["`""""""""""""########'#)#)#.#0#0#5#5#5#9#T#j#u###########$
$#$1$S$p$$$$$$$$$(% 8W8WAWNWSW@))7>CY[dv|4,x7..BGQXk
+1<I]co `(33333333344(494J4k444444T???@@)@.@D@K@]@p@@@@@@@`______` `%`8`O`U`a`q`q```H_m777777778	88$zGGG#G1GThq.9@KPeLN]22;;JYjn{85?rrɏ$444555<5U5U5a5r5}5555555555555676Q6V6[6x!$-0Bhpyy8CPCPSPVP[P^PlPrPuPwPPD&&.6>FNV^bfdavʐʐڐ$,4SVaaiH~ 05A_eq8VVVWWW%W(W2W(.422;IXgl0Ѐ	D--Ygrvz~09Mt,<C)C)K)i)z))))))))L:::::::;;;;$;?QQcjŁ́Ӂفف܁8	݊?wwwwxx)x7xExZxaxtxxxxxxxxxx&y9yKyyyyyyyyyyzH
FvFv`vsvvvvvvvvv<:Eh[h[y[{[[[[[[[8JTvvD11COeX@Rzzz+z>zVz_zjzuzzzzzzzzzzz$ 
+NNN'N8NDVVejsh-!!!!!!!!!"""."6"="V"_"a"z""""""""""""####0#0#9#;#;#D#F#F#O#Q#Q#V#X#X#]#]#]#a#|###########$&$*$5$K$Y${$$$$$$$$$$P% 8W8WAWNWSW@))7>CY[dv|4,x7..BGQXk
 |ffԠ $'-147J_gjơΡѡ)))-//3559;;???BDDGLRUY[ad|ѢӢ6<Sbq££ڣ355MikkɤΤΤ6;;?Wuy{{ץܥܥ/FM[kצ٦٦7V[[ssçۧ##;R\arrx%%155>MVV_iƩ̩$<>^^ccɪت/1<TVrrrԫ٫٫--DDPTZcr{{ŬЬ/<Degoŭŭ$7?IIRViɮͮ2<DDMQdƯίۯ8IRWWbf~ҰҰ#':BITY``eƱٱ#3EQUoز?Ikppp{ӳӳ'DKV[Ҵ

:<fhɵɵ
 
(((-2ey 6ISXXpѷԷ!&&&BVYk¸ҸҸ(.AIRWWWsҹ(9JPcktyyyȺͺͺ \@JJ^llyƋ|0X{֢"%18v !!1G][ksz~G8#%%+@&2
 
@@ -2817,12 +2817,13 @@ ggg gWH
 N
 Z
 
-(-3Dx#&Ggw(+00@FI
@=IX7,29IPX^e{
 -02>@`elu{ $$:D3@¾¾־@LLLLLLLLLLL0,;B""1=KTY_8%'.68>6..LORfnuľƾƾɾ˾˾ξ )111338W]ly̿̿ٿܿܿNN`cmz~×ɗЗ֗ݗ.ACSZep{LWfjjjjjjjjjjjjjjkh%%:IN^fft~ǀ̀؀ۀD<I6DTVXcggoP2k2kAkJkTkVkhkhkhkjkqkwkkkkk0\\\\]]] ]<Zeppppppqqqq\..2EXkv0KffTK\jjxſݿ
Xccccccd d,d9d@dIdMdYd Xyy ,ҽ'!6/25;OVYt~Ŋъ%'28Wgoċ"	IFVFVfVuVVVVVVVVVVVWW
W"W.W.WIW[WoW}WWWWWWWWWWW)XX8XCXZX^XeXpXuXuXuXXXXXXXXXXX#'J&*3:@BU]g&7A$L̹Թڹ߹%<}rrrrrrrrrrr!s&2m2m\mmmmmmmmmmmmmmmmmnn!n'n+n=n' GKhhhhh(4jjjjjjjkkkk k-k@kIkUkXk]kykkkkkkkkkkkkkkkkkklll!l2l5lQlQlVlVlVlql)h2BBV`dhu„фԄ߄ ,4>L]p}ʅ؅؅ &,3<?d*4AJ#/@HPch+h7h7777777777777777777778
88888 8 8 8 8 8.8, -Offgg g1g5gIg[gig{ggggggggggggh h h$h*h2h,?,C,e,r,,,,,,,,,,/,!'',0411111111111([a[auaaaaa222@HMS{Кݚ!)+4CJqqzɛܛ+;KejrrwϜߜ"(3TTUU(U8U>U>UIUTUWU\UfUtU{U|UUUUUUUUUUU4 -7CJSfǶ̶ ,<?Q58}LLLL0LELVL_LdLL6p	!!g!g5gBgGgSgYg`g|ggggg7ȱȱٱ$)BII_kkӲ,.?Vmγ))1?Pg~Ǵд״ε88s}980:Ӕ:,LLM
M M&M+M;0	mmmmmmmn<,8?,=KQW=,&V&V/V:V\fyqq>qBqNq_qkqtqqqqqqq?YYYYYYYYZ	ZZZ%Z7ZIZcZoZxZZZZZZZ@X+M+M7M@MIMOM[MgMoMuM{MMMMMMMMMMMMMNNN
NNN%N-N6N6N>NMNQN^NkNpNzNzNNNNNNNNNNNNNNNNNO
-OOO,O=O\OkOnOtOA|Kf^^} B,		!,Rv~CX]WWWWWWWWWWXX&X3X;XIXXXXXXXXYYY#YXY_YlYrYwYwYYYYYYYYZZZZZ#Z#Z0ZEZKZ^ZZZZZZZZZZZZZZ[['[4[A[F[F[J[c[D	)8BK\l%7Vhh		$	+	6	D	D	I	U	ELRa#+.<?FJMQ_fkF8GQΕΕە
-G0#').HXIISfy'I(KQ			$	&	J'JPPQ&Q8Q?QLQXQ`QkQvQQQQQQQQQQQQQQQQQQK8}
+(-3Dx#&Ggw(+00@FI
@=IX7,29IPX^e{
 -02>@`elu{ $$:D3@¾¾־@LLLLLLLLLLL0,;B""1=KTY_8%'.68>6..LORfnuľƾƾɾ˾˾ξ )111338W]ly̿̿ٿܿܿNN`cmz~×ɗЗ֗ݗ.ACSZep{LWfjjjjjjjjjjjjjjkh%%:IN^fft~ǀ̀؀ۀD<I6DTVXcggoP2k2kAkJkTkVkhkhkhkjkqkwkkkkk0\\\]]] ]']<Zeppppppqqqq\..2EXkv0KffTK\jjxſݿ
Xcccccd!d'd4dAdHdQdUdad Xyy ,ҽ'!6/25;OVYt~Ŋъ%'28Wgoċ"	IFVFVfVuVVVVVVVVVVVWW
W"W.W.WIW[WoW}WWWWWWWWWWW)XX8XCXZX^XeXpXuXuXuXXXXXXXXXXX#'J&*3:@BU]g&7A$L̹Թڹ߹%<}rrrrrrrrrrr!s&2m2m\mmmmmmmmmmmmmmmmmnn!n'n+n=n' GKhhhhh(4jjjjjjjkkkk k-k@kIkUkXk]kykkkkkkkkkkkkkkkkkklll!l2l5lQlQlVlVlVlql)h2BBV`dhu„фԄ߄ ,4>L]p}ʅ؅؅ &,3<?d*4AJ#/@HPch+h7h7777777777777777777778
88888 8 8 8 8 8.8, -Offgg g1g5gIg[gig{ggggggggggggh h h$h*h2h\fyqq>qBqNq_qkqtqqqqqqq?YYYYYYYYZ	ZZZ%Z7ZIZcZoZxZZZZZZZ@X3M3M?MHMQMWMcMoMwM}MMMMMMMMMMMMMN
+NNNNN!N-N5N>N>NFNUNYNfNsNxNNNNNNNNNNNNNNNNNNOOOO!O4OEOdOsOvO|OA|Kf^^} B,		!,Rv~CX]WWWWWWWWWW
XX.X;XCXQXXXXXXXX
+YYY+Y`YgYtYzYYYYYYYYYZZZ!Z#Z#Z+Z+Z8ZMZSZfZZZZZZZZZZZZZZ[
[/[<[I[N[N[R[k[D	)8BK\l%7Vhh		$	+	6	D	D	I	U	ELRa#+.<?FJMQ_fkF8GQΕΕە
+G0#').HXIISfy'I(KQ			$	&	J'JPP
Q.Q@QGQTQ`QhQsQ~QQQQQQQQQQQQQQQQQQK8}
 
-!!(7>>CL^6T6T\T_TmTTTTTTTTTTTTUUUU&U(U(U8U:U:UJUJUnUuU~UUUUUUUUU$VM<#ȓГݓ!#)N$PP$P-P3P8POYƬͬݬ-Lkw׭
+!!(7>>CL^6T6T\T_TmTTTTTTTTTTTTUUUU&U(U(U8U:U:UJUJUnUuU~UUUUUUUUU$VM<#ȓГݓ!#)N$#P#P,P5P;P@POYƬͬݬ-Lkw׭
  #)7;ASSSSV[`fw{ǮҮ֮ܮPDo|
 
 
@@ -2838,24 +2839,24 @@ OOO,O=O\OkOnOtOA|Kf^
 
 
 Q::\ajjv¥Υӥӥ(6@CHUbbtR-M77#8&848=8=8T8e8z888888888888
-999P9SHT9~C~CCCCCCCCDD&D.D4DADQDeDjDyDDDDDDDDDDDDDEEEEE!E2E7EcEEEEEEEEEEEEFFAFMF`FFFFFFFFFFFFFFFFFGGGEGGGlGlGrGuGGGGGGGG:HU0	 )/8?CIV(rrrr"r-r6rWwsSsSSSSSSSSSTT
TT&T/THTHTOTUT\TiTtTTTTTTTTTTTTTTX C'0Enzz!;;;MTTfltYD!! !,!B!\!g!g!x!!!!ZB".<LtѨըݨ2@P[Ωҩ"[@nz888<8@8S8\8`8b8\ *nvv	2>Vfy$3@UMp 
 
 
     ( : A A S Y  ]@1=qq^rrrrrssss&s)s:s:s:sAsNsQsVsSssssssssstt	tt&t6tDtMtTtYtYtYt_tst_D	JJ^çΧ` 	
a4|>>LU\eb8‰‰Љ։߉ctRk>c>cccec~ccccccccccccccccdBdd0@@@@@@@@@e@bbqyfNʋʋ##4LYlxԌ%.4;AFLPWbhg[LL-L/L>LJLVLkLpLyL|LLLLLLLLLLLLMMM M$MHMJMfM`MMMMMMMMMMMMNh	*kk
+999P9SHT9~C~CCCCCCCCDD&D.D4DADQDeDjDyDDDDDDDDDDDDDEEEEE!E2E7EcEEEEEEEEEEEEFFAFMF`FFFFFFFFFFFFFFFFFGGGEGGGlGlGrGuGGGGGGGG:HU0	 )/8?CIV(rrrr"r-r6rWw{S{SSSSSSSST	T
TT T.T7TPTPTWT]TdTqT|TTTTTTTTTTTTTTX C'0Enzz!;;;MTTfltYD!! !,!B!\!g!g!x!!!!ZB".<LtѨըݨ2@P[Ωҩ"[@nz88#8D8H8[8d8h8j8\ *nvv	2>Vfy$3@UMp 
 
 
     ( : A A S Y  ]@1=qq^rrrrrssss&s)s:s:s:sAsNsQsVsSssssssssstt	tt&t6tDtMtTtYtYtYt_tst_D	JJ^çΧ` 	
a4|>>LU\eb8‰‰Љ։߉ctRk>c>cccec~ccccccccccccccccdBdd0@@@@@@@@@e@bbqyfNʋʋ##4LYlxԌ%.4;AFLPWbhg[LL-L/L>LJLVLkLpLyL|LLLLLLLLLLLLMMM M$MHMJMfM`MMMMMMMMMMMMNh	*kk
 
G







!>P`u$0i]6P6PJPLP\PjPtPPPPPPPPQQ"Q'Q@Q`QjQ`QQQQQQQQQQQQQQQQQQR
-R#RFRRRyRRyRRRRRRRRRRRRRRSSS$S4STS@S`S`SlSpS|SSSSSSSS4TjTAR*6DMTYfwk)
:GR`q~-=EdioI_btl<5@uuuuuuuuvvvm0	BBB(B(B@@GJVr0	(2IOQWs "02tL+NwNwfwhwrwwwwwwwwu,R;N;NSNUNaNaNmNzNNNNNNNNNNNNNNNNNOO(O*O0O2O4O6O6OAOCOKOQOSOSO_OiOlOlOlOlOwOOOOvx8BBBCC$C3C9C=CRC`CfClCoCyCw5[vlvllllllllllllm	mm m%m'm'm.m4m:mBmPmVmXmXmhmjmjmzmmxMGGGGGHH'H9HNH^HeHuHHHHHHHHHHHHHHHHHIIII#I6I@@GJVr0	(2IOQWs "02tL+NwNwfwhwrwwwwwwwwu,R;N;NSNUNaNaNmNzNNNNNNNNNNNNNNNNNOO(O*O0O2O4O6O6OAOCOKOQOSOSO_OiOlOlOlOlOwOOOOvx8BBBCC$C3C9C=CRC`CfClCoCyCw5[vlvllllllllllllm	mm m%m'm'm.m4m:mBmPmVmXmXmhmjmjmzmmxMGGGGHH"H/HAHVHfHmH}HHHHHHHHHHHHHHHHH	IIII+I>IDIMIWIdItIIIIIIIIIIIJJJ J J$J$J;Jy,07d{d{m{w{x{}{zp22CO]iu{$~~|<7B

!!=EU\^f},hBhBlBBBBB~,
 HBHBLB`BdBdBhBhNV9V9a9l9|99999999
-::-:5:Q:f:q:y:::::::::;*;4;Q;\;d;;;;;;;;;;<<<4<0<J<U<]<h<h<h<s<s<<<<<<<<<<<<<<	====0=4=;=Dii{LN]3J3JJXggǙЙݙ#'/Dgyy8DOmmQ```aa.a7a@aGaPaYaqaaaaaaaaaabbb&b,b7b9bGXʝ

*<FNNNNNNNNOO,O1OGOCOSOsOsOOOOOOOOOOOOOOO0PHLZKKKKKKKKKKKKL)  =R^,If1Nk6Spg!<
-ZZn}(FFPZ$[W[WuWWP&&&&&&&&&&&&''.'0'@
))))))))))*Xrr	$,NNbtyx=RX^er8C:C:_:l:q::::(˘/////////00+0A0W0m0000000000000008'-P:JiiiiiiiiiiiijjjE(8?GNjÛśśΛݛ"'''09>>JSXossXFFX__qrvp2p22222222222222222233
3333#3)32323:3C3I3R3R3R3R3X3`3c3s3,""+7?DI8_i&&4>HS[]]cx^xc[c[y[[[[[[[[[[[[[[[[[[[[[[[,yyyyyy$(-*0<@Kʏʏ t.RRbnwӞ$8>@BHJWZbh^t ˠˠԠ&.0BBBS``nHt{{{{{||| |#|'|7|<|?|<ՑՑّ!22Pai|Σ277YYp%222222222222333333"3$33353A3K3Y3^3m3t3v3v3v3|3~66?BYYp-KMexx{4<E5550525=5?5?5G5X2BIQXtxĝĝ͝ϝϝ؝ڝڝ7G[kkmmvy~~ĞǞ̞̞՞՞`Uis?s???????????0;CAAAAAAAAB(VVVVVVV\++@HMMZp|.3:.V@ejj!).CEEQQcjj|8LVDvDvTvWvYv^vgvjvovwv ~({P{PPPPPPDXXXXXYYYY'Y*Y2Yh8OYj*X=O/7UYeey\ReFpFp\pcprpyppppppppppppPFVH5H5f5l5q5555555555lXo		'----&.O......
-///1/1/A/a/h/m/w//////;Y(5>GPYmmx~ՄՄׄ4ttttttttu\	  ;CK'΍ڍ	%3LW^rʎюߎ W[Dt-7IPWgr<)4\u\usuvu{u~uuuuuu^IITu|
.=JSSl/:Zckx-9KPbt,8DDIXf$2\^^c~h
-  +7CLU^gpy0__!_=_T_`_f_l__X00000000000000000ZZZ[[%[%[;[B[R[a[a[f[[[[[[[[[[[[[[\\,\6\9\<\A\O\e\o\r\u\}\\\\\\\\\LKGKGZGhGhGrG|GGGGGGG PT########$;$M$_$_$c$r$|$$$$$$$$$$$%-%:%B%G%Z%i%%%%%%%%%%&&	&&&)&-&1&8AKvv$v'v)v.v1v4v9vAvDzqqqqqqqqqqqqrrh,N3N3Y3q33333333344,4A4W4_44444444455585G5O5O5n5~55555556 6 696N6h6r666x666677 7 727D7L7_7w777777777777774{ 4;@H<WWWWXX$X.X1XAX8XWXW|WWWWWWWL	vv`L`:FQVdo~Đ kkkkk#G
+::-:5:Q:f:q:y:::::::::;*;4;Q;\;d;;;;;;;;;;<<<4<0<J<U<]<h<h<h<s<s<<<<<<<<<<<<<<	====0=4=;=Dii{LN];J;JDJIJPJPJoJJJJJJJJJl**>JXggǙЙݙ#'/Dgyy8DOmmQ```aa.a7a@aGaPaYaqaaaaaaaaaabbb&b,b7b9bGXʝ

*<FNNNNNNNNOO,O1OGOCOSOsOsOOOOOOOOOOOOOOO0PHLZKKKKKKKKKKKKL,))GGez7Tq <Yv$A^{    ' !<
+ZZn}(FFPZ$cWcW}WWP&&&&&&&&''' '-'D'V'X'@
)))))*** *%*0*Xrr	$,NNbtyx=RX^er8K:K:g:t:y::::(˘////////00030I0_0u0000000000000008'-P:JiiiiiiiiiiiijjjE(8?GNjÛśśΛݛ"'''09>>JSXossXFFX__qrvp2p22222222222222222233
3333#3)32323:3C3I3R3R3R3R3X3`3c3s3,""+7?DI8_i&&4>HS[]]cx^xk[k[[[[[[[[[[[[[[[[[[[[[[[\,yyyyyy$(-*0<@Kʏʏ t.RRbnwӞ$8>@BHJWZbh^t ˠˠԠ&.0BBBS``nHt{{{{{||| |#|'|7|<|?|<ՑՑّ!22Pai|Σ277YYp2222222223
+33333 3*3,3;3=3I3S3a3f3u3|3~3~3~33~66?BYYp-KMexx{4<E5550525=5?5?5G5X2BIQXtxĝĝ͝ϝϝ؝ڝڝ7G[kkmmvy~~ĞǞ̞̞՞՞`Ui{?{???????????0;CAAAAABBB	B(VVVVVVV\++@HMMZp|.3:.V@ejj!).CEEQQcjj|8LVDvDvTvWvYv^vgvjvovwv ~(PPPPPPPDXXXXXYYYY'Y*Y2Yh8OYj*X=O/7UYeey\ReFpFp\pcprpyppppppppppppPFVH5H5f5l5q5555555555lXo		'---...W....../ /!/9/9/I/i/p/u///////;Y(5>GPYmmx~ՄՄׄ4ttttttttu\	  ;CK'΍ڍ	%3LW^rʎюߎ W[Dt-7IPWgr<)4\u\usuvu{u~uuuuuu^IITu|
.=JSSl/:Zckx-9KPbt,8DDIXf$2\^^c~h
+  +7CLU^gpy0__)_E_\_h_n_t__X00000000000000000ZZZ[[%[%[;[B[R[a[a[f[[[[[[[[[[[[[[\\,\6\9\<\A\O\e\o\r\u\}\\\\\\\\\LSGSGbGpGpGzGGGGGGGG PT########$;$M$_$_$c$r$|$$$$$$$$$$$%-%:%B%G%Z%i%%%%%%%%%%&&	&&&)&-&1&8AKvv$v'v)v.v1v4v9vAvDzqqqqqqqqqqqqrrh,N3N3Y3q33333333344,4A4W4_44444444455585G5O5O5n5~55555556 6 696N6h6r666x666677 7 727D7L7_7w777777777777774{ 4;@H<WWWWXX$X.X1XAX8XWXW|WWWWWWWL	vv`L`:FQVdo~Đ kkkkk#G
 
-+NPr-ENNgq\#%%99<?MQgmt{~`	 %19EIQ]__bn VVVVV\"8Y8YHYMYWY_YhYkYrYuY}YYYd<QVoVonowoooooooop(p.p7p7pCp\>>>>>>>?
???(?E?N?W?]?e?<`m`mtmwmmmmmm|BnBnxnlnnnnnnnnnnnnnnnfppq!q*q>qHqSqUqiqvqqqqqqqqqqqq"r:r:roCoEo@C&C&Q&X&_&i&p&r&&&&,wwwwwwwwD -QQ_g4}}}~~ ~&~(~(~-~ /3(C(C6CJCPCH""7CFO[c$DTyTybynysysyyyyyhCmmΌ%5?DDM]bbsx{Ǎɍɍ ".?PRRhjjȎَ6x==UdjmƏȏȏȏӏӏӏ؏Uy&8:Xgg|~
 Hwwwwxxxx%x(x-x/x7x8VVVVVVVWWWW@——З(5@bjp(>DȚ $xxxxxx<RRh~d\\\\\
]
]#]+];];]G]V][]t]w]|]]]]]]]]]]]]]]]^"^$^'^'^)^C^O^U^^^j^^^^^^^^^^^^^^^______+_A_A_A_I_U_m_q_|_______I3R3RGRTRZRbRoRqRRRRRRRRRRRRRRRS
S S&SLSOSjSjSjSnSsSS4 (,u,u:u>>>>>>?
???(?E?N?W?]?e?<`m`mtmwmmmmmm|BnBnxnlnnnnnnnnnnnnnnnfppq!q*q>qHqSqUqiqvqqqqqqqqqqqq"r:r:roCoEo@k&k&y&&&&&&&&&,wwwwwwwwD -QQ_g4}}}~~ ~&~(~(~-~ /3(C(C6CJCPCH""7CFO[c$DTyTybynysysyyyyyhCmmΌ%5?DDM]bbsx{Ǎɍɍ ".?PRRhjjȎَ6x==UdjmƏȏȏȏӏӏӏ؏Uy&8:Xgg|~
 Hwwwwxxxx%x(x-x/x7x8VVVVVVVWWWW@——З(5@bjp(>DȚ $xxxxxx<RRh~d\\\\\
]
]#]+];];]G]V][]t]w]|]]]]]]]]]]]]]]]^"^$^'^'^)^C^O^U^^^j^^^^^^^^^^^^^^^______+_A_A_A_I_U_m_q_|_______I3R3RGRTRZRbRoRqRRRRRRRRRRRRRRRS
S S&SLSOSjSjSjSnSsSS4 (,u,u:u7I7M7M7V7Y7g7d!6VV~Й
 .00@Sszzzzz{{>{S{S{X{_{w{{{{{{{{{{{{ UY,>SY^dgu@vCfsh&&AKY_iiv|

ACPWnz-~-~G~O~W~f~w~y~~~~~~~~~~~~
-1BEJPp!L&5GGGGGGGGGGGGGGG,μμ<0;<wrrǼ\zzɦ.6==@F,>>LgqvEEEEFF%F1F=FAFOFnFnFFFFFFFFFFFGGG!G)G)G-GJG 4#
-!'', <*:=M!4(2(2<2>2G2G2T2\2a2i2",W^k7k7y7{77777#DJW*2:BJTY$^#2;IVaq&=FUq0BYbmt%(QWnny&0V^  $'@	(hrr{ÒӒ!BDSbr) ;<;<[<e<h<p<<<<<<<<<<<<==!=+=+=+=;=*PFFdw+$mrXkXk\klkqkk,HHXHX^XcX|XXXXXXXX-D&PPPPPPPPPPPP.(lllll l"l/D.;0d>S 2GQ``j1T$7AGKNPVZ]cfy8@CTlss!5<AARf}  1ERWWh|
!**009924ҵҵ3l 7;=;=Y=\=d=x=x===========
>>%>%>3>47U3>3>Y>]>`>s>>>>>>>>>>>>>>>	??(?HmmՇڇ܇܇? L!&DDMbw~úʺӺպպܺ&777BINUXd@Xܤ "(6ACibb•
+1BEJPp!L&5GGGGGGGGGGGGGGG,μμ<0;<wrrǼ\zzɦ.6==@F,>>LgqvEEEEF&F-F9FEFIFWFvFvFFFFFFFFFFFGG#G)G1G1G5GRG 4#
+!'', <*:=M!4(2(2<2>2G2G2T2\2a2i2",W^s7s7777777#DJW*2:BJTY$^#2;IVaq&=FUq0BYbmt%(QWnny&0V^  $'@	(hrr{ÒӒ!BDSbr) C<C<c<m<p<x<<<<<<<<<<<=
==)=3=3=3=C=*PFFdw+$mrXkXk\klkqkk,HHXHX^XcX|XXXXXXXX-D&PPPPPPPPPPPP.(lllll l"l/D.;0d>S 2GQ``j1T$7AGKNPVZ]cfy8@CTlss!5<AARf}  1ERWWh|
!**009924ҵҵ3l 7C=C=a=d=l============>>#>->->;>47U;>;>a>e>h>{>>>>>>>>>>>>>>>? ?0?D?R?b?b?t?5XvѻԻԻ  %,099BGSegq6Xdde&e+e7eQeWedeoeveeee7Xadaddddddddddddd8$
VVlʒ9 X\vvz: #(; 1CK<(7=FFSh=0ȼ>HmmՇڇ܇܇? L!&DDMbw~úʺӺպպܺ&777BINUXd@Xܤ "(6ACibb•
 
-"7:=CJN}B0CD22;CCPbjo{DLΒΒޒ*N_E9"s"s&O&g&i&i&k&P0$,
 Q@

 
-$8BGSY[[`R4_________`S,KMKMTMqMMMMT<R]U`119HThyVTDU{{-4;FVgnW8$****&*3*5*B*B*E*
\ No newline at end of file
+$8BGSY[[`R4________`"`S,KMKMTMqMMMMT<R]U`119HThyVTDU{{-4;FVgnW8$3*3*<*L*T*a*c*p*p*s*
\ No newline at end of file
diff --git a/Kernel/KernelA.HPP b/Kernel/KernelA.HPP
index 0834b16c..8c845314 100644
--- a/Kernel/KernelA.HPP
+++ b/Kernel/KernelA.HPP
@@ -1609,7 +1609,7 @@ public class CAutoCompleteDictGlbls
 
 class CICArg
 {
-  U8	type,type_pointed;
+  U8	type,type_pointed_to;
   U16	reg; //low is reg, high is index_reg+scale<<6
   I64	disp;
 };
diff --git a/Kernel/KernelC.HPP b/Kernel/KernelC.HPP
index e0344f98..83e6efc3 100644
--- a/Kernel/KernelC.HPP
+++ b/Kernel/KernelC.HPP
@@ -172,7 +172,6 @@ public extern U8 *TaskCaller(CTask *task=NULL,
 	I64 num=0,Bool saved_context=FALSE);
 public extern I64 UnusedStk(CTask *task=NULL);
 public extern CDbgGlbls dbg;
-
 #help_index "Debugging/Debugger"
 public extern Bool B(U8 *addr,CTask *task=NULL,Bool live=TRUE) //Toggle bpt.
 public extern I64 B2(CTask *task=NULL,Bool live=TRUE);
diff --git a/Kernel/SerialDev/Keyboard.CPP b/Kernel/SerialDev/Keyboard.CPP
index 1f4511a1..06ed38ea 100644
--- a/Kernel/SerialDev/Keyboard.CPP
+++ b/Kernel/SerialDev/Keyboard.CPP
@@ -62,22 +62,25 @@ U0 KbdLEDsSet(I64 sc)
     Fs->catch_except=TRUE;
 }
 
-U0 KbdMouseCmdAck(U8 val)
+U0 KbdMouseCmdAck(...)
 {
-  I64 ack,timeout=5;
-  do {
-    ack=0;
-    try {
-      KbdCmdSend(KBD_CTRL,0xD4);
-      KbdCmdSend(KBD_PORT,val);
-      ack=KbdCmdRead;
-    } catch {
-      KbdCmdFlush;
-      Fs->catch_except=TRUE;
-    }
-  } while (ack!=0xFA && --timeout);
-  if (!timeout)
-    throw;
+  I64 i,ack,timeout;
+  for (i=0;icatch_except=TRUE;
+      }
+    } while (ack!=0xFA && --timeout);
+    if (!timeout)
+      throw;
+  }
 }
 
 U0 KbdTypeMatic(U8 delay)
@@ -200,7 +203,7 @@ U8 *Char2KeyName(I64 ch,Bool include_ctrl=TRUE)
   I64 i;
   U8 buf[STR_LEN];
   if (ch<=CH_SPACE) {
-    nobound_switch (ch) {
+    switch [ch] {
       case '\n':
 	StrCpy(buf,"ENTER");
 	break;
@@ -216,7 +219,7 @@ U8 *Char2KeyName(I64 ch,Bool include_ctrl=TRUE)
       case CH_SHIFT_ESC:
 	StrCpy(buf,"SHIFT_ESC");
 	break;
-      case 0: //nobound_switch
+      case 0: //nobound switch
       case 29:
       case 30:
 	*buf=0;
diff --git a/Kernel/SerialDev/Mouse.CPP b/Kernel/SerialDev/Mouse.CPP
index 6dd2a10f..596af2a7 100644
--- a/Kernel/SerialDev/Mouse.CPP
+++ b/Kernel/SerialDev/Mouse.CPP
@@ -75,27 +75,11 @@ Bool MouseRst()
     catch
       Fs->catch_except=TRUE;
 
-    KbdMouseCmdAck(0xF3);
-    KbdMouseCmdAck(200);
-    KbdMouseCmdAck(0xF3); // enable Mouse
-    KbdMouseCmdAck(100); // Set Rate
-    KbdMouseCmdAck(0xF3);
-    KbdMouseCmdAck(80); //Resolution
-
-    MouseGetDevType; // enable Mouse
-
-    KbdMouseCmdAck(0xF3);
-    KbdMouseCmdAck(10);
-    MouseGetDevType; // enable Mouse
-
-    KbdMouseCmdAck(0xE8); //Resolution
-    KbdMouseCmdAck(0x03);
-    KbdMouseCmdAck(0xE6);
-
-    KbdMouseCmdAck(0xF3); // Set Rate
-    KbdMouseCmdAck(100);
-
-    KbdMouseCmdAck(0xF4); // enable Mouse
+    KbdMouseCmdAck(0xF3,200,0xF3,100,0xF3,80);
+    MouseGetDevType;
+    KbdMouseCmdAck(0xF3,10);
+    MouseGetDevType;
+    KbdMouseCmdAck(0xE8,0x03,0xE6,0xF3,100,0xF4);
     result=TRUE;
 
     //Enable IRQ 12
@@ -263,9 +247,7 @@ U0 KbdMouseHandler(Bool poll_kbd,Bool poll_mouse)
   if (kbd.rst)
     KbdMouseRst;
   else {
-    if (poll_mouse &&
-	  mouse.installed &&
-	  !mouse.irqs_working) {
+    if (poll_mouse && mouse.installed && !mouse.irqs_working) {
       PUSHFD
       CLI
       while (InU8(KBD_CTRL)&1)
diff --git a/StartOS.CPP b/StartOS.CPP
index 50618edc..6ef5abbd 100644
--- a/StartOS.CPP
+++ b/StartOS.CPP
@@ -17,7 +17,7 @@ HashTablePurge(adam_task->hash_table);
 
 #help_index "Misc"
 //Use Dbg("Type 'G;'"); to debug before window mgr is running.
-public F64 os_version=4.03;//Operating system version.
+public F64 os_version=4.040;//Operating system version.
 
 #include "/Adam/MakeAdam"