** @name cputest.s Tests 68000 cpu
|
** @name cputest.s Tests 68000 cpu
|
*
|
*
|
* Based on https://github.com/MicroCoreLabs/Projects/blob/master/MCL68/MC68000_Test_Code/MC68000_test_all_opcodes.X68
|
* Based on https://github.com/MicroCoreLabs/Projects/blob/master/MCL68/MC68000_Test_Code/MC68000_test_all_opcodes.X68
|
*
|
*
|
* Converted into a CD-i system ROM image by CD-i Fan:
|
* Converted into a CD-i system ROM image by CD-i Fan:
|
* - comment lines must start in first column
|
* - comment lines must start in first column
|
* - replaced org instructions by suitable rept
|
* - replaced org instructions by suitable rept
|
* - copy vectors to low memory at startup
|
* - copy vectors to low memory at startup
|
* - replaced jsr/jmp by bsr/bra for position independence
|
* - replaced jsr/jmp by bsr/bra for position independence
|
* - replaced move.l by moveq whenever possible
|
* - replaced move.l by moveq whenever possible
|
* - converted branches to short form whenever possible (e.g. beq => beq.s)
|
* - converted branches to short form whenever possible (e.g. beq => beq.s)
|
* - added immediate suffix to opcodes where required (e.g. and => andi)
|
* - added immediate suffix to opcodes where required (e.g. and => andi)
|
* The last three modifications are required to make the test work;
|
* The last three modifications are required to make the test work;
|
* apparently the original assembler was somewhat smarter then
|
* apparently the original assembler was somewhat smarter then
|
* the Microware OS-9 assembler and did this automatically.
|
* the Microware OS-9 assembler and did this automatically.
|
*
|
*
|
* In some cases the opcodes of the test are used as test data!
|
* In some cases the opcodes of the test are used as test data!
|
*
|
*
|
* Original file header follows.
|
* Original file header follows.
|
*
|
*
|
* File Name : MCL68 Opcode Tests
|
* File Name : MCL68 Opcode Tests
|
* Used on :
|
* Used on :
|
* Author : Ted Fried, MicroCore Labs
|
* Author : Ted Fried, MicroCore Labs
|
* Creation : 7/14/2020
|
* Creation : 7/14/2020
|
*
|
*
|
* Description:
|
* Description:
|
* ============
|
* ============
|
*
|
*
|
* Program to test all of the Motorola 68000's opcodes.
|
* Program to test all of the Motorola 68000's opcodes.
|
*
|
*
|
* If failures are detected, the code will immediately loop on itself.
|
* If failures are detected, the code will immediately loop on itself.
|
* All addressing modes, data sizes, and opcode combinations are tested.
|
* All addressing modes, data sizes, and opcode combinations are tested.
|
*
|
*
|
* This code was developed using the Easy68K simulator where all tests passed!
|
* This code was developed using the Easy68K simulator where all tests passed!
|
*
|
*
|
*------------------------------------------------------------------------
|
*------------------------------------------------------------------------
|
*
|
*
|
* Modification History:
|
* Modification History:
|
* =====================
|
* =====================
|
*
|
*
|
* Revision 1 7/14/2020
|
* Revision 1 7/14/2020
|
* Initial revision
|
* Initial revision
|
*
|
*
|
*
|
*
|
*------------------------------------------------------------------------
|
*------------------------------------------------------------------------
|
*
|
*
|
* Copyright (c) 2020 Ted Fried
|
* Copyright (c) 2020 Ted Fried
|
*
|
*
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
* of this software and associated documentation files (the "Software"), to deal
|
* of this software and associated documentation files (the "Software"), to deal
|
* in the Software without restriction, including without limitation the rights
|
* in the Software without restriction, including without limitation the rights
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
* copies of the Software, and to permit persons to whom the Software is
|
* copies of the Software, and to permit persons to whom the Software is
|
* furnished to do so, subject to the following conditions:
|
* furnished to do so, subject to the following conditions:
|
*
|
*
|
* The above copyright notice and this permission notice shall be included in all
|
* The above copyright notice and this permission notice shall be included in all
|
* copies or substantial portions of the Software.
|
* copies or substantial portions of the Software.
|
*
|
*
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
* SOFTWARE.
|
* SOFTWARE.
|
|
|
* Modified for rf68000 project (c) 2022 Robert Finch
|
* Modified for rf68000 project (c) 2022 Robert Finch
|
|
|
* data
|
* data
|
* dc.l $0001FFFC ; top of local ram area
|
* dc.l $0001FFFC ; top of local ram area
|
* dc.l start
|
* dc.l start
|
|
|
* org $1000 ; code starts at $400 in local ram
|
* org $1000 ; code starts at $400 in local ram
|
*start:
|
*start:
|
* move.l $FFFFFFE0,d0 ; get core number
|
* move.l $FFFFFFE0,d0 ; get core number
|
* cmpi.b #2,d0
|
* cmpi.b #2,d0
|
* bne do_nothing
|
* bne do_nothing
|
|
|
* lea EXCEPTION_6,a0 * check exception vector
|
* lea EXCEPTION_6,a0 * check exception vector
|
* move.l a0,6*4
|
* move.l a0,6*4
|
* lea EXCEPTION_7,a0 * TRAPV exception vector
|
* lea EXCEPTION_7,a0 * TRAPV exception vector
|
* move.l a0,7*4
|
* move.l a0,7*4
|
|
|
cpu_test:
|
cpu_test:
|
bsr op_ORI_TO_CCR
|
bsr op_ORI_TO_CCR
|
bsr op_ORI_TO_SR
|
bsr op_ORI_TO_SR
|
bsr op_EORI_TO_CCR
|
bsr op_EORI_TO_CCR
|
bsr op_EORI_TO_SR
|
bsr op_EORI_TO_SR
|
bsr op_ANDI_TO_CCR
|
bsr op_ANDI_TO_CCR
|
bsr op_ANDI_TO_SR
|
bsr op_ANDI_TO_SR
|
bsr op_BTST
|
bsr op_BTST
|
bsr op_BCHG
|
bsr op_BCHG
|
bsr op_BCLR
|
bsr op_BCLR
|
bsr op_BSET
|
bsr op_BSET
|
bsr op_MOVEP
|
bsr op_MOVEP
|
bsr op_BOOL_I
|
bsr op_BOOL_I
|
bsr op_CMP_I
|
bsr op_CMP_I
|
bsr op_ADD_I
|
bsr op_ADD_I
|
bsr op_SUB_I
|
bsr op_SUB_I
|
bsr op_MOVE
|
bsr op_MOVE
|
bsr op_MOVE_xxx_FLAGS
|
bsr op_MOVE_xxx_FLAGS
|
bsr op_EXT
|
bsr op_EXT
|
bsr op_SWAP
|
bsr op_SWAP
|
bsr op_LEAPEA
|
bsr op_LEAPEA
|
bsr op_TAS
|
bsr op_TAS
|
bsr op_TST
|
bsr op_TST
|
bsr op_LINKS
|
bsr op_LINKS
|
bsr op_MOVE_USP
|
bsr op_MOVE_USP
|
bsr op_CHK
|
bsr op_CHK
|
bsr op_NEGS
|
bsr op_NEGS
|
bsr op_MOVEM
|
bsr op_MOVEM
|
* bsr op_ABCD
|
* bsr op_ABCD
|
* bsr op_SBCD
|
* bsr op_SBCD
|
* bsr op_NBCD
|
* bsr op_NBCD
|
bsr op_TRAPV
|
bsr op_TRAPV
|
bsr op_RTR
|
bsr op_RTR
|
bsr op_BSR
|
bsr op_BSR
|
bsr op_BCC
|
bsr op_BCC
|
bsr op_DBCC
|
bsr op_DBCC
|
bsr op_SCC
|
bsr op_SCC
|
bsr op_ADDQ
|
bsr op_ADDQ
|
bsr op_SUBQ
|
bsr op_SUBQ
|
bsr op_MOVEQ
|
bsr op_MOVEQ
|
bsr op_DIVU
|
bsr op_DIVU
|
* bsr op_DIVS
|
* bsr op_DIVS
|
bsr op_OR
|
bsr op_OR
|
bsr op_AND
|
bsr op_AND
|
bsr op_EOR
|
bsr op_EOR
|
bsr op_CMP
|
bsr op_CMP
|
bsr op_CMPA
|
bsr op_CMPA
|
bsr op_CMPM
|
bsr op_CMPM
|
bsr op_ADD
|
bsr op_ADD
|
bsr op_SUB
|
bsr op_SUB
|
bsr op_ADDA
|
bsr op_ADDA
|
bsr op_SUBA
|
bsr op_SUBA
|
bsr op_ADDX
|
bsr op_ADDX
|
bsr op_SUBX
|
bsr op_SUBX
|
bsr op_MULU
|
bsr op_MULU
|
bsr op_MULS
|
bsr op_MULS
|
bsr op_EXG
|
bsr op_EXG
|
bsr op_ROx
|
bsr op_ROx
|
bsr op_ROXx
|
bsr op_ROXx
|
bsr op_SHIFTS
|
bsr op_SHIFTS
|
bsr op_SHIFTS2
|
bsr op_SHIFTS2
|
|
|
rts
|
rts
|
bra ALL_DONE
|
bra ALL_DONE
|
|
|
* Loop here when all tests pass
|
* Loop here when all tests pass
|
*
|
*
|
|
|
ALL_DONE: bra.s ALL_DONE
|
ALL_DONE: bra.s ALL_DONE
|
|
|
BSR_FAR1: move.l #$33333333,d3
|
BSR_FAR1: move.l #$33333333,d3
|
rts
|
rts
|
|
|
; moveq #-1,d0
|
; moveq #-1,d0
|
; move.l d0,$FD0FFF00
|
; move.l d0,$FD0FFF00
|
;do_nothing:
|
;do_nothing:
|
; bra *
|
; bra *
|
|
|
|
|
* Exception Vector = 6 CHK Instruction
|
* Exception Vector = 6 CHK Instruction
|
*
|
*
|
* align 4
|
* align 4
|
EXCEPTION_6:
|
EXCEPTION_6:
|
move.l #$EEEE0006,d6 * Set d6 to the exception vector
|
move.l #$EEEE0006,d6 * Set d6 to the exception vector
|
rte
|
rte
|
|
|
* Exception Vector = 7 TRAPV Instruction
|
* Exception Vector = 7 TRAPV Instruction
|
*
|
*
|
* align 4
|
* align 4
|
EXCEPTION_7:
|
EXCEPTION_7:
|
move.l #$12345678,d0 * Set d6 to the exception vector
|
move.l #$12345678,d0 * Set d6 to the exception vector
|
rte
|
rte
|
|
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
; OPCODE : ORI_TO_CCR
|
; OPCODE : ORI_TO_CCR
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
op_ORI_TO_CCR:
|
op_ORI_TO_CCR:
|
|
|
ori.b #$FF,CCR
|
ori.b #$FF,CCR
|
bpl.s * ; branch if Z clear
|
bpl.s * ; branch if Z clear
|
bne.s * ; branch if N clear
|
bne.s * ; branch if N clear
|
bvc.s * ; branch if V clear
|
bvc.s * ; branch if V clear
|
bcc.s * ; branch if C clear
|
bcc.s * ; branch if C clear
|
|
|
move #$00,CCR
|
move #$00,CCR
|
ori.b #$00,CCR
|
ori.b #$00,CCR
|
beq.s * ; branch if Z set
|
beq.s * ; branch if Z set
|
bmi.s * ; branch if N set
|
bmi.s * ; branch if N set
|
bvs.s * ; branch if V set
|
bvs.s * ; branch if V set
|
bcs.s * ; branch if C set
|
bcs.s * ; branch if C set
|
|
|
move.w #$2700,SR ; Put flags back to initial value
|
move.w #$2700,SR ; Put flags back to initial value
|
|
|
rts
|
rts
|
|
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
; OPCODE : ORI_TO_SR
|
; OPCODE : ORI_TO_SR
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
|
|
op_ORI_TO_SR:
|
op_ORI_TO_SR:
|
|
|
ori.w #$2FFF,SR
|
ori.w #$2FFF,SR
|
bpl.s * * branch if Z clear
|
bpl.s * * branch if Z clear
|
bne.s * * branch if N clear
|
bne.s * * branch if N clear
|
bvc.s * * branch if V clear
|
bvc.s * * branch if V clear
|
bcc.s * * branch if C clear
|
bcc.s * * branch if C clear
|
|
|
move.w #$2000,SR
|
move.w #$2000,SR
|
ori.w #$0000,SR
|
ori.w #$0000,SR
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bmi.s * * branch if N set
|
bmi.s * * branch if N set
|
bvs.s * * branch if V set
|
bvs.s * * branch if V set
|
bcs.s * * branch if C set
|
bcs.s * * branch if C set
|
|
|
move.w #$2700,sr * Put flags back to initial value
|
move.w #$2700,sr * Put flags back to initial value
|
|
|
rts
|
rts
|
;
|
;
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
; OPCODE : EORI_TO_CCR
|
; OPCODE : EORI_TO_CCR
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
op_EORI_TO_CCR:
|
op_EORI_TO_CCR:
|
|
|
move #$00,CCR
|
move #$00,CCR
|
eori.b #$FF,CCR
|
eori.b #$FF,CCR
|
bpl.s * ; branch if Z clear
|
bpl.s * ; branch if Z clear
|
bne.s * ; branch if N clear
|
bne.s * ; branch if N clear
|
bvc.s * ; branch if V clear
|
bvc.s * ; branch if V clear
|
bcc.s * ; branch if C clear
|
bcc.s * ; branch if C clear
|
|
|
move #$00,CCR
|
move #$00,CCR
|
eori.b #$00,CCR
|
eori.b #$00,CCR
|
beq.s * ; branch if Z set
|
beq.s * ; branch if Z set
|
bmi.s * ; branch if N set
|
bmi.s * ; branch if N set
|
bvs.s * ; branch if V set
|
bvs.s * ; branch if V set
|
bcs.s * ; branch if C set
|
bcs.s * ; branch if C set
|
|
|
move.w #$2700,sr ; Put flags back to initial value
|
move.w #$2700,sr ; Put flags back to initial value
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : EORI_TO_SR
|
* OPCODE : EORI_TO_SR
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_EORI_TO_SR:
|
op_EORI_TO_SR:
|
|
|
move.w #$2000,SR
|
move.w #$2000,SR
|
eori.w #$0FFF,SR
|
eori.w #$0FFF,SR
|
bpl.s * * branch if Z clear
|
bpl.s * * branch if Z clear
|
bne.s * * branch if N clear
|
bne.s * * branch if N clear
|
bvc.s * * branch if V clear
|
bvc.s * * branch if V clear
|
bcc.s * * branch if C clear
|
bcc.s * * branch if C clear
|
|
|
move.w #$2000,SR
|
move.w #$2000,SR
|
eori.w #$0000,SR
|
eori.w #$0000,SR
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bmi.s * * branch if N set
|
bmi.s * * branch if N set
|
bvs.s * * branch if V set
|
bvs.s * * branch if V set
|
bcs.s * * branch if C set
|
bcs.s * * branch if C set
|
|
|
move.w #$2700,sr * Put flags back to initial value
|
move.w #$2700,sr * Put flags back to initial value
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : ANDI_TO_CCR
|
* OPCODE : ANDI_TO_CCR
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_ANDI_TO_CCR:
|
op_ANDI_TO_CCR:
|
|
|
move #$FF,CCR
|
move #$FF,CCR
|
andi.b #$FF,CCR
|
andi.b #$FF,CCR
|
bpl.s * * branch if Z clear
|
bpl.s * * branch if Z clear
|
bne.s * * branch if N clear
|
bne.s * * branch if N clear
|
bvc.s * * branch if V clear
|
bvc.s * * branch if V clear
|
bcc.s * * branch if C clear
|
bcc.s * * branch if C clear
|
|
|
move #$FF,CCR
|
move #$FF,CCR
|
andi.b #$00,CCR
|
andi.b #$00,CCR
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bmi.s * * branch if N set
|
bmi.s * * branch if N set
|
bvs.s * * branch if V set
|
bvs.s * * branch if V set
|
bcs.s * * branch if C set
|
bcs.s * * branch if C set
|
|
|
move #$2700,SR * Put flags back to initial value
|
move #$2700,SR * Put flags back to initial value
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : ANDI_TO_SR
|
* OPCODE : ANDI_TO_SR
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_ANDI_TO_SR:
|
op_ANDI_TO_SR:
|
move.w #$20FF,SR
|
move.w #$20FF,SR
|
andi.w #$FFFF,SR
|
andi.w #$FFFF,SR
|
bpl.s * * branch if Z clear
|
bpl.s * * branch if Z clear
|
bne.s * * branch if N clear
|
bne.s * * branch if N clear
|
bvc.s * * branch if V clear
|
bvc.s * * branch if V clear
|
bcc.s * * branch if C clear
|
bcc.s * * branch if C clear
|
|
|
move.w #$20FF,SR
|
move.w #$20FF,SR
|
andi.w #$FF00,SR
|
andi.w #$FF00,SR
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bmi.s * * branch if N set
|
bmi.s * * branch if N set
|
bvs.s * * branch if V set
|
bvs.s * * branch if V set
|
bcs.s * * branch if C set
|
bcs.s * * branch if C set
|
|
|
move.w #$2700,sr * Put flags back to initial value
|
move.w #$2700,sr * Put flags back to initial value
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : BTST
|
* OPCODE : BTST
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_BTST:
|
op_BTST:
|
|
|
* Bit Number.s Static
|
* Bit Number.s Static
|
|
|
* EA = Dn - LONG only
|
* EA = Dn - LONG only
|
move.l #$80000001,d0 * populate test data
|
move.l #$80000001,d0 * populate test data
|
btst.l #0,d0
|
btst.l #0,d0
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.l #1,d0 *
|
btst.l #1,d0 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.l #31,d0 *
|
btst.l #31,d0 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = (An) - BYTE only
|
* EA = (An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.b #$81,(a0) * populate test data
|
move.b #$81,(a0) * populate test data
|
move.b (a0),d1 * Check to see if data in memory is 0x81
|
move.b (a0),d1 * Check to see if data in memory is 0x81
|
btst.b #0,(a0)
|
btst.b #0,(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b #1,(a0) *
|
btst.b #1,(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b #7,(a0) *
|
btst.b #7,(a0) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = (An)+ - BYTE only
|
* EA = (An)+ - BYTE only
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
btst.b #0,(a0)+
|
btst.b #0,(a0)+
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b #1,(a0)+ *
|
btst.b #1,(a0)+ *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b #7,(a0)+ *
|
btst.b #7,(a0)+ *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = -(An) - BYTE only
|
* EA = -(An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.l #$00000103,a0 * point to memory to address
|
move.l #$00000103,a0 * point to memory to address
|
btst.b #0,-(a0)
|
btst.b #0,-(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b #1,-(a0) *
|
btst.b #1,-(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b #7,-(a0) *
|
btst.b #7,-(a0) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = n(An) - BYTE only
|
* EA = n(An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
btst.b #0,0(a0)
|
btst.b #0,0(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b #1,1(a0) *
|
btst.b #1,1(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b #7,2(a0) *
|
btst.b #7,2(a0) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = n(An,R.W) - BYTE only
|
* EA = n(An,R.W) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
btst.b #0,0(a0,d0.w)
|
btst.b #0,0(a0,d0.w)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b #1,0(a0,d1.w) *
|
btst.b #1,0(a0,d1.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b #7,1(a0,d1.w) *
|
btst.b #7,1(a0,d1.w) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
* EA = n(An,R.L) - BYTE only
|
* EA = n(An,R.L) - BYTE only
|
btst.b #0,0(a0,d0.l)
|
btst.b #0,0(a0,d0.l)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b #1,0(a0,d1.l) *
|
btst.b #1,0(a0,d1.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b #7,1(a0,d1.l) *
|
btst.b #7,1(a0,d1.l) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
* EA = n(An,A.W) - BYTE only
|
* EA = n(An,A.W) - BYTE only
|
btst.b #0,0(a0,a1.w)
|
btst.b #0,0(a0,a1.w)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b #1,0(a0,a2.w) *
|
btst.b #1,0(a0,a2.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b #7,1(a0,a2.w) *
|
btst.b #7,1(a0,a2.w) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
* EA = n(An,A.L) - BYTE only
|
* EA = n(An,A.L) - BYTE only
|
btst.b #0,0(a0,a1.l)
|
btst.b #0,0(a0,a1.l)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b #1,0(a0,a2.l) *
|
btst.b #1,0(a0,a2.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b #7,1(a0,a2.l) *
|
btst.b #7,1(a0,a2.l) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = x.W - BYTE only
|
* EA = x.W - BYTE only
|
btst.b #0,$0100
|
btst.b #0,$0100
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b #1,$0101 *
|
btst.b #1,$0101 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b #7,$0102 *
|
btst.b #7,$0102 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = x.L - BYTE only
|
* EA = x.L - BYTE only
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
btst.b #0,$F100
|
btst.b #0,$F100
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b #1,$F101 *
|
btst.b #1,$F101 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b #7,$F102 *
|
btst.b #7,$F102 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = x(PC) - BYTE only
|
* EA = x(PC) - BYTE only
|
lea op_BTST(pc),a5
|
lea op_BTST(pc),a5
|
btst.b #0,op_BTST(pc)
|
btst.b #0,op_BTST(pc)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b #3,op_BTST0(pc) *
|
btst.b #3,op_BTST0(pc) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b #6,op_BTST12(pc) *
|
btst.b #6,op_BTST12(pc) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = n(PC,R.W) - BYTE only
|
* EA = n(PC,R.W) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
|
|
op_BTST0: btst.b #0,op_BTST0(pc,d0.w)
|
op_BTST0: btst.b #0,op_BTST0(pc,d0.w)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
lea op_BTST1(pc,d1.w),a5
|
lea op_BTST1(pc,d1.w),a5
|
op_BTST1: btst.b #1,op_BTST1(pc,d1.w) *
|
op_BTST1: btst.b #1,op_BTST1(pc,d1.w) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
op_BTST2: btst.b #7,op_BTST2(pc,d1.w) *
|
op_BTST2: btst.b #7,op_BTST2(pc,d1.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(PC,R.L) - BYTE only
|
* EA = n(PC,R.L) - BYTE only
|
op_BTST3: btst.b #0,op_BTST3(pc,d0.l)
|
op_BTST3: btst.b #0,op_BTST3(pc,d0.l)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
op_BTST4: btst.b #1,op_BTST4(pc,d1.l) *
|
op_BTST4: btst.b #1,op_BTST4(pc,d1.l) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
op_BTST5: btst.b #7,op_BTST5(pc,d1.l) *
|
op_BTST5: btst.b #7,op_BTST5(pc,d1.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(PC,A.W) - BYTE only
|
* EA = n(PC,A.W) - BYTE only
|
op_BTST6 btst.b #0,op_BTST6(pc,a1.w)
|
op_BTST6 btst.b #0,op_BTST6(pc,a1.w)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
op_BTST7: btst.b #1,op_BTST7(pc,a2.w) *
|
op_BTST7: btst.b #1,op_BTST7(pc,a2.w) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
op_BTST8: btst.b #7,op_BTST8(pc,a2.w) *
|
op_BTST8: btst.b #7,op_BTST8(pc,a2.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(PC,A.L) - BYTE only
|
* EA = n(PC,A.L) - BYTE only
|
op_BTST9: btst.b #0,op_BTST9(pc,a1.l)
|
op_BTST9: btst.b #0,op_BTST9(pc,a1.l)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
op_BTST10: btst.b #1,op_BTST10(pc,a2.l) *
|
op_BTST10: btst.b #1,op_BTST10(pc,a2.l) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
op_BTST11: btst.b #7,op_BTST11(pc,a2.l) *
|
op_BTST11: btst.b #7,op_BTST11(pc,a2.l) *
|
op_BTST12: bne.s * * branch if Z clear
|
op_BTST12: bne.s * * branch if Z clear
|
|
|
|
|
|
|
* Bit Number.s Dynamic
|
* Bit Number.s Dynamic
|
|
|
* EA = Dn - LONG only
|
* EA = Dn - LONG only
|
move.l #$80000001,d0 * populate test data
|
move.l #$80000001,d0 * populate test data
|
move.l #0,d5 * populate bit.s number to test
|
move.l #0,d5 * populate bit.s number to test
|
move.l #1,d6 * populate bit.s number to test
|
move.l #1,d6 * populate bit.s number to test
|
move.l #31,d7 * populate bit.s number to test
|
move.l #31,d7 * populate bit.s number to test
|
|
|
btst.l d5,d0
|
btst.l d5,d0
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.l d6,d0 *
|
btst.l d6,d0 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.l d7,d0 *
|
btst.l d7,d0 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = (An) - BYTE only
|
* EA = (An) - BYTE only
|
move.l #0,d5 * populate bit.s number to test
|
move.l #0,d5 * populate bit.s number to test
|
move.l #1,d6 * populate bit.s number to test
|
move.l #1,d6 * populate bit.s number to test
|
move.l #7,d7 * populate bit.s number to test
|
move.l #7,d7 * populate bit.s number to test
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.b #$81,(a0) * populate test data
|
move.b #$81,(a0) * populate test data
|
move.b (a0),d1 * Check to see if data in memory is 0x81
|
move.b (a0),d1 * Check to see if data in memory is 0x81
|
btst.b d5,(a0)
|
btst.b d5,(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b d6,(a0) *
|
btst.b d6,(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b d7,(a0) *
|
btst.b d7,(a0) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
* ---
|
* ---
|
|
|
|
|
* EA = (An)+ - BYTE only
|
* EA = (An)+ - BYTE only
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
btst.b d5,(a0)+
|
btst.b d5,(a0)+
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b d6,(a0)+ *
|
btst.b d6,(a0)+ *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b d7,(a0)+ *
|
btst.b d7,(a0)+ *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = -(An) - BYTE only
|
* EA = -(An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.l #$00000103,a0 * point to memory to address
|
move.l #$00000103,a0 * point to memory to address
|
btst.b d5,-(a0)
|
btst.b d5,-(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b d6,-(a0) *
|
btst.b d6,-(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b d7,-(a0) *
|
btst.b d7,-(a0) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = n(An) - BYTE only
|
* EA = n(An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
btst.b d5,0(a0)
|
btst.b d5,0(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b d6,1(a0) *
|
btst.b d6,1(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b d7,2(a0) *
|
btst.b d7,2(a0) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = n(An,R.W) - BYTE only
|
* EA = n(An,R.W) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
btst.b d5,0(a0,d0.w)
|
btst.b d5,0(a0,d0.w)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b d6,0(a0,d1.w) *
|
btst.b d6,0(a0,d1.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b d7,1(a0,d1.w) *
|
btst.b d7,1(a0,d1.w) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
* EA = n(An,R.L) - BYTE only
|
* EA = n(An,R.L) - BYTE only
|
btst.b d5,0(a0,d0.l)
|
btst.b d5,0(a0,d0.l)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b d6,0(a0,d1.l) *
|
btst.b d6,0(a0,d1.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b d7,1(a0,d1.l) *
|
btst.b d7,1(a0,d1.l) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
* EA = n(An,A.W) - BYTE only
|
* EA = n(An,A.W) - BYTE only
|
btst.b d5,0(a0,a1.w)
|
btst.b d5,0(a0,a1.w)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b d6,0(a0,a2.w) *
|
btst.b d6,0(a0,a2.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b d7,1(a0,a2.w) *
|
btst.b d7,1(a0,a2.w) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
* EA = n(An,A.L) - BYTE only
|
* EA = n(An,A.L) - BYTE only
|
btst.b d5,0(a0,a1.l)
|
btst.b d5,0(a0,a1.l)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b d6,0(a0,a2.l) *
|
btst.b d6,0(a0,a2.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b d7,1(a0,a2.l) *
|
btst.b d7,1(a0,a2.l) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = x.W - BYTE only
|
* EA = x.W - BYTE only
|
btst.b d5,$0100
|
btst.b d5,$0100
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b d6,$0101 *
|
btst.b d6,$0101 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b d7,$0102 *
|
btst.b d7,$0102 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = x.L - BYTE only
|
* EA = x.L - BYTE only
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
btst.b d5,$F100
|
btst.b d5,$F100
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b d6,$F101 *
|
btst.b d6,$F101 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b d7,$F102 *
|
btst.b d7,$F102 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = x(PC) - BYTE only
|
* EA = x(PC) - BYTE only
|
move.l #3,d6 * populate bit.s number to test
|
move.l #3,d6 * populate bit.s number to test
|
move.l #6,d7 * populate bit.s number to test
|
move.l #6,d7 * populate bit.s number to test
|
lea op_BTST(pc),a5
|
lea op_BTST(pc),a5
|
btst.b d5,op_BTST(pc)
|
btst.b d5,op_BTST(pc)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b d6,op_BTST0(pc) *
|
btst.b d6,op_BTST0(pc) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b d7,op_BTST12(pc) *
|
btst.b d7,op_BTST12(pc) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = n(PC,R.W) - BYTE only
|
* EA = n(PC,R.W) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
move.l #1,d6 * populate bit.s number to test
|
move.l #1,d6 * populate bit.s number to test
|
move.l #7,d7 * populate bit.s number to test
|
move.l #7,d7 * populate bit.s number to test
|
|
|
op_BTST20: btst.b d5,op_BTST20(pc,d0.w)
|
op_BTST20: btst.b d5,op_BTST20(pc,d0.w)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
lea op_BTST21(pc,d1.w),a5
|
lea op_BTST21(pc,d1.w),a5
|
op_BTST21: btst.b d6,op_BTST21(pc,d1.w) *
|
op_BTST21: btst.b d6,op_BTST21(pc,d1.w) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
op_BTST22: btst.b d7,op_BTST22(pc,d1.w) *
|
op_BTST22: btst.b d7,op_BTST22(pc,d1.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(PC,R.L) - BYTE only
|
* EA = n(PC,R.L) - BYTE only
|
op_BTST23: btst.b d5,op_BTST23(pc,d0.l)
|
op_BTST23: btst.b d5,op_BTST23(pc,d0.l)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
op_BTST24: btst.b d6,op_BTST24(pc,d1.l) *
|
op_BTST24: btst.b d6,op_BTST24(pc,d1.l) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
op_BTST25 btst.b d7,op_BTST25(pc,d1.l) *
|
op_BTST25 btst.b d7,op_BTST25(pc,d1.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(PC,A.W) - BYTE only
|
* EA = n(PC,A.W) - BYTE only
|
op_BTST26 btst.b d5,op_BTST26(pc,a1.w)
|
op_BTST26 btst.b d5,op_BTST26(pc,a1.w)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
op_BTST27: btst.b d6,op_BTST27(pc,a2.w) *
|
op_BTST27: btst.b d6,op_BTST27(pc,a2.w) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
op_BTST28: btst.b d7,op_BTST28(pc,a2.w) *
|
op_BTST28: btst.b d7,op_BTST28(pc,a2.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(PC,A.L) - BYTE only
|
* EA = n(PC,A.L) - BYTE only
|
op_BTST29: btst.b d5,op_BTST29(pc,a1.l)
|
op_BTST29: btst.b d5,op_BTST29(pc,a1.l)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
op_BTST30: btst.b d6,op_BTST30(pc,a2.l) *
|
op_BTST30: btst.b d6,op_BTST30(pc,a2.l) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
op_BTST31: btst.b d7,op_BTST31(pc,a2.l) *
|
op_BTST31: btst.b d7,op_BTST31(pc,a2.l) *
|
op_BTST32: bne.s * * branch if Z clear
|
op_BTST32: bne.s * * branch if Z clear
|
|
|
* EA = #x - BYTE only
|
* EA = #x - BYTE only
|
|
|
move.l #0,d5 * populate bit.s number to test
|
move.l #0,d5 * populate bit.s number to test
|
move.l #3,d6 * populate bit.s number to test
|
move.l #3,d6 * populate bit.s number to test
|
move.l #7,d7 * populate bit.s number to test
|
move.l #7,d7 * populate bit.s number to test
|
|
|
btst.b d5,#$88
|
btst.b d5,#$88
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
btst.b d6,#$88
|
btst.b d6,#$88
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
btst.b d7,#$88
|
btst.b d7,#$88
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
rts
|
rts
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : BCHG
|
* OPCODE : BCHG
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_BCHG:
|
op_BCHG:
|
|
|
|
|
* Bit Number.s Static
|
* Bit Number.s Static
|
|
|
* EA = Dn - LONG only
|
* EA = Dn - LONG only
|
move.l #$80000001,d0 * populate test data
|
move.l #$80000001,d0 * populate test data
|
bchg.l #0,d0
|
bchg.l #0,d0
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.l #1,d0 *
|
bchg.l #1,d0 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.l #31,d0 *
|
bchg.l #31,d0 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
cmpi.l #$00000002,d0
|
cmpi.l #$00000002,d0
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = (An) - BYTE only
|
* EA = (An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.b #$81,(a0) * populate test data
|
move.b #$81,(a0) * populate test data
|
move.b (a0),d1 * Check to see if data in memory is 0x81
|
move.b (a0),d1 * Check to see if data in memory is 0x81
|
bchg.b #0,(a0)
|
bchg.b #0,(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b #1,(a0) *
|
bchg.b #1,(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b #7,(a0) *
|
bchg.b #7,(a0) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
cmpi.b #$02,(a0)
|
cmpi.b #$02,(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = (An)+ - BYTE only
|
* EA = (An)+ - BYTE only
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
bchg.b #0,(a0)+
|
bchg.b #0,(a0)+
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b #1,(a0)+ *
|
bchg.b #1,(a0)+ *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b #7,(a0)+ *
|
bchg.b #7,(a0)+ *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$00,(a0)+
|
cmpi.b #$00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$FE,(a0)+
|
cmpi.b #$FE,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$00,(a0)+
|
cmpi.b #$00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = -(An) - BYTE only
|
* EA = -(An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.l #$00000103,a0 * point to memory to address
|
move.l #$00000103,a0 * point to memory to address
|
bchg.b #0,-(a0)
|
bchg.b #0,-(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b #1,-(a0) *
|
bchg.b #1,-(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b #7,-(a0) *
|
bchg.b #7,-(a0) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$00000103,a0 * point to memory to address 0x100
|
move.l #$00000103,a0 * point to memory to address 0x100
|
cmpi.b #$00,-(a0)
|
cmpi.b #$00,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$FE,-(a0)
|
cmpi.b #$FE,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$00,-(a0)
|
cmpi.b #$00,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = n(An) - BYTE only
|
* EA = n(An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
bchg.b #0,0(a0)
|
bchg.b #0,0(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b #1,1(a0) *
|
bchg.b #1,1(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b #7,2(a0) *
|
bchg.b #7,2(a0) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$00,(a0)+
|
cmpi.b #$00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$FE,(a0)+
|
cmpi.b #$FE,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$00,(a0)+
|
cmpi.b #$00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = n(An,D.W) - BYTE only
|
* EA = n(An,D.W) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
bchg.b #0,0(a0,d0.w)
|
bchg.b #0,0(a0,d0.w)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b #1,0(a0,d1.w) *
|
bchg.b #1,0(a0,d1.w) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b #7,1(a0,d1.w) *
|
bchg.b #7,1(a0,d1.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(An,D.L) - BYTE only
|
* EA = n(An,D.L) - BYTE only
|
bchg.b #0,0(a0,d0.l)
|
bchg.b #0,0(a0,d0.l)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b #1,0(a0,d1.l) *
|
bchg.b #1,0(a0,d1.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b #7,1(a0,d1.l) *
|
bchg.b #7,1(a0,d1.l) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
* EA = n(An,A.W) - BYTE only
|
* EA = n(An,A.W) - BYTE only
|
bchg.b #0,0(a0,a1.w)
|
bchg.b #0,0(a0,a1.w)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b #1,0(a0,a2.w) *
|
bchg.b #1,0(a0,a2.w) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b #7,1(a0,a2.w) *
|
bchg.b #7,1(a0,a2.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(An,A.L) - BYTE only
|
* EA = n(An,A.L) - BYTE only
|
bchg.b #0,0(a0,a1.l)
|
bchg.b #0,0(a0,a1.l)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b #1,0(a0,a2.l) *
|
bchg.b #1,0(a0,a2.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b #7,1(a0,a2.l) *
|
bchg.b #7,1(a0,a2.l) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$00,(a0)+
|
cmpi.b #$00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$FE,(a0)+
|
cmpi.b #$FE,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$00,(a0)+
|
cmpi.b #$00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = x.W - BYTE only
|
* EA = x.W - BYTE only
|
bchg.b #0,$0100
|
bchg.b #0,$0100
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b #1,$0101 *
|
bchg.b #1,$0101 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b #7,$0102 *
|
bchg.b #7,$0102 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$01,(a0)+
|
cmpi.b #$01,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$FC,(a0)+
|
cmpi.b #$FC,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$80,(a0)+
|
cmpi.b #$80,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = x.L - BYTE only
|
* EA = x.L - BYTE only
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
bchg.b #0,$F100
|
bchg.b #0,$F100
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b #1,$F101 *
|
bchg.b #1,$F101 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b #7,$F102 *
|
bchg.b #7,$F102 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$01,(a0)+
|
cmpi.b #$01,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$FC,(a0)+
|
cmpi.b #$FC,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$80,(a0)+
|
cmpi.b #$80,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* Bit Number.s Dynamic
|
* Bit Number.s Dynamic
|
|
|
* EA = Dn - LONG only
|
* EA = Dn - LONG only
|
move.l #$80000001,d0 * populate test data
|
move.l #$80000001,d0 * populate test data
|
move.l #0,d5 * populate bit.s number to test
|
move.l #0,d5 * populate bit.s number to test
|
move.l #1,d6 * populate bit.s number to test
|
move.l #1,d6 * populate bit.s number to test
|
move.l #31,d7 * populate bit.s number to test
|
move.l #31,d7 * populate bit.s number to test
|
|
|
bchg.l d5,d0
|
bchg.l d5,d0
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.l d6,d0 *
|
bchg.l d6,d0 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.l d7,d0 *
|
bchg.l d7,d0 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
cmpi.l #$00000002,d0
|
cmpi.l #$00000002,d0
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = (An) - BYTE only
|
* EA = (An) - BYTE only
|
move.l #0,d5 * populate bit.s number to test
|
move.l #0,d5 * populate bit.s number to test
|
move.l #1,d6 * populate bit.s number to test
|
move.l #1,d6 * populate bit.s number to test
|
move.l #7,d7 * populate bit.s number to test
|
move.l #7,d7 * populate bit.s number to test
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.b #$81,(a0) * populate test data
|
move.b #$81,(a0) * populate test data
|
move.b (a0),d1 * Check to see if data in memory is 0x81
|
move.b (a0),d1 * Check to see if data in memory is 0x81
|
bchg.b d5,(a0)
|
bchg.b d5,(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b d6,(a0) *
|
bchg.b d6,(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b d7,(a0) *
|
bchg.b d7,(a0) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
cmpi.b #$02,(a0)
|
cmpi.b #$02,(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = (An)+ - BYTE only
|
* EA = (An)+ - BYTE only
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
bchg.b d5,(a0)+
|
bchg.b d5,(a0)+
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b d6,(a0)+ *
|
bchg.b d6,(a0)+ *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b d7,(a0)+ *
|
bchg.b d7,(a0)+ *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$00,(a0)+
|
cmpi.b #$00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$FE,(a0)+
|
cmpi.b #$FE,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$00,(a0)+
|
cmpi.b #$00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = -(An) - BYTE only
|
* EA = -(An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.l #$00000103,a0 * point to memory to address
|
move.l #$00000103,a0 * point to memory to address
|
bchg.b d5,-(a0)
|
bchg.b d5,-(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b d6,-(a0) *
|
bchg.b d6,-(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b d7,-(a0) *
|
bchg.b d7,-(a0) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$00000103,a0 * point to memory to address 0x100
|
move.l #$00000103,a0 * point to memory to address 0x100
|
cmpi.b #$00,-(a0)
|
cmpi.b #$00,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$FE,-(a0)
|
cmpi.b #$FE,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$00,-(a0)
|
cmpi.b #$00,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = n(An) - BYTE only
|
* EA = n(An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
bchg.b d5,0(a0)
|
bchg.b d5,0(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b d6,1(a0) *
|
bchg.b d6,1(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b d7,2(a0) *
|
bchg.b d7,2(a0) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$00,(a0)+
|
cmpi.b #$00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$FE,(a0)+
|
cmpi.b #$FE,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$00,(a0)+
|
cmpi.b #$00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = n(An,R.W) - BYTE only
|
* EA = n(An,R.W) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
bchg.b d5,0(a0,d0.w)
|
bchg.b d5,0(a0,d0.w)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b d6,0(a0,d1.w) *
|
bchg.b d6,0(a0,d1.w) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b d7,1(a0,d1.w) *
|
bchg.b d7,1(a0,d1.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(An,R.L) - BYTE only
|
* EA = n(An,R.L) - BYTE only
|
bchg.b d5,0(a0,d0.l)
|
bchg.b d5,0(a0,d0.l)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b d6,0(a0,d1.l) *
|
bchg.b d6,0(a0,d1.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b d7,1(a0,d1.l) *
|
bchg.b d7,1(a0,d1.l) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
* EA = n(An,A.W) - BYTE only
|
* EA = n(An,A.W) - BYTE only
|
bchg.b d5,0(a0,a1.w)
|
bchg.b d5,0(a0,a1.w)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b d6,0(a0,a2.w) *
|
bchg.b d6,0(a0,a2.w) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b d7,1(a0,a2.w) *
|
bchg.b d7,1(a0,a2.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(An,A.L) - BYTE only
|
* EA = n(An,A.L) - BYTE only
|
bchg.b d5,0(a0,a1.l)
|
bchg.b d5,0(a0,a1.l)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b d6,0(a0,a2.l) *
|
bchg.b d6,0(a0,a2.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b d7,1(a0,a2.l) *
|
bchg.b d7,1(a0,a2.l) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
cmpi.b #$00,(a0)+
|
cmpi.b #$00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = x.W - BYTE only
|
* EA = x.W - BYTE only
|
bchg.b d5,$0100
|
bchg.b d5,$0100
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b d6,$0101 *
|
bchg.b d6,$0101 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b d7,$0102 *
|
bchg.b d7,$0102 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$FC,(a0)+
|
cmpi.b #$FC,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = x.L - BYTE only
|
* EA = x.L - BYTE only
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
bchg.b d5,$F100
|
bchg.b d5,$F100
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bchg.b d6,$F101 *
|
bchg.b d6,$F101 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bchg.b d7,$F102 *
|
bchg.b d7,$F102 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$F101,a0 * point to memory to address 0x100
|
move.l #$F101,a0 * point to memory to address 0x100
|
cmpi.b #$FE,(a0)
|
cmpi.b #$FE,(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
rts
|
rts
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : BCLR
|
* OPCODE : BCLR
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_BCLR:
|
op_BCLR:
|
|
|
|
|
* Bit Number.s Static
|
* Bit Number.s Static
|
|
|
* EA = Dn - LONG only
|
* EA = Dn - LONG only
|
move.l #$FF0000FF,d0 * populate test data
|
move.l #$FF0000FF,d0 * populate test data
|
bclr.l #0,d0
|
bclr.l #0,d0
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.l #1,d0 *
|
bclr.l #1,d0 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.l #15,d0 *
|
bclr.l #15,d0 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bclr.l #31,d0 *
|
bclr.l #31,d0 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
cmpi.l #$7F0000FC,d0
|
cmpi.l #$7F0000FC,d0
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = (An) - BYTE only
|
* EA = (An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.b #$0F,(a0) * populate test data
|
move.b #$0F,(a0) * populate test data
|
bclr.b #0,(a0)
|
bclr.b #0,(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b #7,(a0) *
|
bclr.b #7,(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$0E,(a0)
|
cmpi.b #$0E,(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = (An)+ - BYTE only
|
* EA = (An)+ - BYTE only
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
bclr.b #0,(a0)+
|
bclr.b #0,(a0)+
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b #1,(a0)+ *
|
bclr.b #1,(a0)+ *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$00,(a0)+
|
cmpi.b #$00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$00,(a0)+
|
cmpi.b #$00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = -(An) - BYTE only
|
* EA = -(An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
bclr.b #7,-(a0)
|
bclr.b #7,-(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b #0,-(a0) *
|
bclr.b #0,-(a0) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$00000102,a0 * point to memory to address 0x100
|
move.l #$00000102,a0 * point to memory to address 0x100
|
cmpi.b #$00,-(a0)
|
cmpi.b #$00,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$00,-(a0)
|
cmpi.b #$00,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = n(An) - BYTE only
|
* EA = n(An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$FF,(a0)+ * populate test data
|
move.b #$FF,(a0)+ * populate test data
|
move.b #$FF,(a0)+ * populate test data
|
move.b #$FF,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
bclr.b #0,0(a0)
|
bclr.b #0,0(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b #4,1(a0) *
|
bclr.b #4,1(a0) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$FE,(a0)+
|
cmpi.b #$FE,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$EF,(a0)+
|
cmpi.b #$EF,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = n(An,D.W) - BYTE only
|
* EA = n(An,D.W) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
move.b #$FF,(a0)+ * populate test data
|
move.b #$FF,(a0)+ * populate test data
|
move.b #$FF,(a0)+ * populate test data
|
move.b #$FF,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
bclr.b #0,0(a0,d0.w)
|
bclr.b #0,0(a0,d0.w)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b #1,0(a0,d1.w) *
|
bclr.b #1,0(a0,d1.w) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b #2,1(a0,d1.w) *
|
bclr.b #2,1(a0,d1.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(An,D.L) - BYTE only
|
* EA = n(An,D.L) - BYTE only
|
bclr.b #3,0(a0,d0.l)
|
bclr.b #3,0(a0,d0.l)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b #4,0(a0,d1.l) *
|
bclr.b #4,0(a0,d1.l) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b #5,1(a0,d1.l) *
|
bclr.b #5,1(a0,d1.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(An,A.W) - BYTE only
|
* EA = n(An,A.W) - BYTE only
|
bclr.b #6,0(a0,a1.w)
|
bclr.b #6,0(a0,a1.w)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b #1,0(a0,a2.w) *
|
bclr.b #1,0(a0,a2.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bclr.b #7,1(a0,a2.w) *
|
bclr.b #7,1(a0,a2.w) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
* EA = n(An,A.L) - BYTE only
|
* EA = n(An,A.L) - BYTE only
|
bclr.b #0,0(a0,a1.l)
|
bclr.b #0,0(a0,a1.l)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bclr.b #0,0(a0,a2.l) *
|
bclr.b #0,0(a0,a2.l) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b #1,1(a0,a2.l) *
|
bclr.b #1,1(a0,a2.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$B6,(a0)+
|
cmpi.b #$B6,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$EC,(a0)+
|
cmpi.b #$EC,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$59,(a0)+
|
cmpi.b #$59,(a0)+
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
|
|
|
|
* EA = x.W - BYTE only
|
* EA = x.W - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$FF,(a0)+ * populate test data
|
move.b #$FF,(a0)+ * populate test data
|
bclr.b #0,$0100
|
bclr.b #0,$0100
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b #1,$0100 *
|
bclr.b #1,$0100 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$FC,(a0)+
|
cmpi.b #$FC,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = x.L - BYTE only
|
* EA = x.L - BYTE only
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.b #$FF,(a0) * populate test data
|
move.b #$FF,(a0) * populate test data
|
bclr.b #0,$F100
|
bclr.b #0,$F100
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b #1,$F100 *
|
bclr.b #1,$F100 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b #2,$F100 *
|
bclr.b #2,$F100 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.l #$F100,a0 * point to memory to address 0x100
|
cmpi.b #$F8,(a0)+
|
cmpi.b #$F8,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* Bit Number.s Dynamic
|
* Bit Number.s Dynamic
|
|
|
* EA = Dn - LONG only
|
* EA = Dn - LONG only
|
move.l #$FF00FF00,d0 * populate test data
|
move.l #$FF00FF00,d0 * populate test data
|
move.l #0,d5 * populate bit.s number to test
|
move.l #0,d5 * populate bit.s number to test
|
move.l #1,d6 * populate bit.s number to test
|
move.l #1,d6 * populate bit.s number to test
|
move.l #31,d7 * populate bit.s number to test
|
move.l #31,d7 * populate bit.s number to test
|
|
|
bclr.l d5,d0
|
bclr.l d5,d0
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bclr.l d6,d0 *
|
bclr.l d6,d0 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bclr.l d7,d0 *
|
bclr.l d7,d0 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
cmpi.l #$7F00FF00,d0
|
cmpi.l #$7F00FF00,d0
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = (An) - BYTE only
|
* EA = (An) - BYTE only
|
move.l #0,d5 * populate bit.s number to test
|
move.l #0,d5 * populate bit.s number to test
|
move.l #1,d6 * populate bit.s number to test
|
move.l #1,d6 * populate bit.s number to test
|
move.l #7,d7 * populate bit.s number to test
|
move.l #7,d7 * populate bit.s number to test
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.b #$81,(a0) * populate test data
|
move.b #$81,(a0) * populate test data
|
bclr.b d5,(a0)
|
bclr.b d5,(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b d6,(a0) *
|
bclr.b d6,(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bclr.b d7,(a0) *
|
bclr.b d7,(a0) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
cmpi.b #$00,(a0)
|
cmpi.b #$00,(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = (An)+ - BYTE only
|
* EA = (An)+ - BYTE only
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
bclr.b d5,(a0)+
|
bclr.b d5,(a0)+
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b d6,(a0)+ *
|
bclr.b d6,(a0)+ *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bclr.b d7,(a0)+ *
|
bclr.b d7,(a0)+ *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$00,(a0)+
|
cmpi.b #$00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$FC,(a0)+
|
cmpi.b #$FC,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$00,(a0)+
|
cmpi.b #$00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = -(An) - BYTE only
|
* EA = -(An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.l #$00000103,a0 * point to memory to address
|
move.l #$00000103,a0 * point to memory to address
|
bclr.b d5,-(a0)
|
bclr.b d5,-(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b d6,-(a0) *
|
bclr.b d6,-(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bclr.b d7,-(a0) *
|
bclr.b d7,-(a0) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$00000103,a0 * point to memory to address 0x100
|
move.l #$00000103,a0 * point to memory to address 0x100
|
cmpi.b #$00,-(a0)
|
cmpi.b #$00,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$FC,-(a0)
|
cmpi.b #$FC,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$00,-(a0)
|
cmpi.b #$00,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = n(An) - BYTE only
|
* EA = n(An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
bclr.b d5,0(a0)
|
bclr.b d5,0(a0)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b d6,1(a0) *
|
bclr.b d6,1(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bclr.b d7,2(a0) *
|
bclr.b d7,2(a0) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$00,(a0)+
|
cmpi.b #$00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$FC,(a0)+
|
cmpi.b #$FC,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$00,(a0)+
|
cmpi.b #$00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = n(An,R.W) - BYTE only
|
* EA = n(An,R.W) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$FF,(a0)+ * populate test data
|
move.b #$FF,(a0)+ * populate test data
|
move.b #$FF,(a0)+ * populate test data
|
move.b #$FF,(a0)+ * populate test data
|
move.b #$FF,(a0)+ * populate test data
|
move.b #$FF,(a0)+ * populate test data
|
move.l #$00000103,a0 * point to memory to address
|
move.l #$00000103,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
bclr.b d5,0(a0,d0.w)
|
bclr.b d5,0(a0,d0.w)
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b d6,0(a0,d1.w) *
|
bclr.b d6,0(a0,d1.w) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b d7,1(a0,d1.w) *
|
bclr.b d7,1(a0,d1.w) *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
* EA = n(An,R.L) - BYTE only
|
* EA = n(An,R.L) - BYTE only
|
bclr.b d5,0(a0,d0.l)
|
bclr.b d5,0(a0,d0.l)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bclr.b d6,0(a0,d1.l) *
|
bclr.b d6,0(a0,d1.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bclr.b d7,1(a0,d1.l) *
|
bclr.b d7,1(a0,d1.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(An,A.W) - BYTE only
|
* EA = n(An,A.W) - BYTE only
|
bclr.b d5,0(a0,a1.w)
|
bclr.b d5,0(a0,a1.w)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bclr.b d6,0(a0,a2.w) *
|
bclr.b d6,0(a0,a2.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bclr.b d7,1(a0,a2.w) *
|
bclr.b d7,1(a0,a2.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(An,A.L) - BYTE only
|
* EA = n(An,A.L) - BYTE only
|
bclr.b d5,0(a0,a1.l)
|
bclr.b d5,0(a0,a1.l)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bclr.b d6,0(a0,a2.l) *
|
bclr.b d6,0(a0,a2.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bclr.b d7,1(a0,a2.l) *
|
bclr.b d7,1(a0,a2.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
cmpi.b #$FE,(a0)
|
cmpi.b #$FE,(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = x.W - BYTE only
|
* EA = x.W - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$FF,(a0)+ * populate test data
|
move.b #$FF,(a0)+ * populate test data
|
move.b #$FF,(a0)+ * populate test data
|
move.b #$FF,(a0)+ * populate test data
|
move.b #$FF,(a0)+ * populate test data
|
move.b #$FF,(a0)+ * populate test data
|
bclr.b d5,$0100
|
bclr.b d5,$0100
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b d6,$0101 *
|
bclr.b d6,$0101 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b d7,$0102 *
|
bclr.b d7,$0102 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
cmpi.b #$FE,(a0)+
|
cmpi.b #$FE,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = x.L - BYTE only
|
* EA = x.L - BYTE only
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.b #$01,(a0)+ * populate test data
|
move.b #$01,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$FC,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
move.b #$80,(a0)+ * populate test data
|
bclr.b d5,$F100
|
bclr.b d5,$F100
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bclr.b d6,$F101 *
|
bclr.b d6,$F101 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bclr.b d7,$F102 *
|
bclr.b d7,$F102 *
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
move.l #$F101,a0 * point to memory to address 0x100
|
move.l #$F101,a0 * point to memory to address 0x100
|
cmpi.b #$FC,(a0)
|
cmpi.b #$FC,(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
|
|
rts
|
rts
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : BSET
|
* OPCODE : BSET
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_BSET:
|
op_BSET:
|
|
|
|
|
* Bit Number.s Static
|
* Bit Number.s Static
|
|
|
* EA = Dn - LONG only
|
* EA = Dn - LONG only
|
moveq #$00000000,d0 * populate test data
|
moveq #$00000000,d0 * populate test data
|
bset.l #0,d0
|
bset.l #0,d0
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.l #1,d0 *
|
bset.l #1,d0 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.l #15,d0 *
|
bset.l #15,d0 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.l #31,d0 *
|
bset.l #31,d0 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.l #$80008003,d0
|
cmpi.l #$80008003,d0
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = (An) - BYTE only
|
* EA = (An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.b #$00,(a0) * populate test data
|
move.b #$00,(a0) * populate test data
|
bset.b #0,(a0)
|
bset.b #0,(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b #7,(a0) *
|
bset.b #7,(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$81,(a0)
|
cmpi.b #$81,(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = (An)+ - BYTE only
|
* EA = (An)+ - BYTE only
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
bset.b #0,(a0)+
|
bset.b #0,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b #1,(a0)+ *
|
bset.b #1,(a0)+ *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$01,(a0)+
|
cmpi.b #$01,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$02,(a0)+
|
cmpi.b #$02,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = -(An) - BYTE only
|
* EA = -(An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
bset.b #7,-(a0)
|
bset.b #7,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b #0,-(a0) *
|
bset.b #0,-(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
move.l #$00000102,a0 * point to memory to address 0x100
|
move.l #$00000102,a0 * point to memory to address 0x100
|
cmpi.b #$80,-(a0)
|
cmpi.b #$80,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$01,-(a0)
|
cmpi.b #$01,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = n(An) - BYTE only
|
* EA = n(An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
bset.b #0,0(a0)
|
bset.b #0,0(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b #4,1(a0) *
|
bset.b #4,1(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$01,(a0)+
|
cmpi.b #$01,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$10,(a0)+
|
cmpi.b #$10,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = n(An,D.W) - BYTE only
|
* EA = n(An,D.W) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000004,a2 * point to memory to address
|
move.l #$00000004,a2 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
bset.b #0,0(a0,d0.w)
|
bset.b #0,0(a0,d0.w)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b #1,0(a0,d1.w) *
|
bset.b #1,0(a0,d1.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b #2,1(a0,d1.w) *
|
bset.b #2,1(a0,d1.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(An,D.L) - BYTE only
|
* EA = n(An,D.L) - BYTE only
|
bset.b #3,2(a0,d0.l)
|
bset.b #3,2(a0,d0.l)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b #4,0(a0,d1.l) *
|
bset.b #4,0(a0,d1.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b #5,1(a0,d1.l) *
|
bset.b #5,1(a0,d1.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(An,A.W) - BYTE only
|
* EA = n(An,A.W) - BYTE only
|
bset.b #6,0(a0,a1.w)
|
bset.b #6,0(a0,a1.w)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b #1,0(a0,a2.w) *
|
bset.b #1,0(a0,a2.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b #7,1(a0,a2.w) *
|
bset.b #7,1(a0,a2.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(An,A.L) - BYTE only
|
* EA = n(An,A.L) - BYTE only
|
bset.b #0,2(a0,a2.l)
|
bset.b #0,2(a0,a2.l)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b #0,3(a0,a2.l) *
|
bset.b #0,3(a0,a2.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b #1,4(a0,a2.l) *
|
bset.b #1,4(a0,a2.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.l #$41122C00,(a0)+
|
cmpi.l #$41122C00,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.l #$02800101,(a0)+
|
cmpi.l #$02800101,(a0)+
|
bne.s *
|
bne.s *
|
|
|
|
|
|
|
* EA = x.W - BYTE only
|
* EA = x.W - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
bset.b #0,$0100
|
bset.b #0,$0100
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b #1,$0100 *
|
bset.b #1,$0100 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$03,(a0)+
|
cmpi.b #$03,(a0)+
|
bne.s *
|
bne.s *
|
|
|
|
|
* EA = x.L - BYTE only
|
* EA = x.L - BYTE only
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.b #$00,(a0) * populate test data
|
move.b #$00,(a0) * populate test data
|
bset.b #0,$F100
|
bset.b #0,$F100
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b #1,$F100 *
|
bset.b #1,$F100 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b #2,$F100 *
|
bset.b #2,$F100 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.l #$F100,a0 * point to memory to address 0x100
|
cmpi.b #$07,(a0)+
|
cmpi.b #$07,(a0)+
|
bne.s *
|
bne.s *
|
|
|
|
|
* Bit Number.s Dynamic
|
* Bit Number.s Dynamic
|
|
|
* EA = Dn - LONG only
|
* EA = Dn - LONG only
|
moveq #$00000000,d0 * populate test data
|
moveq #$00000000,d0 * populate test data
|
move.l #0,d5 * populate bit.s number to test
|
move.l #0,d5 * populate bit.s number to test
|
move.l #1,d6 * populate bit.s number to test
|
move.l #1,d6 * populate bit.s number to test
|
move.l #31,d7 * populate bit.s number to test
|
move.l #31,d7 * populate bit.s number to test
|
|
|
bset.l d5,d0
|
bset.l d5,d0
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.l d6,d0 *
|
bset.l d6,d0 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.l d7,d0 *
|
bset.l d7,d0 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.l #$80000003,d0
|
cmpi.l #$80000003,d0
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = (An) - BYTE only
|
* EA = (An) - BYTE only
|
move.l #0,d5 * populate bit.s number to test
|
move.l #0,d5 * populate bit.s number to test
|
move.l #1,d6 * populate bit.s number to test
|
move.l #1,d6 * populate bit.s number to test
|
move.l #7,d7 * populate bit.s number to test
|
move.l #7,d7 * populate bit.s number to test
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.b #$00,(a0) * populate test data
|
move.b #$00,(a0) * populate test data
|
bset.b d5,(a0)
|
bset.b d5,(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d6,(a0) *
|
bset.b d6,(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d7,(a0) *
|
bset.b d7,(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$83,(a0)
|
cmpi.b #$83,(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
* EA = (An)+ - BYTE only
|
* EA = (An)+ - BYTE only
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
bset.b d5,(a0)+
|
bset.b d5,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d6,(a0)+ *
|
bset.b d6,(a0)+ *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d7,(a0)+ *
|
bset.b d7,(a0)+ *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$01,(a0)+
|
cmpi.b #$01,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$02,(a0)+
|
cmpi.b #$02,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$80,(a0)+
|
cmpi.b #$80,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = -(An) - BYTE only
|
* EA = -(An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.l #$00000103,a0 * point to memory to address
|
move.l #$00000103,a0 * point to memory to address
|
bset.b d5,-(a0)
|
bset.b d5,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d6,-(a0) *
|
bset.b d6,-(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d7,-(a0) *
|
bset.b d7,-(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
move.l #$00000103,a0 * point to memory to address 0x100
|
move.l #$00000103,a0 * point to memory to address 0x100
|
cmpi.b #$01,-(a0)
|
cmpi.b #$01,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$02,-(a0)
|
cmpi.b #$02,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$80,-(a0)
|
cmpi.b #$80,-(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = n(An) - BYTE only
|
* EA = n(An) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
bset.b d5,0(a0)
|
bset.b d5,0(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d6,1(a0) *
|
bset.b d6,1(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d7,2(a0) *
|
bset.b d7,2(a0) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.b #$01,(a0)+
|
cmpi.b #$01,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$02,(a0)+
|
cmpi.b #$02,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.b #$80,(a0)+
|
cmpi.b #$80,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = n(An,R.W) - BYTE only
|
* EA = n(An,R.W) - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000000,a1 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
move.l #$00000001,a2 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000000,d0 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
moveq #$00000001,d1 * point to memory to address
|
bset.b d5,0(a0,d0.w)
|
bset.b d5,0(a0,d0.w)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d6,0(a0,d1.w) *
|
bset.b d6,0(a0,d1.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d7,1(a0,d1.w) *
|
bset.b d7,1(a0,d1.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(An,R.L) - BYTE only
|
* EA = n(An,R.L) - BYTE only
|
bset.b d5,2(a0,d0.l)
|
bset.b d5,2(a0,d0.l)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d6,3(a0,d1.l) *
|
bset.b d6,3(a0,d1.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d7,4(a0,d1.l) *
|
bset.b d7,4(a0,d1.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(An,A.W) - BYTE only
|
* EA = n(An,A.W) - BYTE only
|
bset.b d5,5(a0,a1.w)
|
bset.b d5,5(a0,a1.w)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d6,6(a0,a2.w) *
|
bset.b d6,6(a0,a2.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d7,7(a0,a2.w) *
|
bset.b d7,7(a0,a2.w) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
* EA = n(An,A.L) - BYTE only
|
* EA = n(An,A.L) - BYTE only
|
bset.b d5,8(a0,a1.l)
|
bset.b d5,8(a0,a1.l)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d6,9(a0,a2.l) *
|
bset.b d6,9(a0,a2.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d7,10(a0,a2.l) *
|
bset.b d7,10(a0,a2.l) *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
move.l #$00000100,a0 * point to memory to address 0x100
|
move.l #$00000100,a0 * point to memory to address 0x100
|
cmpi.l #$01028100,(a0)+
|
cmpi.l #$01028100,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
cmpi.l #$02810002,(a0)+
|
cmpi.l #$02810002,(a0)+
|
bne.s *
|
bne.s *
|
|
|
|
|
* EA = x.W - BYTE only
|
* EA = x.W - BYTE only
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
bset.b d5,$0100
|
bset.b d5,$0100
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d6,$0100 *
|
bset.b d6,$0100 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d7,$0100 *
|
bset.b d7,$0100 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
move.l #$00000100,a0 * point to memory to address
|
move.l #$00000100,a0 * point to memory to address
|
cmpi.b #$83,(a0)+
|
cmpi.b #$83,(a0)+
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
* EA = x.L - BYTE only
|
* EA = x.L - BYTE only
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
move.b #$00,(a0)+ * populate test data
|
bset.b d5,$F100
|
bset.b d5,$F100
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d6,$F100 *
|
bset.b d6,$F100 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bset.b d7,$F100 *
|
bset.b d7,$F100 *
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
move.l #$F100,a0 * point to memory to address 0x100
|
move.l #$F100,a0 * point to memory to address 0x100
|
cmpi.b #$83,(a0)
|
cmpi.b #$83,(a0)
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
|
|
|
|
rts
|
rts
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : MOVEP
|
* OPCODE : MOVEP
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_MOVEP:
|
op_MOVEP:
|
|
|
* Dn --> x(An)
|
* Dn --> x(An)
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
move.l #$12345678,d0
|
move.l #$12345678,d0
|
move.l #$AABBCCDD,d1
|
move.l #$AABBCCDD,d1
|
move.l #0,(a0)
|
move.l #0,(a0)
|
move.l #0,4(a0)
|
move.l #0,4(a0)
|
|
|
movep.w d0,0(a0) * even offset
|
movep.w d0,0(a0) * even offset
|
movep.w d1,1(a0) * odd offset
|
movep.w d1,1(a0) * odd offset
|
|
|
movep.l d0,4(a0) * even offset
|
movep.l d0,4(a0) * even offset
|
movep.l d1,5(a0) * odd offset
|
movep.l d1,5(a0) * odd offset
|
|
|
cmpi.l #$56CC78DD,(a0)
|
cmpi.l #$56CC78DD,(a0)
|
bne.s *
|
bne.s *
|
cmpi.l #$12AA34BB,4(a0)
|
cmpi.l #$12AA34BB,4(a0)
|
bne.s *
|
bne.s *
|
cmpi.l #$56CC78DD,8(a0)
|
cmpi.l #$56CC78DD,8(a0)
|
bne.s *
|
bne.s *
|
|
|
|
|
* x(An)--> Dn
|
* x(An)--> Dn
|
move.l #$5a5a5a5a,d0
|
move.l #$5a5a5a5a,d0
|
move.l #$5a5a5a5a,d1
|
move.l #$5a5a5a5a,d1
|
move.l #$5a5a5a5a,d2
|
move.l #$5a5a5a5a,d2
|
move.l #$5a5a5a5a,d3
|
move.l #$5a5a5a5a,d3
|
|
|
movep.w 0(a0),d0 * even offset
|
movep.w 0(a0),d0 * even offset
|
movep.w 1(a0),d1 * odd offset
|
movep.w 1(a0),d1 * odd offset
|
|
|
movep.l 4(a0),d2 * even offset
|
movep.l 4(a0),d2 * even offset
|
movep.l 5(a0),d3 * odd offset
|
movep.l 5(a0),d3 * odd offset
|
|
|
cmpi.l #$5a5a5678,d0
|
cmpi.l #$5a5a5678,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$5a5aCCDD,d1
|
cmpi.l #$5a5aCCDD,d1
|
bne.s *
|
bne.s *
|
cmpi.l #$12345678,d2
|
cmpi.l #$12345678,d2
|
bne.s *
|
bne.s *
|
cmpi.l #$AABBCCDD,d3
|
cmpi.l #$AABBCCDD,d3
|
bne.s *
|
bne.s *
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : BOOL_I
|
* OPCODE : BOOL_I
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_BOOL_I:
|
op_BOOL_I:
|
|
|
* Dn -- BYTE
|
* Dn -- BYTE
|
move.l #$12345678,d0
|
move.l #$12345678,d0
|
move.w #$000F,CCR * pre-set Flags
|
move.w #$000F,CCR * pre-set Flags
|
ori.b #$FF,d0
|
ori.b #$FF,d0
|
eori.b #$5A,d0
|
eori.b #$5A,d0
|
andi.b #$F0,d0
|
andi.b #$F0,d0
|
bvs.s * * Check V,C are cleared
|
bvs.s * * Check V,C are cleared
|
bcs.s *
|
bcs.s *
|
bpl.s * * Verify if N flag is set
|
bpl.s * * Verify if N flag is set
|
andi.b #$00,d0
|
andi.b #$00,d0
|
bmi.s * * Verify if N flag is cleared
|
bmi.s * * Verify if N flag is cleared
|
bne.s * * Verify if Z flag is set
|
bne.s * * Verify if Z flag is set
|
|
|
* Dn -- WORD
|
* Dn -- WORD
|
move.l #$12345678,d1
|
move.l #$12345678,d1
|
move.w #$000F,CCR * pre-set Flags
|
move.w #$000F,CCR * pre-set Flags
|
ori.w #$FFFF,d1
|
ori.w #$FFFF,d1
|
eori.w #$5A5A,d1
|
eori.w #$5A5A,d1
|
andi.w #$F0F0,d1
|
andi.w #$F0F0,d1
|
bvs.s * * Check V,C are cleared
|
bvs.s * * Check V,C are cleared
|
bcs.s *
|
bcs.s *
|
bpl.s * * Verify if N flag is set
|
bpl.s * * Verify if N flag is set
|
andi.w #$0000,d1
|
andi.w #$0000,d1
|
bmi.s * * Verify if N flag is cleared
|
bmi.s * * Verify if N flag is cleared
|
bne.s * * Verify if Z flag is set
|
bne.s * * Verify if Z flag is set
|
|
|
* Dn -- LONG
|
* Dn -- LONG
|
move.l #$12345678,d2
|
move.l #$12345678,d2
|
move.w #$000F,CCR * pre-set Flags
|
move.w #$000F,CCR * pre-set Flags
|
ori.l #$FFFFFFFF,d2
|
ori.l #$FFFFFFFF,d2
|
eori.l #$5A5A5A5A,d2
|
eori.l #$5A5A5A5A,d2
|
andi.l #$F0F0F0F0,d2
|
andi.l #$F0F0F0F0,d2
|
bvs.s * * Check V,C are cleared
|
bvs.s * * Check V,C are cleared
|
bcs.s *
|
bcs.s *
|
bpl.s * * Verify if N flag is set
|
bpl.s * * Verify if N flag is set
|
andi.l #$00000000,d2
|
andi.l #$00000000,d2
|
bmi.s * * Verify if N flag is cleared
|
bmi.s * * Verify if N flag is cleared
|
bne.s * * Verify if Z flag is set
|
bne.s * * Verify if Z flag is set
|
|
|
|
|
* (An) -- BYTE
|
* (An) -- BYTE
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
move.l #$12345678,(a0)
|
move.l #$12345678,(a0)
|
move.w #$000F,CCR * pre-set Flags
|
move.w #$000F,CCR * pre-set Flags
|
ori.b #$FF,(a0)
|
ori.b #$FF,(a0)
|
eori.b #$5A,(a0)
|
eori.b #$5A,(a0)
|
andi.b #$F0,(a0)
|
andi.b #$F0,(a0)
|
bvs.s * * Check V,C are cleared
|
bvs.s * * Check V,C are cleared
|
bcs.s *
|
bcs.s *
|
bpl.s * * Verify if N flag is set
|
bpl.s * * Verify if N flag is set
|
andi.b #$00,(a0)
|
andi.b #$00,(a0)
|
bmi.s * * Verify if N flag is cleared
|
bmi.s * * Verify if N flag is cleared
|
bne.s * * Verify if Z flag is set
|
bne.s * * Verify if Z flag is set
|
cmpi.b #$00,(a0)
|
cmpi.b #$00,(a0)
|
bne.s * * Verify if Z flag is set
|
bne.s * * Verify if Z flag is set
|
|
|
* (An) -- WORD
|
* (An) -- WORD
|
move.l #$12345678,(a0)
|
move.l #$12345678,(a0)
|
move.w #$000F,CCR * pre-set Flags
|
move.w #$000F,CCR * pre-set Flags
|
ori.w #$FFFF,(a0)
|
ori.w #$FFFF,(a0)
|
eori.w #$5A5A,(a0)
|
eori.w #$5A5A,(a0)
|
andi.w #$F0F0,(a0)
|
andi.w #$F0F0,(a0)
|
bvs.s * * Check V,C are cleared
|
bvs.s * * Check V,C are cleared
|
bcs.s *
|
bcs.s *
|
bpl.s * * Verify if N flag is set
|
bpl.s * * Verify if N flag is set
|
andi.w #$0000,(a0)
|
andi.w #$0000,(a0)
|
bmi.s * * Verify if N flag is cleared
|
bmi.s * * Verify if N flag is cleared
|
bne.s * * Verify if Z flag is set
|
bne.s * * Verify if Z flag is set
|
cmpi.w #$00,(a0)
|
cmpi.w #$00,(a0)
|
bne.s * * Verify if Z flag is set
|
bne.s * * Verify if Z flag is set
|
|
|
* (An) -- LONG
|
* (An) -- LONG
|
move.l #$12345678,(a0)
|
move.l #$12345678,(a0)
|
move.w #$000F,CCR * pre-set Flags
|
move.w #$000F,CCR * pre-set Flags
|
ori.l #$FFFFFFFF,(a0)
|
ori.l #$FFFFFFFF,(a0)
|
eori.l #$5A5A5A5A,(a0)
|
eori.l #$5A5A5A5A,(a0)
|
andi.l #$F0F0F0F0,(a0)
|
andi.l #$F0F0F0F0,(a0)
|
bvs.s * * Check V,C are cleared
|
bvs.s * * Check V,C are cleared
|
bcs.s *
|
bcs.s *
|
bpl.s * * Verify if N flag is set
|
bpl.s * * Verify if N flag is set
|
andi.l #$00000000,(a0)
|
andi.l #$00000000,(a0)
|
bmi.s * * Verify if N flag is cleared
|
bmi.s * * Verify if N flag is cleared
|
bne.s * * Verify if Z flag is set
|
bne.s * * Verify if Z flag is set
|
cmpi.l #$00,(a0)
|
cmpi.l #$00,(a0)
|
bne.s * * Verify if Z flag is set
|
bne.s * * Verify if Z flag is set
|
|
|
|
|
|
|
* (An)+ -- BYTE
|
* (An)+ -- BYTE
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
move.l #$00A5FF88,(a0)
|
move.l #$00A5FF88,(a0)
|
move.w #$000F,CCR * pre-set Flags
|
move.w #$000F,CCR * pre-set Flags
|
|
|
ori.b #$F5,(a0)+
|
ori.b #$F5,(a0)+
|
bpl.s * * Verify if N flag is set
|
bpl.s * * Verify if N flag is set
|
beq.s * * Verify if Z flag is cleared
|
beq.s * * Verify if Z flag is cleared
|
|
|
eori.b #$FF,(a0)+
|
eori.b #$FF,(a0)+
|
bmi.s * * Verify if N flag is cleared
|
bmi.s * * Verify if N flag is cleared
|
beq.s * * Verify if Z flag is cleared
|
beq.s * * Verify if Z flag is cleared
|
|
|
andi.b #$AA,(a0)+
|
andi.b #$AA,(a0)+
|
bpl.s * * Verify if N flag is set
|
bpl.s * * Verify if N flag is set
|
beq.s * * Verify if Z flag is cleared
|
beq.s * * Verify if Z flag is cleared
|
|
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
cmpi.l #$F55AAA88,(a0)
|
cmpi.l #$F55AAA88,(a0)
|
bne.s * * Verify if Z flag is set
|
bne.s * * Verify if Z flag is set
|
|
|
|
|
* (An)+ -- WORD
|
* (An)+ -- WORD
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
move.l #$00000104,a1
|
move.l #$00000104,a1
|
move.l #$00005a5a,(a0)
|
move.l #$00005a5a,(a0)
|
move.l #$12345678,(a1)
|
move.l #$12345678,(a1)
|
move.w #$000F,CCR * pre-set Flags
|
move.w #$000F,CCR * pre-set Flags
|
|
|
ori.w #$5678,(a0)+
|
ori.w #$5678,(a0)+
|
bmi.s * * Verify if N flag is cleared
|
bmi.s * * Verify if N flag is cleared
|
beq.s * * Verify if Z flag is cleared
|
beq.s * * Verify if Z flag is cleared
|
|
|
eori.w #$FFFF,(a0)+
|
eori.w #$FFFF,(a0)+
|
bpl.s * * Verify if N flag is set
|
bpl.s * * Verify if N flag is set
|
beq.s * * Verify if Z flag is cleared
|
beq.s * * Verify if Z flag is cleared
|
|
|
andi.w #$A55A,(a0)+
|
andi.w #$A55A,(a0)+
|
bmi.s * * Verify if N flag is cleared
|
bmi.s * * Verify if N flag is cleared
|
beq.s * * Verify if Z flag is cleared
|
beq.s * * Verify if Z flag is cleared
|
|
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
cmpi.l #$5678a5a5,(a0)
|
cmpi.l #$5678a5a5,(a0)
|
move.l #$00000104,a0
|
move.l #$00000104,a0
|
cmpi.l #$00105678,(a0)
|
cmpi.l #$00105678,(a0)
|
bne.s * * Verify if Z flag is set
|
bne.s * * Verify if Z flag is set
|
|
|
* (An)+ -- LONG
|
* (An)+ -- LONG
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
move.l #$00000000,(a0)+
|
move.l #$00000000,(a0)+
|
move.l #$5a5a5a5a,(a0)+
|
move.l #$5a5a5a5a,(a0)+
|
move.l #$FFFFFFFF,(a0)+
|
move.l #$FFFFFFFF,(a0)+
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
move.w #$000F,CCR * pre-set Flags
|
move.w #$000F,CCR * pre-set Flags
|
|
|
ori.l #$12345678,(a0)+
|
ori.l #$12345678,(a0)+
|
bmi.s * * Verify if N flag is cleared
|
bmi.s * * Verify if N flag is cleared
|
beq.s * * Verify if Z flag is cleared
|
beq.s * * Verify if Z flag is cleared
|
|
|
eori.l #$FFFFFFFF,(a0)+
|
eori.l #$FFFFFFFF,(a0)+
|
bpl.s * * Verify if N flag is set
|
bpl.s * * Verify if N flag is set
|
beq.s * * Verify if Z flag is cleared
|
beq.s * * Verify if Z flag is cleared
|
|
|
andi.l #$A5A5A55A,(a0)+
|
andi.l #$A5A5A55A,(a0)+
|
bpl.s * * Verify if N flag is set
|
bpl.s * * Verify if N flag is set
|
beq.s * * Verify if Z flag is cleared
|
beq.s * * Verify if Z flag is cleared
|
|
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
cmpi.l #$12345678,(a0)+
|
cmpi.l #$12345678,(a0)+
|
cmpi.l #$a5a5a5a5,(a0)+
|
cmpi.l #$a5a5a5a5,(a0)+
|
cmpi.l #$a5a5a55a,(a0)+
|
cmpi.l #$a5a5a55a,(a0)+
|
bne.s * * Verify if Z flag is set
|
bne.s * * Verify if Z flag is set
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : BSR
|
* OPCODE : BSR
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
|
|
BSR_CLOSE1: move.l #$11111111,d1
|
BSR_CLOSE1: move.l #$11111111,d1
|
rts
|
rts
|
|
|
|
|
|
|
op_BSR: bsr BSR_CLOSE1 * Negative 8-bit.s displacement
|
op_BSR: bsr BSR_CLOSE1 * Negative 8-bit.s displacement
|
bsr BSR_CLOSE2 * Positive 8-bit.s displacement
|
bsr BSR_CLOSE2 * Positive 8-bit.s displacement
|
bsr.w BSR_FAR1 * Negative 16-bit.s displacement
|
bsr.w BSR_FAR1 * Negative 16-bit.s displacement
|
bsr.w BSR_FAR2 * Positive 16-bit.s displacement
|
bsr.w BSR_FAR2 * Positive 16-bit.s displacement
|
|
|
cmpi.l #$11111111,d1
|
cmpi.l #$11111111,d1
|
bne.s *
|
bne.s *
|
cmpi.l #$22222222,d2
|
cmpi.l #$22222222,d2
|
bne.s *
|
bne.s *
|
cmpi.l #$33333333,d3
|
cmpi.l #$33333333,d3
|
bne.s *
|
bne.s *
|
cmpi.l #$44444444,d4
|
cmpi.l #$44444444,d4
|
bne.s *
|
bne.s *
|
|
|
rts
|
rts
|
|
|
|
|
BSR_CLOSE2: move.l #$22222222,d2
|
BSR_CLOSE2: move.l #$22222222,d2
|
rts
|
rts
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : op_CMP_I
|
* OPCODE : op_CMP_I
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_CMP_I:
|
op_CMP_I:
|
|
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
move.l #$00000100,(a0)
|
move.l #$00000100,(a0)
|
|
|
* REGISTER - BYTE
|
* REGISTER - BYTE
|
move.l #$FFFFFF80,d0
|
move.l #$FFFFFF80,d0
|
cmpi.b #$80,d0
|
cmpi.b #$80,d0
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
move.l #$FFFFF000,d1
|
move.l #$FFFFF000,d1
|
cmpi.b #$00,d1
|
cmpi.b #$00,d1
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
move.l #$FFFFFF02,d2
|
move.l #$FFFFFF02,d2
|
cmpi.b #$FF,d2
|
cmpi.b #$FF,d2
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
move.l #$FFFFFF7F,d3
|
move.l #$FFFFFF7F,d3
|
cmpi.b #$FF,d3
|
cmpi.b #$FF,d3
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
|
|
|
|
* REGISTER - WORD
|
* REGISTER - WORD
|
move.l #$FFFF8000,d0
|
move.l #$FFFF8000,d0
|
cmpi.w #$8000,d0
|
cmpi.w #$8000,d0
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
move.l #$FFF00000,d1
|
move.l #$FFF00000,d1
|
cmpi.w #$0000,d1
|
cmpi.w #$0000,d1
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
move.l #$FFFF0002,d2
|
move.l #$FFFF0002,d2
|
cmpi.w #$FFFF,d2
|
cmpi.w #$FFFF,d2
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
move.l #$FFFF7FFF,d3
|
move.l #$FFFF7FFF,d3
|
cmpi.w #$FFFF,d3
|
cmpi.w #$FFFF,d3
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
|
|
* REGISTER - LONG
|
* REGISTER - LONG
|
move.l #$80000000,d0
|
move.l #$80000000,d0
|
cmpi.l #$80000000,d0
|
cmpi.l #$80000000,d0
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
moveq #$00000000,d1
|
moveq #$00000000,d1
|
cmpi.l #$00000000,d1
|
cmpi.l #$00000000,d1
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
moveq #$00000002,d2
|
moveq #$00000002,d2
|
cmpi.l #$FFFFFFFF,d2
|
cmpi.l #$FFFFFFFF,d2
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
move.l #$7FFFFFFF,d3
|
move.l #$7FFFFFFF,d3
|
cmpi.l #$FFFFFFFF,d3
|
cmpi.l #$FFFFFFFF,d3
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
|
|
|
|
|
|
|
|
* EA=x(An,Dn) - BYTE
|
* EA=x(An,Dn) - BYTE
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
moveq #$00000004,d7
|
moveq #$00000004,d7
|
|
|
move.l #$FFFFFF80,12(a0,d7)
|
move.l #$FFFFFF80,12(a0,d7)
|
move.l #$FFFFFF80,12(a0,d7)
|
move.l #$FFFFFF80,12(a0,d7)
|
cmpi.b #$80,15(a0,d7)
|
cmpi.b #$80,15(a0,d7)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
move.l #$FFFFF000,12(a0,d7)
|
move.l #$FFFFF000,12(a0,d7)
|
cmpi.b #$00,15(a0,d7)
|
cmpi.b #$00,15(a0,d7)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
move.l #$FFFFFF02,12(a0,d7)
|
move.l #$FFFFFF02,12(a0,d7)
|
cmpi.b #$FF,15(a0,d7)
|
cmpi.b #$FF,15(a0,d7)
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
move.l #$FFFFFF7F,12(a0,d7)
|
move.l #$FFFFFF7F,12(a0,d7)
|
cmpi.b #$FF,15(a0,d7)
|
cmpi.b #$FF,15(a0,d7)
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
|
|
|
|
* EA=x(An,Dn) - WORD
|
* EA=x(An,Dn) - WORD
|
move.l #$FFFF8000,12(a0,d7)
|
move.l #$FFFF8000,12(a0,d7)
|
cmpi.w #$8000,14(a0,d7)
|
cmpi.w #$8000,14(a0,d7)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
move.l #$FFF00000,12(a0,d7)
|
move.l #$FFF00000,12(a0,d7)
|
cmpi.w #$0000,14(a0,d7)
|
cmpi.w #$0000,14(a0,d7)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
move.l #$FFFF0002,12(a0,d7)
|
move.l #$FFFF0002,12(a0,d7)
|
cmpi.w #$FFFF,14(a0,d7)
|
cmpi.w #$FFFF,14(a0,d7)
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
move.l #$FFFF7FFF,12(a0,d7)
|
move.l #$FFFF7FFF,12(a0,d7)
|
cmpi.w #$FFFF,14(a0,d7)
|
cmpi.w #$FFFF,14(a0,d7)
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
|
|
* EA=x(An,Dn) - LONG
|
* EA=x(An,Dn) - LONG
|
move.l #$80000000,12(a0,d7)
|
move.l #$80000000,12(a0,d7)
|
cmpi.l #$80000000,12(a0,d7)
|
cmpi.l #$80000000,12(a0,d7)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
move.l #$00000000,12(a0,d7)
|
move.l #$00000000,12(a0,d7)
|
cmpi.l #$00000000,12(a0,d7)
|
cmpi.l #$00000000,12(a0,d7)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
move.l #$00000002,12(a0,d7)
|
move.l #$00000002,12(a0,d7)
|
cmpi.l #$FFFFFFFF,12(a0,d7)
|
cmpi.l #$FFFFFFFF,12(a0,d7)
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
|
|
move.l #$7FFFFFFF,12(a0,d7)
|
move.l #$7FFFFFFF,12(a0,d7)
|
cmpi.l #$FFFFFFFF,12(a0,d7)
|
cmpi.l #$FFFFFFFF,12(a0,d7)
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
|
|
|
|
|
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : ADD_I
|
* OPCODE : ADD_I
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_ADD_I:
|
op_ADD_I:
|
|
|
* EA = Dn - Byte
|
* EA = Dn - Byte
|
move.l #$12345678,d0 * populate test data
|
move.l #$12345678,d0 * populate test data
|
addi.b #0,d0
|
addi.b #0,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
addi.b #$10,d0
|
addi.b #$10,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
addi.b #$A5,d0
|
addi.b #$A5,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
cmpi.b #$2D,d0
|
cmpi.b #$2D,d0
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* EA = Dn - WORD
|
* EA = Dn - WORD
|
move.l #$12345678,d0 * populate test data
|
move.l #$12345678,d0 * populate test data
|
addi.w #0,d0
|
addi.w #0,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
addi.w #$7000,d0
|
addi.w #$7000,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
addi.w #$A55A,d0
|
addi.w #$A55A,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
cmpi.w #$6BD2,d0
|
cmpi.w #$6BD2,d0
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* EA = Dn - LONG
|
* EA = Dn - LONG
|
move.l #$12345678,d0 * populate test data
|
move.l #$12345678,d0 * populate test data
|
addi.l #0,d0
|
addi.l #0,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
addi.l #$F0000000,d0
|
addi.l #$F0000000,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
addi.l #$855AA55A,d0
|
addi.l #$855AA55A,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
addi.l #$A0000000,d0
|
addi.l #$A0000000,d0
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
cmpi.l #$278EFBD2,d0
|
cmpi.l #$278EFBD2,d0
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
|
|
|
|
* EA = x.L - Byte
|
* EA = x.L - Byte
|
move.l #$F100,a0 * populate test data
|
move.l #$F100,a0 * populate test data
|
move.l #$12345678,(a0) * populate test data
|
move.l #$12345678,(a0) * populate test data
|
addi.b #0,$F103
|
addi.b #0,$F103
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
addi.b #$10,$F103
|
addi.b #$10,$F103
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
addi.b #$A5,$F103
|
addi.b #$A5,$F103
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
cmpi.b #$2D,$F103
|
cmpi.b #$2D,$F103
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* EA = x.L- WORD
|
* EA = x.L- WORD
|
move.l #$F100,a0 * populate test data
|
move.l #$F100,a0 * populate test data
|
move.l #$12345678,(a0) * populate test data
|
move.l #$12345678,(a0) * populate test data
|
addi.w #0,$F100
|
addi.w #0,$F100
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
addi.w #$7000,$F100
|
addi.w #$7000,$F100
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
addi.w #$A55A,$F100
|
addi.w #$A55A,$F100
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
cmpi.w #$278E,$F100
|
cmpi.w #$278E,$F100
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* EA = x.L- LONG
|
* EA = x.L- LONG
|
move.l #$12345678,$F100 * populate test data
|
move.l #$12345678,$F100 * populate test data
|
addi.l #0,$F100
|
addi.l #0,$F100
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
addi.l #$F0000000,$F100
|
addi.l #$F0000000,$F100
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
addi.l #$855AA55A,$F100
|
addi.l #$855AA55A,$F100
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
addi.l #$A0000000,$F100
|
addi.l #$A0000000,$F100
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
cmpi.l #$278EFBD2,$F100
|
cmpi.l #$278EFBD2,$F100
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : SUB_I
|
* OPCODE : SUB_I
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_SUB_I:
|
op_SUB_I:
|
|
|
* EA = Dn - Byte
|
* EA = Dn - Byte
|
move.l #$12345678,d0 * populate test data
|
move.l #$12345678,d0 * populate test data
|
subi.b #0,d0
|
subi.b #0,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
subi.b #$10,d0
|
subi.b #$10,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
subi.b #$A5,d0
|
subi.b #$A5,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
cmpi.b #$C3,d0
|
cmpi.b #$C3,d0
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* EA = Dn - WORD
|
* EA = Dn - WORD
|
move.l #$12345678,d0 * populate test data
|
move.l #$12345678,d0 * populate test data
|
subi.w #0,d0
|
subi.w #0,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
subi.w #$7000,d0
|
subi.w #$7000,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
subi.w #$A55A,d0
|
subi.w #$A55A,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
cmpi.w #$411E,d0
|
cmpi.w #$411E,d0
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* EA = Dn - LONG
|
* EA = Dn - LONG
|
move.l #$12345678,d0 * populate test data
|
move.l #$12345678,d0 * populate test data
|
subi.l #0,d0
|
subi.l #0,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
subi.l #$F0000000,d0
|
subi.l #$F0000000,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
subi.l #$855AA55A,d0
|
subi.l #$855AA55A,d0
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
subi.l #$A0000000,d0
|
subi.l #$A0000000,d0
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
cmpi.l #$FCD9B11E,d0
|
cmpi.l #$FCD9B11E,d0
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
|
|
|
|
* EA = x.L - Byte
|
* EA = x.L - Byte
|
move.l #$F100,a0 * populate test data
|
move.l #$F100,a0 * populate test data
|
move.l #$12345678,(a0) * populate test data
|
move.l #$12345678,(a0) * populate test data
|
subi.b #0,$F103
|
subi.b #0,$F103
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
subi.b #$10,$F103
|
subi.b #$10,$F103
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
subi.b #$A5,$F103
|
subi.b #$A5,$F103
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
cmpi.b #$C3,$F103
|
cmpi.b #$C3,$F103
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* EA = x.L- WORD
|
* EA = x.L- WORD
|
move.l #$F100,a0 * populate test data
|
move.l #$F100,a0 * populate test data
|
move.l #$12345678,(a0) * populate test data
|
move.l #$12345678,(a0) * populate test data
|
subi.w #0,$F100
|
subi.w #0,$F100
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
subi.w #$7000,$F100
|
subi.w #$7000,$F100
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
subi.w #$A55A,$F100
|
subi.w #$A55A,$F100
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
cmpi.w #$FCDA,$F100
|
cmpi.w #$FCDA,$F100
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* EA = x.L- LONG
|
* EA = x.L- LONG
|
move.l #$12345678,$F100 * populate test data
|
move.l #$12345678,$F100 * populate test data
|
subi.l #0,$F100
|
subi.l #0,$F100
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcs.s * * Check C Flag bcc/bcs
|
bcs.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
subi.l #$F0000000,$F100
|
subi.l #$F0000000,$F100
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
subi.l #$855AA55A,$F100
|
subi.l #$855AA55A,$F100
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
bcc.s * * Check C Flag bcc/bcs
|
bcc.s * * Check C Flag bcc/bcs
|
bvc.s * * Check V Flag bvc/bvs
|
bvc.s * * Check V Flag bvc/bvs
|
subi.l #$A0000000,$F100
|
subi.l #$A0000000,$F100
|
bvs.s * * Check V Flag bvc/bvs
|
bvs.s * * Check V Flag bvc/bvs
|
cmpi.l #$FCD9B11E,$F100
|
cmpi.l #$FCD9B11E,$F100
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : MOVE
|
* OPCODE : MOVE
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_MOVE:
|
op_MOVE:
|
move.l #$11223344,d0
|
move.l #$11223344,d0
|
move.l #$55667788,d1
|
move.l #$55667788,d1
|
move.l #$8899aabb,d2
|
move.l #$8899aabb,d2
|
move.l #$ccddeeff,d3
|
move.l #$ccddeeff,d3
|
moveq #$00000000,d4
|
moveq #$00000000,d4
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
moveq #$00000000,d6
|
moveq #$00000000,d6
|
moveq #$00000000,d7
|
moveq #$00000000,d7
|
move.l #$44332211,a0
|
move.l #$44332211,a0
|
move.l #$88776655,a1
|
move.l #$88776655,a1
|
move.l #$bbaa9988,a2
|
move.l #$bbaa9988,a2
|
move.l #$ffeeddcc,a3
|
move.l #$ffeeddcc,a3
|
|
|
move.b d0,d4 * BYTE - DATA REGISTER
|
move.b d0,d4 * BYTE - DATA REGISTER
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
cmpi.l #$00000044,d4
|
cmpi.l #$00000044,d4
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
move.w d1,d5 * WORD - DATA REGISTER
|
move.w d1,d5 * WORD - DATA REGISTER
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
cmpi.l #$00007788,d5
|
cmpi.l #$00007788,d5
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
move.l d2,d6 * LONG - DATA REGISTER
|
move.l d2,d6 * LONG - DATA REGISTER
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
cmpi.l #$8899aabb,d6
|
cmpi.l #$8899aabb,d6
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
move.w a1,d5 * WORD - ADDRESS REGISTER
|
move.w a1,d5 * WORD - ADDRESS REGISTER
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
cmpi.l #$00006655,d5
|
cmpi.l #$00006655,d5
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
move.l a2,d6 * LONG - ADDRESS REGISTER
|
move.l a2,d6 * LONG - ADDRESS REGISTER
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
cmpi.l #$bbaa9988,d6
|
cmpi.l #$bbaa9988,d6
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
|
|
movea.w d2,a4 * WORD - ADDRESS REGISTER as SOURCE ## MOVEA
|
movea.w d2,a4 * WORD - ADDRESS REGISTER as SOURCE ## MOVEA
|
cmpa.l d2,a4
|
cmpa.l d2,a4
|
beq.s * * Check Z Flag beq/bne ## comopare fails because A4 was sign extended
|
beq.s * * Check Z Flag beq/bne ## comopare fails because A4 was sign extended
|
|
|
movea.l d1,a5 * LONG - ADDRESS REGISTER as SOURCE ## MOVEA
|
movea.l d1,a5 * LONG - ADDRESS REGISTER as SOURCE ## MOVEA
|
cmpa.l d1,a5
|
cmpa.l d1,a5
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
|
|
|
|
* Too mamy EA combinations to test,so we focus on a few of the more complicted EA's
|
* Too mamy EA combinations to test,so we focus on a few of the more complicted EA's
|
|
|
move.l #$11223344,d0
|
move.l #$11223344,d0
|
move.l #$00010100,d1
|
move.l #$00010100,d1
|
move.l #$8899aabb,d2
|
move.l #$8899aabb,d2
|
moveq #$00000001,d3
|
moveq #$00000001,d3
|
moveq #$00000000,d4
|
moveq #$00000000,d4
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
moveq #$00000000,d6
|
moveq #$00000000,d6
|
moveq #$00000000,d7
|
moveq #$00000000,d7
|
move.l #$00000000,a0
|
move.l #$00000000,a0
|
move.l #$00010100,a1
|
move.l #$00010100,a1
|
|
|
* x(An,AL) --> x.L
|
* x(An,AL) --> x.L
|
move.b #$5A,4(a0,a1.l) * BYTE
|
move.b #$5A,4(a0,a1.l) * BYTE
|
lea 4(a0,a1.l),a3
|
lea 4(a0,a1.l),a3
|
move.b 4(a0,a1.l),$00010105
|
move.b 4(a0,a1.l),$00010105
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
cmpi.b #$5A,5(a0,a1.l)
|
cmpi.b #$5A,5(a0,a1.l)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* x.L --> n(An,Dw)
|
* x.L --> n(An,Dw)
|
MOVE2: move.b $00010105,7(a0,d1.w) * BYTE
|
MOVE2: move.b $00010105,7(a0,d1.w) * BYTE
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
cmpi.b #$5A,7(a0,d1.w)
|
cmpi.b #$5A,7(a0,d1.w)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* x(PC,Ds) --> x.w
|
* x(PC,Ds) --> x.w
|
move.b MOVE1(pc,d3.w),$0100 * BYTE
|
move.b MOVE1(pc,d3.w),$0100 * BYTE
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
cmpi.b #$B9,1+MOVE2
|
cmpi.b #$B9,1+MOVE2
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* #x --> n(An,AL)
|
* #x --> n(An,AL)
|
move.b #$78,7(a0,d1.w) * BYTE
|
move.b #$78,7(a0,d1.w) * BYTE
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
cmpi.b #$78,7(a0,d1.w)
|
cmpi.b #$78,7(a0,d1.w)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
move.l #$11223344,d0
|
move.l #$11223344,d0
|
move.l #$00010100,d1
|
move.l #$00010100,d1
|
move.l #$8899aabb,d2
|
move.l #$8899aabb,d2
|
moveq #$00000002,d3
|
moveq #$00000002,d3
|
moveq #$00000000,d4
|
moveq #$00000000,d4
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
moveq #$00000000,d6
|
moveq #$00000000,d6
|
moveq #$00000000,d7
|
moveq #$00000000,d7
|
move.l #$00000000,a0
|
move.l #$00000000,a0
|
move.l #$00010100,a1
|
move.l #$00010100,a1
|
|
|
* x(An,AL) --> x.L
|
* x(An,AL) --> x.L
|
move.w #$5A5A,4(a0,a1.l) * WORD
|
move.w #$5A5A,4(a0,a1.l) * WORD
|
lea 4(a0,a1.l),a4
|
lea 4(a0,a1.l),a4
|
move.w 4(a0,a1.l),$00010104
|
move.w 4(a0,a1.l),$00010104
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
cmpi.w #$5A5A,4(a0,a1.l)
|
cmpi.w #$5A5A,4(a0,a1.l)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* x.L --> n(An,Dw)
|
* x.L --> n(An,Dw)
|
MOVE1: move.w $00010104,6(a0,d1.w) * WORD
|
MOVE1: move.w $00010104,6(a0,d1.w) * WORD
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
cmpi.w #$5A5A,6(a0,d1.w)
|
cmpi.w #$5A5A,6(a0,d1.w)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* x(PC,Ds) --> x.w
|
* x(PC,Ds) --> x.w
|
move.w MOVE1(pc,d3),$0100 * WORD
|
move.w MOVE1(pc,d3),$0100 * WORD
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
cmpi.w #$67FE,8+MOVE1
|
cmpi.w #$67FE,8+MOVE1
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* #x --> n(An,AL)
|
* #x --> n(An,AL)
|
move.w #$7878,6(a0,d1.w) * WORD
|
move.w #$7878,6(a0,d1.w) * WORD
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
cmpi.w #$7878,6(a0,d1.w)
|
cmpi.w #$7878,6(a0,d1.w)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* ---
|
* ---
|
|
|
move.l #$11223344,d0
|
move.l #$11223344,d0
|
move.l #$00010100,d1
|
move.l #$00010100,d1
|
move.l #$8899aabb,d2
|
move.l #$8899aabb,d2
|
moveq #$00000002,d3
|
moveq #$00000002,d3
|
moveq #$00000000,d4
|
moveq #$00000000,d4
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
moveq #$00000000,d6
|
moveq #$00000000,d6
|
moveq #$00000000,d7
|
moveq #$00000000,d7
|
move.l #$00000000,a0
|
move.l #$00000000,a0
|
move.l #$00010100,a1
|
move.l #$00010100,a1
|
|
|
* x(An,AL) --> x.L
|
* x(An,AL) --> x.L
|
move.l #$5A5A1234,4(a0,a1.l) * LONG
|
move.l #$5A5A1234,4(a0,a1.l) * LONG
|
lea 4(a0,a1.l),a4
|
lea 4(a0,a1.l),a4
|
move.l 4(a0,a1.l),$00010104
|
move.l 4(a0,a1.l),$00010104
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
cmpi.l #$5A5A1234,4(a0,a1.l)
|
cmpi.l #$5A5A1234,4(a0,a1.l)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* x.L --> n(An,Dw)
|
* x.L --> n(An,Dw)
|
MOVE3: move.l $00010104,6(a0,d1.w) * LONG
|
MOVE3: move.l $00010104,6(a0,d1.w) * LONG
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
cmpi.l #$5A5A1234,6(a0,d1.w)
|
cmpi.l #$5A5A1234,6(a0,d1.w)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* x(PC,Ds) --> x.w
|
* x(PC,Ds) --> x.w
|
move.l MOVE3(pc,d3),$0100 * LONG
|
move.l MOVE3(pc,d3),$0100 * LONG
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
cmpi.l #$67FE6BFE,8+MOVE3
|
cmpi.l #$67FE6BFE,8+MOVE3
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* #x --> n(An,AL)
|
* #x --> n(An,AL)
|
move.l #$78782323,6(a0,d1.w) * LONG
|
move.l #$78782323,6(a0,d1.w) * LONG
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
cmpi.l #$78782323,6(a0,d1.w)
|
cmpi.l #$78782323,6(a0,d1.w)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : MOVE_xxx_FLAGS
|
* OPCODE : MOVE_xxx_FLAGS
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_MOVE_xxx_FLAGS:
|
op_MOVE_xxx_FLAGS:
|
|
|
* Move_To_SR
|
* Move_To_SR
|
|
|
* Dn
|
* Dn
|
|
|
move.w #$2FFF,d0
|
move.w #$2FFF,d0
|
move.w d0,SR
|
move.w d0,SR
|
bpl.s * * branch if Z clear
|
bpl.s * * branch if Z clear
|
bne.s * * branch if N clear
|
bne.s * * branch if N clear
|
bvc.s * * branch if V clear
|
bvc.s * * branch if V clear
|
bcc.s * * branch if C clear
|
bcc.s * * branch if C clear
|
move.w #$2F00,d0
|
move.w #$2F00,d0
|
move d0,CCR
|
move d0,CCR
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bmi.s * * branch if N set
|
bmi.s * * branch if N set
|
bvs.s * * branch if V set
|
bvs.s * * branch if V set
|
bcs.s * * branch if C set
|
bcs.s * * branch if C set
|
|
|
move.w #$2000,d0
|
move.w #$2000,d0
|
move.w d0,SR
|
move.w d0,SR
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bmi.s * * branch if N set
|
bmi.s * * branch if N set
|
bvs.s * * branch if V set
|
bvs.s * * branch if V set
|
bcs.s * * branch if C set
|
bcs.s * * branch if C set
|
|
|
* (An)
|
* (An)
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
move.w #$2FFF,(a0)
|
move.w #$2FFF,(a0)
|
move.w (a0),SR
|
move.w (a0),SR
|
bpl.s * * branch if Z clear
|
bpl.s * * branch if Z clear
|
bne.s * * branch if N clear
|
bne.s * * branch if N clear
|
bvc.s * * branch if V clear
|
bvc.s * * branch if V clear
|
bcc.s * * branch if C clear
|
bcc.s * * branch if C clear
|
|
|
move.w #$2000,(a0)
|
move.w #$2000,(a0)
|
move.w (a0),SR
|
move.w (a0),SR
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bmi.s * * branch if N set
|
bmi.s * * branch if N set
|
bvs.s * * branch if V set
|
bvs.s * * branch if V set
|
bcs.s * * branch if C set
|
bcs.s * * branch if C set
|
|
|
* (An)+
|
* (An)+
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
move.w #$2FFF,(a0)
|
move.w #$2FFF,(a0)
|
move.w (a0)+,SR
|
move.w (a0)+,SR
|
bpl.s * * branch if Z clear
|
bpl.s * * branch if Z clear
|
bne.s * * branch if N clear
|
bne.s * * branch if N clear
|
bvc.s * * branch if V clear
|
bvc.s * * branch if V clear
|
bcc.s * * branch if C clear
|
bcc.s * * branch if C clear
|
|
|
move.w #$2000,(a0)
|
move.w #$2000,(a0)
|
move.w (a0)+,SR
|
move.w (a0)+,SR
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bmi.s * * branch if N set
|
bmi.s * * branch if N set
|
bvs.s * * branch if V set
|
bvs.s * * branch if V set
|
bcs.s * * branch if C set
|
bcs.s * * branch if C set
|
|
|
* -(An)
|
* -(An)
|
move.l #$00000102,a0
|
move.l #$00000102,a0
|
move.w #$2FFF,(a0)
|
move.w #$2FFF,(a0)
|
move.w (a0)+,SR
|
move.w (a0)+,SR
|
bpl.s * * branch if Z clear
|
bpl.s * * branch if Z clear
|
bne.s * * branch if N clear
|
bne.s * * branch if N clear
|
bvc.s * * branch if V clear
|
bvc.s * * branch if V clear
|
bcc.s * * branch if C clear
|
bcc.s * * branch if C clear
|
|
|
move.w #$2000,(a0)
|
move.w #$2000,(a0)
|
move.w (a0)+,SR
|
move.w (a0)+,SR
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bmi.s * * branch if N set
|
bmi.s * * branch if N set
|
bvs.s * * branch if V set
|
bvs.s * * branch if V set
|
bcs.s * * branch if C set
|
bcs.s * * branch if C set
|
|
|
* n(An)
|
* n(An)
|
move.l #$00000102,a0
|
move.l #$00000102,a0
|
move.w #$2FFF,2(a0)
|
move.w #$2FFF,2(a0)
|
move.w 2(a0),SR
|
move.w 2(a0),SR
|
bpl.s * * branch if Z clear
|
bpl.s * * branch if Z clear
|
bne.s * * branch if N clear
|
bne.s * * branch if N clear
|
bvc.s * * branch if V clear
|
bvc.s * * branch if V clear
|
bcc.s * * branch if C clear
|
bcc.s * * branch if C clear
|
|
|
move.w #$2000,2(a0)
|
move.w #$2000,2(a0)
|
move.w 2(a0),SR
|
move.w 2(a0),SR
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bmi.s * * branch if N set
|
bmi.s * * branch if N set
|
bvs.s * * branch if V set
|
bvs.s * * branch if V set
|
bcs.s * * branch if C set
|
bcs.s * * branch if C set
|
|
|
* n(An,Rn.l)
|
* n(An,Rn.l)
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
moveq #$00000002,d0
|
moveq #$00000002,d0
|
move.w #$2FFF,2(a0,d0.l)
|
move.w #$2FFF,2(a0,d0.l)
|
move.w 2(a0,d0.l),SR
|
move.w 2(a0,d0.l),SR
|
bpl.s * * branch if Z clear
|
bpl.s * * branch if Z clear
|
bne.s * * branch if N clear
|
bne.s * * branch if N clear
|
bvc.s * * branch if V clear
|
bvc.s * * branch if V clear
|
bcc.s * * branch if C clear
|
bcc.s * * branch if C clear
|
|
|
move.w #$2000,2(a0,d0.l)
|
move.w #$2000,2(a0,d0.l)
|
move.w 2(a0,d0.l),SR
|
move.w 2(a0,d0.l),SR
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bmi.s * * branch if N set
|
bmi.s * * branch if N set
|
bvs.s * * branch if V set
|
bvs.s * * branch if V set
|
bcs.s * * branch if C set
|
bcs.s * * branch if C set
|
|
|
* x.W
|
* x.W
|
move.w #$2FFF,$0100
|
move.w #$2FFF,$0100
|
move.w $0100,SR
|
move.w $0100,SR
|
bpl.s * * branch if Z clear
|
bpl.s * * branch if Z clear
|
bne.s * * branch if N clear
|
bne.s * * branch if N clear
|
bvc.s * * branch if V clear
|
bvc.s * * branch if V clear
|
bcc.s * * branch if C clear
|
bcc.s * * branch if C clear
|
|
|
move.w #$2000,$0100
|
move.w #$2000,$0100
|
move.w $0100,SR
|
move.w $0100,SR
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bmi.s * * branch if N set
|
bmi.s * * branch if N set
|
bvs.s * * branch if V set
|
bvs.s * * branch if V set
|
bcs.s * * branch if C set
|
bcs.s * * branch if C set
|
|
|
* x.L
|
* x.L
|
move.w #$2FFF,$00010100
|
move.w #$2FFF,$00010100
|
move.w $00010100,SR
|
move.w $00010100,SR
|
bpl.s * * branch if Z clear
|
bpl.s * * branch if Z clear
|
bne.s * * branch if N clear
|
bne.s * * branch if N clear
|
bvc.s * * branch if V clear
|
bvc.s * * branch if V clear
|
bcc.s * * branch if C clear
|
bcc.s * * branch if C clear
|
|
|
MOVE4: move.w #$2000,$00010100
|
MOVE4: move.w #$2000,$00010100
|
move.w $00010100,SR
|
move.w $00010100,SR
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bmi.s * * branch if N set
|
bmi.s * * branch if N set
|
bvs.s * * branch if V set
|
bvs.s * * branch if V set
|
bcs.s * * branch if C set
|
bcs.s * * branch if C set
|
|
|
* x(PC)
|
* x(PC)
|
move.w MOVE4+2(pc),SR
|
move.w MOVE4+2(pc),SR
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bmi.s * * branch if N set
|
bmi.s * * branch if N set
|
bvs.s * * branch if V set
|
bvs.s * * branch if V set
|
bcs.s * * branch if C set
|
bcs.s * * branch if C set
|
|
|
* x(PC,d0.l)
|
* x(PC,d0.l)
|
moveq #$00000000,d0
|
moveq #$00000000,d0
|
move.w MOVE4+2(pc,d0.l),SR
|
move.w MOVE4+2(pc,d0.l),SR
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bmi.s * * branch if N set
|
bmi.s * * branch if N set
|
bvs.s * * branch if V set
|
bvs.s * * branch if V set
|
bcs.s * * branch if C set
|
bcs.s * * branch if C set
|
move MOVE4+2(pc,d0.l),CCR
|
move MOVE4+2(pc,d0.l),CCR
|
beq.s * * branch if Z set
|
beq.s * * branch if Z set
|
bmi.s * * branch if N set
|
bmi.s * * branch if N set
|
bvs.s * * branch if V set
|
bvs.s * * branch if V set
|
bcs.s * * branch if C set
|
bcs.s * * branch if C set
|
|
|
* #x
|
* #x
|
move.w #$2FFF,SR
|
move.w #$2FFF,SR
|
bne.s * * branch if Z clear
|
bne.s * * branch if Z clear
|
bpl.s * * branch if N clear
|
bpl.s * * branch if N clear
|
bvc.s * * branch if V clear
|
bvc.s * * branch if V clear
|
bcc.s * * branch if C clear
|
bcc.s * * branch if C clear
|
|
|
|
|
|
|
* MOVE_From_SR
|
* MOVE_From_SR
|
|
|
|
|
|
|
* Dn
|
* Dn
|
move.w #$275A,SR * Initial value
|
move.w #$275A,SR * Initial value
|
move.w SR,d0
|
move.w SR,d0
|
cmpi.w #$271A,d0
|
cmpi.w #$271A,d0
|
* The following fails because sr bits are implemented and non-zero so later code works.
|
* The following fails because sr bits are implemented and non-zero so later code works.
|
* bne.s * * branch if Z set
|
* bne.s * * branch if Z set
|
|
|
* (An)
|
* (An)
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
move.w #$275A,SR * Initial value
|
move.w #$275A,SR * Initial value
|
move.w SR,(a0)
|
move.w SR,(a0)
|
cmpi.w #$275A,(a0)
|
cmpi.w #$275A,(a0)
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
|
|
* (An)+
|
* (An)+
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
move.w #$257A,SR * Initial value
|
move.w #$257A,SR * Initial value
|
move.w SR,(a0)+
|
move.w SR,(a0)+
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
cmpi.w #$257A,(a0)+
|
cmpi.w #$257A,(a0)+
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
|
|
* -(An)
|
* -(An)
|
move.l #$00000102,a0
|
move.l #$00000102,a0
|
move.w #$2766,SR * Initial value
|
move.w #$2766,SR * Initial value
|
move.w SR,-(a0)
|
move.w SR,-(a0)
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
cmpi.w #$2766,(a0)
|
cmpi.w #$2766,(a0)
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
|
|
* x(An)
|
* x(An)
|
move.l #$00000102,a0
|
move.l #$00000102,a0
|
move.w #$2733,SR * Initial value
|
move.w #$2733,SR * Initial value
|
move.w SR,4(a0)
|
move.w SR,4(a0)
|
cmpi.w #$2733,4(a0)
|
cmpi.w #$2733,4(a0)
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
|
|
* x(An,rn)
|
* x(An,rn)
|
move.l #$00000102,a0
|
move.l #$00000102,a0
|
moveq #$00000004,d0
|
moveq #$00000004,d0
|
move.w #$275a,SR * Initial value
|
move.w #$275a,SR * Initial value
|
move.w SR,4(a0,d0.l)
|
move.w SR,4(a0,d0.l)
|
cmpi.w #$275a,4(a0,d0.l)
|
cmpi.w #$275a,4(a0,d0.l)
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
|
|
* x.W
|
* x.W
|
move.w #$2777,SR * Initial value
|
move.w #$2777,SR * Initial value
|
move.w SR,$0102
|
move.w SR,$0102
|
cmpi.w #$2777,$0102
|
cmpi.w #$2777,$0102
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
|
|
* x.L
|
* x.L
|
move.w #$2777,SR * Initial value
|
move.w #$2777,SR * Initial value
|
move.w SR,$10102
|
move.w SR,$10102
|
cmpi.w #$2777,$10102
|
cmpi.w #$2777,$10102
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
|
|
|
|
|
|
move.w #$2700,SR * Put flags back to initial value
|
move.w #$2700,SR * Put flags back to initial value
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : EXT
|
* OPCODE : EXT
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_EXT:
|
op_EXT:
|
|
|
move.l #$0000007F,d0
|
move.l #$0000007F,d0
|
move.l #$00008FFF,d1
|
move.l #$00008FFF,d1
|
moveq #$00000000,d2
|
moveq #$00000000,d2
|
|
|
ext.w d0
|
ext.w d0
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
cmpi.l #$0000007F,d0
|
cmpi.l #$0000007F,d0
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
|
|
ext.l d1
|
ext.l d1
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
cmpi.l #$FFFF8FFF,d1
|
cmpi.l #$FFFF8FFF,d1
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
|
|
ext.l d2
|
ext.l d2
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
|
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : SWAP
|
* OPCODE : SWAP
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_SWAP:
|
op_SWAP:
|
|
|
move.l #$12345678,d0
|
move.l #$12345678,d0
|
|
|
swap d0
|
swap d0
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
cmpi.l #$56781234,d0
|
cmpi.l #$56781234,d0
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
|
|
|
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : LEA_PEA
|
* OPCODE : LEA_PEA
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_LEAPEA:
|
op_LEAPEA:
|
|
|
move.l #$00345678,a0
|
move.l #$00345678,a0
|
moveq #$00000000,d4
|
moveq #$00000000,d4
|
|
|
* (An)
|
* (An)
|
lea (a0),a6
|
lea (a0),a6
|
move.l a6,d0
|
move.l a6,d0
|
cmpi.l #$00345678,d0
|
cmpi.l #$00345678,d0
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
pea (a0)
|
pea (a0)
|
cmpi.l #$00345678,(a7)
|
cmpi.l #$00345678,(a7)
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
* This was without a specifier which the assembler defaulted to .w
|
* This was without a specifier which the assembler defaulted to .w
|
addq.l #4,a7 * Restore Stack Pointer
|
addq.l #4,a7 * Restore Stack Pointer
|
|
|
* x(An)
|
* x(An)
|
lea 4(a0),a6
|
lea 4(a0),a6
|
move.l a6,d0
|
move.l a6,d0
|
cmpi.l #$0034567C,d0
|
cmpi.l #$0034567C,d0
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
pea 4(a0)
|
pea 4(a0)
|
cmpi.l #$0034567C,(a7)
|
cmpi.l #$0034567C,(a7)
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
* This was without a specifier which the assembler defaulted to .w
|
* This was without a specifier which the assembler defaulted to .w
|
addq.l #4,a7 * Restore Stack Pointer
|
addq.l #4,a7 * Restore Stack Pointer
|
|
|
* x(An,Dn.l)
|
* x(An,Dn.l)
|
lea 4(a0,d4),a6
|
lea 4(a0,d4),a6
|
move.l a6,d0
|
move.l a6,d0
|
cmpi.l #$0034567C,d0
|
cmpi.l #$0034567C,d0
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
pea 4(a0,d4.l)
|
pea 4(a0,d4.l)
|
cmpi.l #$0034567C,(a7)
|
cmpi.l #$0034567C,(a7)
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
* This was without a specifier which the assembler defaulted to .w
|
* This was without a specifier which the assembler defaulted to .w
|
addq.l #4,a7 * Restore Stack Pointer
|
addq.l #4,a7 * Restore Stack Pointer
|
|
|
* x.W
|
* x.W
|
lea $1234,a6
|
lea $1234,a6
|
move.l a6,d0
|
move.l a6,d0
|
cmpi.w #$1234,d0
|
cmpi.w #$1234,d0
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
pea $1234
|
pea $1234
|
cmpi.l #$00001234,(a7)
|
cmpi.l #$00001234,(a7)
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
* This was without a specifier which the assembler defaulted to .w
|
* This was without a specifier which the assembler defaulted to .w
|
addq.l #4,a7 * Restore Stack Pointer
|
addq.l #4,a7 * Restore Stack Pointer
|
|
|
* x.L
|
* x.L
|
lea $00345678,a6
|
lea $00345678,a6
|
move.l a6,d0
|
move.l a6,d0
|
cmp.l a6,d0
|
cmp.l a6,d0
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
pea $00345678
|
pea $00345678
|
cmpi.l #$00345678,(a7)
|
cmpi.l #$00345678,(a7)
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
* This was without a specifier which the assembler defaulted to .w
|
* This was without a specifier which the assembler defaulted to .w
|
addq.l #4,a7 * Restore Stack Pointer
|
addq.l #4,a7 * Restore Stack Pointer
|
|
|
* x(PC)
|
* x(PC)
|
lea LEA1(pc),a6
|
lea LEA1(pc),a6
|
move.l a6,d0
|
move.l a6,d0
|
cmp.l a6,d0
|
cmp.l a6,d0
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
LEA1: pea LEA1(pc)
|
LEA1: pea LEA1(pc)
|
cmpi.l #$0000241E,(a7)
|
cmpi.l #$0000241E,(a7)
|
beq.s * * branch if Z clear
|
beq.s * * branch if Z clear
|
* This was without a specifier which the assembler defaulted to .w
|
* This was without a specifier which the assembler defaulted to .w
|
addq.l #4,a7 * Restore Stack Pointer
|
addq.l #4,a7 * Restore Stack Pointer
|
|
|
|
|
|
|
|
|
move.w #$2700,sr * Put flags back to initial value
|
move.w #$2700,sr * Put flags back to initial value
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : LEA_TAS
|
* OPCODE : LEA_TAS
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_TAS:
|
op_TAS:
|
|
|
* Test just one addressing mode
|
* Test just one addressing mode
|
|
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
|
|
* (An)
|
* (An)
|
move.b #$00,(a0)
|
move.b #$00,(a0)
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
tas (a0)
|
tas (a0)
|
cmpi.b #$80,(a0)
|
cmpi.b #$80,(a0)
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
move.b #$F5,(a0)
|
move.b #$F5,(a0)
|
tas (a0)
|
tas (a0)
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
tas (a0)
|
tas (a0)
|
cmpi.b #$F5,(a0)
|
cmpi.b #$F5,(a0)
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : LEA_TST
|
* OPCODE : LEA_TST
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_TST:
|
op_TST:
|
|
|
* Test just one addressing mode
|
* Test just one addressing mode
|
|
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
|
|
* (An) - BYTE
|
* (An) - BYTE
|
move.b #$00,(a0)
|
move.b #$00,(a0)
|
tst.b (a0)
|
tst.b (a0)
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
move.b #$F5,(a0)
|
move.b #$F5,(a0)
|
tst.b (a0)
|
tst.b (a0)
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
|
|
* (An) - WORD
|
* (An) - WORD
|
move.w #$0000,(a0)
|
move.w #$0000,(a0)
|
tst.w (a0)
|
tst.w (a0)
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
move.w #$F567,(a0)
|
move.w #$F567,(a0)
|
tst.w (a0)
|
tst.w (a0)
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
|
|
* (An) - LONG
|
* (An) - LONG
|
move.l #$00000000,(a0)
|
move.l #$00000000,(a0)
|
tst.l (a0)
|
tst.l (a0)
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
move.l #$F56789ab,(a0)
|
move.l #$F56789ab,(a0)
|
tst.l (a0)
|
tst.l (a0)
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
|
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : LINKS
|
* OPCODE : LINKS
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_LINKS:
|
op_LINKS:
|
|
|
move.l #$11223344,a0
|
move.l #$11223344,a0
|
move.l #$11223344,d0
|
move.l #$11223344,d0
|
link a0,#$0
|
link a0,#$0
|
cmpi.l #$11223344,(a7)
|
cmpi.l #$11223344,(a7)
|
|
|
unlk a0
|
unlk a0
|
cmp.l d0,a0
|
cmp.l d0,a0
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
|
|
rts
|
rts
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : MOVE_USP
|
* OPCODE : MOVE_USP
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_MOVE_USP:
|
op_MOVE_USP:
|
|
|
move.l #$11223344,a0
|
move.l #$11223344,a0
|
move a0,USP
|
move a0,USP
|
move USP,a1
|
move USP,a1
|
cmp.l a0,a1
|
cmp.l a0,a1
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : CHK
|
* OPCODE : CHK
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_CHK:
|
op_CHK:
|
move.w #$1122,d0
|
move.w #$1122,d0
|
move.w #$1122,d1
|
move.w #$1122,d1
|
chk d0,d1
|
chk d0,d1
|
|
|
nop
|
nop
|
nop
|
nop
|
|
|
move.w #$1122,d1
|
move.w #$1122,d1
|
chk #$1122,d1
|
chk #$1122,d1
|
|
|
move.w #$1122,d1
|
move.w #$1122,d1
|
chk #00122,d1
|
chk #00122,d1
|
cmp.l #$EEEE0006,d6
|
cmp.l #$EEEE0006,d6
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
|
|
move.w #$1122,d0
|
move.w #$1122,d0
|
move.w #$8000,d1
|
move.w #$8000,d1
|
chk d0,d1
|
chk d0,d1
|
cmp.l #$EEEE0006,d6
|
cmp.l #$EEEE0006,d6
|
bne.s * * branch if Z set
|
bne.s * * branch if Z set
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : NEGS
|
* OPCODE : NEGS
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_NEGS:
|
op_NEGS:
|
|
|
* NOT - BYTE
|
* NOT - BYTE
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
moveq #$00000000,d0
|
moveq #$00000000,d0
|
not.b d0
|
not.b d0
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
not.b d0
|
not.b d0
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
cmpi.b #$00,d0
|
cmpi.b #$00,d0
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
move.b #$80,(a0)
|
move.b #$80,(a0)
|
not.b (a0)
|
not.b (a0)
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
not.b (a0)
|
not.b (a0)
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
cmpi.b #$80,(a0)
|
cmpi.b #$80,(a0)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* NOT - WORD
|
* NOT - WORD
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
moveq #$00000000,d0
|
moveq #$00000000,d0
|
not.w d0
|
not.w d0
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
not.w d0
|
not.w d0
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
cmpi.w #$0000,d0
|
cmpi.w #$0000,d0
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
move.w #$5a5a,(a0)
|
move.w #$5a5a,(a0)
|
not.w (a0)
|
not.w (a0)
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
not.w (a0)
|
not.w (a0)
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
cmpi.w #$5a5a,(a0)
|
cmpi.w #$5a5a,(a0)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* NOT - LONG
|
* NOT - LONG
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
moveq #$00000000,d0
|
moveq #$00000000,d0
|
not.l d0
|
not.l d0
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
not.l d0
|
not.l d0
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
cmpi.l #$00000000,d0
|
cmpi.l #$00000000,d0
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
move.l #$5a5a1234,(a0)
|
move.l #$5a5a1234,(a0)
|
not.l (a0)
|
not.l (a0)
|
bpl.s * * Check N Flag bmi/bpl
|
bpl.s * * Check N Flag bmi/bpl
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
not.l (a0)
|
not.l (a0)
|
bmi.s * * Check N Flag bmi/bpl
|
bmi.s * * Check N Flag bmi/bpl
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
cmpi.l #$5a5a1234,(a0)
|
cmpi.l #$5a5a1234,(a0)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* -----
|
* -----
|
|
|
* NEG - BYTE
|
* NEG - BYTE
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
moveq #$00000000,d0
|
moveq #$00000000,d0
|
move.l #$00000080,d1
|
move.l #$00000080,d1
|
neg.b d0
|
neg.b d0
|
bmi.s * * Check N Flag bmi/bpl 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
bne.s * * Check Z Flag beq/bne 1
|
bne.s * * Check Z Flag beq/bne 1
|
bcs.s * * Check C Flag bcc/bcs 1
|
bcs.s * * Check C Flag bcc/bcs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
neg.b d1
|
neg.b d1
|
bpl.s * * Check N Flag bmi/bpl 1
|
bpl.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvc.s * * Check V Flag bvc/bvs 0
|
bvc.s * * Check V Flag bvc/bvs 0
|
cmpi.b #$80,d1
|
cmpi.b #$80,d1
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
move.b #$7F,(a0)
|
move.b #$7F,(a0)
|
neg.b (a0)
|
neg.b (a0)
|
bpl.s * * Check N Flag bmi/bpl 1
|
bpl.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
move.b #$F5,(a0)
|
move.b #$F5,(a0)
|
neg.b (a0)
|
neg.b (a0)
|
bmi.s * * Check N Flag bmi/bpl 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
cmpi.b #$0B,(a0)
|
cmpi.b #$0B,(a0)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* -----
|
* -----
|
|
|
* NEG - WORD
|
* NEG - WORD
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
moveq #$00000000,d0
|
moveq #$00000000,d0
|
move.l #$00008000,d1
|
move.l #$00008000,d1
|
neg.w d0
|
neg.w d0
|
bmi.s * * Check N Flag bmi/bpl 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
bne.s * * Check Z Flag beq/bne 1
|
bne.s * * Check Z Flag beq/bne 1
|
bcs.s * * Check C Flag bcc/bcs 1
|
bcs.s * * Check C Flag bcc/bcs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
neg.w d1
|
neg.w d1
|
bpl.s * * Check N Flag bmi/bpl 1
|
bpl.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvc.s * * Check V Flag bvc/bvs 0
|
bvc.s * * Check V Flag bvc/bvs 0
|
cmpi.w #$8000,d1
|
cmpi.w #$8000,d1
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
move.w #$7FFF,(a0)
|
move.w #$7FFF,(a0)
|
neg.w (a0)
|
neg.w (a0)
|
bpl.s * * Check N Flag bmi/bpl 1
|
bpl.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
move.w #$F578,(a0)
|
move.w #$F578,(a0)
|
neg.w (a0)
|
neg.w (a0)
|
bmi.s * * Check N Flag bmi/bpl 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
cmpi.w #$0A88,(a0)
|
cmpi.w #$0A88,(a0)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
* -----
|
* -----
|
|
|
* NEG - LONG
|
* NEG - LONG
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
moveq #$00000000,d0
|
moveq #$00000000,d0
|
move.l #$80000000,d1
|
move.l #$80000000,d1
|
neg.l d0
|
neg.l d0
|
bmi.s * * Check N Flag bmi/bpl 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
bne.s * * Check Z Flag beq/bne 1
|
bne.s * * Check Z Flag beq/bne 1
|
bcs.s * * Check C Flag bcc/bcs 1
|
bcs.s * * Check C Flag bcc/bcs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
neg.l d1
|
neg.l d1
|
bpl.s * * Check N Flag bmi/bpl 1
|
bpl.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvc.s * * Check V Flag bvc/bvs 0
|
bvc.s * * Check V Flag bvc/bvs 0
|
cmpi.l #$80000000,d1
|
cmpi.l #$80000000,d1
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
move.l #$7FFFFFFF,(a0)
|
move.l #$7FFFFFFF,(a0)
|
neg.l (a0)
|
neg.l (a0)
|
bpl.s * * Check N Flag bmi/bpl 1
|
bpl.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
move.l #$F5781234,(a0)
|
move.l #$F5781234,(a0)
|
neg.l (a0)
|
neg.l (a0)
|
bmi.s * * Check N Flag bmi/bpl 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
cmpi.l #$0A87EDCC,(a0)
|
cmpi.l #$0A87EDCC,(a0)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
|
|
* -----
|
* -----
|
|
|
* NEGX - BYTE
|
* NEGX - BYTE
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
moveq #$00000000,d0
|
moveq #$00000000,d0
|
move.l #$00000080,d1
|
move.l #$00000080,d1
|
ori.b #$10,CCR * Set X Flag
|
ori.b #$10,CCR * Set X Flag
|
negx.b d0
|
negx.b d0
|
bpl.s * * Check N Flag bmi/bpl 0
|
bpl.s * * Check N Flag bmi/bpl 0
|
beq.s * * Check Z Flag beq/bne 1
|
beq.s * * Check Z Flag beq/bne 1
|
bcc.s * * Check C Flag bcc/bcs 1
|
bcc.s * * Check C Flag bcc/bcs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
andi.b #$EF,CCR * Clear X Flag
|
andi.b #$EF,CCR * Clear X Flag
|
negx.b d0
|
negx.b d0
|
bmi.s * * Check N Flag bmi/bpl 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
beq.s * * Check Z Flag beq/bne 1
|
beq.s * * Check Z Flag beq/bne 1
|
bcc.s * * Check C Flag bcc/bcs 1
|
bcc.s * * Check C Flag bcc/bcs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
ori.b #$10,CCR * Set X Flag
|
ori.b #$10,CCR * Set X Flag
|
negx.b d1
|
negx.b d1
|
bmi.s * * Check N Flag bmi/bpl 1
|
bmi.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 0
|
bvs.s * * Check V Flag bvc/bvs 0
|
cmpi.b #$7F,d1
|
cmpi.b #$7F,d1
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
andi.b #$EF,CCR * Clear X Flag
|
andi.b #$EF,CCR * Clear X Flag
|
negx.b d1
|
negx.b d1
|
bpl.s * * Check N Flag bmi/bpl 1
|
bpl.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 0
|
bvs.s * * Check V Flag bvc/bvs 0
|
cmpi.b #$81,d1
|
cmpi.b #$81,d1
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
move.b #$7F,(a0)
|
move.b #$7F,(a0)
|
ori.b #$10,CCR * Set X Flag
|
ori.b #$10,CCR * Set X Flag
|
negx.b (a0)
|
negx.b (a0)
|
bpl.s * * Check N Flag bmi/bpl 1
|
bpl.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
* I think overflow should happen here.
|
* I think overflow should happen here.
|
* bvs.s * * Check V Flag bvc/bvs 1
|
* bvs.s * * Check V Flag bvc/bvs 1
|
move.b #$7F,(a0)
|
move.b #$7F,(a0)
|
andi.b #$EF,CCR * Clear X Flag
|
andi.b #$EF,CCR * Clear X Flag
|
negx.b (a0)
|
negx.b (a0)
|
bpl.s * * Check N Flag bmi/bpl 1
|
bpl.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
move.b #$F5,(a0)
|
move.b #$F5,(a0)
|
ori.b #$10,CCR * Set X Flag
|
ori.b #$10,CCR * Set X Flag
|
negx.b (a0)
|
negx.b (a0)
|
bmi.s * * Check N Flag bmi/bpl 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
cmpi.b #$0A,(a0)
|
cmpi.b #$0A,(a0)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
andi.b #$EF,CCR * Clear X Flag
|
andi.b #$EF,CCR * Clear X Flag
|
negx.b (a0)
|
negx.b (a0)
|
bpl.s * * Check N Flag bmi/bpl 0
|
bpl.s * * Check N Flag bmi/bpl 0
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
cmpi.b #$F6,(a0)
|
cmpi.b #$F6,(a0)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
|
|
|
|
* -----
|
* -----
|
|
|
* NEGX - WORD
|
* NEGX - WORD
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
moveq #$00000000,d0
|
moveq #$00000000,d0
|
move.l #$00008000,d1
|
move.l #$00008000,d1
|
ori.b #$10,CCR * Set X Flag
|
ori.b #$10,CCR * Set X Flag
|
negx.w d0
|
negx.w d0
|
bpl.s * * Check N Flag bmi/bpl 0
|
bpl.s * * Check N Flag bmi/bpl 0
|
beq.s * * Check Z Flag beq/bne 1
|
beq.s * * Check Z Flag beq/bne 1
|
bcc.s * * Check C Flag bcc/bcs 1
|
bcc.s * * Check C Flag bcc/bcs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
andi.b #$EF,CCR * Clear X Flag
|
andi.b #$EF,CCR * Clear X Flag
|
negx.w d0
|
negx.w d0
|
bmi.s * * Check N Flag bmi/bpl 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
beq.s * * Check Z Flag beq/bne 1
|
beq.s * * Check Z Flag beq/bne 1
|
bcc.s * * Check C Flag bcc/bcs 1
|
bcc.s * * Check C Flag bcc/bcs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
ori.b #$10,CCR * Set X Flag
|
ori.b #$10,CCR * Set X Flag
|
negx.w d1
|
negx.w d1
|
bmi.s * * Check N Flag bmi/bpl 1
|
bmi.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 0
|
bvs.s * * Check V Flag bvc/bvs 0
|
cmpi.w #$7FFF,d1
|
cmpi.w #$7FFF,d1
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
andi.b #$EF,CCR * Clear X Flag
|
andi.b #$EF,CCR * Clear X Flag
|
negx.w d1
|
negx.w d1
|
bpl.s * * Check N Flag bmi/bpl 1
|
bpl.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 0
|
bvs.s * * Check V Flag bvc/bvs 0
|
cmpi.w #$8001,d1
|
cmpi.w #$8001,d1
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
move.w #$7FFF,(a0)
|
move.w #$7FFF,(a0)
|
ori.b #$10,CCR * Set X Flag
|
ori.b #$10,CCR * Set X Flag
|
negx.w (a0)
|
negx.w (a0)
|
bpl.s * * Check N Flag bmi/bpl 1
|
bpl.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
***
|
***
|
* bvs.s * * Check V Flag bvc/bvs 1
|
* bvs.s * * Check V Flag bvc/bvs 1
|
move.w #$F567,(a0)
|
move.w #$F567,(a0)
|
andi.b #$EF,CCR * Clear X Flag
|
andi.b #$EF,CCR * Clear X Flag
|
negx.w (a0)
|
negx.w (a0)
|
bmi.s * * Check N Flag bmi/bpl 1
|
bmi.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
move.w #$F567,(a0)
|
move.w #$F567,(a0)
|
ori.b #$10,CCR * Set X Flag
|
ori.b #$10,CCR * Set X Flag
|
negx.w (a0)
|
negx.w (a0)
|
bmi.s * * Check N Flag bmi/bpl 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
cmpi.w #$0A98,(a0)
|
cmpi.w #$0A98,(a0)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
andi.b #$EF,CCR * Clear X Flag
|
andi.b #$EF,CCR * Clear X Flag
|
negx.w (a0)
|
negx.w (a0)
|
bpl.s * * Check N Flag bmi/bpl 0
|
bpl.s * * Check N Flag bmi/bpl 0
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
cmpi.w #$F568,(a0)
|
cmpi.w #$F568,(a0)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
|
|
* -----
|
* -----
|
|
|
* NEGX - LONG
|
* NEGX - LONG
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
moveq #$00000000,d0
|
moveq #$00000000,d0
|
move.l #$80000000,d1
|
move.l #$80000000,d1
|
ori.b #$10,CCR * Set X Flag
|
ori.b #$10,CCR * Set X Flag
|
negx.l d0
|
negx.l d0
|
bpl.s * * Check N Flag bmi/bpl 0
|
bpl.s * * Check N Flag bmi/bpl 0
|
beq.s * * Check Z Flag beq/bne 1
|
beq.s * * Check Z Flag beq/bne 1
|
bcc.s * * Check C Flag bcc/bcs 1
|
bcc.s * * Check C Flag bcc/bcs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
andi.b #$EF,CCR * Clear X Flag
|
andi.b #$EF,CCR * Clear X Flag
|
negx.l d0
|
negx.l d0
|
bmi.s * * Check N Flag bmi/bpl 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
beq.s * * Check Z Flag beq/bne 1
|
beq.s * * Check Z Flag beq/bne 1
|
bcc.s * * Check C Flag bcc/bcs 1
|
bcc.s * * Check C Flag bcc/bcs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
ori.b #$10,CCR * Set X Flag
|
ori.b #$10,CCR * Set X Flag
|
negx.l d1
|
negx.l d1
|
bmi.s * * Check N Flag bmi/bpl 1
|
bmi.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 0
|
bvs.s * * Check V Flag bvc/bvs 0
|
cmpi.l #$7FFFFFFF,d1
|
cmpi.l #$7FFFFFFF,d1
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
andi.b #$EF,CCR * Clear X Flag
|
andi.b #$EF,CCR * Clear X Flag
|
negx.l d1
|
negx.l d1
|
bpl.s * * Check N Flag bmi/bpl 1
|
bpl.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
****
|
****
|
* bvs.s * * Check V Flag bvc/bvs 0
|
* bvs.s * * Check V Flag bvc/bvs 0
|
cmpi.l #$80000001,d1
|
cmpi.l #$80000001,d1
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
move.l #$7FFF,(a0)
|
move.l #$7FFF,(a0)
|
ori.b #$10,CCR * Set X Flag
|
ori.b #$10,CCR * Set X Flag
|
negx.l (a0)
|
negx.l (a0)
|
bpl.s * * Check N Flag bmi/bpl 1
|
bpl.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
****
|
****
|
* bvs.s * * Check V Flag bvc/bvs 1
|
* bvs.s * * Check V Flag bvc/bvs 1
|
move.l #$F5671234,(a0)
|
move.l #$F5671234,(a0)
|
andi.b #$EF,CCR * Clear X Flag
|
andi.b #$EF,CCR * Clear X Flag
|
negx.l (a0)
|
negx.l (a0)
|
bmi.s * * Check N Flag bmi/bpl 1
|
bmi.s * * Check N Flag bmi/bpl 1
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
move.l #$F5675678,(a0)
|
move.l #$F5675678,(a0)
|
ori.b #$10,CCR * Set X Flag
|
ori.b #$10,CCR * Set X Flag
|
negx.l (a0)
|
negx.l (a0)
|
bmi.s * * Check N Flag bmi/bpl 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
cmpi.l #$0A98A987,(a0)
|
cmpi.l #$0A98A987,(a0)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
andi.b #$EF,CCR * Clear X Flag
|
andi.b #$EF,CCR * Clear X Flag
|
negx.l (a0)
|
negx.l (a0)
|
bpl.s * * Check N Flag bmi/bpl 0
|
bpl.s * * Check N Flag bmi/bpl 0
|
beq.s * * Check Z Flag beq/bne 0
|
beq.s * * Check Z Flag beq/bne 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bcc.s * * Check C Flag bcc/bcs 0
|
bvs.s * * Check V Flag bvc/bvs 1
|
bvs.s * * Check V Flag bvc/bvs 1
|
cmpi.l #$F5675679,(a0)
|
cmpi.l #$F5675679,(a0)
|
bne.s * * Check Z Flag beq/bne
|
bne.s * * Check Z Flag beq/bne
|
|
|
|
|
* -----
|
* -----
|
|
|
* CLR - BYTE
|
* CLR - BYTE
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
move.l #$12345678,d0
|
move.l #$12345678,d0
|
move.l #$12345678,d1
|
move.l #$12345678,d1
|
move.l #$12345678,d2
|
move.l #$12345678,d2
|
move.l #$12345600,d4
|
move.l #$12345600,d4
|
move.l #$12340000,d5
|
move.l #$12340000,d5
|
moveq #$00000000,d6
|
moveq #$00000000,d6
|
|
|
clr.b d0
|
clr.b d0
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
cmp.l d0,d4
|
cmp.l d0,d4
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
|
|
clr.w d1
|
clr.w d1
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
cmp.l d1,d5
|
cmp.l d1,d5
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
|
|
clr.l d2
|
clr.l d2
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
bmi.s * * Check N Flag bmi/bpl 0
|
cmp.l d2,d6
|
cmp.l d2,d6
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : MOVEM
|
* OPCODE : MOVEM
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_MOVEM:
|
op_MOVEM:
|
|
|
* WORD Registers --> Memory
|
* WORD Registers --> Memory
|
move.l #$0000d0d0,d0
|
move.l #$0000d0d0,d0
|
move.l #$0000d1d1,d1
|
move.l #$0000d1d1,d1
|
move.l #$0000d2d2,d2
|
move.l #$0000d2d2,d2
|
move.l #$0000d3d3,d3
|
move.l #$0000d3d3,d3
|
move.l #$0000d4d4,d4
|
move.l #$0000d4d4,d4
|
move.l #$0000d5d5,d5
|
move.l #$0000d5d5,d5
|
move.l #$0000d6d6,d6
|
move.l #$0000d6d6,d6
|
move.l #$0000d7d7,d7
|
move.l #$0000d7d7,d7
|
move.l #$00000a0a,a0
|
move.l #$00000a0a,a0
|
move.l #$00001a1a,a1
|
move.l #$00001a1a,a1
|
move.l #$00002a2a,a2
|
move.l #$00002a2a,a2
|
move.l #$00003a3a,a3
|
move.l #$00003a3a,a3
|
move.l #$00004a4a,a4
|
move.l #$00004a4a,a4
|
move.l #$00005a5a,a5
|
move.l #$00005a5a,a5
|
move.l #$00006a6a,a6
|
move.l #$00006a6a,a6
|
* move.l #$00007a7a,a7 * Dont change the Stack Pointer
|
* move.l #$00007a7a,a7 * Dont change the Stack Pointer
|
|
|
movem.w D0-D7/A0-A7,$00000100
|
movem.w D0-D7/A0-A7,$00000100
|
|
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
|
|
cmp.w (a0)+,d0
|
cmp.w (a0)+,d0
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w (a0)+,d1
|
cmp.w (a0)+,d1
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w (a0)+,d2
|
cmp.w (a0)+,d2
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w (a0)+,d3
|
cmp.w (a0)+,d3
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w (a0)+,d4
|
cmp.w (a0)+,d4
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w (a0)+,d5
|
cmp.w (a0)+,d5
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w (a0)+,d6
|
cmp.w (a0)+,d6
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w (a0)+,d7
|
cmp.w (a0)+,d7
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
|
|
cmpi.w #$0A0A,(a0)+ * Because we are using a0 as a pointer
|
cmpi.w #$0A0A,(a0)+ * Because we are using a0 as a pointer
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
|
|
cmp.w (a0)+,a1
|
cmp.w (a0)+,a1
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w (a0)+,a2
|
cmp.w (a0)+,a2
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w (a0)+,a3
|
cmp.w (a0)+,a3
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w (a0)+,a4
|
cmp.w (a0)+,a4
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w (a0)+,a5
|
cmp.w (a0)+,a5
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w (a0)+,a6
|
cmp.w (a0)+,a6
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
|
|
|
|
|
|
|
|
* LONG Registers --> Memory
|
* LONG Registers --> Memory
|
move.l #$d0d0d0d0,d0
|
move.l #$d0d0d0d0,d0
|
move.l #$d1d1d1d1,d1
|
move.l #$d1d1d1d1,d1
|
move.l #$d2d2d2d2,d2
|
move.l #$d2d2d2d2,d2
|
move.l #$d3d3d3d3,d3
|
move.l #$d3d3d3d3,d3
|
move.l #$d4d4d4d4,d4
|
move.l #$d4d4d4d4,d4
|
move.l #$d5d5d5d5,d5
|
move.l #$d5d5d5d5,d5
|
move.l #$d6d6d6d6,d6
|
move.l #$d6d6d6d6,d6
|
move.l #$d7d7d7d7,d7
|
move.l #$d7d7d7d7,d7
|
move.l #$0a0a0a0a,a0
|
move.l #$0a0a0a0a,a0
|
move.l #$1a1a1a1a,a1
|
move.l #$1a1a1a1a,a1
|
move.l #$2a2a2a2a,a2
|
move.l #$2a2a2a2a,a2
|
move.l #$3a3a3a3a,a3
|
move.l #$3a3a3a3a,a3
|
move.l #$4a4a4a4a,a4
|
move.l #$4a4a4a4a,a4
|
move.l #$5a5a5a5a,a5
|
move.l #$5a5a5a5a,a5
|
move.l #$6a6a6a6a,a6
|
move.l #$6a6a6a6a,a6
|
* move.l #$7a7a7a7a,a7 * Dont change the Stack Pointer
|
* move.l #$7a7a7a7a,a7 * Dont change the Stack Pointer
|
|
|
|
|
movem.l D0-D7/A0-A7,$00000120
|
movem.l D0-D7/A0-A7,$00000120
|
|
|
move.l #$00000120,a0
|
move.l #$00000120,a0
|
|
|
cmp.l (a0)+,d0
|
cmp.l (a0)+,d0
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l (a0)+,d1
|
cmp.l (a0)+,d1
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l (a0)+,d2
|
cmp.l (a0)+,d2
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l (a0)+,d3
|
cmp.l (a0)+,d3
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l (a0)+,d4
|
cmp.l (a0)+,d4
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l (a0)+,d5
|
cmp.l (a0)+,d5
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l (a0)+,d6
|
cmp.l (a0)+,d6
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l (a0)+,d7
|
cmp.l (a0)+,d7
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
|
|
cmpi.l #$0A0A0A0A,(a0)+ * Because we are using a0 as a pointer
|
cmpi.l #$0A0A0A0A,(a0)+ * Because we are using a0 as a pointer
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
|
|
cmp.l (a0)+,a1
|
cmp.l (a0)+,a1
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l (a0)+,a2
|
cmp.l (a0)+,a2
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l (a0)+,a3
|
cmp.l (a0)+,a3
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l (a0)+,a4
|
cmp.l (a0)+,a4
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l (a0)+,a5
|
cmp.l (a0)+,a5
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l (a0)+,a6
|
cmp.l (a0)+,a6
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
* ----
|
* ----
|
|
|
|
|
* WORD Registers --> Memory -(An) EA Mode
|
* WORD Registers --> Memory -(An) EA Mode
|
move.l #$0000d0d0,d0
|
move.l #$0000d0d0,d0
|
move.l #$0000d1d1,d1
|
move.l #$0000d1d1,d1
|
move.l #$0000d2d2,d2
|
move.l #$0000d2d2,d2
|
move.l #$0000d3d3,d3
|
move.l #$0000d3d3,d3
|
move.l #$0000d4d4,d4
|
move.l #$0000d4d4,d4
|
move.l #$0000d5d5,d5
|
move.l #$0000d5d5,d5
|
move.l #$0000d6d6,d6
|
move.l #$0000d6d6,d6
|
move.l #$0000d7d7,d7
|
move.l #$0000d7d7,d7
|
move.l #$00000a0a,a0
|
move.l #$00000a0a,a0
|
move.l #$00001a1a,a1
|
move.l #$00001a1a,a1
|
move.l #$00002a2a,a2
|
move.l #$00002a2a,a2
|
move.l #$00003a3a,a3
|
move.l #$00003a3a,a3
|
move.l #$00004a4a,a4
|
move.l #$00004a4a,a4
|
move.l #$00005a5a,a5
|
move.l #$00005a5a,a5
|
move.l #$00006a6a,a6
|
move.l #$00006a6a,a6
|
* move.l #$00007a7a,a7 * Dont change the Stack Pointer
|
* move.l #$00007a7a,a7 * Dont change the Stack Pointer
|
|
|
move.l #$000001A0,a0
|
move.l #$000001A0,a0
|
movem.w D0-D7/A0-A7,-(a0)
|
movem.w D0-D7/A0-A7,-(a0)
|
|
|
move.l #$0000019E,a0
|
move.l #$0000019E,a0
|
|
|
cmp.w -(a0),a6
|
cmp.w -(a0),a6
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w -(a0),a5
|
cmp.w -(a0),a5
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w -(a0),a4
|
cmp.w -(a0),a4
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w -(a0),a3
|
cmp.w -(a0),a3
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w -(a0),a2
|
cmp.w -(a0),a2
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w -(a0),a1
|
cmp.w -(a0),a1
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w -(a0),a0
|
cmp.w -(a0),a0
|
* bne.s * * Check Z Flag beq/bne 0
|
* bne.s * * Check Z Flag beq/bne 0
|
cmp.w -(a0),d7
|
cmp.w -(a0),d7
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w -(a0),d6
|
cmp.w -(a0),d6
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w -(a0),d5
|
cmp.w -(a0),d5
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w -(a0),d4
|
cmp.w -(a0),d4
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w -(a0),d3
|
cmp.w -(a0),d3
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w -(a0),d2
|
cmp.w -(a0),d2
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w -(a0),d1
|
cmp.w -(a0),d1
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.w -(a0),d0
|
cmp.w -(a0),d0
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
|
|
|
|
|
|
|
|
* LONG Registers --> Memory -(An) EA Mode
|
* LONG Registers --> Memory -(An) EA Mode
|
move.l #$d0d0d0d0,d0
|
move.l #$d0d0d0d0,d0
|
move.l #$d1d1d1d1,d1
|
move.l #$d1d1d1d1,d1
|
move.l #$d2d2d2d2,d2
|
move.l #$d2d2d2d2,d2
|
move.l #$d3d3d3d3,d3
|
move.l #$d3d3d3d3,d3
|
move.l #$d4d4d4d4,d4
|
move.l #$d4d4d4d4,d4
|
move.l #$d5d5d5d5,d5
|
move.l #$d5d5d5d5,d5
|
move.l #$d6d6d6d6,d6
|
move.l #$d6d6d6d6,d6
|
move.l #$d7d7d7d7,d7
|
move.l #$d7d7d7d7,d7
|
move.l #$0a0a0a0a,a0
|
move.l #$0a0a0a0a,a0
|
move.l #$1a1a1a1a,a1
|
move.l #$1a1a1a1a,a1
|
move.l #$2a2a2a2a,a2
|
move.l #$2a2a2a2a,a2
|
move.l #$3a3a3a3a,a3
|
move.l #$3a3a3a3a,a3
|
move.l #$4a4a4a4a,a4
|
move.l #$4a4a4a4a,a4
|
move.l #$5a5a5a5a,a5
|
move.l #$5a5a5a5a,a5
|
move.l #$6a6a6a6a,a6
|
move.l #$6a6a6a6a,a6
|
* move.l #$7a7a7a7a,a7 * Dont change the Stack Pointer
|
* move.l #$7a7a7a7a,a7 * Dont change the Stack Pointer
|
|
|
|
|
move.l #$000001A0,a0
|
move.l #$000001A0,a0
|
movem.l D0-D7/A0-A7,-(a0)
|
movem.l D0-D7/A0-A7,-(a0)
|
|
|
move.l #$0000019C,a0
|
move.l #$0000019C,a0
|
|
|
cmp.l -(a0),a6
|
cmp.l -(a0),a6
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l -(a0),a5
|
cmp.l -(a0),a5
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l -(a0),a4
|
cmp.l -(a0),a4
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l -(a0),a3
|
cmp.l -(a0),a3
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l -(a0),a2
|
cmp.l -(a0),a2
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l -(a0),a1
|
cmp.l -(a0),a1
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l -(a0),a0
|
cmp.l -(a0),a0
|
* bne.s * * Check Z Flag beq/bne 0
|
* bne.s * * Check Z Flag beq/bne 0
|
cmp.l -(a0),d7
|
cmp.l -(a0),d7
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l -(a0),d6
|
cmp.l -(a0),d6
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l -(a0),d5
|
cmp.l -(a0),d5
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l -(a0),d4
|
cmp.l -(a0),d4
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l -(a0),d3
|
cmp.l -(a0),d3
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l -(a0),d2
|
cmp.l -(a0),d2
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l -(a0),d1
|
cmp.l -(a0),d1
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l -(a0),d0
|
cmp.l -(a0),d0
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
|
|
|
|
|
|
* ----
|
* ----
|
|
|
* WORD - Memory --> Registers
|
* WORD - Memory --> Registers
|
moveq #$00000000,d0
|
moveq #$00000000,d0
|
moveq #$00000000,d1
|
moveq #$00000000,d1
|
moveq #$00000000,d2
|
moveq #$00000000,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4
|
moveq #$00000000,d4
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
moveq #$00000000,d6
|
moveq #$00000000,d6
|
moveq #$00000000,d7
|
moveq #$00000000,d7
|
move.l #$00000000,a0
|
move.l #$00000000,a0
|
move.l #$00000000,a1
|
move.l #$00000000,a1
|
move.l #$00000000,a2
|
move.l #$00000000,a2
|
move.l #$00000000,a3
|
move.l #$00000000,a3
|
move.l #$00000000,a4
|
move.l #$00000000,a4
|
move.l #$00000000,a5
|
move.l #$00000000,a5
|
move.l #$00000000,a6
|
move.l #$00000000,a6
|
* move.l #$00000000,a7 * Dont change the Stack Pointer
|
* move.l #$00000000,a7 * Dont change the Stack Pointer
|
|
|
movem.w $00000100,D0/D2/D4/D6/A1/A3/A5
|
movem.w $00000100,D0/D2/D4/D6/A1/A3/A5
|
|
|
cmp.l #$FFFFD0D0,d0
|
cmp.l #$FFFFD0D0,d0
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l #$FFFFD1D1,d2
|
cmp.l #$FFFFD1D1,d2
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l #$FFFFD2D2,d4
|
cmp.l #$FFFFD2D2,d4
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l #$FFFFD3D3,d6
|
cmp.l #$FFFFD3D3,d6
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l #$FFFFD4D4,a1
|
cmp.l #$FFFFD4D4,a1
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l #$FFFFD5D5,a3
|
cmp.l #$FFFFD5D5,a3
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l #$FFFFD6D6,a5
|
cmp.l #$FFFFD6D6,a5
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
|
|
|
|
* LONG - Memory --> Registers
|
* LONG - Memory --> Registers
|
moveq #$00000000,d0
|
moveq #$00000000,d0
|
moveq #$00000000,d1
|
moveq #$00000000,d1
|
moveq #$00000000,d2
|
moveq #$00000000,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4
|
moveq #$00000000,d4
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
moveq #$00000000,d6
|
moveq #$00000000,d6
|
moveq #$00000000,d7
|
moveq #$00000000,d7
|
move.l #$00000000,a0
|
move.l #$00000000,a0
|
move.l #$00000000,a1
|
move.l #$00000000,a1
|
move.l #$00000000,a2
|
move.l #$00000000,a2
|
move.l #$00000000,a3
|
move.l #$00000000,a3
|
move.l #$00000000,a4
|
move.l #$00000000,a4
|
move.l #$00000000,a5
|
move.l #$00000000,a5
|
move.l #$00000000,a6
|
move.l #$00000000,a6
|
* move.l #$00000000,a7 * Dont change the Stack Pointer
|
* move.l #$00000000,a7 * Dont change the Stack Pointer
|
|
|
movem.l $00000120,D0/D2/D4/D6/A1/A3/A5
|
movem.l $00000120,D0/D2/D4/D6/A1/A3/A5
|
|
|
cmp.l #$D0D0D0D0,d0
|
cmp.l #$D0D0D0D0,d0
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l #$D1D1D1D1,d2
|
cmp.l #$D1D1D1D1,d2
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l #$D2D2D2D2,d4
|
cmp.l #$D2D2D2D2,d4
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l #$D3D3D3D3,d6
|
cmp.l #$D3D3D3D3,d6
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l #$D4D4D4D4,a1
|
cmp.l #$D4D4D4D4,a1
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l #$D5D5D5D5,a3
|
cmp.l #$D5D5D5D5,a3
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
cmp.l #$D6D6D6D6,a5
|
cmp.l #$D6D6D6D6,a5
|
bne.s * * Check Z Flag beq/bne 0
|
bne.s * * Check Z Flag beq/bne 0
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : ABCD
|
* OPCODE : ABCD
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_ABCD:
|
op_ABCD:
|
|
|
* Test with X Flag CLEARED
|
* Test with X Flag CLEARED
|
move.l #$00000110,a0 * Address pointer-X
|
move.l #$00000110,a0 * Address pointer-X
|
move.l #$00000120,a1 * Address pointer-Y
|
move.l #$00000120,a1 * Address pointer-Y
|
moveq #$00000000,d0 * BCD byte-X
|
moveq #$00000000,d0 * BCD byte-X
|
moveq #$00000000,d1 * BCD byte-Y
|
moveq #$00000000,d1 * BCD byte-Y
|
moveq #$00000000,d2
|
moveq #$00000000,d2
|
moveq #$00000000,d3 * Cumulative -(An) BCD results
|
moveq #$00000000,d3 * Cumulative -(An) BCD results
|
moveq #$00000000,d4 * Cumulative number.s of times C was set
|
moveq #$00000000,d4 * Cumulative number.s of times C was set
|
moveq #$00000000,d5 * Cumulative Register BCD results
|
moveq #$00000000,d5 * Cumulative Register BCD results
|
move.l #$00000099,d6 * Inner loop counter
|
move.l #$00000099,d6 * Inner loop counter
|
move.l #$00000099,d7 * Outer loop counter
|
move.l #$00000099,d7 * Outer loop counter
|
|
|
ABCD_OUTER1: move.l d7,d0
|
ABCD_OUTER1: move.l d7,d0
|
ABCD_INNER1: move.l d6,d1
|
ABCD_INNER1: move.l d6,d1
|
andi.b #$EF,CCR * Clear X Flag
|
andi.b #$EF,CCR * Clear X Flag
|
move.l #$00000110,a0 * Address pointer-X
|
move.l #$00000110,a0 * Address pointer-X
|
move.l #$00000120,a1 * Address pointer-Y
|
move.l #$00000120,a1 * Address pointer-Y
|
move.b d0,-1(a0)
|
move.b d0,-1(a0)
|
move.b d1,-1(a1)
|
move.b d1,-1(a1)
|
|
|
abcd d0,d1
|
abcd d0,d1
|
bcc.s ABCD_NO_C1 * Check C Flag bcc/bcs 0
|
bcc.s ABCD_NO_C1 * Check C Flag bcc/bcs 0
|
add.l #1,d4
|
add.l #1,d4
|
ABCD_NO_C1: add.l d1,d5
|
ABCD_NO_C1: add.l d1,d5
|
|
|
abcd -(a0),-(a1)
|
abcd -(a0),-(a1)
|
bcc.s ABCD_NO_C2 * Check C Flag bcc/bcs 0
|
bcc.s ABCD_NO_C2 * Check C Flag bcc/bcs 0
|
add.l #1,d4
|
add.l #1,d4
|
ABCD_NO_C2: add.b (a1),d3
|
ABCD_NO_C2: add.b (a1),d3
|
|
|
|
|
dbf d6,ABCD_INNER1
|
dbf d6,ABCD_INNER1
|
move.l #$00000099,d6
|
move.l #$00000099,d6
|
dbf d7,ABCD_OUTER1
|
dbf d7,ABCD_OUTER1
|
cmpi.l #$00005AFC,d4 * Check the cumulative results
|
cmpi.l #$00005AFC,d4 * Check the cumulative results
|
bne.s *
|
bne.s *
|
cmpi.l #$001C9A34,d5
|
cmpi.l #$001C9A34,d5
|
bne.s *
|
bne.s *
|
cmpi.l #$00000034,d3
|
cmpi.l #$00000034,d3
|
bne.s *
|
bne.s *
|
|
|
* Test with X Flag SET
|
* Test with X Flag SET
|
move.l #$00000110,a0 * Address pointer-X
|
move.l #$00000110,a0 * Address pointer-X
|
move.l #$00000120,a1 * Address pointer-Y
|
move.l #$00000120,a1 * Address pointer-Y
|
moveq #$00000000,d0 * BCD byte-X
|
moveq #$00000000,d0 * BCD byte-X
|
moveq #$00000000,d1 * BCD byte-Y
|
moveq #$00000000,d1 * BCD byte-Y
|
moveq #$00000000,d2
|
moveq #$00000000,d2
|
moveq #$00000000,d3 * Cumulative -(An) BCD results
|
moveq #$00000000,d3 * Cumulative -(An) BCD results
|
moveq #$00000000,d4 * Cumulative number.s of times C was set
|
moveq #$00000000,d4 * Cumulative number.s of times C was set
|
moveq #$00000000,d5 * Cumulative Register BCD results
|
moveq #$00000000,d5 * Cumulative Register BCD results
|
move.l #$00000099,d6 * Inner loop counter
|
move.l #$00000099,d6 * Inner loop counter
|
move.l #$00000099,d7 * Outer loop counter
|
move.l #$00000099,d7 * Outer loop counter
|
|
|
ABCD_OUTER2: move.l d7,d0
|
ABCD_OUTER2: move.l d7,d0
|
ABCD_INNER2: move.l d6,d1
|
ABCD_INNER2: move.l d6,d1
|
ori.b #$10,CCR * Set X Flag
|
ori.b #$10,CCR * Set X Flag
|
move.l #$00000110,a0 * Address pointer-X
|
move.l #$00000110,a0 * Address pointer-X
|
move.l #$00000120,a1 * Address pointer-Y
|
move.l #$00000120,a1 * Address pointer-Y
|
move.b d0,-1(a0)
|
move.b d0,-1(a0)
|
move.b d1,-1(a1)
|
move.b d1,-1(a1)
|
|
|
abcd d0,d1
|
abcd d0,d1
|
bcc.s ABCD_NO_C3 * Check C Flag bcc/bcs 0
|
bcc.s ABCD_NO_C3 * Check C Flag bcc/bcs 0
|
add.l #1,d4
|
add.l #1,d4
|
ABCD_NO_C3: add.l d1,d5
|
ABCD_NO_C3: add.l d1,d5
|
|
|
abcd -(a0),-(a1)
|
abcd -(a0),-(a1)
|
bcc.s ABCD_NO_C4 * Check C Flag bcc/bcs 0
|
bcc.s ABCD_NO_C4 * Check C Flag bcc/bcs 0
|
add.l #1,d4
|
add.l #1,d4
|
ABCD_NO_C4: add.b (a1),d3
|
ABCD_NO_C4: add.b (a1),d3
|
|
|
|
|
dbf d6,ABCD_INNER2
|
dbf d6,ABCD_INNER2
|
move.l #$00000099,d6
|
move.l #$00000099,d6
|
dbf d7,ABCD_OUTER2
|
dbf d7,ABCD_OUTER2
|
cmpi.l #$00005B60,d4 * Check the cumulative results
|
cmpi.l #$00005B60,d4 * Check the cumulative results
|
bne.s *
|
bne.s *
|
cmpi.l #$001CCFC8,d5
|
cmpi.l #$001CCFC8,d5
|
bne.s *
|
bne.s *
|
cmpi.l #$00000034,d3
|
cmpi.l #$00000034,d3
|
bne.s *
|
bne.s *
|
|
|
* Quick check of Z Flag
|
* Quick check of Z Flag
|
move.b #$00,d0
|
move.b #$00,d0
|
move.b #$00,d1
|
move.b #$00,d1
|
move #$00,CCR * Set Z flag to 0
|
move #$00,CCR * Set Z flag to 0
|
abcd d1,d0 * Should NOT set Z Flag to 1
|
abcd d1,d0 * Should NOT set Z Flag to 1
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
|
|
move.b #$01,d0
|
move.b #$01,d0
|
move.b #$00,d1
|
move.b #$00,d1
|
move #$04,CCR * Set Z flag to 0
|
move #$04,CCR * Set Z flag to 0
|
abcd d1,d0 * Should NOT set Z Flag to 1
|
abcd d1,d0 * Should NOT set Z Flag to 1
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
|
|
rts
|
rts
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : SBCD
|
* OPCODE : SBCD
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_SBCD:
|
op_SBCD:
|
|
|
* Test with X Flag CLEARED
|
* Test with X Flag CLEARED
|
move.l #$00000110,a0 * Address pointer-X
|
move.l #$00000110,a0 * Address pointer-X
|
move.l #$00000120,a1 * Address pointer-Y
|
move.l #$00000120,a1 * Address pointer-Y
|
moveq #$00000000,d0 * BCD byte-X
|
moveq #$00000000,d0 * BCD byte-X
|
moveq #$00000000,d1 * BCD byte-Y
|
moveq #$00000000,d1 * BCD byte-Y
|
moveq #$00000000,d2
|
moveq #$00000000,d2
|
moveq #$00000000,d3 * Cumulative -(An) BCD results
|
moveq #$00000000,d3 * Cumulative -(An) BCD results
|
moveq #$00000000,d4 * Cumulative number.s of times C was set
|
moveq #$00000000,d4 * Cumulative number.s of times C was set
|
moveq #$00000000,d5 * Cumulative Register BCD results
|
moveq #$00000000,d5 * Cumulative Register BCD results
|
move.l #$00000099,d6 * Inner loop counter
|
move.l #$00000099,d6 * Inner loop counter
|
move.l #$00000099,d7 * Outer loop counter
|
move.l #$00000099,d7 * Outer loop counter
|
|
|
SBCD_OUTER1: move.l d7,d0
|
SBCD_OUTER1: move.l d7,d0
|
SBCD_INNER1: move.l d6,d1
|
SBCD_INNER1: move.l d6,d1
|
andi.b #$EF,CCR * Clear X Flag
|
andi.b #$EF,CCR * Clear X Flag
|
move.l #$00000110,a0 * Address pointer-X
|
move.l #$00000110,a0 * Address pointer-X
|
move.l #$00000120,a1 * Address pointer-Y
|
move.l #$00000120,a1 * Address pointer-Y
|
move.b d0,-1(a0)
|
move.b d0,-1(a0)
|
move.b d1,-1(a1)
|
move.b d1,-1(a1)
|
|
|
sbcd d0,d1
|
sbcd d0,d1
|
bcc.s SBCD_NO_C1 * Check C Flag bcc/bcs 0
|
bcc.s SBCD_NO_C1 * Check C Flag bcc/bcs 0
|
add.l #1,d4
|
add.l #1,d4
|
SBCD_NO_C1: add.l d1,d5
|
SBCD_NO_C1: add.l d1,d5
|
|
|
sbcd -(a0),-(a1)
|
sbcd -(a0),-(a1)
|
bcc.s SBCD_NO_C2 * Check C Flag bcc/bcs 0
|
bcc.s SBCD_NO_C2 * Check C Flag bcc/bcs 0
|
add.l #1,d4
|
add.l #1,d4
|
SBCD_NO_C2: add.b (a1),d3
|
SBCD_NO_C2: add.b (a1),d3
|
|
|
|
|
dbf d6,SBCD_INNER1
|
dbf d6,SBCD_INNER1
|
move.l #$00000099,d6
|
move.l #$00000099,d6
|
dbf d7,SBCD_OUTER1
|
dbf d7,SBCD_OUTER1
|
cmpi.l #$00005C0A,d4 * Check the cumulative results
|
cmpi.l #$00005C0A,d4 * Check the cumulative results
|
bne.s *
|
bne.s *
|
cmpi.l #$001C459E,d5
|
cmpi.l #$001C459E,d5
|
bne.s *
|
bne.s *
|
cmpi.l #$0000009E,d3
|
cmpi.l #$0000009E,d3
|
bne.s *
|
bne.s *
|
|
|
* Test with X Flag SET
|
* Test with X Flag SET
|
move.l #$00000110,a0 * Address pointer-X
|
move.l #$00000110,a0 * Address pointer-X
|
move.l #$00000120,a1 * Address pointer-Y
|
move.l #$00000120,a1 * Address pointer-Y
|
moveq #$00000000,d0 * BCD byte-X
|
moveq #$00000000,d0 * BCD byte-X
|
moveq #$00000000,d1 * BCD byte-Y
|
moveq #$00000000,d1 * BCD byte-Y
|
moveq #$00000000,d2
|
moveq #$00000000,d2
|
moveq #$00000000,d3 * Cumulative -(An) BCD results
|
moveq #$00000000,d3 * Cumulative -(An) BCD results
|
moveq #$00000000,d4 * Cumulative number.s of times C was set
|
moveq #$00000000,d4 * Cumulative number.s of times C was set
|
moveq #$00000000,d5 * Cumulative Register BCD results
|
moveq #$00000000,d5 * Cumulative Register BCD results
|
move.l #$00000099,d6 * Inner loop counter
|
move.l #$00000099,d6 * Inner loop counter
|
move.l #$00000099,d7 * Outer loop counter
|
move.l #$00000099,d7 * Outer loop counter
|
|
|
SBCD_OUTER2: move.l d7,d0
|
SBCD_OUTER2: move.l d7,d0
|
SBCD_INNER2: move.l d6,d1
|
SBCD_INNER2: move.l d6,d1
|
ori.b #$10,CCR * Set X Flag
|
ori.b #$10,CCR * Set X Flag
|
move.l #$00000110,a0 * Address pointer-X
|
move.l #$00000110,a0 * Address pointer-X
|
move.l #$00000120,a1 * Address pointer-Y
|
move.l #$00000120,a1 * Address pointer-Y
|
move.b d0,-1(a0)
|
move.b d0,-1(a0)
|
move.b d1,-1(a1)
|
move.b d1,-1(a1)
|
|
|
sbcd d0,d1
|
sbcd d0,d1
|
bcc.s SBCD_NO_C3 * Check C Flag bcc/bcs 0
|
bcc.s SBCD_NO_C3 * Check C Flag bcc/bcs 0
|
add.l #1,d4
|
add.l #1,d4
|
SBCD_NO_C3: add.l d1,d5
|
SBCD_NO_C3: add.l d1,d5
|
|
|
sbcd -(a0),-(a1)
|
sbcd -(a0),-(a1)
|
bcc.s SBCD_NO_C4 * Check C Flag bcc/bcs 0
|
bcc.s SBCD_NO_C4 * Check C Flag bcc/bcs 0
|
add.l #1,d4
|
add.l #1,d4
|
SBCD_NO_C4: add.b (a1),d3
|
SBCD_NO_C4: add.b (a1),d3
|
|
|
dbf d6,SBCD_INNER2
|
dbf d6,SBCD_INNER2
|
move.l #$00000099,d6
|
move.l #$00000099,d6
|
dbf d7,SBCD_OUTER2
|
dbf d7,SBCD_OUTER2
|
cmpi.l #$00005CA4,d4 * Check the cumulative results
|
cmpi.l #$00005CA4,d4 * Check the cumulative results
|
bne.s *
|
bne.s *
|
cmpi.l #$001C5C66,d5
|
cmpi.l #$001C5C66,d5
|
bne.s *
|
bne.s *
|
cmpi.l #$0000009E,d3
|
cmpi.l #$0000009E,d3
|
bne.s *
|
bne.s *
|
|
|
|
|
* Quick check of Z Flag
|
* Quick check of Z Flag
|
move.b #$00,d0
|
move.b #$00,d0
|
move.b #$00,d1
|
move.b #$00,d1
|
move #$00,CCR * Set Z flag to 0
|
move #$00,CCR * Set Z flag to 0
|
sbcd d1,d0 * Should NOT set Z Flag to 1
|
sbcd d1,d0 * Should NOT set Z Flag to 1
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
|
|
move.b #$01,d0
|
move.b #$01,d0
|
move.b #$00,d1
|
move.b #$00,d1
|
move #$04,CCR * Set Z flag to 0
|
move #$04,CCR * Set Z flag to 0
|
sbcd d1,d0 * Should NOT set Z Flag to 1
|
sbcd d1,d0 * Should NOT set Z Flag to 1
|
beq.s * * Check Z Flag beq/bne
|
beq.s * * Check Z Flag beq/bne
|
|
|
rts
|
rts
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : NBCD
|
* OPCODE : NBCD
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_NBCD:
|
op_NBCD:
|
|
|
* NBCD to a Register
|
* NBCD to a Register
|
|
|
moveq #$00000000,d0 * BCD byte
|
moveq #$00000000,d0 * BCD byte
|
moveq #$00000000,d1
|
moveq #$00000000,d1
|
moveq #$00000000,d2
|
moveq #$00000000,d2
|
moveq #$00000000,d3 * Cumulative number.s of times Z was set
|
moveq #$00000000,d3 * Cumulative number.s of times Z was set
|
moveq #$00000000,d4 * Cumulative number.s of times C was set
|
moveq #$00000000,d4 * Cumulative number.s of times C was set
|
moveq #$00000000,d5 * Cumulative BCD results
|
moveq #$00000000,d5 * Cumulative BCD results
|
move.l #$00000099,d6
|
move.l #$00000099,d6
|
move.l #$00000099,d7 * Loop counter
|
move.l #$00000099,d7 * Loop counter
|
|
|
NBCD_LOOP: move.l d7,d0
|
NBCD_LOOP: move.l d7,d0
|
move #$04,CCR * Set Z flag to 0
|
move #$04,CCR * Set Z flag to 0
|
|
|
nbcd d0
|
nbcd d0
|
|
|
bcc.s NBCD_NO_C * Check C Flag
|
bcc.s NBCD_NO_C * Check C Flag
|
add.l #1,d4
|
add.l #1,d4
|
NBCD_NO_C: bne.s NBCD_NO_Z * Check Z Flag
|
NBCD_NO_C: bne.s NBCD_NO_Z * Check Z Flag
|
add.l #1,d3
|
add.l #1,d3
|
NBCD_NO_Z: add.l d0,d5 * Add results into d5
|
NBCD_NO_Z: add.l d0,d5 * Add results into d5
|
|
|
dbf d7,NBCD_LOOP
|
dbf d7,NBCD_LOOP
|
|
|
cmpi.l #$00000001,d3 * Check the cumulative results
|
cmpi.l #$00000001,d3 * Check the cumulative results
|
bne.s *
|
bne.s *
|
cmpi.l #$00000099,d4
|
cmpi.l #$00000099,d4
|
bne.s *
|
bne.s *
|
cmpi.l #$00002E3B,d5
|
cmpi.l #$00002E3B,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
* NBCD to a memory location
|
* NBCD to a memory location
|
|
|
moveq #$00000000,d0 * BCD byte
|
moveq #$00000000,d0 * BCD byte
|
moveq #$00000000,d1
|
moveq #$00000000,d1
|
moveq #$00000000,d2
|
moveq #$00000000,d2
|
moveq #$00000000,d3 * Cumulative number.s of times Z was set
|
moveq #$00000000,d3 * Cumulative number.s of times Z was set
|
moveq #$00000000,d4 * Cumulative number.s of times C was set
|
moveq #$00000000,d4 * Cumulative number.s of times C was set
|
moveq #$00000000,d5 * Cumulative BCD results
|
moveq #$00000000,d5 * Cumulative BCD results
|
move.l #$00000099,d6
|
move.l #$00000099,d6
|
move.l #$00000099,d7 * Loop counter
|
move.l #$00000099,d7 * Loop counter
|
|
|
NBCD_LOOP1: move.b d7,$00000100
|
NBCD_LOOP1: move.b d7,$00000100
|
move #$04,CCR * Set Z flag to 0
|
move #$04,CCR * Set Z flag to 0
|
|
|
nbcd $00000100
|
nbcd $00000100
|
move.b $00000100,d0
|
move.b $00000100,d0
|
|
|
bcc.s NBCD_NO_C1 * Check C Flag
|
bcc.s NBCD_NO_C1 * Check C Flag
|
add.l #1,d4
|
add.l #1,d4
|
NBCD_NO_C1: bne.s NBCD_NO_Z1 * Check Z Flag
|
NBCD_NO_C1: bne.s NBCD_NO_Z1 * Check Z Flag
|
add.l #1,d3
|
add.l #1,d3
|
NBCD_NO_Z1: add.l d0,d5 * Add results into d5
|
NBCD_NO_Z1: add.l d0,d5 * Add results into d5
|
|
|
dbf d7,NBCD_LOOP1
|
dbf d7,NBCD_LOOP1
|
|
|
cmpi.l #$00000001,d3 * Check the cumulative results
|
cmpi.l #$00000001,d3 * Check the cumulative results
|
bne.s *
|
bne.s *
|
cmpi.l #$00000000,d4
|
cmpi.l #$00000000,d4
|
bne.s *
|
bne.s *
|
cmpi.l #$00002E3B,d5
|
cmpi.l #$00002E3B,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : TRAPV
|
* OPCODE : TRAPV
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
op_TRAPV:
|
op_TRAPV:
|
|
|
* TRAPV will set d0 to 12345678 if V flag is set
|
* TRAPV will set d0 to 12345678 if V flag is set
|
|
|
moveq #$00000000,d0 * Clear d0
|
moveq #$00000000,d0 * Clear d0
|
|
|
move #$00,CCR * Clear V flag
|
move #$00,CCR * Clear V flag
|
trapv
|
trapv
|
cmpi.l #$00000000,d0 * Check of d0 was updated (should not be_)
|
cmpi.l #$00000000,d0 * Check of d0 was updated (should not be_)
|
bne.s *
|
bne.s *
|
|
|
move #$02,CCR * Set V flag
|
move #$02,CCR * Set V flag
|
trapv
|
trapv
|
cmpi.l #$12345678,d0 * Check of d0 was updated (should not be_)
|
cmpi.l #$12345678,d0 * Check of d0 was updated (should not be_)
|
bne.s *
|
bne.s *
|
|
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : RTR
|
* OPCODE : RTR
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_RTR:
|
op_RTR:
|
|
|
* Leventhal claims only 5 LSB's are popped from the stack to the CCR
|
* Leventhal claims only 5 LSB's are popped from the stack to the CCR
|
|
|
lea RTR_DONE,a0
|
lea RTR_DONE,a0
|
move.l a0,-(a7) * push destination PC to the stack
|
move.l a0,-(a7) * push destination PC to the stack
|
move.w #$FF15,-(a7) * push flags=0xFFFF to the stack
|
move.w #$FF15,-(a7) * push flags=0xFFFF to the stack
|
rtr
|
rtr
|
|
|
RTR_DONE: move.w SR,d0
|
RTR_DONE: move.w SR,d0
|
andi.w #$1F,d0
|
andi.w #$1F,d0
|
cmpi.w #$15,d0
|
cmpi.w #$15,d0
|
bne.s *
|
bne.s *
|
|
|
rts
|
rts
|
|
|
|
|
BSR_FAR2: move.l #$44444444,d4
|
BSR_FAR2: move.l #$44444444,d4
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : BCC
|
* OPCODE : BCC
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_BCC: move #$00,CCR
|
op_BCC: move #$00,CCR
|
bhi.s BCC1 * Higher Than C=0 AND Z=0
|
bhi.s BCC1 * Higher Than C=0 AND Z=0
|
bra.s *
|
bra.s *
|
|
|
BCC1: move #$01,CCR
|
BCC1: move #$01,CCR
|
bls.w BCC2 * Lower or Same C=1 OR Z=1
|
bls.w BCC2 * Lower or Same C=1 OR Z=1
|
bra.s *
|
bra.s *
|
|
|
BCC2: move #$00,CCR
|
BCC2: move #$00,CCR
|
bcc.s BCC3 * Carry Clear C=0
|
bcc.s BCC3 * Carry Clear C=0
|
bra.s *
|
bra.s *
|
|
|
BCC3: move #$01,CCR
|
BCC3: move #$01,CCR
|
bcs.w BCC4 * Carry Set C=1
|
bcs.w BCC4 * Carry Set C=1
|
bra.s *
|
bra.s *
|
|
|
BCC4: move #$00,CCR
|
BCC4: move #$00,CCR
|
bne.s BCC5 * Not Equal Z=0
|
bne.s BCC5 * Not Equal Z=0
|
bra.s *
|
bra.s *
|
|
|
BCC5: move #$04,CCR
|
BCC5: move #$04,CCR
|
beq.w BCC6 * Equal Z=1
|
beq.w BCC6 * Equal Z=1
|
bra.s *
|
bra.s *
|
|
|
BCC6: move #$00,CCR
|
BCC6: move #$00,CCR
|
bvc.s BCC7 * V Clear V=0
|
bvc.s BCC7 * V Clear V=0
|
bra.s *
|
bra.s *
|
|
|
BCC7: move #$02,CCR
|
BCC7: move #$02,CCR
|
bvs.w BCC8 * V Set V=1
|
bvs.w BCC8 * V Set V=1
|
bra.s *
|
bra.s *
|
|
|
BCC8: move #$00,CCR
|
BCC8: move #$00,CCR
|
bpl.s BCC9 * Plus N=0
|
bpl.s BCC9 * Plus N=0
|
bra.s *
|
bra.s *
|
|
|
BCC9: move #$08,CCR
|
BCC9: move #$08,CCR
|
bmi.w BCC10 * Minus N=1
|
bmi.w BCC10 * Minus N=1
|
bra.s *
|
bra.s *
|
|
|
BCC10: move #$00,CCR
|
BCC10: move #$00,CCR
|
bge.s BCC11 * Greater or Equal N=V
|
bge.s BCC11 * Greater or Equal N=V
|
bra.s *
|
bra.s *
|
|
|
BCC11: move #$02,CCR
|
BCC11: move #$02,CCR
|
blt.w BCC12 * Less Than N!=V
|
blt.w BCC12 * Less Than N!=V
|
bra.s *
|
bra.s *
|
|
|
BCC12: move #$0A,CCR
|
BCC12: move #$0A,CCR
|
bgt.s BCC13 * Greater Than N=V AND Z=0
|
bgt.s BCC13 * Greater Than N=V AND Z=0
|
bra.s *
|
bra.s *
|
|
|
BCC13: move #$06,CCR
|
BCC13: move #$06,CCR
|
ble.w BCC14 * Less Than or Equal N!=V AND Z=1
|
ble.w BCC14 * Less Than or Equal N!=V AND Z=1
|
bra.s *
|
bra.s *
|
|
|
|
|
BCC14: rts
|
BCC14: rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : DBCC
|
* OPCODE : DBCC
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_DBCC: moveq #$00000003,d0 * Loop counter
|
op_DBCC: moveq #$00000003,d0 * Loop counter
|
moveq #$00000000,d1 * Accumulator
|
moveq #$00000000,d1 * Accumulator
|
move #$00,CCR
|
move #$00,CCR
|
|
|
DBCC_LOOP1: addi.b #$1,d1
|
DBCC_LOOP1: addi.b #$1,d1
|
dbf d0,DBCC_LOOP1
|
dbf d0,DBCC_LOOP1
|
|
|
cmpi.l #$00000004,d1 * Check Accumulator results
|
cmpi.l #$00000004,d1 * Check Accumulator results
|
bne.s *
|
bne.s *
|
|
|
DBCC_LOOP2: addi.b #$1,d1
|
DBCC_LOOP2: addi.b #$1,d1
|
dbcc d0,DBCC_LOOP2 * Dont loop
|
dbcc d0,DBCC_LOOP2 * Dont loop
|
|
|
cmpi.l #$00000005,d1 * Check Accumulator results
|
cmpi.l #$00000005,d1 * Check Accumulator results
|
bne.s *
|
bne.s *
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : SCC
|
* OPCODE : SCC
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_SCC: move #$01,CCR
|
op_SCC: move #$01,CCR
|
scc $00010000 * Clear the EA byte
|
scc $00010000 * Clear the EA byte
|
cmpi.b #$00,$00010000
|
cmpi.b #$00,$00010000
|
bne.s *
|
bne.s *
|
|
|
move #$00,CCR
|
move #$00,CCR
|
scc $00010000 * Set the EA byte to 0xFF
|
scc $00010000 * Set the EA byte to 0xFF
|
cmpi.b #$FF,$00010000
|
cmpi.b #$FF,$00010000
|
bne.s *
|
bne.s *
|
|
|
|
scc d0 * Test setting a data register
|
|
cmpi.b #$FF,d0
|
|
bne.s *
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : ADDQ
|
* OPCODE : ADDQ
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_ADDQ:
|
op_ADDQ:
|
|
|
* BYTE
|
* BYTE
|
move.l #$000000FF,d0 * Loop counter
|
move.l #$000000FF,d0 * Loop counter
|
moveq #$00000000,d1 * Flag results accumulator
|
moveq #$00000000,d1 * Flag results accumulator
|
moveq #$00000000,d2 * Data results accumulator
|
moveq #$00000000,d2 * Data results accumulator
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4
|
moveq #$00000000,d4
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
moveq #$00000000,d6
|
moveq #$00000000,d6
|
moveq #$00000000,d7
|
moveq #$00000000,d7
|
|
|
ADDQ_LOOP1: addq.b #3,d5
|
ADDQ_LOOP1: addq.b #3,d5
|
move.w SR,d6
|
move.w SR,d6
|
andi.l #$1F,d6 * Isolate flags
|
andi.l #$1F,d6 * Isolate flags
|
add.l d6,d1 * Copy flag results into accumulator
|
add.l d6,d1 * Copy flag results into accumulator
|
add.l d5,d2 * Copy data results into data accumulator
|
add.l d5,d2 * Copy data results into data accumulator
|
dbf d0,ADDQ_LOOP1
|
dbf d0,ADDQ_LOOP1
|
|
|
cmpi.l #$0000043D,d1
|
cmpi.l #$0000043D,d1
|
bne.s *
|
bne.s *
|
cmpi.l #$00007F80,d2
|
cmpi.l #$00007F80,d2
|
bne.s *
|
bne.s *
|
|
|
|
|
* WORD
|
* WORD
|
move.l #$000000FF,d0 * Loop counter
|
move.l #$000000FF,d0 * Loop counter
|
moveq #$00000000,d1 * Flag results accumulator
|
moveq #$00000000,d1 * Flag results accumulator
|
moveq #$00000000,d2 * Data results accumulator
|
moveq #$00000000,d2 * Data results accumulator
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4
|
moveq #$00000000,d4
|
move.l #$0000FFF0,d5
|
move.l #$0000FFF0,d5
|
moveq #$00000000,d6
|
moveq #$00000000,d6
|
moveq #$00000000,d7
|
moveq #$00000000,d7
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
|
|
ADDQ_LOOP2: addq.w #5,d5
|
ADDQ_LOOP2: addq.w #5,d5
|
move.w SR,d6
|
move.w SR,d6
|
andi.l #$1F,d6 * Isolate flags
|
andi.l #$1F,d6 * Isolate flags
|
add.l d6,d1 * Copy flag results into accumulator
|
add.l d6,d1 * Copy flag results into accumulator
|
add.l d5,d2 * Copy data results into data accumulator
|
add.l d5,d2 * Copy data results into data accumulator
|
dbf d0,ADDQ_LOOP2
|
dbf d0,ADDQ_LOOP2
|
|
|
cmpi.l #$00000029,d1
|
cmpi.l #$00000029,d1
|
bne.s *
|
bne.s *
|
cmpi.l #$00057280,d2
|
cmpi.l #$00057280,d2
|
bne.s *
|
bne.s *
|
|
|
|
|
* LONG
|
* LONG
|
move.l #$000000FF,d0 * Loop counter
|
move.l #$000000FF,d0 * Loop counter
|
moveq #$00000000,d1 * Flag results accumulator
|
moveq #$00000000,d1 * Flag results accumulator
|
moveq #$00000000,d2 * Data results accumulator
|
moveq #$00000000,d2 * Data results accumulator
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4
|
moveq #$00000000,d4
|
move.l #$FFFFFFF0,d5
|
move.l #$FFFFFFF0,d5
|
moveq #$00000000,d6
|
moveq #$00000000,d6
|
moveq #$00000000,d7
|
moveq #$00000000,d7
|
|
|
ADDQ_LOOP3: addq.l #1,d5
|
ADDQ_LOOP3: addq.l #1,d5
|
move.w SR,d6
|
move.w SR,d6
|
andi.l #$1F,d6 * Isolate flags
|
andi.l #$1F,d6 * Isolate flags
|
add.l d6,d1 * Copy flag results into accumulator
|
add.l d6,d1 * Copy flag results into accumulator
|
add.l d5,d2 * Copy data results into data accumulator
|
add.l d5,d2 * Copy data results into data accumulator
|
dbf d0,ADDQ_LOOP3
|
dbf d0,ADDQ_LOOP3
|
|
|
cmpi.l #$0000008D,d1
|
cmpi.l #$0000008D,d1
|
bne.s *
|
bne.s *
|
cmpi.l #$00007080,d2
|
cmpi.l #$00007080,d2
|
bne.s *
|
bne.s *
|
|
|
* Check that Flags are not updated for Address registers
|
* Check that Flags are not updated for Address registers
|
move.l #$0000FFFF,a0
|
move.l #$0000FFFF,a0
|
move #$00,CCR * Clear flags
|
move #$00,CCR * Clear flags
|
addq.w #$7,a0
|
addq.w #$7,a0
|
bcs.s *
|
bcs.s *
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : SUBQ
|
* OPCODE : SUBQ
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_SUBQ:
|
op_SUBQ:
|
|
|
* BYTE
|
* BYTE
|
move.l #$000000FF,d0 * Loop counter
|
move.l #$000000FF,d0 * Loop counter
|
moveq #$00000000,d1 * Flag results accumulator
|
moveq #$00000000,d1 * Flag results accumulator
|
move.l #$00001234,d2 * Data results accumulator
|
move.l #$00001234,d2 * Data results accumulator
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4
|
moveq #$00000000,d4
|
moveq #$00000012,d5
|
moveq #$00000012,d5
|
moveq #$00000000,d6
|
moveq #$00000000,d6
|
moveq #$00000000,d7
|
moveq #$00000000,d7
|
|
|
SUBQ_LOOP1: subq.b #1,d5
|
SUBQ_LOOP1: subq.b #1,d5
|
move.w SR,d6
|
move.w SR,d6
|
andi.l #$1F,d6 * Isolate flags
|
andi.l #$1F,d6 * Isolate flags
|
add.l d6,d1 * Copy flag results into accumulator
|
add.l d6,d1 * Copy flag results into accumulator
|
add.l d5,d2 * Copy data results into data accumulator
|
add.l d5,d2 * Copy data results into data accumulator
|
dbf d0,SUBQ_LOOP1
|
dbf d0,SUBQ_LOOP1
|
|
|
cmpi.l #$00000417,d1
|
cmpi.l #$00000417,d1
|
bne.s *
|
bne.s *
|
cmpi.l #$000091B4,d2
|
cmpi.l #$000091B4,d2
|
bne.s *
|
bne.s *
|
|
|
|
|
* WORD
|
* WORD
|
move.l #$000000FF,d0 * Loop counter
|
move.l #$000000FF,d0 * Loop counter
|
moveq #$00000000,d1 * Flag results accumulator
|
moveq #$00000000,d1 * Flag results accumulator
|
moveq #$00000000,d2 * Data results accumulator
|
moveq #$00000000,d2 * Data results accumulator
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4
|
moveq #$00000000,d4
|
moveq #$00000002,d5
|
moveq #$00000002,d5
|
moveq #$00000000,d6
|
moveq #$00000000,d6
|
moveq #$00000000,d7
|
moveq #$00000000,d7
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
|
|
SUBQ_LOOP2: subq.w #5,d5
|
SUBQ_LOOP2: subq.w #5,d5
|
move.w SR,d6
|
move.w SR,d6
|
andi.l #$1F,d6 * Isolate flags
|
andi.l #$1F,d6 * Isolate flags
|
add.l d6,d1 * Copy flag results into accumulator
|
add.l d6,d1 * Copy flag results into accumulator
|
add.l d5,d2 * Copy data results into data accumulator
|
add.l d5,d2 * Copy data results into data accumulator
|
dbf d0,SUBQ_LOOP2
|
dbf d0,SUBQ_LOOP2
|
|
|
cmpi.l #$00000811,d1
|
cmpi.l #$00000811,d1
|
bne.s *
|
bne.s *
|
cmpi.l #$00FD7F80,d2
|
cmpi.l #$00FD7F80,d2
|
bne.s *
|
bne.s *
|
|
|
|
|
* LONG
|
* LONG
|
move.l #$000000FF,d0 * Loop counter
|
move.l #$000000FF,d0 * Loop counter
|
moveq #$00000000,d1 * Flag results accumulator
|
moveq #$00000000,d1 * Flag results accumulator
|
moveq #$00000000,d2 * Data results accumulator
|
moveq #$00000000,d2 * Data results accumulator
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4
|
moveq #$00000000,d4
|
moveq #$00000007,d5
|
moveq #$00000007,d5
|
moveq #$00000000,d6
|
moveq #$00000000,d6
|
moveq #$00000000,d7
|
moveq #$00000000,d7
|
|
|
SUBQ_LOOP3: subq.l #1,d5
|
SUBQ_LOOP3: subq.l #1,d5
|
move.w SR,d6
|
move.w SR,d6
|
andi.l #$1F,d6 * Isolate flags
|
andi.l #$1F,d6 * Isolate flags
|
add.l d6,d1 * Copy flag results into accumulator
|
add.l d6,d1 * Copy flag results into accumulator
|
add.l d5,d2 * Copy data results into data accumulator
|
add.l d5,d2 * Copy data results into data accumulator
|
dbf d0,SUBQ_LOOP3
|
dbf d0,SUBQ_LOOP3
|
|
|
cmpi.l #$000007DD,d1
|
cmpi.l #$000007DD,d1
|
bne.s *
|
bne.s *
|
cmpi.l #$FFFF8680,d2
|
cmpi.l #$FFFF8680,d2
|
bne.s *
|
bne.s *
|
|
|
* Check that Flags are not updated for Address registers
|
* Check that Flags are not updated for Address registers
|
move.l #$0001FFFF,a0
|
move.l #$0001FFFF,a0
|
move #$00,CCR * Clear flags
|
move #$00,CCR * Clear flags
|
subq.w #$7,a0
|
subq.w #$7,a0
|
bcs.s *
|
bcs.s *
|
|
|
rts
|
rts
|
|
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : MOVEQ
|
* OPCODE : MOVEQ
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_MOVEQ:
|
op_MOVEQ:
|
moveq #$00000000,d0
|
moveq #$00000000,d0
|
moveq #$0,d0
|
moveq #$0,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000000,d0
|
cmpi.l #$00000000,d0
|
bne.s *
|
bne.s *
|
|
|
moveq #$00000000,d0
|
moveq #$00000000,d0
|
moveq #-128,d0
|
moveq #-128,d0
|
beq.s *
|
beq.s *
|
bpl.s *
|
bpl.s *
|
cmpi.l #$FFFFFF80,d0
|
cmpi.l #$FFFFFF80,d0
|
bne.s *
|
bne.s *
|
|
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : DIVU
|
* OPCODE : DIVU
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_DIVU:
|
op_DIVU:
|
|
|
move.l #$a5a5a5a5,d0 * Initial Numerator
|
move.l #$a5a5a5a5,d0 * Initial Numerator
|
move.l #$00005a5a,d1 * Initial Divisor
|
move.l #$00005a5a,d1 * Initial Divisor
|
move.l #$a5a5a5a5,d2
|
move.l #$a5a5a5a5,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000000E,d6 * Inner loop counter
|
move.l #$0000000E,d6 * Inner loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
|
|
|
|
DIVU_OUTER1: divu d1,d0 * !! Easy68K C not always cleared
|
DIVU_OUTER1: divu d1,d0 * !! Easy68K C not always cleared
|
move.w SR,d3
|
move.w SR,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
lsr.l #$1,d1
|
lsr.l #$1,d1
|
|
|
dbf d6,DIVU_OUTER1
|
dbf d6,DIVU_OUTER1
|
lsr.l #$1,d2
|
lsr.l #$1,d2
|
move.l d2,d0
|
move.l d2,d0
|
move.l #$00005a5a,d1 * Initial Divisor
|
move.l #$00005a5a,d1 * Initial Divisor
|
move.l #$0000000E,d6 * Inner loop counter
|
move.l #$0000000E,d6 * Inner loop counter
|
dbf d7,DIVU_OUTER1
|
dbf d7,DIVU_OUTER1
|
|
|
cmpi.l #$92FEDB89,d4 * Check the data results
|
cmpi.l #$92FEDB89,d4 * Check the data results
|
bne.s *
|
bne.s *
|
|
|
cmpi.l #$00000110,d5 * Check the Flag results
|
cmpi.l #$00000110,d5 * Check the Flag results
|
bne.s *
|
bne.s *
|
|
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : DIVS
|
* OPCODE : DIVS
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_DIVS:
|
op_DIVS:
|
|
|
move.l #$a5a5a5a5,d0 * Initial Numerator
|
move.l #$a5a5a5a5,d0 * Initial Numerator
|
move.l #$00005a5a,d1 * Initial Divisor
|
move.l #$00005a5a,d1 * Initial Divisor
|
move.l #$a5a5a5a5,d2
|
move.l #$a5a5a5a5,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000000E,d6 * Inner loop counter
|
move.l #$0000000E,d6 * Inner loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
|
|
|
|
DIVS_OUTER1: divs d1,d0 * !! Easy68K C not always cleared
|
DIVS_OUTER1: divs d1,d0 * !! Easy68K C not always cleared
|
move.w SR,d3
|
move.w SR,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
lsr.l #$1,d1
|
lsr.l #$1,d1
|
|
|
dbf d6,DIVS_OUTER1
|
dbf d6,DIVS_OUTER1
|
lsr.l #$1,d2
|
lsr.l #$1,d2
|
move.l d2,d0
|
move.l d2,d0
|
move.l #$00005a5a,d1 * Initial Divisor
|
move.l #$00005a5a,d1 * Initial Divisor
|
move.l #$0000000E,d6 * Inner loop counter
|
move.l #$0000000E,d6 * Inner loop counter
|
dbf d7,DIVS_OUTER1
|
dbf d7,DIVS_OUTER1
|
|
|
cmpi.l #$4EC5D057,d4 * Check the data results
|
cmpi.l #$4EC5D057,d4 * Check the data results
|
bne.s *
|
bne.s *
|
|
|
cmpi.l #$00000038,d5 * Check the Flag results
|
cmpi.l #$00000038,d5 * Check the Flag results
|
bne.s *
|
bne.s *
|
|
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : OR
|
* OPCODE : OR
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_OR:
|
op_OR:
|
|
|
* * to Register
|
* * to Register
|
|
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$8167E123,d1 * Initial Data-Y Outer loop
|
move.l #$8167E123,d1 * Initial Data-Y Outer loop
|
move.l #$a5a5a5a5,d2
|
move.l #$a5a5a5a5,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$00000100,a0 * Address for memory EA operations
|
move.l #$00000100,a0 * Address for memory EA operations
|
|
|
|
|
OR_OUTER1:
|
OR_OUTER1:
|
|
|
* BYTE
|
* BYTE
|
move.l d1,(a0)
|
move.l d1,(a0)
|
or.b (a0),d0
|
or.b (a0),d0
|
move.w SR,d3
|
move.w SR,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
* WORD
|
* WORD
|
move.l d1,(a0)
|
move.l d1,(a0)
|
or.w (a0),d0
|
or.w (a0),d0
|
move.w SR,d3
|
move.w SR,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
* LONG
|
* LONG
|
move.l d1,(a0)
|
move.l d1,(a0)
|
or.l (a0),d0
|
or.l (a0),d0
|
move.w SR,d3
|
move.w SR,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
|
|
lsr.l #$1,d1
|
lsr.l #$1,d1
|
dbf d6,OR_OUTER1
|
dbf d6,OR_OUTER1
|
lsr.l #$1,d2
|
lsr.l #$1,d2
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
dbf d7,OR_OUTER1
|
dbf d7,OR_OUTER1
|
|
|
cmpi.l #$76EAC803,d4 * Check the data results
|
cmpi.l #$76EAC803,d4 * Check the data results
|
bne.s *
|
bne.s *
|
cmpi.l #$00005A18,d5 * Check the Flag results
|
cmpi.l #$00005A18,d5 * Check the Flag results
|
bne.s *
|
bne.s *
|
|
|
|
|
* * Register to
|
* * Register to
|
|
|
move.l #$86738374,d0 * Initial Data-X Inner loop
|
move.l #$86738374,d0 * Initial Data-X Inner loop
|
move.l #$FC55F2FE,d1 * Initial Data-Y Outer loop
|
move.l #$FC55F2FE,d1 * Initial Data-Y Outer loop
|
move.l #$86738374,d2
|
move.l #$86738374,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001D,d7 * Outer loop counter
|
move.l #$0000001D,d7 * Outer loop counter
|
move.l #$00000100,a0 * Address for memory EA operations
|
move.l #$00000100,a0 * Address for memory EA operations
|
|
|
|
|
OR_OUTER2:
|
OR_OUTER2:
|
|
|
* BYTE
|
* BYTE
|
move.l d0,(a0)
|
move.l d0,(a0)
|
or.b d1,(a0)
|
or.b d1,(a0)
|
move.w SR,d3
|
move.w SR,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
|
|
* WORD
|
* WORD
|
move.l d0,(a0)
|
move.l d0,(a0)
|
or.w d1,(a0)
|
or.w d1,(a0)
|
move.w SR,d3
|
move.w SR,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
|
|
* LONG
|
* LONG
|
move.l d0,(a0)
|
move.l d0,(a0)
|
or.l d1,(a0)
|
or.l d1,(a0)
|
move.w SR,d3
|
move.w SR,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
|
|
|
|
lsr.l #$1,d1
|
lsr.l #$1,d1
|
dbf d6,OR_OUTER2
|
dbf d6,OR_OUTER2
|
lsr.l #$1,d2
|
lsr.l #$1,d2
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
dbf d7,OR_OUTER2
|
dbf d7,OR_OUTER2
|
|
|
cmpi.l #$FA82B9E4,d4 * Check the data results
|
cmpi.l #$FA82B9E4,d4 * Check the data results
|
bne.s *
|
bne.s *
|
cmpi.l #$00005730,d5 * Check the Flag results
|
cmpi.l #$00005730,d5 * Check the Flag results
|
bne.s *
|
bne.s *
|
|
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : AND
|
* OPCODE : AND
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_AND:
|
op_AND:
|
|
|
* * to Register
|
* * to Register
|
|
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$8167E123,d1 * Initial Data-Y Outer loop
|
move.l #$8167E123,d1 * Initial Data-Y Outer loop
|
move.l #$a5a5a5a5,d2
|
move.l #$a5a5a5a5,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$00000100,a0 * Address for memory EA operations
|
move.l #$00000100,a0 * Address for memory EA operations
|
|
|
|
|
AND_OUTER1:
|
AND_OUTER1:
|
|
|
* BYTE
|
* BYTE
|
move.l d1,(a0)
|
move.l d1,(a0)
|
and.b (a0),d0
|
and.b (a0),d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
* WORD
|
* WORD
|
move.l d1,(a0)
|
move.l d1,(a0)
|
and.w (a0),d0
|
and.w (a0),d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
* LONG
|
* LONG
|
move.l d1,(a0)
|
move.l d1,(a0)
|
and.l (a0),d0
|
and.l (a0),d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
|
|
lsr.l #$1,d1
|
lsr.l #$1,d1
|
dbf d6,AND_OUTER1
|
dbf d6,AND_OUTER1
|
lsr.l #$1,d2
|
lsr.l #$1,d2
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
dbf d7,AND_OUTER1
|
dbf d7,AND_OUTER1
|
|
|
cmpi.l #$CF212883,d4 * Check the data results
|
cmpi.l #$CF212883,d4 * Check the data results
|
bne.s *
|
bne.s *
|
cmpi.l #$00002D10,d5 * Check the Flag results
|
cmpi.l #$00002D10,d5 * Check the Flag results
|
bne.s *
|
bne.s *
|
|
|
|
|
* * Register to
|
* * Register to
|
|
|
move.l #$86738374,d0 * Initial Data-X Inner loop
|
move.l #$86738374,d0 * Initial Data-X Inner loop
|
move.l #$FC55F2FE,d1 * Initial Data-Y Outer loop
|
move.l #$FC55F2FE,d1 * Initial Data-Y Outer loop
|
move.l #$86738374,d2
|
move.l #$86738374,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001D,d7 * Outer loop counter
|
move.l #$0000001D,d7 * Outer loop counter
|
move.l #$00000100,a0 * Address for memory EA operations
|
move.l #$00000100,a0 * Address for memory EA operations
|
|
|
|
|
AND_OUTER2:
|
AND_OUTER2:
|
|
|
* BYTE
|
* BYTE
|
move.l d0,(a0)
|
move.l d0,(a0)
|
and.b d1,(a0)
|
and.b d1,(a0)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
|
|
* WORD
|
* WORD
|
move.l d0,(a0)
|
move.l d0,(a0)
|
and.w d1,(a0)
|
and.w d1,(a0)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
|
|
* LONG
|
* LONG
|
move.l d0,(a0)
|
move.l d0,(a0)
|
and.l d1,(a0)
|
and.l d1,(a0)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
|
|
|
|
lsr.l #$1,d1
|
lsr.l #$1,d1
|
dbf d6,AND_OUTER2
|
dbf d6,AND_OUTER2
|
lsr.l #$1,d2
|
lsr.l #$1,d2
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
dbf d7,AND_OUTER2
|
dbf d7,AND_OUTER2
|
|
|
cmpi.l #$4A3DE544,d4 * Check the data results
|
cmpi.l #$4A3DE544,d4 * Check the data results
|
bne.s *
|
bne.s *
|
cmpi.l #$000018E8,d5 * Check the Flag results
|
cmpi.l #$000018E8,d5 * Check the Flag results
|
bne.s *
|
bne.s *
|
|
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : EOR
|
* OPCODE : EOR
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_EOR:
|
op_EOR:
|
|
|
* * Register to
|
* * Register to
|
|
|
move.l #$86738374,d0 * Initial Data-X Inner loop
|
move.l #$86738374,d0 * Initial Data-X Inner loop
|
move.l #$FC55F2FE,d1 * Initial Data-Y Outer loop
|
move.l #$FC55F2FE,d1 * Initial Data-Y Outer loop
|
move.l #$86738374,d2
|
move.l #$86738374,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001D,d7 * Outer loop counter
|
move.l #$0000001D,d7 * Outer loop counter
|
move.l #$00000100,a0 * Address for memory EA operations
|
move.l #$00000100,a0 * Address for memory EA operations
|
|
|
|
|
EOR_OUTER2:
|
EOR_OUTER2:
|
|
|
* BYTE
|
* BYTE
|
move.l d0,(a0)
|
move.l d0,(a0)
|
eor.b d1,(a0)
|
eor.b d1,(a0)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
|
|
* WORD
|
* WORD
|
move.l d0,(a0)
|
move.l d0,(a0)
|
eor.w d1,(a0)
|
eor.w d1,(a0)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
|
|
* LONG
|
* LONG
|
move.l d0,(a0)
|
move.l d0,(a0)
|
eor.l d1,(a0)
|
eor.l d1,(a0)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
|
|
|
|
lsr.l #$1,d1
|
lsr.l #$1,d1
|
dbf d6,EOR_OUTER2
|
dbf d6,EOR_OUTER2
|
lsr.l #$1,d2
|
lsr.l #$1,d2
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
dbf d7,EOR_OUTER2
|
dbf d7,EOR_OUTER2
|
|
|
cmpi.l #$55C5EB70,d4 * Check the data results
|
cmpi.l #$55C5EB70,d4 * Check the data results
|
bne.s *
|
bne.s *
|
cmpi.l #$00004430,d5 * Check the Flag results
|
cmpi.l #$00004430,d5 * Check the Flag results
|
bne.s *
|
bne.s *
|
|
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : CMP
|
* OPCODE : CMP
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_CMP:
|
op_CMP:
|
|
|
|
|
* * to Register
|
* * to Register
|
|
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$8167E123,d1 * Initial Data-Y Outer loop
|
move.l #$8167E123,d1 * Initial Data-Y Outer loop
|
move.l #$a5a5a5a5,d2
|
move.l #$a5a5a5a5,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$00000100,a0 * Address for memory EA operations
|
move.l #$00000100,a0 * Address for memory EA operations
|
|
|
|
|
CMP_OUTER1:
|
CMP_OUTER1:
|
|
|
* BYTE
|
* BYTE
|
move.l d1,(a0)
|
move.l d1,(a0)
|
cmp.b (a0),d0
|
cmp.b (a0),d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
* WORD
|
* WORD
|
move.l d1,(a0)
|
move.l d1,(a0)
|
cmp.w (a0),d0
|
cmp.w (a0),d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
* LONG
|
* LONG
|
move.l d1,(a0)
|
move.l d1,(a0)
|
cmp.l (a0),d0
|
cmp.l (a0),d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
|
|
lsr.l #$1,d1
|
lsr.l #$1,d1
|
dbf d6,CMP_OUTER1
|
dbf d6,CMP_OUTER1
|
lsr.l #$1,d2
|
lsr.l #$1,d2
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
dbf d7,CMP_OUTER1
|
dbf d7,CMP_OUTER1
|
|
|
cmpi.l #$7878712F,d4 * Check the data results
|
cmpi.l #$7878712F,d4 * Check the data results
|
bne.s *
|
bne.s *
|
cmpi.l #$00005502,d5 * Check the Flag results
|
cmpi.l #$00005502,d5 * Check the Flag results
|
bne.s *
|
bne.s *
|
|
|
|
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : CMPA
|
* OPCODE : CMPA
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_CMPA:
|
op_CMPA:
|
|
|
|
|
* * to Register
|
* * to Register
|
|
|
move.l #$a5a5a5a5,a0 * Initial Data-X Inner loop
|
move.l #$a5a5a5a5,a0 * Initial Data-X Inner loop
|
move.l #$8167E123,d1 * Initial Data-Y Outer loop
|
move.l #$8167E123,d1 * Initial Data-Y Outer loop
|
move.l #$a5a5a5a5,d2
|
move.l #$a5a5a5a5,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$00000100,a1 * Address for memory EA operations
|
move.l #$00000100,a1 * Address for memory EA operations
|
|
|
|
|
CMPA_OUTER1:
|
CMPA_OUTER1:
|
|
|
|
|
* WORD
|
* WORD
|
move.l d1,(a1)
|
move.l d1,(a1)
|
cmpa.w (a1),a0
|
cmpa.w (a1),a0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l a0,d4 * Copy data results into data accumulator
|
add.l a0,d4 * Copy data results into data accumulator
|
|
|
* LONG
|
* LONG
|
move.l d1,(a1)
|
move.l d1,(a1)
|
cmpa.l (a1),a0
|
cmpa.l (a1),a0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l a0,d4 * Copy data results into data accumulator
|
add.l a0,d4 * Copy data results into data accumulator
|
|
|
|
|
lsr.l #$1,d1
|
lsr.l #$1,d1
|
dbf d6,CMPA_OUTER1
|
dbf d6,CMPA_OUTER1
|
lsr.l #$1,d2
|
lsr.l #$1,d2
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
dbf d7,CMPA_OUTER1
|
dbf d7,CMPA_OUTER1
|
|
|
cmpi.l #$a5a5a0ca,d4 * Check the data results
|
cmpi.l #$a5a5a0ca,d4 * Check the data results
|
bne.s *
|
bne.s *
|
cmpi.l #$00003A7D,d5 * Check the Flag results
|
cmpi.l #$00003A7D,d5 * Check the Flag results
|
bne.s *
|
bne.s *
|
|
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : CMPM
|
* OPCODE : CMPM
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_CMPM:
|
op_CMPM:
|
|
|
move.l #$00000100,a0 * Address for Data-X
|
move.l #$00000100,a0 * Address for Data-X
|
move.l #$00000200,a1 * Address for Data-Y
|
move.l #$00000200,a1 * Address for Data-Y
|
moveq #$00000000,d0
|
moveq #$00000000,d0
|
moveq #$00000000,d1
|
moveq #$00000000,d1
|
moveq #$00000000,d2
|
moveq #$00000000,d2
|
|
|
move.l #$11FF5580,(a0)+ * Populate test data
|
move.l #$11FF5580,(a0)+ * Populate test data
|
move.l #$1111FFFF,(a0)+ * Populate test data
|
move.l #$1111FFFF,(a0)+ * Populate test data
|
move.l #$33333333,(a0)+ * Populate test data
|
move.l #$33333333,(a0)+ * Populate test data
|
move.l #$44444444,(a0)+ * Populate test data
|
move.l #$44444444,(a0)+ * Populate test data
|
|
|
move.l #$80FF337F,(a1)+ * Populate test data
|
move.l #$80FF337F,(a1)+ * Populate test data
|
move.l #$FFFF1111,(a1)+ * Populate test data
|
move.l #$FFFF1111,(a1)+ * Populate test data
|
move.l #$33333333,(a1)+ * Populate test data
|
move.l #$33333333,(a1)+ * Populate test data
|
move.l #$44444444,(a1)+ * Populate test data
|
move.l #$44444444,(a1)+ * Populate test data
|
|
|
move.l #$00000100,a0 * Address for Data-X
|
move.l #$00000100,a0 * Address for Data-X
|
move.l #$00000200,a1 * Address for Data-Y
|
move.l #$00000200,a1 * Address for Data-Y
|
move.l #$0000000F,d6 * Loop counter
|
move.l #$0000000F,d6 * Loop counter
|
|
|
CMPM_LOOP1: cmpm.b (a0)+,(a1)+
|
CMPM_LOOP1: cmpm.b (a0)+,(a1)+
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d0 * Copy flag results into accumulator
|
add.l d3,d0 * Copy flag results into accumulator
|
dbf d6,CMPM_LOOP1
|
dbf d6,CMPM_LOOP1
|
|
|
|
|
move.l #$00000100,a0 * Address for Data-X
|
move.l #$00000100,a0 * Address for Data-X
|
move.l #$00000200,a1 * Address for Data-Y
|
move.l #$00000200,a1 * Address for Data-Y
|
moveq #$00000007,d6 * Loop counter
|
moveq #$00000007,d6 * Loop counter
|
|
|
CMPM_LOOP2: cmpm.w (a0)+,(a1)+
|
CMPM_LOOP2: cmpm.w (a0)+,(a1)+
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d1 * Copy flag results into accumulator
|
add.l d3,d1 * Copy flag results into accumulator
|
dbf d6,CMPM_LOOP2
|
dbf d6,CMPM_LOOP2
|
|
|
|
|
move.l #$00000100,a0 * Address for Data-X
|
move.l #$00000100,a0 * Address for Data-X
|
move.l #$00000200,a1 * Address for Data-Y
|
move.l #$00000200,a1 * Address for Data-Y
|
moveq #$00000003,d6 * Loop counter
|
moveq #$00000003,d6 * Loop counter
|
|
|
CMPM_LOOP3: cmpm.l (a0)+,(a1)+
|
CMPM_LOOP3: cmpm.l (a0)+,(a1)+
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d2 * Copy flag results into accumulator
|
add.l d3,d2 * Copy flag results into accumulator
|
dbf d6,CMPM_LOOP3
|
dbf d6,CMPM_LOOP3
|
|
|
|
|
cmpi.l #$0000004C,d0 * Check the data results
|
cmpi.l #$0000004C,d0 * Check the data results
|
bne.s *
|
bne.s *
|
cmpi.l #$00000024,d1
|
cmpi.l #$00000024,d1
|
bne.s *
|
bne.s *
|
cmpi.l #$00000012,d2
|
cmpi.l #$00000012,d2
|
bne.s *
|
bne.s *
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : ADD
|
* OPCODE : ADD
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_ADD:
|
op_ADD:
|
|
|
|
|
* * to Register
|
* * to Register
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$8167E123,d1 * Initial Data-Y Outer loop
|
move.l #$8167E123,d1 * Initial Data-Y Outer loop
|
move.l #$a5a5a5a5,d2
|
move.l #$a5a5a5a5,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$00000100,a0 * Address for memory EA operations
|
move.l #$00000100,a0 * Address for memory EA operations
|
|
|
|
|
ADD_OUTER1:
|
ADD_OUTER1:
|
|
|
* BYTE
|
* BYTE
|
move.l d1,(a0)
|
move.l d1,(a0)
|
add.b (a0),d0
|
add.b (a0),d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$1F,d3 * Isolate flags
|
andi.l #$1F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
* WORD
|
* WORD
|
move.l d1,(a0)
|
move.l d1,(a0)
|
add.w (a0),d0
|
add.w (a0),d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
* LONG
|
* LONG
|
move.l d1,(a0)
|
move.l d1,(a0)
|
add.l (a0),d0
|
add.l (a0),d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
|
|
ror.l #$1,d1
|
ror.l #$1,d1
|
dbf d6,ADD_OUTER1
|
dbf d6,ADD_OUTER1
|
ror.l #$1,d2
|
ror.l #$1,d2
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
dbf d7,ADD_OUTER1
|
dbf d7,ADD_OUTER1
|
|
|
cmpi.l #$23ED428F,d4 * Check the data results
|
cmpi.l #$23ED428F,d4 * Check the data results
|
bne.s *
|
bne.s *
|
cmpi.l #$00004C96,d5 * Check the Flag results
|
cmpi.l #$00004C96,d5 * Check the Flag results
|
bne.s *
|
bne.s *
|
|
|
|
|
* * Register to
|
* * Register to
|
move.l #$86738374,d0 * Initial Data-X Inner loop
|
move.l #$86738374,d0 * Initial Data-X Inner loop
|
move.l #$FC55F2FE,d1 * Initial Data-Y Outer loop
|
move.l #$FC55F2FE,d1 * Initial Data-Y Outer loop
|
move.l #$86738374,d2
|
move.l #$86738374,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001D,d7 * Outer loop counter
|
move.l #$0000001D,d7 * Outer loop counter
|
move.l #$00000100,a0 * Address for memory EA operations
|
move.l #$00000100,a0 * Address for memory EA operations
|
|
|
|
|
ADD_OUTER2:
|
ADD_OUTER2:
|
|
|
* BYTE
|
* BYTE
|
move.l d0,(a0)
|
move.l d0,(a0)
|
add.b d1,(a0)
|
add.b d1,(a0)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
|
|
* WORD
|
* WORD
|
move.l d0,(a0)
|
move.l d0,(a0)
|
add.w d1,(a0)
|
add.w d1,(a0)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$1F,d3 * Isolate flags
|
andi.l #$1F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
|
|
* LONG
|
* LONG
|
move.l d0,(a0)
|
move.l d0,(a0)
|
add.l d1,(a0)
|
add.l d1,(a0)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
|
|
|
|
ror.l #$1,d1
|
ror.l #$1,d1
|
dbf d6,ADD_OUTER2
|
dbf d6,ADD_OUTER2
|
ror.l #$1,d2
|
ror.l #$1,d2
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
dbf d7,ADD_OUTER2
|
dbf d7,ADD_OUTER2
|
|
|
cmpi.l #$6701B884,d4 * Check the data results
|
cmpi.l #$6701B884,d4 * Check the data results
|
bne.s *
|
bne.s *
|
cmpi.l #$00005467,d5 * Check the Flag results
|
cmpi.l #$00005467,d5 * Check the Flag results
|
bne.s *
|
bne.s *
|
|
|
rts
|
rts
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : SUB
|
* OPCODE : SUB
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_SUB:
|
op_SUB:
|
|
|
* * to Register
|
* * to Register
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$8167E123,d1 * Initial Data-Y Outer loop
|
move.l #$8167E123,d1 * Initial Data-Y Outer loop
|
move.l #$a5a5a5a5,d2
|
move.l #$a5a5a5a5,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$00000100,a0 * Address for memory EA operations
|
move.l #$00000100,a0 * Address for memory EA operations
|
|
|
|
|
SUB_OUTER1:
|
SUB_OUTER1:
|
|
|
* BYTE
|
* BYTE
|
move.l d1,(a0)
|
move.l d1,(a0)
|
sub.b (a0),d0
|
sub.b (a0),d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$1F,d3 * Isolate flags
|
andi.l #$1F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
* WORD
|
* WORD
|
move.l d1,(a0)
|
move.l d1,(a0)
|
sub.w (a0),d0
|
sub.w (a0),d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
* LONG
|
* LONG
|
move.l d1,(a0)
|
move.l d1,(a0)
|
sub.l (a0),d0
|
sub.l (a0),d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
|
|
ror.l #$1,d1
|
ror.l #$1,d1
|
dbf d6,SUB_OUTER1
|
dbf d6,SUB_OUTER1
|
ror.l #$1,d2
|
ror.l #$1,d2
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
dbf d7,SUB_OUTER1
|
dbf d7,SUB_OUTER1
|
|
|
cmpi.l #$1A8D14CF,d4 * Check the data results
|
cmpi.l #$1A8D14CF,d4 * Check the data results
|
bne.s *
|
bne.s *
|
cmpi.l #$00004FC4,d5 * Check the Flag results
|
cmpi.l #$00004FC4,d5 * Check the Flag results
|
bne.s *
|
bne.s *
|
|
|
|
|
* * Register to
|
* * Register to
|
move.l #$86738374,d0 * Initial Data-X Inner loop
|
move.l #$86738374,d0 * Initial Data-X Inner loop
|
move.l #$FC55F2FE,d1 * Initial Data-Y Outer loop
|
move.l #$FC55F2FE,d1 * Initial Data-Y Outer loop
|
move.l #$86738374,d2
|
move.l #$86738374,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001D,d7 * Outer loop counter
|
move.l #$0000001D,d7 * Outer loop counter
|
move.l #$00000100,a0 * Address for memory EA operations
|
move.l #$00000100,a0 * Address for memory EA operations
|
|
|
|
|
SUB_OUTER2:
|
SUB_OUTER2:
|
|
|
* BYTE
|
* BYTE
|
move.l d0,(a0)
|
move.l d0,(a0)
|
sub.b d1,(a0)
|
sub.b d1,(a0)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
|
|
* WORD
|
* WORD
|
move.l d0,(a0)
|
move.l d0,(a0)
|
sub.w d1,(a0)
|
sub.w d1,(a0)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$1F,d3 * Isolate flags
|
andi.l #$1F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
|
|
* LONG
|
* LONG
|
move.l d0,(a0)
|
move.l d0,(a0)
|
sub.l d1,(a0)
|
sub.l d1,(a0)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
add.l (a0),d4 * Copy data results into data accumulator
|
|
|
|
|
ror.l #$1,d1
|
ror.l #$1,d1
|
dbf d6,SUB_OUTER2
|
dbf d6,SUB_OUTER2
|
ror.l #$1,d2
|
ror.l #$1,d2
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
dbf d7,SUB_OUTER2
|
dbf d7,SUB_OUTER2
|
|
|
cmpi.l #$36D38BEC,d4 * Check the data results
|
cmpi.l #$36D38BEC,d4 * Check the data results
|
bne.s *
|
bne.s *
|
cmpi.l #$000045A5,d5 * Check the Flag results
|
cmpi.l #$000045A5,d5 * Check the Flag results
|
bne.s *
|
bne.s *
|
|
|
|
|
|
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : ADDA
|
* OPCODE : ADDA
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_ADDA:
|
op_ADDA:
|
|
|
* * to Register
|
* * to Register
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$8167E123,d1
|
move.l #$8167E123,d1
|
move.l #$a5a5a5a5,d2
|
move.l #$a5a5a5a5,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$00000100,a0 * Address for memory EA operations
|
move.l #$00000100,a0 * Address for memory EA operations
|
move.l #$8167E123,a1 * Initial Data-Y Outer loop
|
move.l #$8167E123,a1 * Initial Data-Y Outer loop
|
|
|
ADDA_OUTER1:
|
ADDA_OUTER1:
|
|
|
* WORD
|
* WORD
|
* move.l d1,(a0) * !!! Easy68K is not altering the whole 32-bits of the address register
|
* move.l d1,(a0) * !!! Easy68K is not altering the whole 32-bits of the address register
|
* adda.w (a0),a1
|
* adda.w (a0),a1
|
* add.l a1,d4 * Copy data results into data accumulator
|
* add.l a1,d4 * Copy data results into data accumulator
|
|
|
* LONG
|
* LONG
|
move.l d1,(a0)
|
move.l d1,(a0)
|
adda.l (a0),a1
|
adda.l (a0),a1
|
add.l a1,d4 * Copy data results into data accumulator
|
add.l a1,d4 * Copy data results into data accumulator
|
|
|
ror.l #$1,d1
|
ror.l #$1,d1
|
dbf d6,ADDA_OUTER1
|
dbf d6,ADDA_OUTER1
|
ror.l #$1,d1
|
ror.l #$1,d1
|
move.l d1,a1
|
move.l d1,a1
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
dbf d7,ADDA_OUTER1
|
dbf d7,ADDA_OUTER1
|
|
|
cmpi.l #$AC04DB4C,d4 * Check the data results
|
cmpi.l #$AC04DB4C,d4 * Check the data results
|
bne.s *
|
bne.s *
|
|
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : SUBA
|
* OPCODE : SUBA
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_SUBA:
|
op_SUBA:
|
|
|
* * to Register
|
* * to Register
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$8167E123,d1
|
move.l #$8167E123,d1
|
move.l #$a5a5a5a5,d2
|
move.l #$a5a5a5a5,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$00000100,a0 * Address for memory EA operations
|
move.l #$00000100,a0 * Address for memory EA operations
|
move.l #$8167E123,a1 * Initial Data-Y Outer loop
|
move.l #$8167E123,a1 * Initial Data-Y Outer loop
|
|
|
SUBA_OUTER1:
|
SUBA_OUTER1:
|
|
|
* WORD
|
* WORD
|
* move.l d1,(a0) * !!! Easy68K is not altering the whole 32-bits of the address register
|
* move.l d1,(a0) * !!! Easy68K is not altering the whole 32-bits of the address register
|
* suba.w (a0),a1
|
* suba.w (a0),a1
|
* add.l a1,d4 * Copy data results into data accumulator
|
* add.l a1,d4 * Copy data results into data accumulator
|
|
|
* LONG
|
* LONG
|
move.l d1,(a0)
|
move.l d1,(a0)
|
suba.l (a0),a1
|
suba.l (a0),a1
|
add.l a1,d4 * Copy data results into data accumulator
|
add.l a1,d4 * Copy data results into data accumulator
|
|
|
ror.l #$1,d1
|
ror.l #$1,d1
|
dbf d6,SUBA_OUTER1
|
dbf d6,SUBA_OUTER1
|
ror.l #$1,d1
|
ror.l #$1,d1
|
move.l d1,a1
|
move.l d1,a1
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
dbf d7,SUBA_OUTER1
|
dbf d7,SUBA_OUTER1
|
|
|
cmpi.l #$E1E36D7A,d4 * Check the data results
|
cmpi.l #$E1E36D7A,d4 * Check the data results
|
bne.s *
|
bne.s *
|
|
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : ADDX
|
* OPCODE : ADDX
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_ADDX:
|
op_ADDX:
|
|
|
|
|
* * Register to Register
|
* * Register to Register
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$8167E123,d1 * Initial Data-Y Outer loop
|
move.l #$8167E123,d1 * Initial Data-Y Outer loop
|
move.l #$a5a5a5a5,d2
|
move.l #$a5a5a5a5,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$00000100,a0 * Address for memory EA operations
|
move.l #$00000100,a0 * Address for memory EA operations
|
|
|
|
|
ADDX_OUTER1:
|
ADDX_OUTER1:
|
|
|
* BYTE
|
* BYTE
|
move.l d2,d0
|
move.l d2,d0
|
addx.b d1,d0
|
addx.b d1,d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$1F,d3 * Isolate flags
|
andi.l #$1F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
* WORD
|
* WORD
|
move.l d2,d0
|
move.l d2,d0
|
addx.w d1,d0
|
addx.w d1,d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$1F,d3 * Isolate flags
|
andi.l #$1F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
* LONG
|
* LONG
|
move.l d2,d0
|
move.l d2,d0
|
addx.l d1,d0
|
addx.l d1,d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$1F,d3 * Isolate flags
|
andi.l #$1F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
ror.l #$1,d1
|
ror.l #$1,d1
|
dbf d6,ADDX_OUTER1
|
dbf d6,ADDX_OUTER1
|
ror.l #$1,d2
|
ror.l #$1,d2
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
dbf d7,ADDX_OUTER1
|
dbf d7,ADDX_OUTER1
|
|
|
cmpi.l #$4E96A4D9,d4 * Check the data results
|
cmpi.l #$4E96A4D9,d4 * Check the data results
|
bne.s *
|
bne.s *
|
cmpi.l #$000085CD,d5 * Check the Flag results
|
cmpi.l #$000085CD,d5 * Check the Flag results
|
bne.s *
|
bne.s *
|
|
|
|
|
|
|
* -(An),-(An)
|
* -(An),-(An)
|
|
|
moveq #$00000000,d0 * BYTE Flag Results Accumulator
|
moveq #$00000000,d0 * BYTE Flag Results Accumulator
|
moveq #$00000000,d1
|
moveq #$00000000,d1
|
moveq #$00000000,d2
|
moveq #$00000000,d2
|
move.l #$00000100,a0 * Address for Data-X
|
move.l #$00000100,a0 * Address for Data-X
|
move.l #$00000200,a1 * Address for Data-Y
|
move.l #$00000200,a1 * Address for Data-Y
|
move.l #$11FF5580,(a0)+ * Populate test data
|
move.l #$11FF5580,(a0)+ * Populate test data
|
move.l #$1111FFFF,(a0)+ * Populate test data
|
move.l #$1111FFFF,(a0)+ * Populate test data
|
move.l #$33333333,(a0)+ * Populate test data
|
move.l #$33333333,(a0)+ * Populate test data
|
move.l #$44444444,(a0)+ * Populate test data
|
move.l #$44444444,(a0)+ * Populate test data
|
move.l #$80FF337F,(a1)+ * Populate test data
|
move.l #$80FF337F,(a1)+ * Populate test data
|
move.l #$FFFF1111,(a1)+ * Populate test data
|
move.l #$FFFF1111,(a1)+ * Populate test data
|
move.l #$33333333,(a1)+ * Populate test data
|
move.l #$33333333,(a1)+ * Populate test data
|
move.l #$44444444,(a1)+ * Populate test data
|
move.l #$44444444,(a1)+ * Populate test data
|
|
|
|
|
move.l #$0000000F,d6 * Loop counter
|
move.l #$0000000F,d6 * Loop counter
|
|
|
ADDX_LOOP3: addx.b -(a0),-(a1)
|
ADDX_LOOP3: addx.b -(a0),-(a1)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d0 * Copy flag results into accumulator
|
add.l d3,d0 * Copy flag results into accumulator
|
add.b (a1),d1
|
add.b (a1),d1
|
dbf d6,ADDX_LOOP3
|
dbf d6,ADDX_LOOP3
|
|
|
|
|
move.l #$00000110,a0 * Address for Data-X
|
move.l #$00000110,a0 * Address for Data-X
|
move.l #$00000210,a1 * Address for Data-Y
|
move.l #$00000210,a1 * Address for Data-Y
|
moveq #$00000007,d6 * Loop counter
|
moveq #$00000007,d6 * Loop counter
|
|
|
ADDX_LOOP4: addx.w -(a0),-(a1)
|
ADDX_LOOP4: addx.w -(a0),-(a1)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d0 * Copy flag results into accumulator
|
add.l d3,d0 * Copy flag results into accumulator
|
add.w (a1),d1
|
add.w (a1),d1
|
dbf d6,ADDX_LOOP4
|
dbf d6,ADDX_LOOP4
|
|
|
|
|
move.l #$00000110,a0 * Address for Data-X
|
move.l #$00000110,a0 * Address for Data-X
|
move.l #$00000210,a1 * Address for Data-Y
|
move.l #$00000210,a1 * Address for Data-Y
|
moveq #$00000003,d6 * Loop counter
|
moveq #$00000003,d6 * Loop counter
|
|
|
ADDX_LOOP5: addx.l -(a0),-(a1)
|
ADDX_LOOP5: addx.l -(a0),-(a1)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d0 * Copy flag results into accumulator
|
add.l d3,d0 * Copy flag results into accumulator
|
add.l (a1),d1
|
add.l (a1),d1
|
dbf d6,ADDX_LOOP5
|
dbf d6,ADDX_LOOP5
|
|
|
|
|
cmpi.l #$00000095,d0 * Check the flag results
|
cmpi.l #$00000095,d0 * Check the flag results
|
bne.s *
|
bne.s *
|
cmpi.l #$C812A682,d1 * Check the data results
|
cmpi.l #$C812A682,d1 * Check the data results
|
bne.s *
|
bne.s *
|
|
|
rts
|
rts
|
|
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : SUBX
|
* OPCODE : SUBX
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_SUBX:
|
op_SUBX:
|
|
|
|
|
* * Register to Register
|
* * Register to Register
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$a5a5a5a5,d0 * Initial Data-X Inner loop
|
move.l #$8167E123,d1 * Initial Data-Y Outer loop
|
move.l #$8167E123,d1 * Initial Data-Y Outer loop
|
move.l #$a5a5a5a5,d2
|
move.l #$a5a5a5a5,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$0000001E,d7 * Outer loop counter
|
move.l #$00000100,a0 * Address for memory EA operations
|
move.l #$00000100,a0 * Address for memory EA operations
|
|
|
|
|
SUBX_OUTER1:
|
SUBX_OUTER1:
|
|
|
* BYTE
|
* BYTE
|
move.l d2,d0
|
move.l d2,d0
|
subx.b d1,d0
|
subx.b d1,d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$1F,d3 * Isolate flags
|
andi.l #$1F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
* WORD
|
* WORD
|
move.l d2,d0
|
move.l d2,d0
|
subx.w d1,d0
|
subx.w d1,d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$1F,d3 * Isolate flags
|
andi.l #$1F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
* LONG
|
* LONG
|
move.l d2,d0
|
move.l d2,d0
|
subx.l d1,d0
|
subx.l d1,d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$1F,d3 * Isolate flags
|
andi.l #$1F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
|
|
ror.l #$1,d1
|
ror.l #$1,d1
|
dbf d6,SUBX_OUTER1
|
dbf d6,SUBX_OUTER1
|
ror.l #$1,d2
|
ror.l #$1,d2
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$8167E123,d1 * Initial Data-Y
|
move.l #$0000001E,d6 * Inner loop counter
|
move.l #$0000001E,d6 * Inner loop counter
|
dbf d7,SUBX_OUTER1
|
dbf d7,SUBX_OUTER1
|
|
|
cmpi.l #$FCAA913E,d4 * Check the data results
|
cmpi.l #$FCAA913E,d4 * Check the data results
|
bne.s *
|
bne.s *
|
cmpi.l #$00007E89,d5 * Check the Flag results
|
cmpi.l #$00007E89,d5 * Check the Flag results
|
bne.s *
|
bne.s *
|
|
|
|
|
|
|
* -(An),-(An)
|
* -(An),-(An)
|
|
|
moveq #$00000000,d0 * BYTE Flag Results Accumulator
|
moveq #$00000000,d0 * BYTE Flag Results Accumulator
|
moveq #$00000000,d1
|
moveq #$00000000,d1
|
moveq #$00000000,d2
|
moveq #$00000000,d2
|
move.l #$00000100,a0 * Address for Data-X
|
move.l #$00000100,a0 * Address for Data-X
|
move.l #$00000200,a1 * Address for Data-Y
|
move.l #$00000200,a1 * Address for Data-Y
|
move.l #$11FF5580,(a0)+ * Populate test data
|
move.l #$11FF5580,(a0)+ * Populate test data
|
move.l #$1111FFFF,(a0)+ * Populate test data
|
move.l #$1111FFFF,(a0)+ * Populate test data
|
move.l #$80FF337F,(a0)+ * Populate test data
|
move.l #$80FF337F,(a0)+ * Populate test data
|
move.l #$44444444,(a0)+ * Populate test data
|
move.l #$44444444,(a0)+ * Populate test data
|
move.l #$80FF337F,(a1)+ * Populate test data
|
move.l #$80FF337F,(a1)+ * Populate test data
|
move.l #$1111FFFF,(a1)+ * Populate test data
|
move.l #$1111FFFF,(a1)+ * Populate test data
|
move.l #$33333333,(a1)+ * Populate test data
|
move.l #$33333333,(a1)+ * Populate test data
|
move.l #$5580EECC,(a1)+ * Populate test data
|
move.l #$5580EECC,(a1)+ * Populate test data
|
|
|
|
|
move.l #$0000000F,d6 * Loop counter
|
move.l #$0000000F,d6 * Loop counter
|
|
|
SUBX_LOOP3: subx.b -(a0),-(a1)
|
SUBX_LOOP3: subx.b -(a0),-(a1)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d0 * Copy flag results into accumulator
|
add.l d3,d0 * Copy flag results into accumulator
|
add.b (a1),d1
|
add.b (a1),d1
|
dbf d6,SUBX_LOOP3
|
dbf d6,SUBX_LOOP3
|
|
|
|
|
move.l #$00000110,a0 * Address for Data-X
|
move.l #$00000110,a0 * Address for Data-X
|
move.l #$00000210,a1 * Address for Data-Y
|
move.l #$00000210,a1 * Address for Data-Y
|
moveq #$00000007,d6 * Loop counter
|
moveq #$00000007,d6 * Loop counter
|
|
|
SUBX_LOOP4: subx.w -(a0),-(a1)
|
SUBX_LOOP4: subx.w -(a0),-(a1)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d0 * Copy flag results into accumulator
|
add.l d3,d0 * Copy flag results into accumulator
|
add.w (a1),d1
|
add.w (a1),d1
|
dbf d6,SUBX_LOOP4
|
dbf d6,SUBX_LOOP4
|
|
|
|
|
move.l #$00000110,a0 * Address for Data-X
|
move.l #$00000110,a0 * Address for Data-X
|
move.l #$00000210,a1 * Address for Data-Y
|
move.l #$00000210,a1 * Address for Data-Y
|
moveq #$00000003,d6 * Loop counter
|
moveq #$00000003,d6 * Loop counter
|
|
|
SUBX_LOOP5: subx.l -(a0),-(a1)
|
SUBX_LOOP5: subx.l -(a0),-(a1)
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d0 * Copy flag results into accumulator
|
add.l d3,d0 * Copy flag results into accumulator
|
add.l (a1),d1
|
add.l (a1),d1
|
dbf d6,SUBX_LOOP5
|
dbf d6,SUBX_LOOP5
|
|
|
|
|
cmpi.l #$000000B1,d0 * Check the flag results
|
cmpi.l #$000000B1,d0 * Check the flag results
|
bne.s *
|
bne.s *
|
cmpi.l #$62C6F417,d1 * Check the data results
|
cmpi.l #$62C6F417,d1 * Check the data results
|
bne.s *
|
bne.s *
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : MULU
|
* OPCODE : MULU
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_MULU:
|
op_MULU:
|
|
|
move.l #$FE805501,d0 * Initial
|
move.l #$FE805501,d0 * Initial
|
move.l #$5697EDB6,d1 * Initial Y
|
move.l #$5697EDB6,d1 * Initial Y
|
move.l #$FE805501,d2
|
move.l #$FE805501,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000000E,d6 * Inner loop counter
|
move.l #$0000000E,d6 * Inner loop counter
|
move.l #$0000000E,d7 * Outer loop counter
|
move.l #$0000000E,d7 * Outer loop counter
|
|
|
|
|
MULU_OUTER1: mulu d1,d0
|
MULU_OUTER1: mulu d1,d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
ror.l #$1,d1
|
ror.l #$1,d1
|
|
|
dbf d6,MULU_OUTER1
|
dbf d6,MULU_OUTER1
|
ror.l #$1,d2
|
ror.l #$1,d2
|
move.l d2,d0
|
move.l d2,d0
|
move.l #$0000000E,d6 * Inner loop counter
|
move.l #$0000000E,d6 * Inner loop counter
|
dbf d7,MULU_OUTER1
|
dbf d7,MULU_OUTER1
|
|
|
cmpi.l #$76FB988C,d4 * Check the data results
|
cmpi.l #$76FB988C,d4 * Check the data results
|
bne.s *
|
bne.s *
|
|
|
cmpi.l #$00000170,d5 * Check the Flag results
|
cmpi.l #$00000170,d5 * Check the Flag results
|
bne.s *
|
bne.s *
|
|
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : MULS
|
* OPCODE : MULS
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_MULS:
|
op_MULS:
|
|
|
move.l #$FE805501,d0 * Initial
|
move.l #$FE805501,d0 * Initial
|
move.l #$5697EDB6,d1 * Initial Y
|
move.l #$5697EDB6,d1 * Initial Y
|
move.l #$FE805501,d2
|
move.l #$FE805501,d2
|
moveq #$00000000,d3
|
moveq #$00000000,d3
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d4 * Cumulative data results
|
moveq #$00000000,d5 * Cumulative flag results
|
moveq #$00000000,d5 * Cumulative flag results
|
move.l #$0000000E,d6 * Inner loop counter
|
move.l #$0000000E,d6 * Inner loop counter
|
move.l #$0000000E,d7 * Outer loop counter
|
move.l #$0000000E,d7 * Outer loop counter
|
|
|
|
|
MULS_OUTER1: muls d1,d0
|
MULS_OUTER1: muls d1,d0
|
move.w sr,d3
|
move.w sr,d3
|
andi.l #$0C,d3 * Isolate flags
|
andi.l #$0C,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
add.l d0,d4 * Copy data results into data accumulator
|
ror.l #$1,d1
|
ror.l #$1,d1
|
|
|
dbf d6,MULS_OUTER1
|
dbf d6,MULS_OUTER1
|
ror.l #$1,d2
|
ror.l #$1,d2
|
move.l d2,d0
|
move.l d2,d0
|
move.l #$0000000E,d6 * Inner loop counter
|
move.l #$0000000E,d6 * Inner loop counter
|
dbf d7,MULS_OUTER1
|
dbf d7,MULS_OUTER1
|
|
|
cmpi.l #$D4E2988C,d4 * Check the data results
|
cmpi.l #$D4E2988C,d4 * Check the data results
|
bne.s *
|
bne.s *
|
|
|
cmpi.l #$000003E0,d5 * Check the Flag results
|
cmpi.l #$000003E0,d5 * Check the Flag results
|
bne.s *
|
bne.s *
|
|
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : EXG
|
* OPCODE : EXG
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
op_EXG:
|
op_EXG:
|
move.l #$d1d1d1d1,d1
|
move.l #$d1d1d1d1,d1
|
move.l #$d2d2d2d2,d2
|
move.l #$d2d2d2d2,d2
|
move.l #$d3d3d3d3,d3
|
move.l #$d3d3d3d3,d3
|
move.l #$a1a1a1a1,a1
|
move.l #$a1a1a1a1,a1
|
move.l #$a2a2a2a2,a2
|
move.l #$a2a2a2a2,a2
|
move.l #$a3a3a3a3,a3
|
move.l #$a3a3a3a3,a3
|
|
|
exg d1,d2
|
exg d1,d2
|
exg a1,a2
|
exg a1,a2
|
exg d3,a3
|
exg d3,a3
|
|
|
cmpi.l #$d2d2d2d2,d1 * Check the results
|
cmpi.l #$d2d2d2d2,d1 * Check the results
|
bne.s *
|
bne.s *
|
cmpi.l #$d1d1d1d1,d2
|
cmpi.l #$d1d1d1d1,d2
|
bne.s *
|
bne.s *
|
cmpi.l #$a3a3a3a3,d3
|
cmpi.l #$a3a3a3a3,d3
|
bne.s *
|
bne.s *
|
|
|
move.l a1,d1
|
move.l a1,d1
|
move.l a2,d2
|
move.l a2,d2
|
move.l a3,d3
|
move.l a3,d3
|
|
|
cmpi.l #$a2a2a2a2,d1
|
cmpi.l #$a2a2a2a2,d1
|
bne.s *
|
bne.s *
|
cmpi.l #$a1a1a1a1,d2
|
cmpi.l #$a1a1a1a1,d2
|
bne.s *
|
bne.s *
|
cmpi.l #$d3d3d3d3,d3
|
cmpi.l #$d3d3d3d3,d3
|
bne.s *
|
bne.s *
|
|
|
rts
|
rts
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : ROx
|
* OPCODE : ROx
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
* Subroutine to check and accumulate the flags
|
* Subroutine to check and accumulate the flags
|
ROx_FLAGS: move.w sr,d3
|
ROx_FLAGS: move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
rts
|
rts
|
|
|
op_ROx:
|
op_ROx:
|
|
|
* Shift a Register LEFT and RIGHT with shift_count ## IN A REGISTER ##
|
* Shift a Register LEFT and RIGHT with shift_count ## IN A REGISTER ##
|
|
|
* BYTE LEFT
|
* BYTE LEFT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
moveq #$00000011,d6
|
moveq #$00000011,d6
|
ROx_LOOP1:
|
ROx_LOOP1:
|
rol.b d6,d0
|
rol.b d6,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
dbf d6,ROx_LOOP1
|
dbf d6,ROx_LOOP1
|
cmpi.l #$80018FE3,d0
|
cmpi.l #$80018FE3,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000006B,d5
|
cmpi.l #$0000006B,d5
|
bne.s *
|
bne.s *
|
|
|
* BYTE RIGHT
|
* BYTE RIGHT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000012,d6
|
moveq #$00000012,d6
|
ROx_LOOP2:
|
ROx_LOOP2:
|
ror.b d6,d0
|
ror.b d6,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
dbf d6,ROx_LOOP2
|
dbf d6,ROx_LOOP2
|
cmpi.l #$80018F3E,d0
|
cmpi.l #$80018F3E,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$000000C5,d5
|
cmpi.l #$000000C5,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
* WORD LEFT
|
* WORD LEFT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000013,d6
|
moveq #$00000013,d6
|
ROx_LOOP3:
|
ROx_LOOP3:
|
rol.w d6,d0
|
rol.w d6,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
dbf d6,ROx_LOOP3
|
dbf d6,ROx_LOOP3
|
cmpi.l #$800163FC,d0
|
cmpi.l #$800163FC,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000131,d5
|
cmpi.l #$00000131,d5
|
bne.s *
|
bne.s *
|
|
|
* WORD RIGHT
|
* WORD RIGHT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
move.l #$0000001E,d6
|
move.l #$0000001E,d6
|
ROx_LOOP4:
|
ROx_LOOP4:
|
ror.w d6,d0
|
ror.w d6,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
dbf d6,ROx_LOOP4
|
dbf d6,ROx_LOOP4
|
cmpi.l #$8001C7F8,d0
|
cmpi.l #$8001C7F8,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$000001DB,d5
|
cmpi.l #$000001DB,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
* LONG LEFT
|
* LONG LEFT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000015,d6
|
moveq #$00000015,d6
|
ROx_LOOP5:
|
ROx_LOOP5:
|
rol.l d6,d0
|
rol.l d6,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
dbf d6,ROx_LOOP5
|
dbf d6,ROx_LOOP5
|
cmpi.l #$00C7F8C0,d0
|
cmpi.l #$00C7F8C0,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000021A,d5
|
cmpi.l #$0000021A,d5
|
bne.s *
|
bne.s *
|
|
|
* LONG RIGHT
|
* LONG RIGHT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000016,d6
|
moveq #$00000016,d6
|
ROx_LOOP6:
|
ROx_LOOP6:
|
ror.l d6,d0
|
ror.l d6,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
dbf d6,ROx_LOOP6
|
dbf d6,ROx_LOOP6
|
cmpi.l #$000C7F8C,d0
|
cmpi.l #$000C7F8C,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000250,d5
|
cmpi.l #$00000250,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
* Shift a Register LEFT and RIGHT with shift_count ## IN THE OPCODE ##
|
* Shift a Register LEFT and RIGHT with shift_count ## IN THE OPCODE ##
|
|
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
|
|
* BYTE LEFT
|
* BYTE LEFT
|
rol.b #1,d0
|
rol.b #1,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
rol.b #5,d0
|
rol.b #5,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
rol.b #7,d0
|
rol.b #7,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
rol.b #8,d0
|
rol.b #8,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
cmpi.l #$80018F3E,d0
|
cmpi.l #$80018F3E,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000009,d5
|
cmpi.l #$00000009,d5
|
bne.s *
|
bne.s *
|
|
|
* BYTE RIGHT
|
* BYTE RIGHT
|
ror.b #1,d0
|
ror.b #1,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
ror.b #5,d0
|
ror.b #5,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
ror.b #7,d0
|
ror.b #7,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
ror.b #8,d0
|
ror.b #8,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
cmpi.l #$80018FF1,d0
|
cmpi.l #$80018FF1,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000024,d5
|
cmpi.l #$00000024,d5
|
bne.s *
|
bne.s *
|
|
|
* WORD LEFT
|
* WORD LEFT
|
rol.w #1,d0
|
rol.w #1,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
rol.w #5,d0
|
rol.w #5,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
rol.w #7,d0
|
rol.w #7,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
rol.w #8,d0
|
rol.w #8,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
cmpi.l #$8001FE31,d0
|
cmpi.l #$8001FE31,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000037,d5
|
cmpi.l #$00000037,d5
|
bne.s *
|
bne.s *
|
|
|
* WORD RIGHT
|
* WORD RIGHT
|
ror.w #1,d0
|
ror.w #1,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
ror.w #5,d0
|
ror.w #5,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
ror.w #7,d0
|
ror.w #7,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
ror.w #8,d0
|
ror.w #8,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
cmpi.l #$80018FF1,d0
|
cmpi.l #$80018FF1,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000005B,d5
|
cmpi.l #$0000005B,d5
|
bne.s *
|
bne.s *
|
|
|
* LONG LEFT
|
* LONG LEFT
|
rol.l #1,d0
|
rol.l #1,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
rol.l #5,d0
|
rol.l #5,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
rol.l #7,d0
|
rol.l #7,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
rol.l #8,d0
|
rol.l #8,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
cmpi.l #$FE300031,d0
|
cmpi.l #$FE300031,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000065,d5
|
cmpi.l #$00000065,d5
|
bne.s *
|
bne.s *
|
|
|
* LONG RIGHT
|
* LONG RIGHT
|
ror.l #1,d0
|
ror.l #1,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
ror.l #5,d0
|
ror.l #5,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
ror.l #7,d0
|
ror.l #7,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
ror.l #8,d0
|
ror.l #8,d0
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
cmpi.l #$80018FF1,d0
|
cmpi.l #$80018FF1,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000080,d5
|
cmpi.l #$00000080,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
* Shift a Memory location LEFT and RIGHT with shift_count of 1 - WORD only
|
* Shift a Memory location LEFT and RIGHT with shift_count of 1 - WORD only
|
|
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
move.w #$8FF1,(a0)
|
move.w #$8FF1,(a0)
|
|
|
* WORD LEFT
|
* WORD LEFT
|
rol (a0)
|
rol (a0)
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
rol (a0)
|
rol (a0)
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
rol (a0)
|
rol (a0)
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
rol (a0)
|
rol (a0)
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
move.w (a0),d0
|
move.w (a0),d0
|
cmpi.l #$8001FF18,d0
|
cmpi.l #$8001FF18,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000009,d5
|
cmpi.l #$00000009,d5
|
bne.s *
|
bne.s *
|
|
|
* WORD RIGHT
|
* WORD RIGHT
|
ror (a0)
|
ror (a0)
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
ror (a0)
|
ror (a0)
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
ror (a0)
|
ror (a0)
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
ror (a0)
|
ror (a0)
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
ror (a0)
|
ror (a0)
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
ror (a0)
|
ror (a0)
|
bsr ROx_FLAGS
|
bsr ROx_FLAGS
|
move.w (a0),d0
|
move.w (a0),d0
|
cmpi.l #$800163FC,d0
|
cmpi.l #$800163FC,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000001B,d5
|
cmpi.l #$0000001B,d5
|
bne.s *
|
bne.s *
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : ROXx
|
* OPCODE : ROXx
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
* Subroutine to check and accumulate the flags
|
* Subroutine to check and accumulate the flags
|
ROXx_FLAGS: move.w sr,d3
|
ROXx_FLAGS: move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
rts
|
rts
|
|
|
op_ROXx:
|
op_ROXx:
|
|
|
* Shift a Register LEFT and RIGHT with shift_count ## IN A REGISTER ##
|
* Shift a Register LEFT and RIGHT with shift_count ## IN A REGISTER ##
|
|
|
* BYTE LEFT
|
* BYTE LEFT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
moveq #$00000011,d6
|
moveq #$00000011,d6
|
ROXx_LOOP1:
|
ROXx_LOOP1:
|
roxl.b d6,d0
|
roxl.b d6,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
dbf d6,ROXx_LOOP1
|
dbf d6,ROXx_LOOP1
|
cmpi.l #$80018FD0,d0
|
cmpi.l #$80018FD0,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000042,d5
|
cmpi.l #$00000042,d5
|
bne.s *
|
bne.s *
|
|
|
* BYTE RIGHT
|
* BYTE RIGHT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000012,d6
|
moveq #$00000012,d6
|
ROXx_LOOP2:
|
ROXx_LOOP2:
|
roxr.b d6,d0
|
roxr.b d6,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
dbf d6,ROXx_LOOP2
|
dbf d6,ROXx_LOOP2
|
cmpi.l #$80018F51,d0
|
cmpi.l #$80018F51,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000009C,d5
|
cmpi.l #$0000009C,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
* WORD LEFT
|
* WORD LEFT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000013,d6
|
moveq #$00000013,d6
|
ROXx_LOOP3:
|
ROXx_LOOP3:
|
roxl.w d6,d0
|
roxl.w d6,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
dbf d6,ROXx_LOOP3
|
dbf d6,ROXx_LOOP3
|
cmpi.l #$80013980,d0
|
cmpi.l #$80013980,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$000000C9,d5
|
cmpi.l #$000000C9,d5
|
bne.s *
|
bne.s *
|
|
|
* WORD RIGHT
|
* WORD RIGHT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
move.l #$0000001E,d6
|
move.l #$0000001E,d6
|
ROXx_LOOP4:
|
ROXx_LOOP4:
|
roxr.w d6,d0
|
roxr.w d6,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
dbf d6,ROXx_LOOP4
|
dbf d6,ROXx_LOOP4
|
cmpi.l #$80010A1D,d0
|
cmpi.l #$80010A1D,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000014D,d5
|
cmpi.l #$0000014D,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
* LONG LEFT
|
* LONG LEFT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000015,d6
|
moveq #$00000015,d6
|
ROXx_LOOP5:
|
ROXx_LOOP5:
|
roxl.l d6,d0
|
roxl.l d6,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
dbf d6,ROXx_LOOP5
|
dbf d6,ROXx_LOOP5
|
cmpi.l #$800185D0,d0
|
cmpi.l #$800185D0,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$000001A1,d5
|
cmpi.l #$000001A1,d5
|
bne.s *
|
bne.s *
|
|
|
* LONG RIGHT
|
* LONG RIGHT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000016,d6
|
moveq #$00000016,d6
|
ROXx_LOOP6:
|
ROXx_LOOP6:
|
roxr.l d6,d0
|
roxr.l d6,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
dbf d6,ROXx_LOOP6
|
dbf d6,ROXx_LOOP6
|
cmpi.l #$082D8200,d0
|
cmpi.l #$082D8200,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$000001DE,d5
|
cmpi.l #$000001DE,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
* Shift a Register LEFT and RIGHT with shift_count ## IN THE OPCODE ##
|
* Shift a Register LEFT and RIGHT with shift_count ## IN THE OPCODE ##
|
|
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
|
|
* BYTE LEFT
|
* BYTE LEFT
|
roxl.b #1,d0
|
roxl.b #1,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxl.b #5,d0
|
roxl.b #5,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxl.b #7,d0
|
roxl.b #7,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxl.b #8,d0
|
roxl.b #8,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
cmpi.l #$80018F09,d0
|
cmpi.l #$80018F09,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000000B,d5
|
cmpi.l #$0000000B,d5
|
bne.s *
|
bne.s *
|
|
|
* BYTE RIGHT
|
* BYTE RIGHT
|
roxr.b #1,d0
|
roxr.b #1,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxr.b #5,d0
|
roxr.b #5,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxr.b #7,d0
|
roxr.b #7,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxr.b #8,d0
|
roxr.b #8,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
cmpi.l #$80018F00,d0
|
cmpi.l #$80018F00,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000015,d5
|
cmpi.l #$00000015,d5
|
bne.s *
|
bne.s *
|
|
|
* WORD LEFT
|
* WORD LEFT
|
roxl.w #1,d0
|
roxl.w #1,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxl.w #5,d0
|
roxl.w #5,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxl.w #7,d0
|
roxl.w #7,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxl.w #8,d0
|
roxl.w #8,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
cmpi.l #$8001B000,d0
|
cmpi.l #$8001B000,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000027,d5
|
cmpi.l #$00000027,d5
|
bne.s *
|
bne.s *
|
|
|
* WORD RIGHT
|
* WORD RIGHT
|
roxr.w #1,d0
|
roxr.w #1,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxr.w #5,d0
|
roxr.w #5,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxr.w #7,d0
|
roxr.w #7,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxr.w #8,d0
|
roxr.w #8,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
cmpi.l #$80010A00,d0
|
cmpi.l #$80010A00,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000028,d5
|
cmpi.l #$00000028,d5
|
bne.s *
|
bne.s *
|
|
|
* LONG LEFT
|
* LONG LEFT
|
roxl.l #1,d0
|
roxl.l #1,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxl.l #5,d0
|
roxl.l #5,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxl.l #7,d0
|
roxl.l #7,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxl.l #8,d0
|
roxl.l #8,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
cmpi.l #$40000010,d0
|
cmpi.l #$40000010,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000002A,d5
|
cmpi.l #$0000002A,d5
|
bne.s *
|
bne.s *
|
|
|
* LONG RIGHT
|
* LONG RIGHT
|
roxr.l #1,d0
|
roxr.l #1,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxr.l #5,d0
|
roxr.l #5,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxr.l #7,d0
|
roxr.l #7,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxr.l #8,d0
|
roxr.l #8,d0
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
cmpi.l #$00010200,d0
|
cmpi.l #$00010200,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000032,d5
|
cmpi.l #$00000032,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
* Shift a Memory location LEFT and RIGHT with shift_count of 1 - WORD only
|
* Shift a Memory location LEFT and RIGHT with shift_count of 1 - WORD only
|
|
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
move.w #$8FF1,(a0)
|
move.w #$8FF1,(a0)
|
|
|
* WORD LEFT
|
* WORD LEFT
|
roxl (a0)
|
roxl (a0)
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxl (a0)
|
roxl (a0)
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxl (a0)
|
roxl (a0)
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxl (a0)
|
roxl (a0)
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
move.w (a0),d0
|
move.w (a0),d0
|
cmpi.l #$0001FF10,d0
|
cmpi.l #$0001FF10,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000009,d5
|
cmpi.l #$00000009,d5
|
bne.s *
|
bne.s *
|
|
|
* WORD RIGHT
|
* WORD RIGHT
|
roxr (a0)
|
roxr (a0)
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxr (a0)
|
roxr (a0)
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxr (a0)
|
roxr (a0)
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxr (a0)
|
roxr (a0)
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxr (a0)
|
roxr (a0)
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
roxr (a0)
|
roxr (a0)
|
bsr ROXx_FLAGS
|
bsr ROXx_FLAGS
|
move.w (a0),d0
|
move.w (a0),d0
|
cmpi.l #$000103FC,d0
|
cmpi.l #$000103FC,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000000A,d5
|
cmpi.l #$0000000A,d5
|
bne.s *
|
bne.s *
|
|
|
rts
|
rts
|
|
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : SHIFTS
|
* OPCODE : SHIFTS
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
* Subroutine to check and accumulate the flags
|
* Subroutine to check and accumulate the flags
|
SHIFTS_FLAGS: move.w sr,d3
|
SHIFTS_FLAGS: move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
rts
|
rts
|
|
|
op_SHIFTS:
|
op_SHIFTS:
|
|
|
* Shift a Register LEFT and RIGHT with shift_count ## IN A REGISTER ##
|
* Shift a Register LEFT and RIGHT with shift_count ## IN A REGISTER ##
|
|
|
* BYTE LEFT
|
* BYTE LEFT
|
move.l #$80018F81,d0
|
move.l #$80018F81,d0
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
moveq #$00000002,d6
|
moveq #$00000002,d6
|
SHIFTS_LOOP1:
|
SHIFTS_LOOP1:
|
asl.b d6,d0
|
asl.b d6,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
dbf d6,SHIFTS_LOOP1
|
dbf d6,SHIFTS_LOOP1
|
cmpi.l #$80018F08,d0
|
cmpi.l #$80018F08,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000002,d5
|
cmpi.l #$00000002,d5
|
bne.s *
|
bne.s *
|
|
|
* BYTE RIGHT
|
* BYTE RIGHT
|
move.l #$80018F81,d0
|
move.l #$80018F81,d0
|
moveq #$00000002,d6
|
moveq #$00000002,d6
|
SHIFTS_LOOP2:
|
SHIFTS_LOOP2:
|
asr.b d6,d0
|
asr.b d6,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
dbf d6,SHIFTS_LOOP2
|
dbf d6,SHIFTS_LOOP2
|
cmpi.l #$80018FF0,d0
|
cmpi.l #$80018FF0,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000001A,d5
|
cmpi.l #$0000001A,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
* WORD LEFT
|
* WORD LEFT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000002,d6
|
moveq #$00000002,d6
|
SHIFTS_LOOP3:
|
SHIFTS_LOOP3:
|
asl.w d6,d0
|
asl.w d6,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
dbf d6,SHIFTS_LOOP3
|
dbf d6,SHIFTS_LOOP3
|
cmpi.l #$80017F88,d0
|
cmpi.l #$80017F88,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000001C,d5
|
cmpi.l #$0000001C,d5
|
bne.s *
|
bne.s *
|
|
|
* WORD RIGHT
|
* WORD RIGHT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000002,d6
|
moveq #$00000002,d6
|
SHIFTS_LOOP4:
|
SHIFTS_LOOP4:
|
asr.w d6,d0
|
asr.w d6,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
dbf d6,SHIFTS_LOOP4
|
dbf d6,SHIFTS_LOOP4
|
cmpi.l #$8001F1FE,d0
|
cmpi.l #$8001F1FE,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000034,d5
|
cmpi.l #$00000034,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
* LONG LEFT
|
* LONG LEFT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000002,d6
|
moveq #$00000002,d6
|
SHIFTS_LOOP5:
|
SHIFTS_LOOP5:
|
asl.l d6,d0
|
asl.l d6,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
dbf d6,SHIFTS_LOOP5
|
dbf d6,SHIFTS_LOOP5
|
cmpi.l #$000C7F88,d0
|
cmpi.l #$000C7F88,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000036,d5
|
cmpi.l #$00000036,d5
|
bne.s *
|
bne.s *
|
|
|
* LONG RIGHT
|
* LONG RIGHT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000002,d6
|
moveq #$00000002,d6
|
SHIFTS_LOOP6:
|
SHIFTS_LOOP6:
|
asr.l d6,d0
|
asr.l d6,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
dbf d6,SHIFTS_LOOP6
|
dbf d6,SHIFTS_LOOP6
|
cmpi.l #$F00031FE,d0
|
cmpi.l #$F00031FE,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000004E,d5
|
cmpi.l #$0000004E,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
* Shift a Register LEFT and RIGHT with shift_count ## IN THE OPCODE ##
|
* Shift a Register LEFT and RIGHT with shift_count ## IN THE OPCODE ##
|
|
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
|
|
* BYTE LEFT
|
* BYTE LEFT
|
asl.b #1,d0
|
asl.b #1,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asl.b #2,d0
|
asl.b #2,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asl.b #1,d0
|
asl.b #1,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asl.b #3,d0
|
asl.b #3,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
cmpi.l #$80018F80,d0
|
cmpi.l #$80018F80,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000001F,d5
|
cmpi.l #$0000001F,d5
|
bne.s *
|
bne.s *
|
|
|
* BYTE RIGHT
|
* BYTE RIGHT
|
asr.b #1,d0
|
asr.b #1,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asr.b #2,d0
|
asr.b #2,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asr.b #3,d0
|
asr.b #3,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asr.b #1,d0
|
asr.b #1,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
cmpi.l #$80018FFF,d0
|
cmpi.l #$80018FFF,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000003F,d5
|
cmpi.l #$0000003F,d5
|
bne.s *
|
bne.s *
|
|
|
* WORD LEFT
|
* WORD LEFT
|
asl.w #1,d0
|
asl.w #1,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asl.w #2,d0
|
asl.w #2,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asl.w #3,d0
|
asl.w #3,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asl.w #5,d0
|
asl.w #5,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
cmpi.l #$8001F800,d0
|
cmpi.l #$8001F800,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000056,d5
|
cmpi.l #$00000056,d5
|
bne.s *
|
bne.s *
|
|
|
* WORD RIGHT
|
* WORD RIGHT
|
asr.w #5,d0
|
asr.w #5,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asr.w #1,d0
|
asr.w #1,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asr.w #2,d0
|
asr.w #2,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asr.w #4,d0
|
asr.w #4,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
cmpi.l #$8001FFFF,d0
|
cmpi.l #$8001FFFF,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000077,d5
|
cmpi.l #$00000077,d5
|
bne.s *
|
bne.s *
|
|
|
* LONG LEFT
|
* LONG LEFT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
asl.l #1,d0
|
asl.l #1,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asl.l #2,d0
|
asl.l #2,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asl.l #7,d0
|
asl.l #7,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asl.l #4,d0
|
asl.l #4,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
cmpi.l #$63FC4000,d0
|
cmpi.l #$63FC4000,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000007A,d5
|
cmpi.l #$0000007A,d5
|
bne.s *
|
bne.s *
|
|
|
* LONG RIGHT
|
* LONG RIGHT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
asr.l #1,d0
|
asr.l #1,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asr.l #5,d0
|
asr.l #5,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asr.l #7,d0
|
asr.l #7,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asr.l #8,d0
|
asr.l #8,d0
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
cmpi.l #$FFFFFC00,d0
|
cmpi.l #$FFFFFC00,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000009C,d5
|
cmpi.l #$0000009C,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
* Shift a Memory location LEFT and RIGHT with shift_count of 1 - WORD only
|
* Shift a Memory location LEFT and RIGHT with shift_count of 1 - WORD only
|
|
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
move.w #$8FF1,(a0)
|
move.w #$8FF1,(a0)
|
|
|
* WORD LEFT
|
* WORD LEFT
|
asl (a0)
|
asl (a0)
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asl (a0)
|
asl (a0)
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asl (a0)
|
asl (a0)
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asl (a0)
|
asl (a0)
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
move.w (a0),d0
|
move.w (a0),d0
|
cmpi.l #$FFFFFF10,d0
|
cmpi.l #$FFFFFF10,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000000D,d5
|
cmpi.l #$0000000D,d5
|
bne.s *
|
bne.s *
|
|
|
* WORD RIGHT
|
* WORD RIGHT
|
asr (a0)
|
asr (a0)
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asr (a0)
|
asr (a0)
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asr (a0)
|
asr (a0)
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asr (a0)
|
asr (a0)
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asr (a0)
|
asr (a0)
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
asr (a0)
|
asr (a0)
|
bsr SHIFTS_FLAGS
|
bsr SHIFTS_FLAGS
|
move.w (a0),d0
|
move.w (a0),d0
|
cmpi.l #$FFFFFFFC,d0
|
cmpi.l #$FFFFFFFC,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000003E,d5
|
cmpi.l #$0000003E,d5
|
bne.s *
|
bne.s *
|
|
|
rts
|
rts
|
|
|
|
|
|
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
* OPCODE : SHIFTS2
|
* OPCODE : SHIFTS2
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
*-----------------------------------------------------------
|
|
|
* Subroutine to check and accumulate the flags
|
* Subroutine to check and accumulate the flags
|
SHIFTS2_FLAGS: move.w sr,d3
|
SHIFTS2_FLAGS: move.w sr,d3
|
andi.l #$0F,d3 * Isolate flags
|
andi.l #$0F,d3 * Isolate flags
|
add.l d3,d5 * Copy flag results into accumulator
|
add.l d3,d5 * Copy flag results into accumulator
|
rts
|
rts
|
|
|
op_SHIFTS2:
|
op_SHIFTS2:
|
|
|
* Shift a Register LEFT and RIGHT with shift_count ## IN A REGISTER ##
|
* Shift a Register LEFT and RIGHT with shift_count ## IN A REGISTER ##
|
|
|
* BYTE LEFT
|
* BYTE LEFT
|
move.l #$80018F81,d0
|
move.l #$80018F81,d0
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
moveq #$00000002,d6
|
moveq #$00000002,d6
|
SHIFTS2_LOOP1:
|
SHIFTS2_LOOP1:
|
lsl.b d6,d0
|
lsl.b d6,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
dbf d6,SHIFTS2_LOOP1
|
dbf d6,SHIFTS2_LOOP1
|
cmpi.l #$80018F08,d0
|
cmpi.l #$80018F08,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000000,d5
|
cmpi.l #$00000000,d5
|
bne.s *
|
bne.s *
|
|
|
* BYTE RIGHT
|
* BYTE RIGHT
|
move.l #$80018F81,d0
|
move.l #$80018F81,d0
|
moveq #$00000002,d6
|
moveq #$00000002,d6
|
SHIFTS2_LOOP2:
|
SHIFTS2_LOOP2:
|
lsr.b d6,d0
|
lsr.b d6,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
dbf d6,SHIFTS2_LOOP2
|
dbf d6,SHIFTS2_LOOP2
|
cmpi.l #$80018F10,d0
|
cmpi.l #$80018F10,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000000,d5
|
cmpi.l #$00000000,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
* WORD LEFT
|
* WORD LEFT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000002,d6
|
moveq #$00000002,d6
|
SHIFTS2_LOOP3:
|
SHIFTS2_LOOP3:
|
lsl.w d6,d0
|
lsl.w d6,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
dbf d6,SHIFTS2_LOOP3
|
dbf d6,SHIFTS2_LOOP3
|
cmpi.l #$80017F88,d0
|
cmpi.l #$80017F88,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000000,d5
|
cmpi.l #$00000000,d5
|
bne.s *
|
bne.s *
|
|
|
* WORD RIGHT
|
* WORD RIGHT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000002,d6
|
moveq #$00000002,d6
|
SHIFTS2_LOOP4:
|
SHIFTS2_LOOP4:
|
lsr.w d6,d0
|
lsr.w d6,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
dbf d6,SHIFTS2_LOOP4
|
dbf d6,SHIFTS2_LOOP4
|
cmpi.l #$800111FE,d0
|
cmpi.l #$800111FE,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000000,d5
|
cmpi.l #$00000000,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
* LONG LEFT
|
* LONG LEFT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000002,d6
|
moveq #$00000002,d6
|
SHIFTS2_LOOP5:
|
SHIFTS2_LOOP5:
|
lsl.l d6,d0
|
lsl.l d6,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
dbf d6,SHIFTS2_LOOP5
|
dbf d6,SHIFTS2_LOOP5
|
cmpi.l #$000C7F88,d0
|
cmpi.l #$000C7F88,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000000,d5
|
cmpi.l #$00000000,d5
|
bne.s *
|
bne.s *
|
|
|
* LONG RIGHT
|
* LONG RIGHT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000002,d6
|
moveq #$00000002,d6
|
SHIFTS2_LOOP6:
|
SHIFTS2_LOOP6:
|
lsr.l d6,d0
|
lsr.l d6,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
dbf d6,SHIFTS2_LOOP6
|
dbf d6,SHIFTS2_LOOP6
|
cmpi.l #$100031FE,d0
|
cmpi.l #$100031FE,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000000,d5
|
cmpi.l #$00000000,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
* Shift a Register LEFT and RIGHT with shift_count ## IN THE OPCODE ##
|
* Shift a Register LEFT and RIGHT with shift_count ## IN THE OPCODE ##
|
|
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
|
|
* BYTE LEFT
|
* BYTE LEFT
|
lsl.b #1,d0
|
lsl.b #1,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsl.b #2,d0
|
lsl.b #2,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsl.b #1,d0
|
lsl.b #1,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsl.b #3,d0
|
lsl.b #3,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
cmpi.l #$80018F80,d0
|
cmpi.l #$80018F80,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000001B,d5
|
cmpi.l #$0000001B,d5
|
bne.s *
|
bne.s *
|
|
|
* BYTE RIGHT
|
* BYTE RIGHT
|
lsr.b #1,d0
|
lsr.b #1,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsr.b #2,d0
|
lsr.b #2,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsr.b #3,d0
|
lsr.b #3,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsr.b #1,d0
|
lsr.b #1,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
cmpi.l #$80018F01,d0
|
cmpi.l #$80018F01,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000001B,d5
|
cmpi.l #$0000001B,d5
|
bne.s *
|
bne.s *
|
|
|
* WORD LEFT
|
* WORD LEFT
|
lsl.w #1,d0
|
lsl.w #1,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsl.w #2,d0
|
lsl.w #2,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsl.w #3,d0
|
lsl.w #3,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsl.w #5,d0
|
lsl.w #5,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
cmpi.l #$80010800,d0
|
cmpi.l #$80010800,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000025,d5
|
cmpi.l #$00000025,d5
|
bne.s *
|
bne.s *
|
|
|
* WORD RIGHT
|
* WORD RIGHT
|
lsr.w #5,d0
|
lsr.w #5,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsr.w #1,d0
|
lsr.w #1,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsr.w #2,d0
|
lsr.w #2,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsr.w #4,d0
|
lsr.w #4,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
cmpi.l #$80010000,d0
|
cmpi.l #$80010000,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000002A,d5
|
cmpi.l #$0000002A,d5
|
bne.s *
|
bne.s *
|
|
|
* LONG LEFT
|
* LONG LEFT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
lsl.l #1,d0
|
lsl.l #1,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsl.l #2,d0
|
lsl.l #2,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsl.l #7,d0
|
lsl.l #7,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsl.l #4,d0
|
lsl.l #4,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
cmpi.l #$63FC4000,d0
|
cmpi.l #$63FC4000,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000002B,d5
|
cmpi.l #$0000002B,d5
|
bne.s *
|
bne.s *
|
|
|
* LONG RIGHT
|
* LONG RIGHT
|
move.l #$80018FF1,d0
|
move.l #$80018FF1,d0
|
lsr.l #1,d0
|
lsr.l #1,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsr.l #5,d0
|
lsr.l #5,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsr.l #7,d0
|
lsr.l #7,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsr.l #8,d0
|
lsr.l #8,d0
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
cmpi.l #$00000400,d0
|
cmpi.l #$00000400,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000002D,d5
|
cmpi.l #$0000002D,d5
|
bne.s *
|
bne.s *
|
|
|
|
|
* Shift a Memory location LEFT and RIGHT with shift_count of 1 - WORD only
|
* Shift a Memory location LEFT and RIGHT with shift_count of 1 - WORD only
|
|
|
moveq #$00000000,d5
|
moveq #$00000000,d5
|
move.l #$00000100,a0
|
move.l #$00000100,a0
|
move.w #$8FF1,(a0)
|
move.w #$8FF1,(a0)
|
|
|
* WORD LEFT
|
* WORD LEFT
|
lsl (a0)
|
lsl (a0)
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsl (a0)
|
lsl (a0)
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsl (a0)
|
lsl (a0)
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsl (a0)
|
lsl (a0)
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
move.w (a0),d0
|
move.w (a0),d0
|
cmpi.l #$0000FF10,d0
|
cmpi.l #$0000FF10,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$00000009,d5
|
cmpi.l #$00000009,d5
|
bne.s *
|
bne.s *
|
|
|
* WORD RIGHT
|
* WORD RIGHT
|
lsr (a0)
|
lsr (a0)
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsr (a0)
|
lsr (a0)
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsr (a0)
|
lsr (a0)
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsr (a0)
|
lsr (a0)
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsr (a0)
|
lsr (a0)
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
lsr (a0)
|
lsr (a0)
|
bsr SHIFTS2_FLAGS
|
bsr SHIFTS2_FLAGS
|
move.w (a0),d0
|
move.w (a0),d0
|
cmpi.l #$000003FC,d0
|
cmpi.l #$000003FC,d0
|
bne.s *
|
bne.s *
|
cmpi.l #$0000000A,d5
|
cmpi.l #$0000000A,d5
|
bne.s *
|
bne.s *
|
|
|
rts
|
rts
|
|
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
; OPCODE : BSR / RTS
|
; OPCODE : BSR / RTS
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
;-----------------------------------------------------------
|
|
|
;t3_bsr:
|
;t3_bsr:
|
; moveq #3,d3
|
; moveq #3,d3
|
; rts
|
; rts
|
|
|
;t1_bsr:
|
;t1_bsr:
|
; moveq #1,d1
|
; moveq #1,d1
|
; rts
|
; rts
|
|
|
;op_bsr:
|
;op_bsr:
|
; bsr t1_bsr
|
; bsr t1_bsr
|
; bsr t2_bsr
|
; bsr t2_bsr
|
; bsr.w t3_bsr
|
; bsr.w t3_bsr
|
; bsr.w t4_bsr
|
; bsr.w t4_bsr
|
; cmpi.l #1,d1
|
; cmpi.l #1,d1
|
; bne *
|
; bne *
|
; cmpi.l #2,d2
|
; cmpi.l #2,d2
|
; bne *
|
; bne *
|
; cmpi.l #3,d3
|
; cmpi.l #3,d3
|
; bne *
|
; bne *
|
; cmpi.l #4,d4
|
; cmpi.l #4,d4
|
; bne *
|
; bne *
|
; rts
|
; rts
|
|
|
;t2_bsr:
|
;t2_bsr:
|
; moveq #2,d2
|
; moveq #2,d2
|
; rts
|
; rts
|
|
|
;t4_bsr:
|
;t4_bsr:
|
; moveq #4,d4
|
; moveq #4,d4
|
; rts
|
; rts
|
* END
|
* END
|
|
|
|
|