diff --git a/projects/examples/devices/datetime.tal b/projects/examples/devices/datetime.tal new file mode 100644 index 0000000..235a35a --- /dev/null +++ b/projects/examples/devices/datetime.tal @@ -0,0 +1,85 @@ +|c0 @DateTime &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 + +|0100 + + ( date ) + ;dict/date pstr + [ LIT2 00 -DateTime/dotw ] DEI #20 SFT ;week-txt ADD2 pstr + [ LIT2 20 ", ] #18 DEO #18 DEO + [ LIT2 00 -DateTime/month ] DEI #20 SFT ;month-txt ADD2 pstr + #2018 DEO + [ LIT2 00 -DateTime/day ] DEI pdec + [ LIT2 20 ", ] #18 DEO #18 DEO + .DateTime/year DEI2 pdec + #0a18 DEO + + ( time ) + ;dict/time pstr + [ LIT2 00 -DateTime/hour ] DEI pdec-pad + LIT ": #18 DEO + [ LIT2 00 -DateTime/minute ] DEI pdec-pad + LIT ": #18 DEO + [ LIT2 00 -DateTime/second ] DEI pdec-pad + #0a18 DEO + + #800f DEO + +BRK + +@pstr ( str* -- ) + + LDAk ?&w POP2 JMP2r + &w + LDAk #18 DEO + INC2 LDAk ?&w + POP2 + +JMP2r + +@pdec-pad ( byte -- ) + + #0a DIVk emit + DIVk MUL SUB emit + +JMP2r + +@pdec ( short* -- ) + + #00 ,&z STR + #2710 pdec/parse + #03e8 pdec/parse + #0064 pdec/parse + #000a pdec/parse + NIP emit + +JMP2r + +&parse ( short* den* -- short* ) + + DIV2k DUPk [ LIT &z $1 ] EQU ?&skip + DUP emit #ff ,&z STR + &skip POP MUL2 SUB2 + +JMP2r + +@emit ( num -- ) + + 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 +