156 lines
1.7 KiB
ArmAsm
156 lines
1.7 KiB
ArmAsm
|
|
;
|
|
; Z80 rotate/shift instructions
|
|
;
|
|
|
|
; XXX for RRD/RLD generate tables
|
|
|
|
|
|
Z80_instr_ED_67: ; RRD
|
|
|
|
+Z80_FETCH_VIA_HL
|
|
sta REG_TMP1
|
|
|
|
lda REG_A
|
|
tax
|
|
and #$F0
|
|
sta REG_A
|
|
txa
|
|
|
|
ror
|
|
ror REG_TMP1
|
|
ror
|
|
ror REG_TMP1
|
|
ror
|
|
ror REG_TMP1
|
|
ror
|
|
ror REG_TMP1
|
|
ror
|
|
|
|
clc
|
|
ror
|
|
asr
|
|
asr
|
|
asr
|
|
|
|
ora REG_A
|
|
sta REG_A
|
|
|
|
tax
|
|
lda REG_F
|
|
and #Z80_CF
|
|
ora z80_ftable_RRD_RLD,x
|
|
sta REG_F
|
|
|
|
lda REG_TMP1
|
|
jmp ZVM_store_via_HL_next
|
|
|
|
Z80_instr_ED_6F: ; RLD
|
|
|
|
+Z80_FETCH_VIA_HL
|
|
sta REG_TMP1
|
|
|
|
lda REG_A
|
|
tax
|
|
and #$F0
|
|
sta REG_A
|
|
txa
|
|
|
|
asl
|
|
asl
|
|
asl
|
|
asl
|
|
|
|
asl
|
|
rol REG_TMP1
|
|
rol
|
|
rol REG_TMP1
|
|
rol
|
|
rol REG_TMP1
|
|
rol
|
|
rol REG_TMP1
|
|
rol
|
|
|
|
ora REG_A
|
|
sta REG_A
|
|
|
|
tax
|
|
lda REG_F
|
|
and #Z80_CF
|
|
ora z80_ftable_RRD_RLD,x
|
|
sta REG_F
|
|
|
|
lda REG_TMP1
|
|
jmp ZVM_store_via_HL_next
|
|
|
|
Z80_instr_07: ; RLCA
|
|
|
|
lda REG_F
|
|
and #($FF - Z80_HF - Z80_NF - Z80_CF - Z80_XF - Z80_YF)
|
|
sta REG_F
|
|
|
|
asl REG_A
|
|
lda REG_A
|
|
and #%00101000
|
|
ora REG_F
|
|
sta REG_F
|
|
+bcc ZVM_next
|
|
inc REG_A
|
|
+Z80_PUT_1_CF
|
|
jmp ZVM_next
|
|
|
|
Z80_instr_17: ; RLA
|
|
|
|
lda REG_F
|
|
and #($FF - Z80_HF - Z80_NF - Z80_CF - Z80_XF - Z80_YF)
|
|
sta REG_F
|
|
|
|
clc
|
|
bbr0 REG_F, @1
|
|
sec
|
|
@1:
|
|
rol REG_A
|
|
lda REG_A
|
|
and #%00101000
|
|
ora REG_F
|
|
sta REG_F
|
|
+bcc ZVM_next
|
|
+Z80_PUT_1_CF
|
|
jmp ZVM_next
|
|
|
|
Z80_instr_0F: ; RRCA
|
|
|
|
lda REG_F
|
|
and #($FF - Z80_HF - Z80_NF - Z80_CF - Z80_XF - Z80_YF)
|
|
sta REG_F
|
|
|
|
clc
|
|
ror REG_A
|
|
lda REG_A
|
|
and #%00101000
|
|
ora REG_F
|
|
sta REG_F
|
|
+bcc ZVM_next
|
|
smb7 REG_A
|
|
+Z80_PUT_1_CF
|
|
jmp ZVM_next
|
|
|
|
Z80_instr_1F: ; RRA
|
|
|
|
lda REG_F
|
|
and #($FF - Z80_HF - Z80_NF - Z80_CF - Z80_XF - Z80_YF)
|
|
sta REG_F
|
|
|
|
clc
|
|
bbr0 REG_F, @1
|
|
sec
|
|
@1:
|
|
ror REG_A
|
|
lda REG_A
|
|
and #%00101000
|
|
ora REG_F
|
|
sta REG_F
|
|
+bcc ZVM_next
|
|
+Z80_PUT_1_CF
|
|
jmp ZVM_next
|