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+
M
makefile
+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