Пример #1
0
/*
 * Do a special thing (beep, flush, etc)
 */
static errr Term_xtra_emx(int n, int v)
{
	switch (n)
	{
		case TERM_XTRA_SHAPE:
		if (v)
		{
			v_ctype(curs_start, curs_end);
		}
		else
		{
			v_hidecursor();
		}
		return (0);

		case TERM_XTRA_NOISE:
		DosBeep(440, 50);
		return (0);

		case TERM_XTRA_FLUSH:
		while (!CheckEvents(TRUE));
		return 0;

		case TERM_XTRA_EVENT:

		/* Process an event */
		return (CheckEvents(!v));

		/* Success */
		return (0);
	}

	return (1);
}
Пример #2
0
char getchar(void) {
	byte result;
	byte cnt = 0;
	do
	{
		if (cnt == 0)
			v_showcursor();
		result = io_read(128);
		if (result == 255) {
			delay_ms(15);
			if (cnt == CURSOR_DELAY)
				v_hidecursor();
			if (++cnt == CURSOR_DELAY << 1)
				cnt = 0;
		}
	} while (result == 255);
	v_hidecursor();
	return result;
}
Пример #3
0
void vm_setcursorstyle(int style)
{
    if (_osmode == DOS_MODE)
    {
        if (vm_iscolorcard())
        {
            switch (style)
            {
            case CURSORHALF:
                vm_setcursorsize(4, 7);
                break;
            case CURSORFULL:
                vm_setcursorsize(0, 7);
                break;
            case CURSORNORM:
                vm_setcursorsize(7, 8);
                break;
            case CURSORHIDE:
                v_hidecursor();
                break;
            default:
                break;
            }
        }
        else
        {
            switch (style)
            {
            case CURSORHALF:
                vm_setcursorsize(8, 13);
                break;
            case CURSORFULL:
                vm_setcursorsize(0, 13);
                break;
            case CURSORNORM:
                vm_setcursorsize(11, 13);
                break;
            case CURSORHIDE:
                vm_setcursorsize(32, 32);
                break;
            default:
                break;
            }
        }
    }
    else
    {
        VIOCURSORINFO vi;

        switch (style)
        {
        case CURSORHALF:
            vi.yStart = -50;
            vi.cEnd = -100;
            vi.cx = 0;
            vi.attr = 0;
            VioSetCurType(&vi, 0);
            break;
        case CURSORFULL:
            vi.yStart = 0;
            vi.cEnd = -100;
            vi.cx = 0;
            vi.attr = 0;
            VioSetCurType(&vi, 0);
            break;
        case CURSORNORM:
            vi.yStart = -90;
            vi.cEnd = -100;
            vi.cx = 0;
            vi.attr = 0;
            VioSetCurType(&vi, 0);
            break;
        case CURSORHIDE:
            vi.yStart = -90;
            vi.cEnd = -100;
            vi.cx = 0;
            vi.attr = -1;
            VioSetCurType(&vi, 0);
            break;
        default:
            break;
        }
    }
}
Пример #4
0
void start_terminal() {
	char c;
	byte echo = 1, cnt = 0;

	write_inverse(6, 30, " SELECT BAUD RATE   ");
	write_inverse(7, 30, " 1: 4800            ");
	write_inverse(8, 30, " 2: 9600            ");
	write_inverse(9, 30, " 3: 19200           ");
	write_inverse(10, 30, " 4: 38400           ");
	write_inverse(11, 30, " 5: 57600           ");
	write_inverse(12, 30, " 6: 115200          ");

	do
	{
		c = getchar_nc();
	} while (!(c >= '1' && c <= '6'));
	io_write(170, c - '0');
	switch (c)
	{
		case '1':
			write_inverse(0, 20, "4800 BAUD");
			break;
		case '2':
			write_inverse(0, 20, "9600 BAUD");
			break;
		case '3':
			write_inverse(0, 20, "19200 BAUD");
			break;
		case '4':
			write_inverse(0, 20, "38400 BAUD");
			break;
		case '5':
			write_inverse(0, 20, "57600 BAUD");
			break;
		case '6':
			write_inverse(0, 20, "115200 BAUD");
			break;
	}
	
	v_cls();

	while (1) {
		if (cnt == 0)
			v_showcursor();
		c = io_read(128);
		if (((byte)c) == 255)
		{
			delay_ms(15);
			if (cnt == CURSOR_DELAY)
				v_hidecursor();
			if (++cnt == CURSOR_DELAY << 1)
				cnt = 0;
		} // if (c == 255)
		else
		{
			v_hidecursor();
			cnt = 0;

			if (c == 0)
			{
				// special key
				c = getchar();
				switch (c)
				{
					case 60: // F2
						echo = 1 - echo;
						if (echo)
							write_inverse(0, 0, " F2: ECHO ON ");
						else
							write_inverse(0, 0, " F2: ECHO OFF");
						break;
					case 66: // F8
						v_cls();
						break;
					case 68: // F10
						quit_app();
						break;
				} // switch (c)

			} // if (c == 0)
			else
			{
				io_write(171, c);

				if (echo)
				{
					if (c == 8)
						v_backspace();
					else
						putchar(c);
				} // if (echo)
			} // if (c == 0) else
		} // if (c == 255) else

		if (io_read(174))
		{
			v_hidecursor();
			do
			{
				c = io_read(173);
				if (c)
					putchar(c);
			} while (c);
		}
	} // while (1)
} // start_editor