main pita/uxn12 / etc / tests / datetime.tal
 1( 54K . Datetime Test )
 2
 3|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1
 4|c0 @DateTime &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1
 5|0050 @Varvara/version
 6
 7|100
 8
 9@on-reset ( -> )
10	;meta #06 DEO2
11	.DateTime/year DEI2k dec/<print>
12	[ LIT "- ] .Console/write DEO
13	INC INC DEIk INC <print-dec-pad>
14	[ LIT "- ] .Console/write DEO
15	INC DEI <print-dec-pad>
16	#0a18 DEO
17	( | .. )
18	;dict/date str/<print>
19	[ LIT2 00 -DateTime/dotw ] DEI #20 SFT ;dict/days ADD2 str/<print>
20	[ LIT2 ", 18 ] DEO
21	#2018 DEO
22	[ LIT2 00 -DateTime/month ] DEI #20 SFT ;dict/months ADD2 str/<print>
23	#2018 DEO
24	[ LIT2 00 -DateTime/day ] DEI dec/<print>
25	[ LIT2 ", 18 ] DEO
26	#2018 DEO
27	.DateTime/year DEI2 dec/<print>
28	#0a18 DEO
29	( | .. )
30	;dict/time str/<print>
31	.DateTime/hour DEIk <print-dec-pad>
32	[ LIT2 ": 18 ] DEO
33	INC DEIk <print-dec-pad>
34	[ LIT2 ": 18 ] DEO
35	INC DEI <print-dec-pad>
36	#0a18 DEO
37	( | .. )
38	;dict/doty str/<print>
39	.DateTime/doty DEI2 dec/<print>
40	#0a18 DEO
41	#800f DEO
42	BRK
43
44@meta 00
45	( name ) "Datetime 20 "Device 20 "Test(80K) 0a
46	( details ) "Testing 20 "Program 0a
47	( author ) "By 20 "Devine 20 "Lu 20 "Linvega 0a
48	( date ) "24 20 "Jun 20 "2026 00
49	( . ) 01
50	( - ) 56 =Varvara/version
51
52@<print-dec-pad> ( byte -- )
53	#0a DIVk dec/<emit>
54	DIVk MUL SUB
55	( >> )
56
57@dec/<emit> ( byte -- )
58	LIT "0 ADD #18 DEO
59	JMP2r
60
61@str/<print> ( str* -- )
62	LDAk DUP ?{ POP POP2 JMP2r }
63	#18 DEO
64	INC2 !/<print>
65
66@dec/<print> ( short* -- )
67	#2710 [ LIT2r 00fb ]
68	&>w
69		DIV2k #000a DIV2k MUL2 SUB2 SWPr EQUk OVR STHkr EQU AND ?{ DUP dec/<emit>
70			INCr }
71		POP2 #000a DIV2 SWPr INCr STHkr ?&>w
72	POP2r POP2 POP2 JMP2r
73
74(
75@|assets )
76
77@dict/date "The 20 "date 20 "is: 20 $1
78	&time "The 20 "time 20 "is: 20 $1
79	&doty "The 20 "day 20 "of 20 "the 20 "year 20 "is: 20 $1
80	&months [
81	"Jan $1 "Feb $1 "Mar $1 "Apr $1
82	"May $1 "Jun $1 "Jul $1 "Aug $1
83	"Sep $1 "Oct $1 "Nov $1 "Dec $1 ]
84	&days [
85	"Sun $1 "Mon $1 "Tue $1 "Wed $1
86	"Thu $1 "Fri $1 "Sat $1 ]
87