| Ray,
I took a look in my 68000 book here, and it doesn't mention the write
ordering for moves. I also looked up the movep instruction. So for example
suppse I did a movep.l d0,1000H, the byte at 1000h would get written, then
the byte at 1002h, then 1004h, then 1006h. The manual explicitly told me
that it writes the bytes in ascending order like this. So I would assume that
a standard move like you are doing would also write them in ascending order.
Thus reg1 would get written first, then reg2. But my manual does not explicitly
state this.
bill
|
| Thanks for the info Bill.
John, as far as scoping goes, I would hang a probe on each of the two "chip
selects" (ie: uds & rd/-wt & A1) then run a program something like the one
below. What I would expect to see is something like:
Loop n Our wonderfull delay Loop n+1
Probe ----+ +------------------------------------------+ +--------------
on adr |___| |___|
1000
Probe ---------------+ +------------------------------------------+ +---
on adr |___| |___|
1002
1'st 2'nd 1'st 2'nd
Register Register Register Register
to be to be to be to be
written written written written
This particular timing supports the "current theory" that address 1000 is
getting written before addressd 1002.
volatile long *Reg1 = 1000;
main( )
{
while( 1 ) {
/* Add a little delay (not much) so we can tell where the beginning of the
* loop is. You can't do a printf() or anything that would take a long
* time here. If the delay is too long it will a pain/impossible to scope.
*/
nop();
*Reg1 = 0;
}
}
nop( ) {}; /* May have to do something else for good good compilers that
* would optimize this into oblivion.
*/
Ray
|