Subversion Repositories HelenOS

Rev

Rev 4537 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4537 Rev 4668
Line 85... Line 85...
85
static unsigned attr_to_ega_style(const attrs_t *a);
85
static unsigned attr_to_ega_style(const attrs_t *a);
86
static uint8_t ega_glyph(wchar_t ch);
86
static uint8_t ega_glyph(wchar_t ch);
87
 
87
 
88
static void clrscr(void)
88
static void clrscr(void)
89
{
89
{
90
    int i;
90
    unsigned i;
91
   
91
   
92
    for (i = 0; i < scr_width * scr_height; i++) {
92
    for (i = 0; i < scr_width * scr_height; i++) {
93
        scr_addr[i * 2] = ' ';
93
        scr_addr[i * 2] = ' ';
94
        scr_addr[i * 2 + 1] = style;
94
        scr_addr[i * 2 + 1] = style;
95
    }
95
    }
Line 127... Line 127...
127
    pio_write_8(EGA_IO_BASE + 1, stat & (~(1 << 5)));
127
    pio_write_8(EGA_IO_BASE + 1, stat & (~(1 << 5)));
128
}
128
}
129
 
129
 
130
static void scroll(int rows)
130
static void scroll(int rows)
131
{
131
{
132
    int i;
132
    unsigned i;
-
 
133
 
133
    if (rows > 0) {
134
    if (rows > 0) {
134
        memmove(scr_addr, ((char *) scr_addr) + rows * scr_width * 2,
135
        memmove(scr_addr, ((char *) scr_addr) + rows * scr_width * 2,
135
            scr_width * scr_height * 2 - rows * scr_width * 2);
136
            scr_width * scr_height * 2 - rows * scr_width * 2);
136
        for (i = 0; i < rows * scr_width; i++)
137
        for (i = 0; i < rows * scr_width; i++)
137
            (((short *) scr_addr) + scr_width * scr_height - rows *
138
            (((short *) scr_addr) + scr_width * scr_height - rows *
Line 316... Line 317...
316
            retval = 0;
317
            retval = 0;
317
            break;
318
            break;
318
        case FB_GET_CSIZE:
319
        case FB_GET_CSIZE:
319
            ipc_answer_2(callid, EOK, scr_width, scr_height);
320
            ipc_answer_2(callid, EOK, scr_width, scr_height);
320
            continue;
321
            continue;
-
 
322
        case FB_GET_COLOR_CAP:
-
 
323
            ipc_answer_1(callid, EOK, FB_CCAP_INDEXED);
-
 
324
            continue;
321
        case FB_CLEAR:
325
        case FB_CLEAR:
322
            clrscr();
326
            clrscr();
323
            retval = 0;
327
            retval = 0;
324
            break;
328
            break;
325
        case FB_PUTCHAR:
329
        case FB_PUTCHAR:
Line 343... Line 347...
343
            cursor_goto(col, row);
347
            cursor_goto(col, row);
344
            retval = 0;
348
            retval = 0;
345
            break;
349
            break;
346
        case FB_SCROLL:
350
        case FB_SCROLL:
347
            i = IPC_GET_ARG1(call);
351
            i = IPC_GET_ARG1(call);
348
            if (i > scr_height || i < -((int) scr_height)) {
352
            if (i > (int) scr_height || i < -((int) scr_height)) {
349
                retval = EINVAL;
353
                retval = EINVAL;
350
                break;
354
                break;
351
            }
355
            }
352
            scroll(i);
356
            scroll(i);
353
            retval = 0;
357
            retval = 0;