diff kernel.rhope @ 101:f4fc0a98088a

Fixed some bugs that were preventing compiled compiler from working correctly. Need to address memory usage
author Mike Pavone <pavone@retrodev.com>
date Mon, 09 Aug 2010 23:53:20 -0400
parents f51c4c17457c
children 8aedae4f4ddd
line wrap: on
line diff
--- a/kernel.rhope	Mon Aug 09 02:03:57 2010 -0400
+++ b/kernel.rhope	Mon Aug 09 23:53:20 2010 -0400
@@ -55,51 +55,86 @@
 	read[filedes(Int32,Naked),buf(Array,Raw Pointer,Mutable),nbyte(Int64,Naked):read(Int64,Naked),buf]
 }
 
-_String 32[n,buf:out]
+Trunc UInt8@UInt8[in:out]
 {
-	If[[n] < [10u32]]
+	out <- in
+}
+
+__String Int[n,buf,ten:out]
+{
+	If[[n] < [ten]]
 	{
 		byte <- [[n]Trunc UInt8] + [48u8]
 		out <- [buf]Append[byte]
 	}{
-		next <- [n]/[10u32]
+		next <- [n]/[ten]
 		
-		byte <- [[[n]-[[next]*[10u32]]]Trunc UInt8] + [48u8]
-		out <- [_String 32[next, buf]]Append[byte]
+		byte <- [[[n]-[[next]*[ten]]]Trunc UInt8] + [48u8]
+		out <- [__String Int[next, buf, ten]]Append[byte]
 	}
 }
 
-_String Int32[n:out]
+_String Int[n,zero,ten:out]
 {
-	If[[n] < [0i32]]
+	If[[n] < [zero]]
 	{
 		buf <- [Array[]]Append[45u8]
 	}{
 		buf <- Array[]
 	}
 	val <- Abs UInt[n]
-	out <- _String 32[val, buf]
+	out <- __String Int[val, buf, ten]
+}
+
+String@Int64[n:out]
+{
+	out <- String[_String Int[n, 0i64, 10u64]]
+}
+
+String@UInt64[n:out]
+{
+	out <- String[__String Int[n, Array[], 10u64]]
 }
 
 String@Int32[n:out]
 {
-	out <- String[_String Int32[n]]
+	out <- String[_String Int[n, 0i32, 10u32]]
+}
+
+String@UInt32[n:out]
+{
+	out <- String[__String Int[n, Array[], 10u32]]
+}
+
+String@Int16[n:out]
+{
+	out <- String[_String Int[n, 0i16, 10u16]]
+}
+
+String@UInt16[n:out]
+{
+	out <- String[__String Int[n, Array[], 10u16]]
+}
+
+String@Int8[n:out]
+{
+	out <- String[_String Int[n, 0i8, 10u8]]
+}
+
+String@UInt8[n:out]
+{
+	out <- String[__String Int[n, Array[], 10u8]]
 }
 
 Print@Int32[n:out]
 {
-	fbuf <- [_String Int32[n]]Append[10u8]
+	fbuf <- [_String Int[n, 0i32, 10u32]]Append[10u8]
 	out <- write[1i32, fbuf, Int64[[fbuf]Length >>]]
 }
 
-String@UInt32[n:out]
-{
-	out <- String[_String 32[n, Array[]]]
-}
-
 Print@UInt32[n:out]
 {
-	fbuf <- [_String 32[n, Array[]]]Append[10u8]
+	fbuf <- [__String Int[n, Array[], 10u32]]Append[10u8]
 	out <- write[1i32, fbuf, Int64[[fbuf]Length >>]]
 }