diff options
author | Bad Diode <bd@badd10de.dev> | 2023-08-29 16:07:10 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2023-08-29 16:07:10 +0200 |
commit | 50a369576e85c8ff6187ca808101a9008690be15 (patch) | |
tree | d2e2de99ade1f80422af83ebfae2f248454e513a /src/uxn-core.s | |
parent | 261fffa6e9772efd1c7648f7d11b4da3e19cf5dd (diff) | |
download | uxngba-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.s | 48 |
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 | |||
18 | rst_ptr: .word rst | 18 | rst_ptr: .word rst |
19 | 19 | ||
20 | .global device_data | 20 | .global device_data |
21 | device_data: .space 256 | 21 | device_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} |