예제 #1
0
파일: PRTUTIL.C 프로젝트: kytulendu/CW141
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();
    }
}
예제 #2
0
파일: SEARCH.C 프로젝트: kytulendu/TW
void wordnotfound( void ) {
	errorsound( );
	blockmsg( 5 );
	dispstrhgc( "ËÒ¤ÓäÁ辺 ! ¡´ ESC à¾×èÍ·Ó§Ò¹µèÍ", ( 14 + center_factor ) + 13, 5, REVERSEATTR );
	while ( ebioskey( 0 ) != ESCKEY );
	pagecomplete = NO;
}
예제 #3
0
파일: CUPSETUP.C 프로젝트: MegaGod/TW
int handler( int errval, int ax, int bp, int si ) {
	if ( ax >= 0 ) {
		disperror( "error on disk drive! ¡´»ØèÁã´æà¾×èÍ·Ó§Ò¹µèÍ" );
		ebioskey( 0 );
	}
	hardretn( -1 );
}
예제 #4
0
파일: PIC.C 프로젝트: kytulendu/TW
void notavailable( void ) {
	savepic( );
	blockmsg( 5 );
	dispstrhgc( "¤ÓÊÑ觹ÕéÍÂÙèÃÐËÇèÒ§¡ÒþѲ¹Ò ! ¡´»ØèÁã´æ à¾×èÍ·Ó§Ò¹µèÍ", ( 14 + center_factor ) + 4, 5, REVERSEATTR );

	ebioskey( 0 );
	retpic( );
}
예제 #5
0
파일: KBD.C 프로젝트: kytulendu/TW
int readkbd( void ) {
	unsigned int c;
	c = ebioskey( 0 );
	if ( thaimode && ( ( c & 0xff00 ) < 0x4700 ) ) {       /* Ignore Keypad */
		c = thaikey( c );
	}
	return( c );
}
예제 #6
0
파일: ONSCRN.C 프로젝트: kytulendu/CW141
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);
}
예제 #7
0
파일: CW.C 프로젝트: kytulendu/TW
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( );
}
예제 #8
0
파일: MOVE.C 프로젝트: MegaGod/TW
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;
	}
}
예제 #9
0
파일: CSCRN.C 프로젝트: kytulendu/TW
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 );
}
예제 #10
0
파일: KBD.C 프로젝트: kytulendu/TW
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 );
}
예제 #11
0
파일: CSCRN.C 프로젝트: kytulendu/TW
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 );
}
예제 #12
0
파일: FILE.C 프로젝트: kytulendu/CW141
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);
}
예제 #13
0
파일: KBD.C 프로젝트: kytulendu/TW
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 );
}
예제 #14
0
파일: GETSTR.C 프로젝트: kytulendu/CW141
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);
}
예제 #15
0
파일: ONSCRN.C 프로젝트: kytulendu/CW141
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);
}
예제 #16
0
파일: GETSTR.C 프로젝트: kytulendu/CW141
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);
}
예제 #17
0
파일: CW.C 프로젝트: kytulendu/TW
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( &macro[0][0], &xCursorPos, &yCursorPos );
						break;
					case CF2KEY:
						insertmacro( &macro[1][0], &xCursorPos, &yCursorPos );
						break;
					case CF3KEY:
						insertmacro( &macro[2][0], &xCursorPos, &yCursorPos );
						break;
					case CF4KEY:
						insertmacro( &macro[3][0], &xCursorPos, &yCursorPos );
						break;
					case CF5KEY:
						insertmacro( &macro[4][0], &xCursorPos, &yCursorPos );
						break;
					case CF6KEY:
						insertmacro( &macro[5][0], &xCursorPos, &yCursorPos );
						break;
					case CF7KEY:
						insertmacro( &macro[6][0], &xCursorPos, &yCursorPos );
						break;
					case CF8KEY:
						insertmacro( &macro[7][0], &xCursorPos, &yCursorPos );
						break;
					case CF9KEY:
						insertmacro( &macro[8][0], &xCursorPos, &yCursorPos );
						break;
					case CF10KEY:
						insertmacro( &macro[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;
}
예제 #18
0
파일: SEARCH.C 프로젝트: kytulendu/TW
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 );
}