diff options
| -rw-r--r-- | flags.asm | 19 | ||||
| -rw-r--r-- | main.asm | 5 |
2 files changed, 21 insertions, 3 deletions
@@ -92,7 +92,7 @@ F_ADD_SAVE MACRO ;; Normalize and return carry bit (is loaded into Z bit) ;; Destroys d1 -F_NORM_C MACRO +f_norm_c: move.b flag_valid,d1 andi.b #%00000001,d1 bne FNC_ok ; Bit is valid @@ -103,7 +103,22 @@ F_NORM_C MACRO FNC_ok: move.b flag_byte,d1 andi.b #%00000001,d1 - ENDM + rts + + ;; Normalize and return zero bit (loaded into Z bit) + ;; Destroys d1 +f_norm_z: + move.b flag_valid,d1 + andi.b #%01000000,d1 + bne FNZ_ok ; Bit is valid + move.b f_host_ccr,d1 + andi.b #%01000000,d1 + or.b d1,flag_byte + ori.b #%01000000,flag_valid +FNZ_ok: + move.b flag_byte,d1 + andi.b #%01000000,d1 + rts ;; Routine to turn 68k flags into z80 flags. @@ -638,7 +638,7 @@ emu_op_30: ;; JR NC,immed.b ;; If carry clear ;; PC <- PC+immed.b - F_NORM_C + bsr f_norm_c bne end_30 ; branch taken: carry set FETCHBI d1 add.w d1,d2 @@ -1732,6 +1732,9 @@ emu_op_c0: ;; PCl <- (SP) ;; PCh <- (SP+1) ;; SP <- (SP+2) + bsr f_norm_z + beq emu_op_c9 ; RET + DONE START emu_op_c1: |
