From 4a98636f412b5bbcafdbc04e4780b9118170f201 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Mon, 28 Aug 2023 15:56:17 +0200 Subject: Add sft operations --- src/main.c | 13 +++++++++---- src/uxn-core.s | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index 538604b..b1ad7cb 100644 --- a/src/main.c +++ b/src/main.c @@ -112,10 +112,15 @@ init_uxn() { // 0xa0, 0x0f, 0x88, 0x1d, // -> ( 8f ) // 0xa0, 0xf0, 0x08, 0x1d, // -> ( f8 ) // 0xa0, 0xf0, 0x0f, 0xa0, 0xaa, 0xaa, 0x3d, // -> ( fa af ) - // EOR. - 0xa0, 0x0f, 0x88, 0x1e, // -> ( 87 ) - 0xa0, 0xf0, 0x08, 0x1e, // -> ( f8 ) - 0xa0, 0xf0, 0x0f, 0xa0, 0xaa, 0xaa, 0x3e, // -> ( 5a a5 ) + // // EOR. + // 0xa0, 0x0f, 0x88, 0x1e, // -> ( 87 ) + // 0xa0, 0xf0, 0x08, 0x1e, // -> ( f8 ) + // 0xa0, 0xf0, 0x0f, 0xa0, 0xaa, 0xaa, 0x3e, // -> ( 5a a5 ) + // SFT. + 0xa0, 0x34, 0x10, 0x1f, // -> ( 68 ) + 0xa0, 0x34, 0x01, 0x1f, // -> ( 1a ) + 0xa0, 0x34, 0x33, 0x1f, // -> ( 30 ) + 0xa0, 0x12, 0x48, 0x80, 0x34, 0x3f, // -> ( 09 20 ) }; memcpy(uxn_ram + PAGE_PROGRAM, uxn_rom, sizeof(uxn_rom)); diff --git a/src/uxn-core.s b/src/uxn-core.s index e6e58c3..9288ccf 100644 --- a/src/uxn-core.s +++ b/src/uxn-core.s @@ -690,8 +690,22 @@ eor2: b uxn_decode sft: + wpop8 r4 + wpop8 r3 + lsr r5, r4, #4 + and r4, #0x0f + lsr r3, r3, r4 + lsl r3, r3, r5 + wpush8 r3 b uxn_decode sft2: + wpop8 r4 + wpop16 r3, r5 + lsr r5, r4, #4 + and r4, #0x0f + lsr r3, r3, r4 + lsl r3, r3, r5 + wpush16 r3 b uxn_decode -- cgit v1.2.1