summaryrefslogtreecommitdiff
path: root/sys/src/boot
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@localhost>2011-05-15 14:34:37 +0000
committercinap_lenrek <cinap_lenrek@localhost>2011-05-15 14:34:37 +0000
commit38e42ab85717885003e1e3920e7b5342de7dc314 (patch)
treefb95f0f73ace4c5b3313f0cec3da689685a13403 /sys/src/boot
parentbf03cb30845bbd700d815a838d967258f830890e (diff)
9boot: replace dots by printing 64k block number in hex
Diffstat (limited to 'sys/src/boot')
-rw-r--r--sys/src/boot/pc/fat.c1
-rw-r--r--sys/src/boot/pc/sub.c26
2 files changed, 22 insertions, 5 deletions
diff --git a/sys/src/boot/pc/fat.c b/sys/src/boot/pc/fat.c
index adb4dae15..a81880b5c 100644
--- a/sys/src/boot/pc/fat.c
+++ b/sys/src/boot/pc/fat.c
@@ -144,7 +144,6 @@ read(void *f, void *data, int len)
if((fp->clust >> 4) == fat->eofmark)
return -1;
fp->lbaoff = (fp->clust - 2) * fat->clustsize;
- putc('.');
fp->clust = readnext(fp, fp->clust);
fp->lba = fp->lbaoff + fat->datalba;
}
diff --git a/sys/src/boot/pc/sub.c b/sys/src/boot/pc/sub.c
index 428bc8cf5..0836d82c3 100644
--- a/sys/src/boot/pc/sub.c
+++ b/sys/src/boot/pc/sub.c
@@ -85,13 +85,19 @@ readn(void *f, void *data, int len)
{
uchar *p, *e;
+ 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;
}
@@ -110,7 +116,7 @@ readline(void *f, char buf[64])
putc(*p = getc());
if(*p == '\r')
putc('\n');
- else if(*p == 0x08 && p > buf){
+ else if(*p == '\b' && p > buf){
p--;
continue;
}
@@ -149,6 +155,7 @@ timeout(int ms)
char *confend;
static void apmconf(int);
+static void e820conf(void);
char*
configure(void *f, char *path)
@@ -159,7 +166,9 @@ Clear:
kern = 0;
inblock = 0;
- confend = (char*)BOOTARGS;
+ memset(BOOTLINE, 0, BOOTLINELEN);
+
+ confend = BOOTARGS;
memset(confend, 0, BOOTARGSLEN);
Loop:
while((n = readline(f, line)) > 0){
@@ -187,6 +196,7 @@ Loop:
*confend++ = '\n';
print(line); print(crnl);
}
+ e820conf();
*confend = 0;
if(f){
@@ -331,9 +341,11 @@ bootkern(void *f)
ulong n;
Exec ex;
- e820conf();
+ print("boot");
+ print(crnl);
a20();
+
if(readn(f, &ex, sizeof(ex)) != sizeof(ex))
return "bad header";
if(beswal(ex.magic) != I_MAGIC)
@@ -342,16 +354,22 @@ bootkern(void *f)
e = (uchar*)(beswal(ex.entry) & ~0xF0000000UL);
t = e;
n = beswal(ex.text);
+
if(readn(f, t, n) != n)
goto Error;
d = (uchar*)PGROUND((ulong)t + n);
n = beswal(ex.data);
+
if(readn(f, d, n) != n)
goto Error;
close(f);
unload();
- memset(BOOTLINE, 0, BOOTLINELEN);
+
+ print("go!");
+ print(crnl);
+
jump(e);
+
Error:
return "i/o error";
}