// library.trek.tc - lrb - 4/8/18 /* print an integer with a leading blank pn int n [ MC " %d", n, 101 ] /* put a null terminated string as a new line pl char b(0)[ MC "%c%s", 10, b, 101 ] /* put a null terminated string ps char b(0)[ MC "%s", b, 101 ] /* get a number from the terminal. Insist on it! gn [ char b(20) int v(0) while(1)[ gs b if(atoi(b,v)) return v(0) ps "number required " ] ] /* like num, but includes an optional leading blanks and sign atoi char b(0); int v(0) [ int k,s char c s=1 c=b(0) while((c==' ')+(c=='-')+(c=='+')) [ if(c=='-') s = -1 c = b(k=k+1) ] k = k+num(b+k,v) v(0) = s*v(0) return k ] /* convert a string of digits (without leading sign) to an int, returning the /* result in v. Note v is a pointer to the int. The number of digits examined /* is returned. Either a non digit, or the 11th stops the conversion. num char b(0); int v(0) [ int k v(0)=0 while(k<10)[ if( (b(k)<'0') + (b(k)>'9') ) break; v(0) = 10*v(0) + b(k)-'0' k = k+1 ] return k; ] /* returns a number between low and range, inclusive random int low,range [ int temp seed = seed * 1103515245 + 12345 temp = (seed / 65536) if (temp == 0) [ temp = seed if (temp < 0) temp = -temp return temp % range + low ] if (temp < 0) temp = -temp return temp % range + low ] endlibrary /* system entry */ _MAIN [ pl "----tc system level, calling appl main" pl "" main(); pl "----tc system level, back from main" ]