📄 emu65816.asm
字号:
docount 2, 8
and cl, 0FFh-FDECIMAL
vectorcall 00FFF4h, 00FFE4h
dobreak
op03m0x0: ; "ORA <%b,s", 2, 4,
op03m0x1:
load_s_rel
docount 2, 4+1
ora16
dobreak
op03m1x0:
op03m1x1:
load_s_rel
docount 2, 4
ora8
dobreak
op04m0x0: ; "TSB <%b", 2, 5,
op04m0x1:
load_dir
docount 2, 5+1
tsb16
dobreak
op04m1x0:
op04m1x1:
load_dir
docount 2, 5
tsb8
dobreak
op05m0x0: ; "ORA <%b", 2, 3,
op05m0x1:
load_dir
docount 2, 3+1
ora16
dobreak
op05m1x0:
op05m1x1:
load_dir
docount 2, 3
ora8
dobreak
op06m0x0: ; "SHL <%b", 2, 5,
op06m0x1:
load_dir
docount 2, 5+1
shl16
dobreak
op06m1x0:
op06m1x1:
load_dir
docount 2, 5
shl8
dobreak
op07m0x0: ; "ORA [<%b]", 2, 6,
op07m0x1:
load_dir_indir_long
docount 2, 6+1
ora16
dobreak
op07m1x0:
op07m1x1:
load_dir_indir_long
docount 2, 6
ora8
dobreak
op08m0x0: ; "PSH P", 1, 3, // PHP
op08m0x1:
op08m1x0:
op08m1x1:
pushbyte cl
docount 1, 3
dobreak
op09m0x0: ; "ORA %#", 2(+1), 2,
op09m0x1:
get_imm
docount 2+1, 2+1
ora16 imm
dobreak
op09m1x0:
op09m1x1:
get_imm
docount 2, 2
ora8 imm
dobreak
op0Am0x0: ; "SHL A", 1, 2,
op0Am0x1:
docount 1, 2
shl16_a
dobreak
op0Am1x0:
op0Am1x1:
docount 1, 2
shl8_a
dobreak
op0Bm0x0: ; "PSH D", 1, 4, // PHD Push Direct
op0Bm0x1:
op0Bm1x0:
op0Bm1x1:
mov ebx, dword [_reg.D]
docount 1, 4
pushbyte bh
pushbyte bl
dobreak
op0Cm0x0: ; "TSB %w", 3, 6,
op0Cm0x1:
load_abs
docount 3, 6+1
tsb16
dobreak
op0Cm1x0:
op0Cm1x1:
load_abs
docount 3, 6
tsb8
dobreak
op0Dm0x0: ; "ORA %w", 3, 4,
op0Dm0x1:
load_abs
docount 3, 4+1
ora16
dobreak
op0Dm1x0:
op0Dm1x1:
load_abs
docount 3, 4
ora8
dobreak
op0Em0x0: ; "SHL %w", 3, 6,
op0Em0x1:
load_abs
docount 3, 6+1
shl16
dobreak
op0Em1x0:
op0Em1x1:
load_abs
docount 3, 6
shl8
dobreak
op0Fm0x0: ; "ORA %L", 4, 5,
op0Fm0x1:
load_abs_long
docount 4, 5+1
ora16
dobreak
op0Fm1x0:
op0Fm1x1:
load_abs_long
docount 4, 5
ora8
dobreak
op10m0x0: ; "BPL @%b", 2, 2,
op10m0x1:
op10m1x0:
op10m1x1:
add edx, 2 ; PC += 2
test cl, FNEGATIVE
jz @F ; Branch
sub esi, 2 ; cycle count
dobreak
@@: movsx ebx, bh
sub esi, 3 ; cycle count
add dx, bx
dobreak
op11m0x0: ; "ORA (<%b),Y", 2, 5,
load_dir_indir_index_y16
docount 2, 5+1
ora16
dobreak
op11m0x1:
load_dir_indir_index_y8
docount 2, 5+1
ora16
dobreak
op11m1x0:
load_dir_indir_index_y16
docount 2, 5
ora8
dobreak
op11m1x1:
load_dir_indir_index_y8
docount 2, 5
ora8
dobreak
op12m0x0: ; "ORA (<%b)", 2, 5,
op12m0x1:
load_dir_indir
docount 2, 5+1
ora16
dobreak
op12m1x0:
op12m1x1:
load_dir_indir
docount 2, 5
ora8
dobreak
op13m0x0: ; "ORA (<%b,S),Y", 2, 7,
load_s_rel_indir_index_y16
docount 2, 7+1
ora16
dobreak
op13m0x1:
load_s_rel_indir_index_y8
docount 2, 7+1
ora16
dobreak
op13m1x0:
load_s_rel_indir_index_y16
docount 2, 7
ora8
dobreak
op13m1x1:
load_s_rel_indir_index_y8
docount 2, 7
ora8
dobreak
op14m0x0: ; "TRB <%b", 2, 5,
op14m0x1:
load_dir
docount 2, 5+1
trb16
dobreak
op14m1x0:
op14m1x1:
load_dir
docount 2, 5
trb8
dobreak
op15m0x0: ; "ORA <%b,X", 2, 4,
load_dir_index_x16
docount 2, 4+1
ora16
dobreak
op15m0x1:
load_dir_index_x8
docount 2, 4+1
ora16
dobreak
op15m1x0:
load_dir_index_x16
docount 2, 4
ora8
dobreak
op15m1x1:
load_dir_index_x8
docount 2, 4
ora8
dobreak
op16m0x0: ; "SHL <%b,X",2, 6,
load_dir_index_x16
docount 2, 6+1
shl16
dobreak
op16m0x1:
load_dir_index_x8
docount 2, 6+1
shl16
dobreak
op16m1x0:
load_dir_index_x16
docount 2, 6
shl8
dobreak
op16m1x1:
load_dir_index_x8
docount 2, 6
shl8
dobreak
op17m0x0: ; "ORA [<%b],Y", 2, 6,
load_dir_indir_long_index_y16
docount 2, 6+1
ora16
dobreak
op17m0x1:
load_dir_indir_long_index_y8
docount 2, 6+1
ora16
dobreak
op17m1x0:
load_dir_indir_long_index_y16
docount 2, 6
ora8
dobreak
op17m1x1:
load_dir_indir_long_index_y8
docount 2, 6
ora8
dobreak
op18m0x0: ; "CLC", 1, 2,
op18m0x1:
op18m1x0:
op18m1x1:
and cl, 0FFh-FCARRY
docount 1, 2
dobreak;
op19m0x0: ; "ORA %w,Y", 3, 4,
load_abs_index_y16
docount 3, 4+1
ora16
dobreak
op19m0x1:
load_abs_index_y8
docount 3, 4+1
ora16
dobreak
op19m1x0:
load_abs_index_y16
docount 3, 4
ora8
dobreak
op19m1x1:
load_abs_index_y8
docount 3, 4
ora8
dobreak
op1Am0x0: ; "INC A", 1, 2,
op1Am0x1:
docount 1, 2
inca16
dobreak
op1Am1x0:
op1Am1x1:
docount 1, 2
inca8
dobreak
op1Bm0x0: ; "TAS", 1, 2,
op1Bm0x1:
op1Bm1x0:
op1Bm1x1:
mov eax, dword [_reg.A]
docount 1, 2
mov dword [_reg.S], eax
dobreak;
op1Cm0x0: ; "TRB %w", 3, 6,
op1Cm0x1:
load_abs
docount 3, 6+1
trb16
dobreak
op1Cm1x0:
op1Cm1x1:
load_abs
docount 3, 6
trb8
dobreak
op1Dm0x0: ; "ORA %w,X", 3, 4,
load_abs_index_x16
docount 3, 4+1
ora16
dobreak
op1Dm0x1:
load_abs_index_x8
docount 3, 4+1
ora16
dobreak
op1Dm1x0:
load_abs_index_x16
docount 3, 4
ora8
dobreak
op1Dm1x1:
load_abs_index_x8
docount 3, 4
ora8
dobreak
op1Em0x0: ; "SHL %w,X", 3, 7,
load_abs_index_x16
docount 3, 7+1
shl16
dobreak
op1Em0x1:
load_abs_index_x8
docount 3, 7+1
shl16
dobreak
op1Em1x0:
load_abs_index_x16
docount 3, 7
shl8
dobreak
op1Em1x1:
load_abs_index_x8
docount 3, 7
shl8
dobreak
op1Fm0x0: ; "ORA %L,X", 4, 5,
load_abs_long_index_x16
docount 4, 5+1
ora16
dobreak
op1Fm0x1:
load_abs_long_index_x8
docount 4, 5+1
ora16
dobreak
op1Fm1x0:
load_abs_long_index_x16
docount 4, 5
ora8
dobreak
op1Fm1x1:
load_abs_long_index_x8
docount 4, 5
ora8
dobreak
op20m0x0: ; "JSR %w", 3, 6,
op20m0x1:
op20m1x0:
op20m1x1:
shr ebx, 8
docount 2, 6 ; 1 less
shortcall bl, bh
dobreak
op21m0x0: ; "AND (<%b,X)", 2, 6,
load_dir_index_indir_x16
docount 2, 6+1
and16
dobreak
op21m0x1:
load_dir_index_indir_x8
docount 2, 6+1
and16
dobreak
op21m1x0:
load_dir_index_indir_x16
docount 2, 6
and8
dobreak
op21m1x1:
load_dir_index_indir_x8
docount 2, 6
and8
dobreak
op22m0x0: ; "JSL %L", 4, 8,
op22m0x1:
op22m1x0:
op22m1x1:
shr ebx, 8
docount 3, 8 ; 1 less
longcall_ebx
dobreak
op23m0x0: ; "AND <%b,s", 2, 4,
op23m0x1:
load_s_rel
docount 2, 4+1
and16
dobreak
op23m1x0:
op23m1x1:
load_s_rel
docount 2, 4
and8
dobreak
op24m0x0: ; "BIT <%b", 2, 3,
op24m0x1:
load_dir
docount 2, 3+1
bit16
dobreak
op24m1x0:
op24m1x1:
load_dir
docount 2, 3
bit8
dobreak
op25m0x0: ; "AND <%b", 2, 3,
op25m0x1:
load_dir
docount 2, 3+1
and16
dobreak
op25m1x0:
op25m1x1:
load_dir
docount 2, 3
and8
dobreak
op26m0x0: ; "ROL <%b", 2, 5,
op26m0x1:
load_dir
docount 2, 5
rol16
dobreak
op26m1x0:
op26m1x1:
load_dir
docount 2, 5
rol8
dobreak
op27m0x0: ; "AND [<%b]", 2, 6,
op27m0x1:
load_dir_indir_long
docount 2, 6+1
and16
dobreak
op27m1x0:
op27m1x1:
load_dir_indir_long
docount 2, 6
and8
dobreak
op28m0x0: ; "PUL P", 1, 4, // PLP
op28m0x1:
op28m1x0:
op28m1x1:
pullbyte cl
docount 1, 4
test cl, 10h ; 8-bit index?
jz @F
and dword [_reg.X], 0FFh ; clear high bytes
and dword [_reg.Y], 0FFh
@@: dobreak_mxchange
op29m0x0: ; "AND %#", 2, 2,
op29m0x1:
get_imm
docount 2+1, 2+1
and16 imm
dobreak
op29m1x0:
op29m1x1:
get_imm
docount 2, 2
and8 imm
dobreak
op2Am0x0: ; "ROL A", 1, 2,
op2Am0x1:
docount 1, 2
rol16_a
dobreak
op2Am1x0:
op2Am1x1:
docount 1, 2
rol8_a
dobreak
op2Bm0x0: ; "PUL D", 1, 5, // PLD Pull Direct
op2Bm0x1:
op2Bm1x0:
op2Bm1x1:
pullbyte bl
pullbyte bh
and cl, 0FFh-FZERO-FNEGATIVE
inc edx
and ebx, 0000FFFFh
jnz @F
or cl, FZERO
@@: test bh, 80h
jz @F
or cl, FNEGATIVE
@@: sub esi, 5
mov dword [_reg.D], ebx
dobreak
op2Cm0x0: ; "BIT %w", 3, 4,
op2Cm0x1:
load_abs
docount 3, 4+1
bit16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -