void set_all_lineperpage(set_linespace_mode mode) { char *find_lineperinch(void); static char m1[] = "¨Ó¹Ç¹ºÃ÷ѴµèÍ˹éÒäÁè¾Í " "à¤Ã×èͧ¨Ðà»ÅÕè¹ãËéà»ç¹¨Ó¹Ç¹ÊÙ§ÊØ´à·èÒ·Õè¨ÐÂÍÁä´é"; static char m2[] = "¡´»ØèÁ ESC à¾×èÍ·Ó§Ò¹µèÍä»"; if (userlineperpage > find_max_userline_perpage()) { userlineperpage = find_max_userline_perpage(); if (mode == INTERACTIVE) { savepic(); framebox(10, 8, 10+thaistrlen(m1)+4, 11, REVERSEATTR); dispstrhgc(m1, 10+2, 9, REVERSEATTR); dispstrhgc(m2, 10+ (thaistrlen(m1)+4 - thaistrlen(m2)) / 2, 10, REVERSEATTR); while (ebioskey(0) != ESCKEY) ; retpic(); writemenu(0, 1, 0); /* show new userline per page */ } } lineperpage = find_line_perpage(); if (mode == INTERACTIVE) { savepic(); /*" "*/ dispprintf(19,12,0, "¨Ó¹Ç¹ºÃ÷ѴµèÍ¡ÃдÒÉ 1 ¹ÔéÇ ¤×Í : %s ºÃ÷Ѵ/¹ÔéÇ", find_lineperinch()); ebioskey(0); retpic(); } }
void wordnotfound( void ) { errorsound( ); blockmsg( 5 ); dispstrhgc( "ËÒ¤ÓäÁ辺 ! ¡´ ESC à¾×èÍ·Ó§Ò¹µèÍ", ( 14 + center_factor ) + 13, 5, REVERSEATTR ); while ( ebioskey( 0 ) != ESCKEY ); pagecomplete = NO; }
int handler( int errval, int ax, int bp, int si ) { if ( ax >= 0 ) { disperror( "error on disk drive! ¡´»ØèÁã´æà¾×èÍ·Ó§Ò¹µèÍ" ); ebioskey( 0 ); } hardretn( -1 ); }
void notavailable( void ) { savepic( ); blockmsg( 5 ); dispstrhgc( "¤ÓÊÑ觹ÕéÍÂÙèÃÐËÇèÒ§¡ÒþѲ¹Ò ! ¡´»ØèÁã´æ à¾×èÍ·Ó§Ò¹µèÍ", ( 14 + center_factor ) + 4, 5, REVERSEATTR ); ebioskey( 0 ); retpic( ); }
int readkbd( void ) { unsigned int c; c = ebioskey( 0 ); if ( thaimode && ( ( c & 0xff00 ) < 0x4700 ) ) { /* Ignore Keypad */ c = thaikey( c ); } return( c ); }
void onscreen(unsigned x,unsigned y) { int key; dispkey(CNTRL_O); waitkbd(3,2); key = ebioskey(0); prchar(key,0,3,2); doonscrn(key,x,y); }
void splashscreen( void ) { extern char prog_date[]; extern char prog_time[]; #ifdef EDA_VERSION framebox( 17 + center_factor, 5, ( 17 + center_factor ) + 46, 11, REVERSEATTR ); dispstrhgc( "CU WRITER", ( 19 + center_factor ) + 12, 6, REVERSEATTR ); dispstrhgc( "Version 1.2", ( 19 + center_factor ) + 15, 7, REVERSEATTR ); dispstrhgc( "EDA version", ( 19 + center_factor ) + 15, 8, REVERSEATTR ); dispstrhgc( "ÍÀԹѹ·¹Ò¡Òèҡ ¨ØÌÒŧ¡Ã³ìÁËÒÇÔ·ÂÒÅÑÂ", ( 19 + center_factor ) + 6, 9, REVERSEATTR ); dispstrhgc( "Áͺá´è ¡ÃзÃǧµèÒ§»ÃÐà·È", ( 19 + center_factor ) + 10, 10, REVERSEATTR ); #else #ifdef CW_VERSION framebox( 17 + center_factor, 5, ( 17 + center_factor ) + 46, 13, REVERSEATTR ); /* framebox( 17 + center_factor, 5, ( 17 + center_factor ) + 46, 14, REVERSEATTR ); */ dispstrhgc( "CU WRITER", ( 19 + center_factor ) + 12, 6, REVERSEATTR ); dispstrhgc( "Version 1.41", ( 19 + center_factor ) + 15, 7, REVERSEATTR ); dispprintf( ( 19 + center_factor ) + 10, 8, REVERSEATTR, "%11s %8s", prog_date, prog_time ); dispstrhgc( "Hercules/EGA/VGA/MCGA/AT&T", ( 19 + center_factor ) + 8, 9, REVERSEATTR ); dispstrhgc( "¾Ñ²¹Òâ´Â ʶҺѹºÃÔ¡ÒäÍÁ¾ÔÇàµÍÃì ÃèÇÁ¡Ñº", ( 19 + center_factor ) + 5, 10, REVERSEATTR ); dispstrhgc( "ÀÒ¤ÇÔªÒÇÔÈÇ¡ÃÃÁ¤ÍÁ¾ÔÇàµÍÃì ¤³ÐÇÔÈÇ¡ÃÃÁÈÒʵÃì", ( 19 + center_factor ) + 2, 11, REVERSEATTR ); /* dispstrhgc( "áÅÐ ªÁÃÁ¤ÍÁ¾ÔÇàµÍÃì ͺ¨.", ( 19 + center_factor ) + 10, 12, REVERSEATTR ); dispstrhgc("¨ØÌÒŧ¡Ã³ìÁËÒÇÔ·ÂÒÅÑÂ", ( 19 + center_factor ) + 12, 13, REVERSEATTR ); */ dispstrhgc( "¨ØÌÒŧ¡Ã³ìÁËÒÇÔ·ÂÒÅÑÂ", ( 19 + center_factor ) + 12, 12, REVERSEATTR ); #else framebox( ( 17 + center_factor ), 5, ( 17 + center_factor ) + 46, 14, REVERSEATTR ); dispstrhgc( "THAI WRITE", ( 19 + center_factor ) + 11, 6, REVERSEATTR ); dispstrhgc( "Version 1.0.0", ( 19 + center_factor ) + 14, 7, REVERSEATTR ); dispprintf( ( 19 + center_factor ) + 11, 8, REVERSEATTR, "%11s %8s", prog_date, prog_time ); dispstrhgc( "Hercules/EGA/VGA/MCGA/AT&T", ( 19 + center_factor ) + 8, 9, REVERSEATTR ); dispstrhgc( "Khral Steelforge", ( 19 + center_factor ) + 13, 10, REVERSEATTR ); dispstrhgc( "The Forge Warband, Iron Legion", ( 19 + center_factor ) + 6, 11, REVERSEATTR ); dispstrhgc( "¾Ñ²¹Ò¨Ò¡ àÇÔÃì´¨ØÌÒ â´Â ÁËÒÇÔ·ÂÒÅѨØÌÒŧ¡Ã³ì", ( 19 + center_factor ) + 3, 13, REVERSEATTR ); #endif #endif if ( cu_song ) { cusong( ); } ebioskey( 0 ); cls( ); }
void quick( unsigned int *x, unsigned int *y ) { register int key; dispkey( CNTRL_Q ); waitkbd( 3, 2 ); key = ebioskey( 0 ) & 0xff; prchar( key, 0, 3, 2 ); if ( !isalpha( key ) && !iscntrl( key ) ) { return; } switch ( key & 0x1f ) { case 'r' - 'a' + 1: topfile( x ); break; case 'c' - 'a' + 1: endfile( x ); break; case 'f' - 'a' + 1: searching( x, y ); break; case 'a' - 'a' + 1: replacing( x, y ); break; case 'y' - 'a' + 1: deltoendline( *x, *y ); break; case 'l' - 'a' + 1: loadtoline( curline->text ); refreshline( 0, *y ); break; case 'b' - 'a' + 1: gobeginblk( x ); break; case 'k' - 'a' + 1: goendblk( x ); break; case 'd' - 'a' + 1: endline( x ); break; case 's' - 'a' + 1: home( x ); break; case 'x' - 'a' + 1: bottom_of_page( ); break; case 'e' - 'a' + 1: top_of_page( ); break; } }
unsigned char *savescrn( int p_xStart, int p_yStart, int p_xEnd, int p_yEnd ) { unsigned char *scrnindex; scrnindex = ( unsigned char * ) malloc( ( p_xEnd - p_xStart + 1 ) * ( p_yEnd - p_yStart + 1 ) * 20 ); if ( scrnindex == NULL ) { savepic( ); errorsound( ); blockmsg( 5 ); dispstrhgc( "˹èǤÇÒÁ¨ÓäÁè¾Í ! ¡´»ØèÁã´æà¾×èÍ·Ó§Ò¹µèÍ...", ( 14 + center_factor ) + 8, 6, REVERSEATTR ); ebioskey( 0 ); return( NULL ); } ( *getwind_ptr )( p_xStart, p_yStart, ( p_yEnd - p_yStart + 1 ) * 20, ( p_xEnd - p_xStart + 1 ), scrnindex ); return( scrnindex ); }
void waitkbd( int p_xcurpos, int p_ycurpos ) { register unsigned int i; setcurpos( p_xcurpos, p_ycurpos, thaimode ); while ( !keypressed( ) ) { for ( i = 0; !keypressed( ) && i < 6000; i++ ); setcurpos( p_xcurpos, p_ycurpos, thaimode ); for ( i = 0; !keypressed( ) && i < 6000; i++ ); setcurpos( p_xcurpos, p_ycurpos, thaimode ); if ( !last_menu_on ) dispstrhgc( ( ebioskey( 2 ) & 0x10 ) ? "ΚΓι�§µ�Γ�§" : " ", 70, 2, BOLDATTR ); } setcurpos( p_xcurpos, p_ycurpos, thaimode ); }
void showerrno( void ) { errorsound( ); blockmsg( 5 ); switch ( errno ) { case ENOENT: dispstrhgc( "ËÒá¿éÁ¢éÍÁÙÅäÁ辺 ! ¡´»ØèÁã´æà¾×èÍ·Ó§Ò¹µèÍ...", ( 7 + center_factor ) + 15, 5, REVERSEATTR ); break; case ENOMEM: dispstrhgc( "˹èǤÇÒÁ¨ÓäÁè¾Í ! ¡´»ØèÁã´æà¾×èÍ·Ó§Ò¹µèÍ...", ( 14 + center_factor ) + 8, 6, REVERSEATTR ); break; default: framebox( 13 + center_factor, 4, ( 13 + center_factor ) + 54, 7, REVERSEATTR ); dispstrhgc( "à¡Ô´¤ÇÒÁ¼Ô´¾ÅÒ´ÀÒÂã¹Ãкº !", ( 14 + center_factor ) + 15, 5, REVERSEATTR ); dispstrhgc( sys_errlist[errno], ( 14 + center_factor ) + 15, 6, REVERSEATTR ); } ebioskey( 0 ); }
int handler(int errval,int ax,int bp,int si) { /* char drive; */ char *scrn; /* errorsound(); */ if (ax >= 0) { /* drive = 'A' + (ax & 0x00FF); */ scrn = savescrn (18-CENTER_FACTOR, 9, 71-CENTER_FACTOR, 11); blockmsg(10); dispprintf(25-CENTER_FACTOR,10,2, "Disk error on drive %c ! ║╢╩ьХаЦ╢ФЮ╬вХм╥с╖р╧╣Хм", 'A' + (ax & 0x00FF)); /* prchar(drive,REVERSEATTR,45-CENTER_FACTOR,10); */ ebioskey(0); resscrn(scrn,18-CENTER_FACTOR, 9, 71-CENTER_FACTOR, 11); } hardretn(-1); }
int changekey( int p_key ) { if ( ( ebioskey( 2 ) & 0x10 ) != 0 ) { /* table ? */ switch ( p_key & 0xff00 ) { case SHIFT_7_NP & 0xff00: p_key = 0x98; break; case SHIFT_8_NP & 0xff00: p_key = 0x91; break; case SHIFT_9_NP & 0xff00: p_key = 0x99; break; case GRAY_MINUS & 0xff00: p_key = 0x95; break; case SHIFT_4_NP & 0xff00: p_key = 0x93; break; case SHIFT_5_NP & 0xff00: p_key = 0x96; break; case SHIFT_6_NP & 0xff00: p_key = 0x92; break; case GRAY_PLUS & 0xff00: p_key = 0x8f; break; case SHIFT_1_NP & 0xff00: p_key = 0x9a; break; case SHIFT_2_NP & 0xff00: p_key = 0x90; break; case SHIFT_3_NP & 0xff00: p_key = 0x9b; break; } } return( p_key & 0xff ); }
int getname(char textst[],unsigned x,unsigned y,unsigned maxlen,char attr) { int i; /************* Modified (+1) ***************/ char drv[MAXDRIVE+1],dir[MAXDIR+1],name[MAXFILE+1],ext[MAXEXT+1]; char textst2[80]; do { i = getstring(textst,x,y,maxlen,attr,ENGUPCASE); } while ((i != YES) && (i != ESCKEY) && (i != NO)); if (i == YES) { fnsplit(textst,drv,dir,name,ext); fnmerge(textst2,drv,dir,name,ext); if (strcmp(textst,textst2) != 0) { errorsound(); blockmsg(10); dispstrhgc("������������żԴ��Ҵ ! �� <ESC> ���ͷӧҹ���",27,10,REVERSEATTR); while (ebioskey(0) != ESCKEY); return(ESCKEY); } } return(i); }
void doonscrn(register unsigned key,unsigned x,unsigned y) { register int j; char st[4],invmsg[60]; key &= 0xff; if (!isalpha(key) && !iscntrl(key)) return; key &= 0x1f; switch(key) { case 'l' - 'a' + 1 : itoa(leftmar,st,10); framebox(25-CENTER_FACTOR, 4, 25-CENTER_FACTOR+39, 6,REVERSEATTR); dispstrhgc("µйЌІ°“√µ—йІ°—麀铬Ј’и§Ќ≈—ЅємЈ’иаЈи“дЋ√и ?",25-CENTER_FACTOR+4,5,REVERSEATTR); if (getstring(st,58-CENTER_FACTOR,5,3,2,NUMBER)) { j = atoi(st); if ((j < rightmar) && (j > 0)) { leftmar = j; } else { /* Invalid Left Margin */ if (j<1) strcpy(invmsg,"°—麀铬єйЌ¬°«и“ 1 !"); else strcpy(invmsg,"°—麀铬Ѕ“°°«и“°—йє¢«“ !"); strcat(invmsg," °іїЎиЅгіжаЊ„иЌЈ”І“єµиЌ ..."); blockmsg(10); dispstrhgc(invmsg,25-CENTER_FACTOR,10,REVERSEATTR); errorsound(); ebioskey(0); } } break; case 'r' -'a' + 1 : itoa(rightmar,st,10); framebox(25-CENTER_FACTOR, 4, 25-CENTER_FACTOR+39, 6, 2); dispstrhgc("µйЌІ°“√µ—йІ°—йє¢«“Ј’и§Ќ≈—ЅємЈ’иаЈи“дЋ√и ?",25-CENTER_FACTOR+4,5,2); if (getstring(st,58-CENTER_FACTOR,5,3,2,NUMBER)) { j = atoi(st); if ((j > leftmar) && (j <= MAXRMAR)) { rightmar = j; } else { /* Invalid Right Margin */ if (j<=leftmar) strcpy(invmsg,"°—йє¢«“єйЌ¬°«и“°—麀铬 !"); else sprintf(invmsg,"°—йє¢«“ ўІ ЎідЅиа°‘є %d !",MAXRMAR); strcat(invmsg," °іїЎиЅгіжаЊ„иЌЈ”І“єµиЌ ..."); blockmsg(10); dispstrhgc(invmsg,25-CENTER_FACTOR,10,REVERSEATTR); errorsound(); ebioskey(0); } } break; case 'i' -'a' + 1: itoa(x+1,st,10); framebox(25-CENTER_FACTOR, 4, 25-CENTER_FACTOR+39, 6, 2); dispstrhgc("µйЌІ°“√µ—йІ TAB Ј’и§Ќ≈—ЅємЈ’иаЈи“дЋ√и ?",25-CENTER_FACTOR+4,5,2); if (getstring(st,58-CENTER_FACTOR,5,3,2,NUMBER)) { j = atoi(st); if ((j <= MAXCOL) && (j > 0)) tab[j - 1]=YES; } break; case 'n' - 'a' + 1 : strcpy(st,"ALL"); framebox(25-CENTER_FACTOR, 4, 25-CENTER_FACTOR+39, 6, 2); dispstrhgc("µйЌІ°“√≈Ї TAB Ј’и§Ќ≈—ЅємЈ’иаЈи“дЋ√и ?",25-CENTER_FACTOR+4,5,2); if (getstring(st,58-CENTER_FACTOR,5,3,2,NUMBER)) { if (strcmp(st,"ALL") == 0) { for (j=0;j < MAXCOL;++j) tab[j] = NO; } else { j = atoi(st); if ((j <= MAXCOL) && (j > 0)) tab[j - 1] = NO; } } break; case 'p' - 'a' + 1 : itoa(lineperpage,st,10); framebox(25-CENTER_FACTOR, 4, 25-CENTER_FACTOR+41, 6, 2); dispstrhgc("µйЌІ°“√µ—йІ®”є«єЇ√√Ј—іµиЌЋєй“аЈи“дЋ√и ?",25-CENTER_FACTOR+4,5,2); if (getstring(st,61-CENTER_FACTOR,5,3,2,NUMBER)) { if (atoi(st) > 0) { lineperpage = atoi(st); writepageline(); } } break; case 'c' - 'a' + 1 : centerline(y); break; case 'x' - 'a' + 1 : relmargin = !relmargin; relmarstatus(); break; } pagecomplete = NO; writestatus(x); }
int getstring(char textst[],unsigned x,unsigned y, unsigned maxlen,char attr,strtype mode) { int inkey,key,oldlen,temp; char keepchar; keepchar = '\0'; oldlen = strlen(textst); dispblank(x,y,maxlen,attr); dispstrhgc(textst,x,y,attr); waitkbd(x+thaistrlen(textst),y); switch(mode) { case THAIENG : inkey = readkbd(); break; case NUMBER : case ONEORTWO : case ENGLISH : inkey = ebioskey(0); break; case ENGUPCASE : inkey = ebioskey(0); key = inkey & 0xff; if ((key >= 'a') && (key <= 'z')) inkey = key - ('a' - 'A'); break; } switch (inkey) { case CNTRL_H : case BSKEY : case CNTRL_S : case LEKEY : case CNTRL_M : case RETKEY : break; default : key = inkey & 0xff; if (mode == NUMBER) { if ((key < '0') || (key > '9')) break; } if (mode == ONEORTWO) { if ((key != '1') && (key != '2')) break; } if ((inkey & 0xff) >= 32) { textst[0] = '\0'; dispblank(x,y,maxlen,attr); } break; } do { switch(inkey) { case CNTRL_M : case RETKEY : return(YES); case CNTRL_U : return(NO); /* Abort */ case ESCKEY : return(ESCKEY); case UPKEY : return(UPKEY); case DNKEY : return(DNKEY); case CNTRL_H : case BSKEY : case LEKEY : case CNTRL_S : temp = strlen(textst); if (temp != 0) { if (temp < oldlen) textst[temp] = keepchar; keepchar = textst[temp-1]; textst[temp-1] = '\0'; dispblank(x,y,maxlen,attr); dispstrhgc(textst,x,y,attr); } break; case RIKEY : case CNTRL_D : temp = strlen(textst); if ((temp < oldlen) && (temp < maxlen)) { textst[temp] = keepchar; keepchar = textst[temp+1]; textst[temp+1] = '\0'; dispblank(x,y,maxlen,attr); dispstrhgc(textst,x,y,attr); } break; case CNTRL_Y : if (strlen(textst) < oldlen) textst[strlen(textst)] = keepchar; keepchar = textst[0]; textst[0] = '\0'; dispblank(x,y,maxlen,attr); break; case CNTRL_R : if (strlen(textst) < oldlen) { textst[strlen(textst)] = keepchar; dispblank(x,y,maxlen,attr); dispstrhgc(textst,x,y,attr); } break; case F10KEY : thaimode = !thaimode; writelanguage(); break; default : inkey = (inkey & 0xff); if (mode == NUMBER) { if ((inkey < '0') || (inkey > '9')) break; } if (mode == ONEORTWO) { if ((inkey != '1') && (inkey != '2')) break; } if (inkey >= 32 && strlen(textst) < maxlen) { if (whatlevel(inkey) == MIDDLE) { textst[strlen(textst)+1] = '\0'; textst[strlen(textst)] = inkey; oldlen = strlen(textst); dispblank(x,y,maxlen,attr); dispstrhgc(textst,x,y,attr); } else { if ((strlen(textst) != 0) && (whatlevel(inkey) > whatlevel(textst[strlen(textst)-1])) && (inkey != HUNAKADMITO)) { textst[strlen(textst)+1] = '\0'; textst[strlen(textst)] = inkey; oldlen = strlen(textst); dispblank(x,y,maxlen,attr); dispstrhgc(textst,x,y,attr); } else errorsound(); } } break; } waitkbd(x+thaistrlen(textst),y); switch(mode) { case THAIENG : inkey = readkbd(); break; case NUMBER : case ONEORTWO : case ENGLISH : inkey = ebioskey(0); break; case ENGUPCASE : inkey = ebioskey(0); key = inkey & 0xff; if ((key >= 'a') && (key <= 'z')) inkey = key - ('a' - 'A'); break; } } while(1); }
int main( int argc, char *argv[] ) { /* (x,y) position of edit window. x column, y line -> (0,0) at upper left on screen */ unsigned int xCursorPos = 0; unsigned int yCursorPos = 0; unsigned int curmenu = 0x1100; int i; cwsetup( argc, argv ); writestatus( 0 ); writetab( ); splashscreen( ); /* Main program loop */ do { dispstrhgc( " ", wind.col, 2, NORMALATTR ); i = pulled_down_menu( &curmenu, &xCursorPos, &yCursorPos ); if ( filename[0] != '\0' ) { switch ( i ) { case RETKEY: keymain = menu_to_key( curmenu ); break; case ESCKEY: waitkbd( wind.col + xCursorPos, wind.row + yCursorPos ); /* Show blinking cursor */ keymain = readkbd( ); /* If keypressed Get it */ break; default: keymain = i; break; } while ( keymain != ESCKEY ) { if ( ( keymain & 0xff ) >= 32 ) { keymain = changekey( keymain ); if ( insertmode ) { if ( !insert_char( keymain, &xCursorPos, &yCursorPos ) ) { linetoolong( ); } } else { if ( !ovrwrite_char( keymain, &xCursorPos, &yCursorPos ) ) { linetoolong( ); } } refreshline( xCursorPos, yCursorPos ); } else { /* Function Key */ switch ( keymain ) { case PGUPKEY: case CNTRL_R: page_up( ); break; case PGDNKEY: case CNTRL_C: page_down( ); break; case UPKEY: case CNTRL_E: cursor_up( ); break; case DNKEY: case CNTRL_X: cursor_down( yCursorPos ); break; case LEKEY: case CNTRL_S: cursor_left( &xCursorPos ); break; case 0x2301: gobeginblk( &xCursorPos ); break; case 0x2401: goendblk( &xCursorPos ); break; case RIKEY: case CNTRL_D: cursor_right( &xCursorPos, yCursorPos ); break; case CNTRL_W: scroll_up( ); break; case CNTRL_Z: scroll_down( ); break; case CHOMEKEY: top_of_page( ); break; case CPGUPKEY: topfile( &xCursorPos ); break; case CENDKEY: bottom_of_page( ); break; case CPGDNKEY: endfile( &xCursorPos ); break; case DELKEY: case CNTRL_G: delete_char( xCursorPos ); refreshline( xCursorPos, yCursorPos ); changeflag = YES; break; case CNTRL_T: delete_word( xCursorPos ); refreshline( xCursorPos, yCursorPos ); changeflag = YES; break; case CNTRL_Y: delete_line( ); changeflag = YES; break; case CNTRL_M: case RETKEY: if ( insertmode == NO ) { returnkey( &xCursorPos, yCursorPos ); } else { ret_with_ins( &xCursorPos, yCursorPos ); changeflag = YES; } break; case BSKEY: case CNTRL_H: backspace( &xCursorPos ); yCursorPos = findrow( ); refreshline( 0, yCursorPos ); changeflag = YES; break; case INSKEY: case CNTRL_V: insertmode = !insertmode; writeinsmode( ); break; case CNTRL_N: insert_ret( &xCursorPos ); break; case F10KEY: thaimode = !thaimode; writelanguage( ); break; case F1KEY: fontused = 0x00; writeattr( ); break; case F2KEY: fontused = fontused | ITALICATTR; writeattr( ); break; case F3KEY: fontused = fontused | ONELINEATTR; fontused = fontused & 0x7f; writeattr( ); break; case F4KEY: fontused = fontused | TWOLINEATTR; fontused = fontused & 0xfe; writeattr( ); break; case F5KEY: fontused = fontused | BOLDATTR; writeattr( ); break; case F6KEY: fontused = fontused | ENLARGEATTR; writeattr( ); break; case F7KEY: fontused = fontused | SUPERATTR; if ( ( fontused & SUBATTR ) == SUBATTR ) { fontused = fontused ^ SUBATTR; } writeattr( ); break; case F8KEY: fontused = fontused | SUBATTR; if ( ( fontused & SUPERATTR ) == SUPERATTR ) { fontused = fontused ^ SUPERATTR; } writeattr( ); break; case F9KEY: manualwrap( &xCursorPos, &yCursorPos ); break; case ALTM: editmacro( ); break; case TABKEY: case CNTRL_I: movetotab( &xCursorPos, yCursorPos ); break; case CNTRL_K: blockcommand( &xCursorPos ); break; case 0x1401: blkcmd( 'p', &xCursorPos ); break; case 0x6101: blkcmd( 'b', &xCursorPos ); break; case 0x6201: blkcmd( 'k', &xCursorPos ); break; case 0x6301: blkcmd( 'c', &xCursorPos ); break; case 0x6401: blkcmd( 'y', &xCursorPos ); break; case 0x6501: blkcmd( 'v', &xCursorPos ); break; case 0x6601: blkcmd( 'r', &xCursorPos ); break; case 0x6701: blkcmd( 'w', &xCursorPos ); break; case 0x6801: blkcmd( 'h', &xCursorPos ); break; case CNTRL_O: onscreen( xCursorPos, yCursorPos ); break; case 0x7101: doonscrn( 'l', xCursorPos, yCursorPos ); break; case 0x7201: doonscrn( 'r', xCursorPos, yCursorPos ); break; case 0x7301: doonscrn( 'i', xCursorPos, yCursorPos ); break; case 0x7401: doonscrn( 'n', xCursorPos, yCursorPos ); break; case 0x7501: doonscrn( 'c', xCursorPos, yCursorPos ); break; case 0x7601: doonscrn( 'p', xCursorPos, yCursorPos ); break; case 0x7701: doonscrn( 'x', xCursorPos, yCursorPos ); break; case CNTRL_Q: quick( &xCursorPos, &yCursorPos ); break; case 0x3501: deltoendline( xCursorPos, yCursorPos ); break; case 0x8111: inscntrl( CNTRL_W, xCursorPos, yCursorPos ); break; case 0x8211: inscntrl( CNTRL_S, xCursorPos, yCursorPos ); break; case 0x8311: inscntrl( CNTRL_R, xCursorPos, yCursorPos ); break; case 0x8411: inscntrl( CNTRL_B, xCursorPos, yCursorPos ); break; case 0x8511: inscntrl( CNTRL_E, xCursorPos, yCursorPos ); break; case 0x8611: inscntrl( CNTRL_T, xCursorPos, yCursorPos ); break; case 0x8711: inscntrl( CNTRL_V, xCursorPos, yCursorPos ); break; case CNTRL_P: printcntrl( xCursorPos, yCursorPos ); break; case HOMEKEY: home( &xCursorPos ); break; case ENDKEY: endline( &xCursorPos ); break; case CLEKEY: case CNTRL_A: backword( &xCursorPos ); break; case CRIKEY: case CNTRL_F: nextword( &xCursorPos, yCursorPos ); break; case CNTRL_L: if ( source[0] != '\0' ) { if ( replaceflag == NO ) { if ( searchfwd( &xCursorPos, &yCursorPos ) == NO ) { wordnotfound( ); } } else { if ( searchreplace( &xCursorPos, &yCursorPos ) == NO ) { wordnotfound( ); } } } break; case CNTRL_B: reform( ); break; case ALTP: gotopage( ); break; case CNTRL_J: case ALTL: gotoline( ); break; case 0x5101: searching( &xCursorPos, &yCursorPos ); break; case 0x5201: replacing( &xCursorPos, &yCursorPos ); break; case 0x8501: loadtoline( curline->text ); refreshline( 0, yCursorPos ); break; case CF1KEY: insertmacro( ¯o[0][0], &xCursorPos, &yCursorPos ); break; case CF2KEY: insertmacro( ¯o[1][0], &xCursorPos, &yCursorPos ); break; case CF3KEY: insertmacro( ¯o[2][0], &xCursorPos, &yCursorPos ); break; case CF4KEY: insertmacro( ¯o[3][0], &xCursorPos, &yCursorPos ); break; case CF5KEY: insertmacro( ¯o[4][0], &xCursorPos, &yCursorPos ); break; case CF6KEY: insertmacro( ¯o[5][0], &xCursorPos, &yCursorPos ); break; case CF7KEY: insertmacro( ¯o[6][0], &xCursorPos, &yCursorPos ); break; case CF8KEY: insertmacro( ¯o[7][0], &xCursorPos, &yCursorPos ); break; case CF9KEY: insertmacro( ¯o[8][0], &xCursorPos, &yCursorPos ); break; case CF10KEY: insertmacro( ¯o[9][0], &xCursorPos, &yCursorPos ); break; case AF2KEY: inscntrl( ITALICCODE, xCursorPos, yCursorPos ); break; case AF3KEY: inscntrl( ONELINECODE, xCursorPos, yCursorPos ); break; case AF4KEY: inscntrl( TWOLINECODE, xCursorPos, yCursorPos ); break; case AF5KEY: inscntrl( BOLDCODE, xCursorPos, yCursorPos ); break; case AF6KEY: inscntrl( ENLARGECODE, xCursorPos, yCursorPos ); break; case AF7KEY: inscntrl( SUPERCODE, xCursorPos, yCursorPos ); break; case AF8KEY: inscntrl( SUBCODE, xCursorPos, yCursorPos ); break; #ifdef WANT_TO_USE_GRAPH case ALTG: insertgraph( ); break; case ALTD: deletegraph( ); break; #endif case ALTX: quitprog = YES; keymain = ESCKEY; break; default: if ( ( alt_char_map( keymain ) ) != -1 ) { keymain = alt_char_map( keymain ); if ( insertmode ) { if ( !insert_char( keymain, &xCursorPos, &yCursorPos ) ) { linetoolong( ); } } else { if ( !ovrwrite_char( keymain, &xCursorPos, &yCursorPos ) ) { linetoolong( ); } } refreshline( xCursorPos, yCursorPos ); } break; } /* switch ( keymain ) */ } adjustcol( &xCursorPos ); while ( ( yCursorPos = findrow( ) ) > ( wind.width - 1 ) ) { storeline( curline ); curline = curline->previous; loadtoline( curline->text ); lineno--; } if ( !keypressed( ) ) { if ( !pagecomplete ) { showpage( ); } if ( !keypressed( ) ) { writecolno( firstcol + xCursorPos ); dispstrhgc( " ", wind.col, 2, NORMALATTR ); if ( !keypressed( ) ) { writepageline( ); } } } if ( quitprog != YES ) { waitkbd( wind.col + xCursorPos, wind.row + yCursorPos ); keymain = readkbd( ); dispkey( keymain ); } } /* while */ } else { /* if filename[0] != '\0' */ errorsound( ); } } while ( !quitprog ); if ( changeflag ) { blockmsg( 5 ); dispstrhgc( "ÂѧäÁèä´é¨Ñ´à¡çºá¿éÁ¢éÍÁÙÅ µéͧ¡ÒèѴà¡çºËÃ×ÍäÁè (Y/N)?", ( 16 + center_factor ) + 7, 5, REVERSEATTR ); keymain = 0; while ( ( keymain != 'n' ) && ( keymain != 'N' ) && ( keymain != 'y' ) && ( keymain != 'Y' ) ) { keymain = ebioskey( 0 ) & 0xff; if ( ( keymain == 'y' ) || ( keymain == 'Y' ) ) { writeblk( filename, sentinel->next, 0, sentinel->previous, MAXCOL ); } } } settext( ); return 0; }
int searchreplace( unsigned int *p_xCursorPos, unsigned int *y_CursorPos ) { int ok = 0; int i; int ask = YES; int global = NO; int found = NO; if ( optionnoask( ) ) { ok = 'y'; ask = NO; } if ( optionglobal( ) ) { topfile( p_xCursorPos ); showpageall( ); global = YES; } do { if ( searchfwd( p_xCursorPos, y_CursorPos ) ) { found = YES; if ( ask ) { dispstrhgc( "á·¹·ÕèËÃ×ÍäÁè ? (Y/N) ", 1, 2, BOLDATTR ); while ( ( ok != 'y' ) && ( ok != 'n' ) && ( ok != 'Y' ) && ( ok != 'N' ) ) { while ( !keypressed( ) ) { setcurpos( 19, 2, thaimode ); for ( i = 0; i < 15000; i++ ); setcurpos( 19, 2, thaimode ); for ( i = 0; i < 15000; i++ ); setcurpos( wind.col + *p_xCursorPos, wind.row + *y_CursorPos, thaimode ); for ( i = 0; i < 15000; i++ ); setcurpos( wind.col + *p_xCursorPos, wind.row + *y_CursorPos, thaimode ); for ( i = 0; i < 15000; i++ ); } /* while !keypressed */ ok = ebioskey( 0 ); if ( ( ok != CNTRL_U ) && ( ok != ESCKEY ) ) { ok = ok & 0xff; } else { return( CNTRL_U ); } } /* while ok */ } else { if ( keypressed( ) ) { ok = ebioskey( 0 ); if ( ( ok == CNTRL_U ) || ( ok == ESCKEY ) ) { return( CNTRL_U ); } } ok = 'y'; } if ( ( ok == 'y' ) || ( ok == 'Y' ) ) { replaceword( p_xCursorPos, y_CursorPos ); } ok = 0; } else { global = NO; } } while ( global ); return( found ); }