Changeset 90 for trunk


Ignore:
Timestamp:
Jun 29, 2017, 11:00:53 AM (7 years ago)
Author:
max@…
Message:

scroll for real, and add %c

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/hal/x86_64/core/x86_printf.c

    r84 r90  
    5252static void check_scroll()
    5353{
    54         char *base = (uint64_t)iom_base + (0xB8000 - IOM_BEGIN);
     54        char *base = (char *)iom_base + (0xB8000 - IOM_BEGIN);
    5555        char *src, *dst;
    5656        size_t i;
     
    6767        }
    6868
    69         memset(base, 0, CONS_X_SIZE * 2 * CONS_Y_SIZE);
     69        memset(&cons_buffer[0] + (CONS_X_SIZE * 2) * (CONS_Y_SIZE - 1),
     70            0, (CONS_X_SIZE * 2));
    7071
    7172        cons_ptr -= (CONS_X_SIZE * 2);
     
    135136}
    136137
     138static char alphabet[] = "abcdefghijklmnopqrstuvwxyz";
     139
    137140void x86_printf(char *s, ...)
    138141{
    139142        va_list ap;
    140143
    141         char buf[16];
     144        char buf[64];
    142145        int i, j, size, buflen, neg;
    143146
     
    162165                        }
    163166
    164                         if (c == 'z') {
     167                        if (c == 'c') {
     168                                ival = va_arg(ap, int);
     169                                if ((ival - 97) > sizeof(alphabet)) {
     170                                        x86_printf("(unknown:%d)", ival);
     171                                } else {
     172                                        x86_putc(alphabet[ival - 97]);
     173                                }
     174                        } else if (c == 'z') {
    165175                                zval = va_arg(ap, uint64_t);
    166176                                x86_ztoa(buf, zval, 10);
Note: See TracChangeset for help on using the changeset viewer.