' Gray code PROGRAM "graycode" VERSION "0.0001" DECLARE FUNCTION Entry() INTERNAL FUNCTION Encode(v&) INTERNAL FUNCTION Decode(v&) FUNCTION Entry() PRINT "decimal binary gray decoded" FOR i& = 0 TO 31 g& = Encode(i&) d& = Decode(g&) PRINT FORMAT$(" ##", i&); " "; BIN$(i&, 5); " "; BIN$(g&, 5); PRINT " "; BIN$(d&, 5); FORMAT$(" ##", d&) NEXT i& END FUNCTION FUNCTION Encode(v&) END FUNCTION v& ^ (v& >> 1) FUNCTION Decode(v&) result& = 0 DO WHILE v& > 0 result& = result& ^ v& v& = v& >> 1 LOOP END FUNCTION result& END PROGRAM