diff options
| -rw-r--r-- | sys/src/boot/pc/fns.h | 1 | ||||
| -rw-r--r-- | sys/src/boot/pc/l.s | 3 | ||||
| -rw-r--r-- | sys/src/boot/pc/sub.c | 66 |
3 files changed, 36 insertions, 34 deletions
diff --git a/sys/src/boot/pc/fns.h b/sys/src/boot/pc/fns.h index 8409fc421..8f80c38e6 100644 --- a/sys/src/boot/pc/fns.h +++ b/sys/src/boot/pc/fns.h @@ -1,5 +1,6 @@ /* handy strings in l.s */ extern char origin[]; +extern char uart; extern char hex[]; extern char bootname[]; diff --git a/sys/src/boot/pc/l.s b/sys/src/boot/pc/l.s index b7f925ae9..44a22a266 100644 --- a/sys/src/boot/pc/l.s +++ b/sys/src/boot/pc/l.s @@ -289,6 +289,9 @@ TEXT bootname(SB), $0 #endif +TEXT uart(SB), $0 + BYTE $0xff + TEXT hex(SB), $0 BYTE $'0'; BYTE $'1'; BYTE $'2'; BYTE $'3'; BYTE $'4'; BYTE $'5'; BYTE $'6'; BYTE $'7'; diff --git a/sys/src/boot/pc/sub.c b/sys/src/boot/pc/sub.c index f1b931cc2..8881bffe9 100644 --- a/sys/src/boot/pc/sub.c +++ b/sys/src/boot/pc/sub.c @@ -3,8 +3,6 @@ #include "fns.h" #include "mem.h" -int uart = -1; - void putc(int c) { @@ -24,25 +22,25 @@ print(char *s) } int -getc(void) -{ - int c; - - c = kbdgetc(); - if(c == 0 && uart != -1) - c = uartgetc(uart); - return c & 0x7f; -} - -void -memset(void *dst, int v, int n) +readn(void *f, void *data, int len) { - uchar *d = dst; + uchar *p, *e; - while(n > 0){ - *d++ = v; - n--; + putc(' '); + p = data; + e = p + len; + while(p < e){ + if(((ulong)p & 0xF000) == 0){ + putc('\b'); + putc(hex[((ulong)p>>16)&0xF]); + } + if((len = read(f, p, e - p)) <= 0) + break; + p += len; } + putc('\b'); + + return p - (uchar*)data; } void @@ -99,26 +97,26 @@ strchr(char *s, int c) return nil; } -int -readn(void *f, void *data, int len) +void +memset(void *dst, int v, int n) { - uchar *p, *e; + uchar *d = dst; - putc(' '); - p = data; - e = p + len; - while(p < e){ - if(((ulong)p & 0xF000) == 0){ - putc('\b'); - putc(hex[((ulong)p>>16)&0xF]); - } - if((len = read(f, p, e - p)) <= 0) - break; - p += len; + while(n > 0){ + *d++ = v; + n--; } - putc('\b'); +} - return p - (uchar*)data; +int +getc(void) +{ + int c; + + c = kbdgetc(); + if(c == 0 && uart != -1) + c = uartgetc(uart); + return c; } static int |
