Esempio n. 1
0
void movecursor(int row, int col)
{
    xorcursor();
    currow=row;
    curcol=col;
    xorcursor();
}
Esempio n. 2
0
void termputch(byte c)
{
    switch(c)
    {
        case 7: beep();
            return;
        case 8: xorcursor();
            if(curcol>0) curcol--;
             else curcol=0;
            xorcursor();
            return;
        case 11:
        case 12:
        case '\n': newline(); return;
        case '\r':
            if(LNM) crlf();
            else
            {
                xorcursor(); curcol=0; xorcursor();
            }
            return;
        default:
            ttyprint(c);
            return;
    }
}
Esempio n. 3
0
static void newline(void)
{
    xorcursor();
    currow++;
    if(currow>HEIGHT)
    {
        currow--;
        ttyscroll();
    }
    xorcursor();
}
Esempio n. 4
0
void crlf(void)
{
    xorcursor();
    curcol=0;
    currow++;
    if(currow>HEIGHT)
    {
        currow--;
        ttyscroll();
    }
    xorcursor();
}
Esempio n. 5
0
void reset_term(void)
{
    static byte i;
    ozcls();
    curcol=currow=0;
    LNM=0;
    xorcursor();
}
Esempio n. 6
0
static void setxorcursor(void)
{
     static byte c;
     register char *p;
     p=s+pos;
     c=*p;
     *p=0;
     x=x0+measurestring(s);
     *p=c;
     xorcursor();
}
Esempio n. 7
0
//extern int __LIB__ ozeditline(byte _x0,byte y0,char *s0,byte slen,byte xlen)
//int ozeditline(byte _x0,byte y0,char *s0,byte slen,byte xlen)
int ozeditline(int _x0, int y0, char* s0, int slen, int xlen)
{
    static char c;
    static byte l1, l2;
    static unsigned k;
    static byte i;
    register char* p;
    switch (ozgetfont()) {
    case FONT_PC_NORMAL:
    case FONT_OZ_NORMAL:
        height = 8;
        break;
    default:
        height = 13;
        break;
    }
    x = x0 = _x0;
    y = y0;
    if ((int)x0 + (int)xlen > 239 || (int)y + (int)height > 79)
        return OZEDITLINE_ERROR;
    xlen--;
    s = s0;
    pos = strlen(s0);
    if (pos >= slen)
        return OZEDITLINE_ERROR;
    ozputs(x0, y, s);
    setcursor();
    xorcursor();
    while (1) {
        switch (k = getch()) {
        case KEY_MAIN:
        case KEY_SCHEDULE:
        case KEY_MEMO:
        case KEY_TELEPHONE:
        case KEY_POWER:
        case KEY_MYPROGRAMS:
            ozexitto(k);
        case KEY_BACKLIGHT:
            oztogglelight();
            break;
        case KEY_LEFT:
            if (pos > 0) {
                pos--;
                movecursor();
            }
            break;
        case KEY_RIGHT:
            if (s[pos]) {
                pos++;
                movecursor();
            }
            break;
        case KEY_LOWER_ESC:
        case KEY_UPPER_ESC:
        case 27:
            xorcursor();
            return OZEDITLINE_CANCEL;
        case KEY_LOWER_ENTER:
        case KEY_UPPER_ENTER:
        case '\r':
        case '\n':
            xorcursor();
            return strlen(s);
        case KEY_BACKSPACE:
        case KEY_BACKSPACE_16K:
            if (pos > 0) {
                pos--;
                p = s + pos;
                c = *p;
                while (*p) {
                    *p = p[1];
                    p++;
                }
                xorcursor();
                l1 = ozputs(x0, y, s);
                l2 = ozputch(l1, -1, c);
                for (i = l1; i < l2; i++) {
                    _ozvline(i, y, height, WHITE);
                }
                ozputs(x0, y, s);
                setcursor();
                xorcursor();
            }
            break;
        default:
            if (k < 127 && ozputch(0, -1, k) + ozputs(0, -1, s) < xlen
                && (l1 = 1 + strlen(s)) < slen) {
                xorcursor();
                for (i = l1; i > pos; i--)
                    s[i] = s[i - 1];
                if (s[pos] == 0)
                    s[pos + 1] = 0;
                s[pos] = k;
                pos++;
                ozputs(x0, y, s);
                setcursor();
                xorcursor();
            }
            break;
        }
    }
    return OZEDITLINE_ERROR;
}
Esempio n. 8
0
static void movecursor(void)
{
    xorcursor();
    setcursor();
    xorcursor();
}
Esempio n. 9
0
int ozeditline1(byte _x0,byte y0,char *s0,byte slen,byte _xlen)
{
    static char c;
    static byte l1;
    static unsigned k;
    static byte i;
    register char *p;
    xlen=_xlen;
    /*
    switch(ozgetfont())
    {
        case FONT_PC_NORMAL:
        case FONT_OZ_NORMAL:
            height=8;
            break;
        default:
            height=13;
            break;
    }
    */
    height=ozgetfontheight(ozgetfont());
    x=x0=_x0;
    y1=y0;
    if((int)x0+(int)xlen>239 || (int)y1+(int)height>79)
        return OZEDITLINE_ERROR;
    xlen--;
    s=s0;
    pos=strlen(s0);
    if(pos>=slen) return OZEDITLINE_ERROR;
    putit();
    setxorcursor();
    for(;;)
        switch(k=getch())
        {
            case KEY_BACKLIGHT:
                oztogglelight();
                break;
            case KEY_LEFT:
              if(pos>0)
              {
                 pos--;
                 movecursor();
              }
              break;
            case KEY_RIGHT:
              if(s[pos])
              {
                 pos++;
                 movecursor();
              }
              break;
            case KEY_MAIN:
            case KEY_SCHEDULE:
            case KEY_MEMO:
            case KEY_TELEPHONE:
            case KEY_MYPROGRAMS:
            case KEY_UPPER_ESC:
            case 27:
              xorcursor();
              return OZEDITLINE_CANCEL;
            case KEY_LOWER_ENTER:
            case KEY_UPPER_ENTER:
/*            case '\r': */
            case '\n':
                 xorcursor();
                 return strlen(s);
            case KEY_BACKSPACE:
              if(pos>0)
              {
                 pos--;
                 p=s+pos;
                 c=*p;
                 while(*p)
                 {
                    *p=p[1];
                    p++;
                 }
                 xorcursor();
                 _ozfilledbox(putit(),y1,measurechar(c),height,WHITE);
/*                 putit(); */
                 setxorcursor();
               }
               break;
            default:
               if(k<127 && (byte)measurechar(k)+(byte)measurestring(s) < xlen
                 && (l1=strlen(s)+1) < slen)
               {
                 xorcursor();
                 for(i=l1;i>pos;i--)
                    s[i]=s[i-1];
/*                 if(s[pos]==0) s[pos+1]=0; */
                 s[pos]=k;
                 pos++;
                 putit();
                 setxorcursor();
               }
               break;
          }
}