#
# 68k_test_9
#
# ninth test file for the 68k core testing program
#
# tests MOVEM instructions
#

# $Id$

#
# NOTE: Someone plays fast and loose with flags...
#

#
# FIXME: add cycle timing data
#

# test MOVEM.W memory -> register
start movem.w (a0)+, regs, take 1
set mem 0x002000 = 0x4c98
set mem 0x002002 = 0xf0f0
set reg a0 = 0x00004000

set mem 0x00400e = 0x0000
set mem 0x00400c = 0xffff
set mem 0x00400a = 0x55aa
set mem 0x004008 = 0xaa55
set mem 0x004006 = 0x000f
set mem 0x004004 = 0xfff0
set mem 0x004002 = 0x55a0
set mem 0x004000 = 0xaa50

set pc 0x002000
#set cycles 0
run
check pc 0x002004
#check cycles 0
check reg a0 = 0x00004010

check reg a7 = 0x00000000
check reg a6 = 0xffffffff
check reg a5 = 0x000055aa
check reg a4 = 0xffffaa55
check reg d7 = 0x0000000f
check reg d6 = 0xfffffff0
check reg d5 = 0x000055a0
check reg d4 = 0xffffaa50
done

# test MOVEM.L memory -> register
start movem.l (a0)+, regs, take 1
set mem 0x002000 = 0x4cd8
set mem 0x002002 = 0xf0f0
set reg a0 = 0x00004000

set mem 0x00401e = 0x0000
set mem 0x00401c = 0x0000
set mem 0x00401a = 0xffff
set mem 0x004018 = 0xffff
set mem 0x004016 = 0x55aa
set mem 0x004014 = 0x55aa
set mem 0x004012 = 0xaa55
set mem 0x004010 = 0xaa55
set mem 0x00400e = 0x000f
set mem 0x00400c = 0x000f
set mem 0x00400a = 0xfff0
set mem 0x004008 = 0xfff0
set mem 0x004006 = 0x55a0
set mem 0x004004 = 0x55a0
set mem 0x004002 = 0xaa50
set mem 0x004000 = 0xaa50

set pc 0x002000
#set cycles 0
run
check pc 0x002004
#check cycles 0
check reg a0 = 0x00004020

check reg a7 = 0x00000000
check reg a6 = 0xffffffff
check reg a5 = 0x55aa55aa
check reg a4 = 0xaa55aa55
check reg d7 = 0x000f000f
check reg d6 = 0xfff0fff0
check reg d5 = 0x55a055a0
check reg d4 = 0xaa50aa50
done

# test MOVEM.W register -> memory
start movem.w -(a0), regs, take 1
set mem 0x002000 = 0x48a0
set mem 0x002002 = 0x0f0f
set reg a0 = 0x00004010

set reg a7 = 0x00000000
set reg a6 = 0xffffffff
set reg a5 = 0x000055aa
set reg a4 = 0xffffaa55
set reg d7 = 0x0000000f
set reg d6 = 0xfffffff0
set reg d5 = 0x000055a0
set reg d4 = 0xffffaa50

set mem 0x00400e = 0x0000
set mem 0x00400c = 0x0000
set mem 0x00400a = 0x0000
set mem 0x004008 = 0x0000
set mem 0x004006 = 0x0000
set mem 0x004004 = 0x0000
set mem 0x004002 = 0x0000
set mem 0x004000 = 0x0000

set pc 0x002000
#set cycles 0
run
check pc 0x002004
#check cycles 0
check reg a0 = 0x00004000

check mem 0x00400e = 0x0000
check mem 0x00400c = 0xffff
check mem 0x00400a = 0x55aa
check mem 0x004008 = 0xaa55
check mem 0x004006 = 0x000f
check mem 0x004004 = 0xfff0
check mem 0x004002 = 0x55a0
check mem 0x004000 = 0xaa50
done

# test MOVEM.L register -> memory
start movem.l regs, -(a0), take 1
set mem 0x002000 = 0x48e0
set mem 0x002002 = 0x0f0f
set reg a0 = 0x00004020

set reg a7 = 0x00000000
set reg a6 = 0xffffffff
set reg a5 = 0x55aa55aa
set reg a4 = 0xaa55aa55
set reg d7 = 0x000f000f
set reg d6 = 0xfff0fff0
set reg d5 = 0x55a055a0
set reg d4 = 0xaa50aa50

set mem 0x00401e = 0x0000
set mem 0x00401c = 0x0000
set mem 0x00401a = 0x0000
set mem 0x004018 = 0x0000
set mem 0x004016 = 0x0000
set mem 0x004014 = 0x0000
set mem 0x004012 = 0x0000
set mem 0x004010 = 0x0000
set mem 0x00400e = 0x0000
set mem 0x00400c = 0x0000
set mem 0x00400a = 0x0000
set mem 0x004008 = 0x0000
set mem 0x004006 = 0x0000
set mem 0x004004 = 0x0000
set mem 0x004002 = 0x0000
set mem 0x004000 = 0x0000

set pc 0x002000
#set cycles 0
run
#check cycles 0
check pc 0x002004

check mem 0x00401e = 0x0000
check mem 0x00401c = 0x0000
check mem 0x00401a = 0xffff
check mem 0x004018 = 0xffff
check mem 0x004016 = 0x55aa
check mem 0x004014 = 0x55aa
check mem 0x004012 = 0xaa55
check mem 0x004010 = 0xaa55
check mem 0x00400e = 0x000f
check mem 0x00400c = 0x000f
check mem 0x00400a = 0xfff0
check mem 0x004008 = 0xfff0
check mem 0x004006 = 0x55a0
check mem 0x004004 = 0x55a0
check mem 0x004002 = 0xaa50
check mem 0x004000 = 0xaa50
done

#
# $Log$
#
