( usage: uxncli datetime.rom ) |10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1 |c0 @DateTime &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 |0100 @on-reset ( -> ) <print-date-num> #0a .Console/write DEO <print-date-str> #0a .Console/write DEO <print-time-num> #0a .Console/write DEO <print-doty> #0a .Console/write DEO #800f DEO BRK @<print-date-num> ( -- ) .DateTime/year DEI2k <print-dec> [ LIT "- ] .Console/write DEO INC INC DEIk INC <print-dec-pad> [ LIT "- ] .Console/write DEO INC DEI !<print-dec-pad> @<print-date-str> ( -- ) ;dict/date <print-str> [ LIT2 00 -DateTime/dotw ] DEI #20 SFT ;week-txt ADD2 <print-str> [ LIT2 20 ", ] #18 DEO #18 DEO [ LIT2 00 -DateTime/month ] DEI #20 SFT ;month-txt ADD2 <print-str> #2018 DEO [ LIT2 00 -DateTime/day ] DEI <print-dec> [ LIT2 20 ", ] #18 DEO #18 DEO .DateTime/year DEI2 !<print-dec> @<print-time-num> ( -- ) ;dict/time <print-str> .DateTime/hour DEIk <print-dec-pad> [ LIT2 ": 18 ] DEO INC DEIk <print-dec-pad> [ LIT2 ": 18 ] DEO INC DEI !<print-dec-pad> @<print-str> ( str* -- ) &w ( -- ) LDAk #18 DEO INC2 LDAk ?&w POP2 JMP2r @<print-doty> ( -- ) ;dict/doty <print-str> .DateTime/doty DEI2 ( >> ) @<print-dec> ( short* -- ) #2710 [ LIT2r 00fb ] &w ( -- ) DIV2k #000a DIV2k MUL2 SUB2 SWPr EQUk OVR STHkr EQU AND ?&>skip DUP <emit-dec> INCr &>skip POP2 #000a DIV2 SWPr INCr STHkr ?&w POP2r POP2 POP2 JMP2r @<print-dec-pad> ( byte -- ) #0a DIVk <emit-dec> DIVk MUL SUB ( >> ) @<emit-dec> ( byte -- ) LIT "0 ADD #18 DEO JMP2r ( @|assets ) @week-txt [ "Sun $1 "Mon $1 "Tue $1 "Wed $1 "Thu $1 "Fri $1 "Sat $1 ] @month-txt [ "Jan $1 "Feb $1 "Mar $1 "Apr $1 "May $1 "Jun $1 "Jul $1 "Aug $1 "Sep $1 "Oct $1 "Nov $1 "Dec $1 ] @dict ( ) &date "The 20 "date 20 "is: 20 $1 &time "The 20 "time 20 "is: 20 $1 &doty "The 20 "day 20 "of 20 "the 20 "year 20 "is: 20 $1