commit cbc576d

Devie Lu Linvega  ·  2025-12-27 04:39:43 +0000 UTC
parent be5bded
Added datetime example
2 files changed,  +82, -1
+77, -0
 1@@ -0,0 +1,77 @@
 2+( usage: uxncli datetime.rom )
 3+
 4+|10 @Console &vector $2 &read $1 &pad $4 &type $1 &write $1 &error $1
 5+|c0 @DateTime &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1
 6+
 7+|100
 8+
 9+@on-reset ( -> )
10+	.DateTime/year DEI2k dec/<print>
11+	[ LIT "- ] .Console/write DEO
12+	INC INC DEIk INC <print-dec-pad>
13+	[ LIT "- ] .Console/write DEO
14+	INC DEI <print-dec-pad>
15+	#0a18 DEO
16+	( | .. )
17+	;dict/date str/<print>
18+	[ LIT2 00 -DateTime/dotw ] DEI #20 SFT ;dict/days ADD2 str/<print>
19+	[ LIT2 ", 18 ] DEO
20+	#2018 DEO
21+	[ LIT2 00 -DateTime/month ] DEI #20 SFT ;dict/months ADD2 str/<print>
22+	#2018 DEO
23+	[ LIT2 00 -DateTime/day ] DEI dec/<print>
24+	[ LIT2 ", 18 ] DEO
25+	#2018 DEO
26+	.DateTime/year DEI2 dec/<print>
27+	#0a18 DEO
28+	( | .. )
29+	;dict/time str/<print>
30+	.DateTime/hour DEIk <print-dec-pad>
31+	[ LIT2 ": 18 ] DEO
32+	INC DEIk <print-dec-pad>
33+	[ LIT2 ": 18 ] DEO
34+	INC DEI <print-dec-pad>
35+	#0a18 DEO
36+	( | .. )
37+	;dict/doty str/<print>
38+	.DateTime/doty DEI2 dec/<print>
39+	#0a18 DEO
40+	#800f DEO
41+	BRK
42+
43+@<print-dec-pad> ( byte -- )
44+	#0a DIVk dec/<emit>
45+	DIVk MUL SUB
46+	( >> )
47+
48+@dec/<emit> ( byte -- )
49+	LIT "0 ADD #18 DEO
50+	JMP2r
51+
52+@str/<print> ( str* -- )
53+	LDAk DUP ?{ POP POP2 JMP2r }
54+	#18 DEO
55+	INC2 !/<print>
56+
57+@dec/<print> ( short* -- )
58+	#2710 [ LIT2r 00fb ]
59+	&>w
60+		DIV2k #000a DIV2k MUL2 SUB2 SWPr EQUk OVR STHkr EQU AND ?{ DUP dec/<emit>
61+			INCr }
62+		POP2 #000a DIV2 SWPr INCr STHkr ?&>w
63+	POP2r POP2 POP2 JMP2r
64+
65+(
66+@|assets )
67+
68+@dict/date "The 20 "date 20 "is: 20 $1
69+	&time "The 20 "time 20 "is: 20 $1
70+	&doty "The 20 "day 20 "of 20 "the 20 "year 20 "is: 20 $1
71+	&months [
72+	"Jan $1 "Feb $1 "Mar $1 "Apr $1
73+	"May $1 "Jun $1 "Jul $1 "Aug $1
74+	"Sep $1 "Oct $1 "Nov $1 "Dec $1 ]
75+	&days [
76+	"Sun $1 "Mon $1 "Tue $1 "Wed $1
77+	"Thu $1 "Fri $1 "Sat $1 ]
78+
+5, -1
 1@@ -11,6 +11,7 @@ test: bin/uxncli-debug bin/uxn11-debug tests
 2 	bin/uxncli-debug bin/system.rom
 3 	echo "foobar" | bin/uxncli-debug bin/console.rom "baz" "qux"
 4 	bin/uxncli-debug bin/file.rom
 5+	bin/uxncli-debug bin/datetime.rom
 6 clean:
 7 	rm -fr bin
 8 format:
 9@@ -26,6 +27,7 @@ archive:
10 	cp etc/tests/console.tal ../oscean/etc/varvara.console.tal.txt
11 	cp etc/tests/perifs.tal ../oscean/etc/varvara.perifs.tal.txt
12 	cp etc/tests/file.tal ../oscean/etc/varvara.file.tal.txt
13+	cp etc/tests/datetime.tal ../oscean/etc/varvara.datetime.tal.txt
14 install: bin/uxncli bin/uxn11
15 	mkdir -p ${PREFIX}/bin
16 	cp bin/uxn11 bin/uxncli ${PREFIX}/bin
17@@ -54,7 +56,7 @@ bin/uxn11-debug: src/uxn11.c
18 
19 # Tests
20 
21-tests: bin/uxncli bin/drifblim.rom bin/test_opcodes.rom bin/system.rom bin/console.rom bin/file.rom bin/uxncli bin/drifblim.rom
22+tests: bin/uxncli bin/drifblim.rom bin/test_opcodes.rom bin/system.rom bin/console.rom bin/file.rom bin/datetime.rom bin/uxncli bin/drifblim.rom
23 
24 bin/test_opcodes.rom: etc/tests/opctest.tal
25 	@ bin/uxncli bin/drifblim.rom etc/tests/opctest.tal bin/test_opcodes.rom
26@@ -68,3 +70,5 @@ bin/screen.rom: bin/uxncli bin/drifblim.rom etc/tests/screen.tal
27 	@ bin/uxncli bin/drifblim.rom etc/tests/screen.tal bin/screen.rom
28 bin/file.rom: bin/uxncli bin/drifblim.rom etc/tests/file.tal
29 	@ bin/uxncli bin/drifblim.rom etc/tests/file.tal bin/file.rom
30+bin/datetime.rom: bin/uxncli bin/drifblim.rom etc/tests/datetime.tal
31+	@ bin/uxncli bin/drifblim.rom etc/tests/datetime.tal bin/datetime.rom