: based-exec ( i*x base xt -- j*x ) base @ >r swap base ! execute r> base ! ; : eval-word ( i*x -- j*x ) parse-word evaluate ; : based-eval ( newbase "word" -- ) ['] eval-word based-exec ; : based ( newbase -- ) state @ if ' postpone literal postpone based-exec else based-eval then ; immediate : _ ( "number" -- ) state @ if -2 cells allot here cell+ @ then based-eval ; immediate : test2 2 _ 10 . ; : test16 16 _ 10 . ; : hex. 16 based . ; : oct. 8 based . ; test2 2 _ 10 . cr test16 16 _ 10 . cr 255 hex. 255 16 based . cr 255 oct. 255 8 based . cr