[nanos
strick**20120326095939
 Ignore-this: 61cac505a2fe468f2855257568ec1af
] hunk ./terse-a1/src/terse/a1/TerseActivity.java 332
-					double secs = Static.floatAt(d, "secs", -1);
+					double nanos = Static.floatAt(d, "nanos", -1);
hunk ./terse-a1/src/terse/a1/TerseActivity.java 334
-							Static.fmt("%d ticks, %.3f secs", (long)ticks, secs),
+							Static.fmt("%d ticks, %.6f secs", (long)ticks, (double)nanos/1e9),
hunk ./terse-vm/src/terse/vm/Terp.java 359
-			float secsBefore = System.currentTimeMillis();
+			long nanosBefore = System.nanoTime();
hunk ./terse-vm/src/terse/vm/Terp.java 386
-			float secsAfter = System.currentTimeMillis();
+			long nanosAfter = System.nanoTime();
hunk ./terse-vm/src/terse/vm/Terp.java 388
-			result.dict.put(newStr("secs"), newNum(secsBefore - secsAfter));
-			say("<handle:query:> used %d ticks and %f secs.", before - after, secsBefore - secsAfter);
+			result.dict.put(newStr("nanos"), newNum(nanosAfter - nanosBefore));
+			say("<handle:query:> used %d ticks and %.9f secs.", before - after, (double)(nanosAfter - nanosBefore) / 1000000000.0);
hunk ./terse-vm/src/terse/vm/Ur.java 798
+		
+		// =meth SysCls "sys" secs
+		public static Num secs(Terp terp) {
+			return terp.newNum(System.currentTimeMillis() / 1000.0);
+		}
+		
+		// =meth SysCls "sys" nanos
+		public static Num nanos(Terp terp) {
+			return terp.newNum(System.nanoTime());
+		}
hunk ./terse-vm/src/terse/vm/Usr.java 14
-	private static int next_id = Math.abs((int) System.currentTimeMillis()) % 1499999999 + 101;
+	private static int next_oidInt = Math.abs((int) System.currentTimeMillis()) % 1499999999 + 101;
hunk ./terse-vm/src/terse/vm/Usr.java 17
-	private int usrId = 0; // Transient id, while in memory.
+	private int oidInt = 0; // Transient id, while in memory.
hunk ./terse-vm/src/terse/vm/Usr.java 28
-			return Integer.toString(usrId);
+			return Integer.toString(oidInt);
hunk ./terse-vm/src/terse/vm/Usr.java 34
-	public int usrId() {
-		if (usrId == 0) {
-			usrId = next_id;
-			++next_id;
+	public int oid() {
+		if (oidInt == 0) {
+			oidInt = next_oidInt;
+			++next_oidInt;
hunk ./terse-vm/src/terse/vm/Usr.java 39
-		return usrId;
+		return oidInt;
hunk ./terse-vm/src/terse/vm/Usr.java 61
-		z.cls.insts.put(z.usrId(), z); // Hack -- save all
+		z.cls.insts.put(z.oid(), z); // Hack -- save all
hunk ./terse-vm/src/terse/vm/Usr.java 65
+	
+	// =meth Usr "access" oid
+	public Num _oid() {
+		return terp().newNum(oid());
+	}
hunk ./terse-vm/src/terse/vm/Usr.java 72
-		terp.tUsrCls
-				.addMethod(new JavaMeth(
-						terp.tUsrCls,
-						"new",
-						"",
-						"Make a new instance.  "
-								+ "(This message is inherited to any subclass of Usr.)") {
-					public Ur apply(Frame f, Ur r, Ur[] args) {
-						Usr z = new Usr(r.asCls());
-						z.cls.insts.put(z.usrId(), z); // Hack -- save all
-														// insts.
-						return z;
-					}
-				});
+//		terp.tUsrCls
+//				.addMethod(new JavaMeth(
+//						terp.tUsrCls,
+//						"new",
+//						"",
+//						"Make a new instance.  "
+//								+ "(This message is inherited to any subclass of Usr.)") {
+//					public Ur apply(Frame f, Ur r, Ur[] args) {
+//						Usr z = new Usr(r.asCls());
+//						z.cls.insts.put(z.usrId(), z); // Hack -- save all
+//														// insts.
+//						return z;
+//					}
+//				});
hunk ./terse-vm/src/terse/vm/Usr.java 90
-				return terp.newNum(u.usrId());
+				return terp.newNum(u.oid());
hunk ./terse-vm/src/terse/vm/Usr.java 118
-					return u.usrId();
+					return u.oid();
hunk ./terse-vm/src/terse/vm/Usr.java 126
-			return u.usrId();
+			return u.oid();
hunk ./terse-vm/src/terse/vm/Usr.java 131
-				if (memory[i].usrId() == id) {
+				if (memory[i].oid() == id) {
hunk ./terse-vm/src/terse/vm/Wrap.java 264
+    // CMD meth SysCls "sys" secs TYPE Num NAME secs PARAMS {Terp terp}
+    // CLS SysCls GROUP "sys" METH secs REMARK ""
+
+    new JavaMeth(terp.wrap.clsSysCls, "secs", "") {
+      public Ur apply(Frame frame, Ur r, Ur[] args) {
+        Cls self = terp.wrap.clsSysCls;
+        return Sys.secs (terp);
+      }
+    };
+
+    // CMD meth SysCls "sys" nanos TYPE Num NAME nanos PARAMS {Terp terp}
+    // CLS SysCls GROUP "sys" METH nanos REMARK ""
+
+    new JavaMeth(terp.wrap.clsSysCls, "nanos", "") {
+      public Ur apply(Frame frame, Ur r, Ur[] args) {
+        Cls self = terp.wrap.clsSysCls;
+        return Sys.nanos (terp);
+      }
+    };
+