summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--alu.asm14
-rw-r--r--opcodes.asm10
2 files changed, 18 insertions, 6 deletions
diff --git a/alu.asm b/alu.asm
index 22217bb..8fa4271 100644
--- a/alu.asm
+++ b/alu.asm
@@ -1,6 +1,20 @@
;; Parting out the big math/logic routines from the
;; instruction dispatch table.
+alu_add:
+ ;; ADD instruction
+ ;; ADD d1,d0
+ ;; d1 + d0 -> d1
+ move.b d0,f_tmp_src_b ; preserve operands for flag work
+ move.b d1,f_tmp_dst_b
+ move.b #1,(f_tmp_byte-flag_storage)(a3)
+ add d0,d1
+ move sr,(f_host_sr-flag_storage)(a3)
+ move.w #0202,(flag_byte-flag_storage)(a3)
+ rts
+
+alu_adc:
+
alu_sbc:
;; SBC instruction
;; SBC d1,d0
diff --git a/opcodes.asm b/opcodes.asm
index fca259c..9154ec4 100644
--- a/opcodes.asm
+++ b/opcodes.asm
@@ -1222,12 +1222,10 @@ emu_op_7f:
;; XXX check this
;; XXX make it shorter ... D:
F_ADD_B MACRO ; 14 bytes?
- move.b \1,f_tmp_src_b ; preserve operands for flag work
- move.b \2,f_tmp_dst_b
- move.b #1,(f_tmp_byte-flag_storage)(a3)
- add \1,\2
- move sr,(f_host_sr-flag_storage)(a3)
- move.w #0202,(flag_byte-flag_storage)(a3)
+ move.b \2,d1
+ move.b \1,d0
+ bsr alu_add
+ move.b d1,\2
ENDM
START