: vector create ( n -- ) 0 do , loop does> ( n -- ) swap cells + @ execute ; : ,I dup c@ C, ; : ,V dup 1 + c@ C, ; : ,X dup 2 + c@ C, ; :noname ,I ,X drop ; :noname ,V ,I ,I ,I drop ; :noname ,V ,I ,I drop ; :noname ,V ,I drop ; :noname ,V drop ; :noname ,I ,V drop ; :noname ,I ,I ,I drop ; :noname ,I ,I drop ; :noname ,I drop ; ' drop ( 0 : no output ) 10 vector ,digit : roman-rec ( numerals n -- ) 10 /mod dup if >r over 2 + r> recurse else drop then ,digit ; : roman ( n -- c-addr u ) dup 0 4000 within 0= abort" EX LIMITO!" HERE SWAP s" IVXLCDM" drop swap roman-rec HERE OVER - ; \ adjust to convert 00 digits : nulla.obliterate ( nHH nMM --- nHH' nMM') swap dup 0= \ if nHH = 0 if drop 24 then swap dup 0= \ if nMM = 0 if drop 1- 60 then ; \ lopp that display time in roman numerals : clepsydra ( ---) 24 0 do 60 0 do j i nulla.obliterate swap roman type ." :" roman type cr key drop loop loop ;