From 54bd10f913f81d36ffed20584106ead0a426ac9d Mon Sep 17 00:00:00 2001 From: Dominic Grimm Date: Sat, 9 Jul 2022 21:07:45 +0200 Subject: [PATCH 1/2] Add clc opcode --- src/hence/firmware/firmwares/default.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/hence/firmware/firmwares/default.yml b/src/hence/firmware/firmwares/default.yml index 7652970..51d1cf0 100644 --- a/src/hence/firmware/firmwares/default.yml +++ b/src/hence/firmware/firmwares/default.yml @@ -104,6 +104,20 @@ sections: tmpl 0xb alu 0x01 push + - name: clc + description: Clears carry flag + opcode: null + arg: null + stack: + input: [] + output: [] + microcode: | + tmpsr 0xd + tmpl 0xa + tmps 0b11111110 + tmpl 0xb + alu 0x01 + tmpl 0xd - name: stack-manipulation description: Stack manipulation opcodes: From db5aeb333c859d0d2e658f82d519e7a8b50bef9f Mon Sep 17 00:00:00 2001 From: Dominic Grimm Date: Sat, 9 Jul 2022 21:08:27 +0200 Subject: [PATCH 2/2] Add carry flag "threading" --- src/hence/emulator.cr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hence/emulator.cr b/src/hence/emulator.cr index 003797c..5fa5a4e 100644 --- a/src/hence/emulator.cr +++ b/src/hence/emulator.cr @@ -184,13 +184,13 @@ module Hence when 0x08 # shr @reg_tmp = @reg_a >> @reg_b when 0x09 # add - @reg_tmp = @reg_a &+ @reg_b + @reg_tmp = @reg_a &+ @reg_b &+ (@reg_s & 0b00000001_u8) @reg_s &= 0b11111110_u8 if @reg_tmp < @reg_a @reg_s |= 0b00000001_u8 end when 0x0a # sub - @reg_tmp = @reg_a &- @reg_b + @reg_tmp = @reg_a &- @reg_b &- (@reg_s & 0b00000001_u8) @reg_s &= 0b11111110_u8 if @reg_tmp > @reg_a @reg_s |= 0b00000001_u8