aboutsummaryrefslogtreecommitdiffstats
path: root/src/uxn-core.s
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2023-08-29 16:07:10 +0200
committerBad Diode <bd@badd10de.dev>2023-08-29 16:07:10 +0200
commit50a369576e85c8ff6187ca808101a9008690be15 (patch)
treed2e2de99ade1f80422af83ebfae2f248454e513a /src/uxn-core.s
parent261fffa6e9772efd1c7648f7d11b4da3e19cf5dd (diff)
downloaduxngba-50a369576e85c8ff6187ca808101a9008690be15.tar.gz
uxngba-50a369576e85c8ff6187ca808101a9008690be15.zip
Fix DEO to work consistently with existing deo_fn
Diffstat (limited to 'src/uxn-core.s')
-rw-r--r--src/uxn-core.s48
1 files changed, 43 insertions, 5 deletions
diff --git a/src/uxn-core.s b/src/uxn-core.s
index c73d44c..17f57a3 100644
--- a/src/uxn-core.s
+++ b/src/uxn-core.s
@@ -18,7 +18,39 @@ rst: .space 256
18rst_ptr: .word rst 18rst_ptr: .word rst
19 19
20.global device_data 20.global device_data
21device_data: .space 256 21device_data:
22 .global device_0
23 device_0: .space 16
24 .global device_1
25 device_1: .space 16
26 .global device_2
27 device_2: .space 16
28 .global device_3
29 device_3: .space 16
30 .global device_4
31 device_4: .space 16
32 .global device_5
33 device_5: .space 16
34 .global device_6
35 device_6: .space 16
36 .global device_7
37 device_7: .space 16
38 .global device_8
39 device_8: .space 16
40 .global device_9
41 device_9: .space 16
42 .global device_a
43 device_a: .space 16
44 .global device_b
45 device_b: .space 16
46 .global device_c
47 device_c: .space 16
48 .global device_d
49 device_d: .space 16
50 .global device_e
51 device_e: .space 16
52 .global device_f
53 device_f: .space 16
22 54
23@ UXN evaluation function. 55@ UXN evaluation function.
24@ 56@
@@ -824,8 +856,11 @@ deo:
824 adr r6, deo_map 856 adr r6, deo_map
825 ldr r6, [r6, r4, lsl #2] 857 ldr r6, [r6, r4, lsl #2]
826 stmfd sp!, {r0, r7, lr} 858 stmfd sp!, {r0, r7, lr}
827 mov r0, r3 859 adr r0, device_data
828 mov r1, r5 860 lsl r4, #4
861 add r0, r4
862 strb r5, [r0, r3]
863 mov r1, r3
829 mov lr, pc 864 mov lr, pc
830 bx r6 865 bx r6
831 ldmfd sp!, {r0, r7, lr} 866 ldmfd sp!, {r0, r7, lr}
@@ -841,8 +876,11 @@ deo2:
841 adr r6, deo_map 876 adr r6, deo_map
842 ldr r6, [r6, r4, lsl #2] 877 ldr r6, [r6, r4, lsl #2]
843 stmfd sp!, {r0, r7, lr} 878 stmfd sp!, {r0, r7, lr}
844 mov r0, r3 879 adr r0, device_data
845 mov r1, r5 880 lsl r4, #4
881 add r0, r4
882 strh r5, [r0, r3]
883 mov r1, r3
846 mov lr, pc 884 mov lr, pc
847 bx r6 885 bx r6
848 ldmfd sp!, {r0, r7, lr} 886 ldmfd sp!, {r0, r7, lr}