git: 9front

Download patch

ref: 4e74323c047379cabe16bc114f245b7478bc5880
parent: 940edd1da5336e9f2695260670a620f9047b5012
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Sun Feb 17 23:16:33 EST 2013

9boot: fix 9bootiso

rearrange sub.c for putc(), readn(), memcmp(), memmove(), strchr() and strlen()
and uart to fit into the first 2K of the image.

--- 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[];
 
--- a/sys/src/boot/pc/l.s
+++ b/sys/src/boot/pc/l.s
@@ -289,6 +289,9 @@
 
 #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';
--- 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 @@
 }
 
 int
-getc(void)
+readn(void *f, void *data, int len)
 {
-	int c;
+	uchar *p, *e;
 
-	c = kbdgetc();
-	if(c == 0 && uart != -1)
-		c = uartgetc(uart);
-	return c & 0x7f;
-}
-
-void
-memset(void *dst, int v, int n)
-{
-	uchar *d = dst;
-
-	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 @@
 	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
--