summaryrefslogtreecommitdiff
path: root/alu.asm
diff options
context:
space:
mode:
Diffstat (limited to 'alu.asm')
-rw-r--r--alu.asm93
1 files changed, 0 insertions, 93 deletions
diff --git a/alu.asm b/alu.asm
deleted file mode 100644
index ec0e137..0000000
--- a/alu.asm
+++ /dev/null
@@ -1,93 +0,0 @@
- ;; 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
- add d0,d1
- move sr,f_host_sr
- move.w #0202,flag_byte
- rts
-
-alu_adc:
- ;; ADC instruction
- ;; ADC d1,d0
- ;; d1 + d0 + carry -> d1
- bsr flags_normalize
- move.b flag_byte(pc),d2
- andi.b #1,d2
- add.b d0,d2
- move.b d2,f_tmp_src_b
- move.b d1,f_tmp_dst_b
- add.b d2,d1
- move sr,f_host_ccr
- move.w #$0202,flag_byte
- rts
-
-alu_sbc:
- ;; SBC instruction
- ;; SBC d1,d0
- ;; d1 - (d0+C) -> d1
- ;; sets flags
-
- push.l d2
- bsr flags_normalize
- move.b flag_byte(pc),d2
- andi.b #1,d2
- add.b d0,d2
- move.b d2,f_tmp_src_b
- move.b d1,f_tmp_dst_b
- sub.b d2,d1
- move sr,f_host_sr
- move.b #$02,flag_byte
- move.b #$02,flag_valid
- pop.l d2
- rts
-
-alu_sub:
- ;; SUB instruction
- ;; SUB d1,d0
- ;; d1 - d0 -> d1
- ;; sets flags
-
- ;; XXX use lea and then d(an) if you have a spare register.
-
- ;; preserve operands for flagging
- move.b d0,f_tmp_src_b
- move.b d1,f_tmp_dst_b
- move.b #1,f_tmp_byte
- andi.b #%00000010,flag_valid
- move.b #%00000010,flag_byte
- sub d0,d1
- move sr,f_host_sr
- rts
-
-alu_and:
- ;; XXX do this
- rts
-
-alu_xor:
- ;; XXX do this
- rts
-
-alu_or:
- ;; XXX do this
- rts
-
-alu_cp:
- ;; Same as SUB but the macro that calls this doesn't save the
- ;; result.
-
- ;; SPEED can hardcode one of the arguments to always be the A register.
- move.b d0,f_tmp_src_b
- move.b d1,f_tmp_dst_b
- move.b #1,f_tmp_byte
- andi.b #%00000010,flag_valid
- move.b #%00000010,flag_byte
- sub.b d0,d1
- move sr,f_host_sr
- rts