notaz.gp2x.de
/
cyclone68000.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
make Ea* functions easier to work with
[cyclone68000.git]
/
OpMove.cpp
diff --git
a/OpMove.cpp
b/OpMove.cpp
index
82c589c
..
3d893de
100644
(file)
--- a/
OpMove.cpp
+++ b/
OpMove.cpp
@@
-133,30
+133,30
@@
int OpMove(int op)
\r
if (movea==0)
\r
{
\r
\r
if (movea==0)
\r
{
\r
- EaCalcRead(-1,1,sea,size,0x003f,
1
,1);
\r
+ EaCalcRead(-1,1,sea,size,0x003f,
earwt_sign_extend
,1);
\r
OpGetFlagsNZ(1);
\r
ot("\n");
\r
}
\r
else
\r
{
\r
OpGetFlagsNZ(1);
\r
ot("\n");
\r
}
\r
else
\r
{
\r
- EaCalcRead(-1,1,sea,size,0x003f);
\r
+ EaCalcRead(-1,1,sea,size,0x003f
,earwt_sign_extend
);
\r
size=2; // movea always expands to 32-bits
\r
}
\r
\r
eawrite_check_addrerr=1;
\r
#if SPLIT_MOVEL_PD
\r
if ((tea&0x38)==0x20 && size==2) { // -(An)
\r
size=2; // movea always expands to 32-bits
\r
}
\r
\r
eawrite_check_addrerr=1;
\r
#if SPLIT_MOVEL_PD
\r
if ((tea&0x38)==0x20 && size==2) { // -(An)
\r
- EaCalc (8,0x0e00,tea,size,
0,0
);
\r
+ EaCalc (8,0x0e00,tea,size,
earwt_msb_dont_care
);
\r
ot(" mov r11,r1\n");
\r
ot(" add r0,r8,#2\n");
\r
ot(" mov r11,r1\n");
\r
ot(" add r0,r8,#2\n");
\r
- EaWrite(0, 1,tea,1,0x0e00,
0,0
);
\r
- EaWrite(8, 11,tea,1,0x0e00,
1
);
\r
+ EaWrite(0, 1,tea,1,0x0e00,
earwt_msb_dont_care
);
\r
+ EaWrite(8, 11,tea,1,0x0e00,
earwt_shifted_up
);
\r
}
\r
else
\r
#endif
\r
{
\r
}
\r
else
\r
#endif
\r
{
\r
- EaCalc (0,0x0e00,tea,size,
0,0
);
\r
- EaWrite(0, 1,tea,size,0x0e00,
0,0
);
\r
+ EaCalc (0,0x0e00,tea,size,
earwt_msb_dont_care
);
\r
+ EaWrite(0, 1,tea,size,0x0e00,
earwt_msb_dont_care
);
\r
}
\r
\r
#if CYCLONE_FOR_GENESIS && !MEMHANDLERS_CHANGE_CYCLES
\r
}
\r
\r
#if CYCLONE_FOR_GENESIS && !MEMHANDLERS_CHANGE_CYCLES
\r
@@
-239,13
+239,13
@@
int OpMoveSr(int op)
{
\r
eawrite_check_addrerr=1;
\r
OpFlagsToReg(type==0);
\r
{
\r
eawrite_check_addrerr=1;
\r
OpFlagsToReg(type==0);
\r
- EaCalc (0,0x003f,ea,size,
0,0
);
\r
- EaWrite(0, 1,ea,size,0x003f,
0,0
);
\r
+ EaCalc (0,0x003f,ea,size,
earwt_msb_dont_care
);
\r
+ EaWrite(0, 1,ea,size,0x003f,
earwt_msb_dont_care
);
\r
}
\r
\r
if (type==2 || type==3)
\r
{
\r
}
\r
\r
if (type==2 || type==3)
\r
{
\r
- EaCalcRead
NoSE(-1,0,ea,size,0x003f
);
\r
+ EaCalcRead
(-1,0,ea,size,0x003f,earwt_msb_dont_care
);
\r
OpRegToFlags(type==3,1);
\r
if (type==3) {
\r
SuperChange(op,1);
\r
OpRegToFlags(type==3,1);
\r
if (type==3) {
\r
SuperChange(op,1);
\r
@@
-278,7
+278,7
@@
int OpArithSr(int op)
\r
OpStart(op,ea,0,0,size!=0); Cycles=16;
\r
\r
\r
OpStart(op,ea,0,0,size!=0); Cycles=16;
\r
\r
- EaCalcRead(-1,0,ea,size,0x003f);
\r
+ EaCalcRead(-1,0,ea,size,0x003f
,earwt_sign_extend
);
\r
\r
ot(" eor r1,r0,r0,ror #1 ;@ Bit 0=C^V\n");
\r
ot(" tst r1,#1 ;@ 1 if C!=V\n");
\r
\r
ot(" eor r1,r0,r0,ror #1 ;@ Bit 0=C^V\n");
\r
ot(" tst r1,#1 ;@ 1 if C!=V\n");
\r
@@
-435,10
+435,10
@@
int OpMovem(int op)
#if SPLIT_MOVEL_PD
\r
if (decr && size==2) { // -(An)
\r
ot(" add r0,r6,#2\n");
\r
#if SPLIT_MOVEL_PD
\r
if (decr && size==2) { // -(An)
\r
ot(" add r0,r6,#2\n");
\r
- EaWrite(0,1,ea,1,0x003f,
0,0
);
\r
+ EaWrite(0,1,ea,1,0x003f,
earwt_msb_dont_care
);
\r
ot(" ldr r1,[r7,r4] ;@ Load value from Dn/An\n");
\r
ot(" mov r0,r6\n");
\r
ot(" ldr r1,[r7,r4] ;@ Load value from Dn/An\n");
\r
ot(" mov r0,r6\n");
\r
- EaWrite(0,1,ea,1,0x003f,
1
);
\r
+ EaWrite(0,1,ea,1,0x003f,
earwt_shifted_up
);
\r
}
\r
else
\r
#endif
\r
}
\r
else
\r
#endif
\r
@@
-500,13
+500,13
@@
int OpMoveUsp(int op)
{
\r
eawrite_check_addrerr=1;
\r
ot(" ldr r1,[r7,#0x48] ;@ Get from USP\n\n");
\r
{
\r
eawrite_check_addrerr=1;
\r
ot(" ldr r1,[r7,#0x48] ;@ Get from USP\n\n");
\r
- EaCalc (0,0x000f,8,2
,1
);
\r
- EaWrite(0, 1,8,2,0x000f
,1
);
\r
+ EaCalc (0,0x000f,8,2);
\r
+ EaWrite(0, 1,8,2,0x000f);
\r
}
\r
else
\r
{
\r
}
\r
else
\r
{
\r
- EaCalc (0,0x000f,8,2
,1
);
\r
- EaRead (0, 0,8,2,0x000f
,1
);
\r
+ EaCalc (0,0x000f,8,2);
\r
+ EaRead (0, 0,8,2,0x000f);
\r
ot(" str r0,[r7,#0x48] ;@ Put in USP\n\n");
\r
}
\r
\r
ot(" str r0,[r7,#0x48] ;@ Put in USP\n\n");
\r
}
\r
\r
@@
-595,7
+595,7
@@
int OpMovep(int op)
\r
if(dir) // reg to mem
\r
{
\r
\r
if(dir) // reg to mem
\r
{
\r
- EaCalcRead
NoSE(-1,11,rea,size,0x0e00
);
\r
+ EaCalcRead
(-1,11,rea,size,0x0e00,earwt_msb_dont_care
);
\r
\r
EaCalc(8,0x000f,ea,size);
\r
if(size==2) { // if operand is long
\r
\r
EaCalc(8,0x000f,ea,size);
\r
if(size==2) { // if operand is long
\r
@@
-616,24
+616,24
@@
int OpMovep(int op)
}
\r
else // mem to reg
\r
{
\r
}
\r
else // mem to reg
\r
{
\r
- EaCalc(6,0x000f,ea,size,
1
);
\r
- EaRead(6,11,ea,0,0x000f,
1
); // read first byte
\r
+ EaCalc(6,0x000f,ea,size,
earwt_shifted_up
);
\r
+ EaRead(6,11,ea,0,0x000f,
earwt_shifted_up
); // read first byte
\r
ot(" add r0,r6,#2\n");
\r
ot(" add r0,r6,#2\n");
\r
- EaRead(0,1,ea,0,0x000f,
1
); // read second byte
\r
+ EaRead(0,1,ea,0,0x000f,
earwt_shifted_up
); // read second byte
\r
if(size==2) { // if operand is long
\r
ot(" orr r11,r11,r1,lsr #8 ;@ second byte\n");
\r
ot(" add r0,r6,#4\n");
\r
if(size==2) { // if operand is long
\r
ot(" orr r11,r11,r1,lsr #8 ;@ second byte\n");
\r
ot(" add r0,r6,#4\n");
\r
- EaRead(0,1,ea,0,0x000f,
1
);
\r
+ EaRead(0,1,ea,0,0x000f,
earwt_shifted_up
);
\r
ot(" orr r11,r11,r1,lsr #16 ;@ third byte\n");
\r
ot(" add r0,r6,#6\n");
\r
ot(" orr r11,r11,r1,lsr #16 ;@ third byte\n");
\r
ot(" add r0,r6,#6\n");
\r
- EaRead(0,1,ea,0,0x000f,
1
);
\r
+ EaRead(0,1,ea,0,0x000f,
earwt_shifted_up
);
\r
ot(" orr r1,r11,r1,lsr #24 ;@ fourth byte\n");
\r
} else {
\r
ot(" orr r1,r11,r1,lsr #8 ;@ second byte\n");
\r
}
\r
// store the result
\r
ot(" orr r1,r11,r1,lsr #24 ;@ fourth byte\n");
\r
} else {
\r
ot(" orr r1,r11,r1,lsr #8 ;@ second byte\n");
\r
}
\r
// store the result
\r
- EaCalc(0,0x0e00,rea,size,
1
);
\r
- EaWrite(0,1,rea,size,0x0e00,
1
);
\r
+ EaCalc(0,0x0e00,rea,size,
earwt_shifted_up
);
\r
+ EaWrite(0,1,rea,size,0x0e00,
earwt_shifted_up
);
\r
ot(" ldr r6,[r7,#0x54]\n");
\r
}
\r
\r
ot(" ldr r6,[r7,#0x54]\n");
\r
}
\r
\r