# HG changeset patch # User yiyus@1936 # Date 1266781723 -3600 # Node ID b7d5185d0cf0ab50bd85669e45a42199054781cd # Parent d5f450d8fec133f7fde5911e5f3b00424cd56a48 fixes. float enabled accept diff -r d5f450d8fec1 -r b7d5185d0cf0 inout.go --- a/inout.go Sun Feb 21 18:07:23 2010 +0100 +++ b/inout.go Sun Feb 21 20:48:43 2010 +0100 @@ -6,13 +6,20 @@ ( Input Output extension instructions: ) 1 7 << - dup : $int? ( a-xf ) [ 1 or , ] ; dup : . ( x- ) [ 2 or , ] ; - dup : $float? ( a-xf ) [ 3 or , ] ; dup : f. ( x- ) [ 4 or , ] ; - dup : $accept ( ac- ) [ 5 or , ] ; dup : $. ( a- ) [ 6 or , ] ; + dup : >int? ( a-xf ) [ 1 or , ] ; dup : . ( x- ) [ 2 or , ] ; + dup : >float? ( a-xf ) [ 3 or , ] ; dup : f. ( x- ) [ 4 or , ] ; + dup : int? if .data rdrop listen ;then drop + tib >float? if .data rdrop listen ;then drop + ; + ' (accept) is accept */ package ngaro @@ -32,7 +39,7 @@ WriteInt ReadFloat WriteFloat - AcceptString // Not implemented + AcceptString WriteString ) @@ -76,7 +83,7 @@ cs.data[*cs.sp] = 0 } else { cs.data[*cs.sp-1] = i - cs.data[*cs.sp] = 1 + cs.data[*cs.sp] = -1 } case WriteInt: fmt.Fprint(ioext.out, cs.data[*cs.sp]) @@ -88,19 +95,19 @@ cs.data[*cs.sp] = 0 } else { cs.data[*cs.sp-1] = ftoi(f) - cs.data[*cs.sp] = 1 + cs.data[*cs.sp] = -1 } case WriteFloat: fmt.Fprint(ioext.out, itof(cs.data[*cs.sp])) *cs.sp-- case AcceptString: var c [1]byte - a := cs.data[*cs.sp-1] + a := cs.data[*cs.sp] var cont func() bool - if cs.data[*cs.sp] == -1 { + if cs.data[*cs.sp-1] == -1 { cont = func() bool { return c[0] != ' ' && c[0] != '\n' && c[0] != '\t' } } else { - cont = func() bool { return c[0] != byte(cs.data[*cs.sp]) } + cont = func() bool { return c[0] != byte(cs.data[*cs.sp-1]) } } _, err := ioext.in.Read(c[0:]) for ; err == nil && cont(); _, err = ioext.in.Read(c[0:]) { @@ -108,7 +115,7 @@ a++ } cs.img[a] = 0 - *cs.sp-- + *cs.sp -= 2 case WriteString: for i := cs.data[*cs.sp]; i < len(cs.img); i++ { fmt.Fprintf(ioext.out, "%c", byte(cs.img[i]))