📄 sa1ops.s
字号:
Op93M1: StackRelativeIndirectIndexed8 STA Sta8 SRIIOp93M0: StackRelativeIndirectIndexed8 STA2 Sta16 SRII/* STX */Op86X1: Direct8 STX Stx8 DIROp86X0: Direct8 STX2 Stx16 DIROp96X1: DirectIndexedY8 STX Stx8 DIYOp96X0: DirectIndexedY8 STX2 Stx16 DIYOp8EX1: Absolute8 STX Stx8 ABSOp8EX0: Absolute8 STX2 Stx16 ABS/* STY */Op84X1: Direct8 STY Sty8 DIROp84X0: Direct8 STY2 Sty16 DIROp94X1: DirectIndexedX8 STY Sty8 DIXOp94X0: DirectIndexedX8 STY2 Sty16 DIXOp8CX1: Absolute8 STY Sty8 ABSOp8CX0: Absolute8 STY2 Sty16 ABS/* STZ */Op64M1: Direct8 STZ Stz8 DIROp64M0: Direct8 STZ2 Stz16 DIROp74M1: DirectIndexedX8 STZ Stz8 DIXOp74M0: DirectIndexedX8 STZ2 Stz16 DIXOp9CM1: Absolute8 STZ Stz8 ABSOp9CM0: Absolute8 STZ2 Stz16 ABSOp9EM1: AbsoluteIndexedX8 STZ Stz8 ABSXOp9EM0: AbsoluteIndexedX8 STZ2 Stz16 ABSX/* TRB */Op14M1: Direct8 TRB Trb8 DIROp14M0: Direct8 TRB2 Trb16 DIROp1CM1: Absolute8 TRB Trb8 ABSOp1CM0: Absolute8 TRB2 Trb16 ABS/* TSB */Op04M1: Direct8 TSB Tsb8 DIROp04M0: Direct8 TSB2 Tsb16 DIROp0CM1: Absolute8 TSB Tsb8 ABSOp0CM0: Absolute8 TSB2 Tsb16 ABS/* BCC */Op90: Relative testb $0xff, SA1_Carry jnz .BCC_EXIT andl $0xffff, %edx addl SA1PCBase, %edx movl %edx, PC.BCC_EXIT: jmp S9xSA1MainAsmLoop/* BCS */OpB0: Relative testb $0xff, SA1_Carry jz .BCS_EXIT andl $0xffff, %edx addl SA1PCBase, %edx movl %edx, PC.BCS_EXIT: jmp S9xSA1MainAsmLoop/* BEQ */OpF0: Relative testb $0xff, SA1_Zero jnz .BEQ_EXIT andl $0xffff, %edx addl SA1PCBase, %edx movl %edx, PC CPUShutdown BEQ.BEQ_EXIT: jmp S9xSA1MainAsmLoop/* BMI */Op30: Relative testb $0x80, SA1_Negative jz .BMI_EXIT andl $0xffff, %edx addl SA1PCBase, %edx movl %edx, PC CPUShutdown BMI.BMI_EXIT: jmp S9xSA1MainAsmLoop/* BNE */OpD0: Relative testb $0xff, SA1_Zero jz .BNE_EXIT andl $0xffff, %edx addl SA1PCBase, %edx movl %edx, PC CPUShutdown BNE.BNE_EXIT: jmp S9xSA1MainAsmLoop/* BPL */Op10: Relative testb $0x80, SA1_Negative jnz .BPL_EXIT andl $0xffff, %edx addl SA1PCBase, %edx movl %edx, PC CPUShutdown BPL.BPL_EXIT: jmp S9xSA1MainAsmLoop/* BRA */Op80: Relative andl $0xffff, %edx addl SA1PCBase, %edx movl %edx, PC CPUShutdown BRA jmp S9xSA1MainAsmLoop/* BVC */Op50: Relative testb $0xff, SA1_Overflow jnz .BVC_EXIT andl $0xffff, %edx addl SA1PCBase, %edx movl %edx, PC CPUShutdown BVC.BVC_EXIT: jmp S9xSA1MainAsmLoop/* BVS */Op70: Relative testb $0xff, SA1_Overflow jz .BVS_EXIT andl $0xffff, %edx addl SA1PCBase, %edx movl %edx, PC CPUShutdown BVS.BVS_EXIT: jmp S9xSA1MainAsmLoop/* BRL */Op82: RelativeLong BRL andl $0xffff, %edx orl SA1ShiftedPB, %edx call S9xSA1SetPCBase jmp S9xSA1MainAsmLoop/* CLC */Op18: movb $0, SA1_Carry jmp S9xSA1MainAsmLoop/* CLD */OpD8: andb $~Decimal, FLAGS jmp S9xSA1MainAsmLoop/* CLI */Op58: andb $~IRQ, FLAGS cmpb $0, SA1IRQActive jz .CLI_EXIT /* XXX: test for Settings.DisableIRQ */ call S9xSA1Opcode_IRQ.CLI_EXIT: jmp S9xSA1MainAsmLoop/* CLV */OpB8: movb $0, SA1_Overflow jmp S9xSA1MainAsmLoop/* DEX */OpCAX1: movb XL, %al decb %al movb %al, XL SetZN jmp S9xSA1MainAsmLoopOpCAX0: decw XX setnz SA1_Zero movb XH, %al movb %al, SA1_Negative jmp S9xSA1MainAsmLoop/* DEY */Op88X1: movb YL, %al decb %al movb %al, YL SetZN jmp S9xSA1MainAsmLoopOp88X0: decw YY setnz SA1_Zero movb YH, %al movb %al, SA1_Negative jmp S9xSA1MainAsmLoop/* INX */OpE8X1: movb XL, %al incb %al movb %al, XL SetZN jmp S9xSA1MainAsmLoopOpE8X0: incw XX setnz SA1_Zero movb XH, %al movb %al, SA1_Negative jmp S9xSA1MainAsmLoop/* INY */OpC8X1: movb YL, %al incb %al movb %al, YL SetZN jmp S9xSA1MainAsmLoopOpC8X0: incw YY setnz SA1_Zero movb YH, %al movb %al, SA1_Negative jmp S9xSA1MainAsmLoop/* NOP */OpEA: jmp S9xSA1MainAsmLoop/* PEA */OpF4E1: Immediate16 PEA PushWordENew PEA jmp S9xSA1MainAsmLoopOpF4: Immediate16 PEA PushWord PEA jmp S9xSA1MainAsmLoop/* PEI */OpD4E1: DirectIndirect8 PEI movl %edx, %eax PushWordENew PEI jmp S9xSA1MainAsmLoopOpD4: DirectIndirect8 PEI movl %edx, %eax PushWord PEI jmp S9xSA1MainAsmLoop/* PER */Op62E1: RelativeLong PER movl %edx, %eax PushWordENew PER jmp S9xSA1MainAsmLoop Op62: RelativeLong PER movl %edx, %eax PushWord PER jmp S9xSA1MainAsmLoop /* PHA */Op48E1: movb AL, %al PushByteE PHA jmp S9xSA1MainAsmLoopOp48M1: movb AL, %al PushByte PHA jmp S9xSA1MainAsmLoopOp48M0: movw AA, %ax PushWord PHA jmp S9xSA1MainAsmLoop/* PHB */Op8BE1: movb DB, %al PushByteE PHB jmp S9xSA1MainAsmLoopOp8B: movb DB, %al PushByte PHB jmp S9xSA1MainAsmLoop/* PHD */Op0BE1: movw DD, %ax PushWordENew PHD jmp S9xSA1MainAsmLoopOp0B: movw DD, %ax PushWord PHD jmp S9xSA1MainAsmLoop/* PHK */Op4BE1: movb PB, %al PushByteE PHK jmp S9xSA1MainAsmLoopOp4B: movb PB, %al PushByte PHK jmp S9xSA1MainAsmLoop/* PHP */Op08E1: S9xSA1PackStatus PHP movb FLAGS, %al PushByteE PHP jmp S9xSA1MainAsmLoopOp08: S9xSA1PackStatus PHP movb FLAGS, %al PushByte PHP jmp S9xSA1MainAsmLoop/* PHX */OpDAE1: movb XL, %al PushByteE PHX jmp S9xSA1MainAsmLoopOpDAX1: movb XL, %al PushByte PHX jmp S9xSA1MainAsmLoopOpDAX0: movw XX, %ax PushWord PHX jmp S9xSA1MainAsmLoop/* PHY */Op5AE1: movb YL, %al PushByteE PHY jmp S9xSA1MainAsmLoopOp5AX1: movb YL, %al PushByte PHY jmp S9xSA1MainAsmLoopOp5AX0: movw YY, %ax PushWord PHY jmp S9xSA1MainAsmLoop/* PLA */Op68E1: PullByteE PLA movb %al, AL SetZN jmp S9xSA1MainAsmLoopOp68M1: PullByte PLA movb %al, AL SetZN jmp S9xSA1MainAsmLoopOp68M0: PullWord PLA movw %ax, AA testw %ax, %ax Set16ZN jmp S9xSA1MainAsmLoop/* PLB */OpABE1: PullByteE PLB movb %al, DB SetZN andl $0xff, %eax sall $16, %eax movl %eax, SA1ShiftedDB jmp S9xSA1MainAsmLoopOpAB: PullByte PLB movb %al, DB SetZN andl $0xff, %eax sall $16, %eax movl %eax, SA1ShiftedDB jmp S9xSA1MainAsmLoop/* PLD */Op2BE1: PullWordENew PLD movw %ax, DD testw %ax, %ax Set16ZN jmp S9xSA1MainAsmLoopOp2B: PullWord PLD movw %ax, DD testw %ax, %ax Set16ZN jmp S9xSA1MainAsmLoop /* PLP */Op28E1: PullByteE PLPE movb %al, FLAGS testb $IndexFlag, FLAGS jz .PLP16E xorb %al, %al movb %al, XH movb %al, YH.PLP16E: S9xSA1UnpackStatus PLPE S9xSA1FixCycles PLPE CheckForIrq PLPE jmp S9xSA1MainAsmLoopOp28: PullByte PLP movb %al, FLAGS testb $IndexFlag, FLAGS jz .PLP16 xorb %al, %al movb %al, XH movb %al, YH.PLP16: S9xSA1UnpackStatus PLP S9xSA1FixCycles PLP CheckForIrq PLP jmp S9xSA1MainAsmLoop/* PLX */OpFAE1: PullByteE PLX movb %al, XL SetZN jmp S9xSA1MainAsmLoopOpFAX1: PullByte PLX movb %al, XL SetZN jmp S9xSA1MainAsmLoopOpFAX0: PullWord PLX movw %ax, XX testw %ax, %ax Set16ZN jmp S9xSA1MainAsmLoop/* PLY */Op7AE1: PullByteE PLY movb %al, YL SetZN jmp S9xSA1MainAsmLoop Op7AX1: PullByte PLY movb %al, YL SetZN jmp S9xSA1MainAsmLoopOp7AX0: PullWord PLY movw %ax, YY testw %ax, %ax Set16ZN jmp S9xSA1MainAsmLoop/* SEC */Op38: movb $1, SA1_Carry jmp S9xSA1MainAsmLoop/* SED */OpF8: orb $Decimal, FLAGS jmp S9xSA1MainAsmLoop/* SEI */Op78: orb $IRQ, FLAGS jmp S9xSA1MainAsmLoop/* TAX */OpAAX1: movb AL, %al movb %al, XL SetZN jmp S9xSA1MainAsmLoopOpAAX0: movw AA, %ax movw %ax, XX testw %ax, %ax Set16ZN jmp S9xSA1MainAsmLoop/* TAY */OpA8X1: movb AL, %al movb %al, YL SetZN jmp S9xSA1MainAsmLoopOpA8X0: movw AA, %ax movw %ax, YY testw %ax, %ax Set16ZN jmp S9xSA1MainAsmLoop/* TCD */Op5B: movw AA, %ax movw %ax, DD testw %ax, %ax Set16ZN jmp S9xSA1MainAsmLoop/* TCS */Op1B: movw AA, %ax movw %ax, SS testw $Emulation, FLAGS16 jz .TCS_EXIT movb $1, SH.TCS_EXIT: jmp S9xSA1MainAsmLoop/* TDC */Op7B: movw DD, %ax movw %ax, AA testw %ax, %ax Set16ZN jmp S9xSA1MainAsmLoop/* TSC */Op3B: movw SS, %ax movw %ax, AA testw %ax, %ax Set16ZN jmp S9xSA1MainAsmLoop/* TSX */OpBAX1: movb SL, %al movb %al, XL SetZN jmp S9xSA1MainAsmLoopOpBAX0: movw SS, %ax movw %ax, XX testw %ax, %ax Set16ZN jmp S9xSA1MainAsmLoop/* TXA */Op8AM1: movb XL, %al movb %al, AL SetZN jmp S9xSA1MainAsmLoopOp8AM0: movw XX, %ax movw %ax, AA testw %ax, %ax Set16ZN jmp S9xSA1MainAsmLoop/* TXS */Op9A: movw XX, %ax movw %ax, SS testw $Emulation, FLAGS16 jz .TXS_EXIT movb $1, SH.TXS_EXIT: jmp S9xSA1MainAsmLoop/* TXY */Op9BX1: movb XL, %al movb %al, YL SetZN jmp S9xSA1MainAsmLoopOp9BX0: movw XX, %ax movw %ax, YY testw %ax, %ax Set16ZN jmp S9xSA1MainAsmLoop/* TYA */Op98M1: movb YL, %al movb %al, AL SetZN jmp S9xSA1MainAsmLoopOp98M0: movw YY, %ax movw %ax, AA testw %ax, %ax Set16ZN jmp S9xSA1MainAsmLoop/* TYX */OpBBX1: movb YL, %al movb %al, XL SetZN jmp S9xSA1MainAsmLoopOpBBX0: movw YY, %ax movw %ax, XX testw %ax, %ax Set16ZN jmp S9xSA1MainAsmLoop/* XCE */OpFB: movw FLAGS16, %ax andw $~(Emulation | Carry), FLAGS16 GetCarry jnc .XCE_NO_CARRY orw $Emulation, FLAGS16.XCE_NO_CARRY: testw $Emulation, %ax setnz SA1_Carry testw $Emulation, FLAGS16 jz .XCE_NO_EMULATION2 orw $(MemoryFlag | IndexFlag), FLAGS16 movb $1, SH.XCE_NO_EMULATION2: testw $IndexFlag, FLAGS16 jz .XCE_NO_INDEX xorl %eax, %eax movb %al, XH movb %al, YH.XCE_NO_INDEX: S9xSA1FixCycles XCE jmp S9xSA1MainAsmLoop .data.LC0: .string "*** BRK".textOp00:#ifdef DEBUGGER testb $TRACE_FLAG, SA1Flags je .BRK_NO_TRACE pushl $.LC0 ccall S9xTraceMessage addl $4,%esp.BRK_NO_TRACE:#endif testw $Emulation, FLAGS16 jnz .BRK_EMULATION movb PB, %al PushByte BRK1 movl PC, %eax subl SA1PCBase, %eax incl %eax PushWord BRK2 S9xSA1PackStatus BRK movb FLAGS, %al andb $~Decimal, FLAGS orb $IRQ, FLAGS PushByte BRK3 xorl %ecx, %ecx movl %ecx, SA1ShiftedPB movb %cl, PB movl $0xFFE6, %edx call S9xSA1GetWord movl %eax, %edx andl $0xffff, %edx call S9xSA1SetPCBase jmp S9xSA1MainAsmLoop.BRK_EMULATION: movl PC, %eax subl SA1PCBase, %eax incl %eax PushWord BRK2 S9xSA1PackStatus BRK2 movb FLAGS, %al andb $~Decimal, FLAGS orb $IRQ, FLAGS PushByte BRK3 xorl %ecx, %ecx movl %ecx, SA1ShiftedPB movb %cl, PB movl $0xFFFE, %edx call S9xSA1GetWord movl %eax, %edx andl $0xffff, %edx call S9xSA1SetPCBase jmp S9xSA1MainAsmLoop.data.LC1: .string "*** IRQ".text.globl S9xSA1Opcode_IRQS9xSA1Opcode_IRQ:#ifdef DEBUGGER testb $TRACE_FLAG, SA1Flags je .IRQ_NO_TRACE pushl $.LC1 ccall S9xTraceMessage addl $4, %esp.IRQ_NO_TRACE:#endif testw $Emulation, FLAGS16 jnz .IRQ_EMULATION movb PB, %al PushByte IRQ1 movl PC, %eax subl SA1PCBase, %eax PushWord IRQ2 S9xSA1PackStatus IRQ movb FLAGS, %al andb $~Decimal, FLAGS orb $IRQ, FLAGS PushByte IRQ3 xorl %ecx, %ecx movl %ecx, SA1ShiftedPB movb %cl, PB// XXX: FIXME: wrong vector xorl %edx, %edx movl FillRAM, %eax movw 0x2207(%eax), %dx jmp S9xSA1SetPCBase.IRQ_EMULATION: movl PC, %eax subl SA1PCBase, %eax PushWord IRQ4 S9xSA1PackStatus IRQ2 movb FLAGS, %al andb $~Decimal, FLAGS orb $IRQ, FLAGS PushByte IRQ5 xorl %ecx, %ecx movl %ecx, SA1ShiftedPB movb %cl, PB// XXX: FIXME: wrong vector xorl %edx, %edx movl FillRAM, %eax movw 0x2207(%eax), %dx jmp S9xSA1SetPCBase.data.LC2: .string "*** NMI".text.globl S9xSA1Opcode_NMIS9xSA1Opcode_NMI:#ifdef DEBUGGER testb $TRACE_FLAG, SA1Flags je .NMI_NO_TRACE pushl $.LC2 ccall S9xTraceMessage addl $4, %esp.NMI_NO_TRACE:#endif testw $Emulation, FLAGS16 jnz .NMI_EMULATION movb PB, %al PushByte NMI1 movl PC, %eax subl SA1PCBase, %eax PushWord NMI2 S9xSA1PackStatus NMI movb FLAGS, %al andb $~Decimal, FLAGS orb $IRQ, FLAGS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -