if (ea<0x30) // ($nn,An) (di)\r
{\r
EaCalcReg(2,8,mask,0,0);\r
- ot(" ldrsh r0,[r4],#2 ;@ Fetch offset\n");\r
+ ot(" ldrsh r0,[r4],#2 ;@ Fetch offset\n"); pc_dirty=1;\r
ot(" ldr r2,[r7,r2,lsl #2]\n");\r
ot(" add r%d,r0,r2 ;@ Add on offset\n",a);\r
Cycles+=size<2 ? 8:12; // Extra cycles\r
if (ea<0x38) // ($nn,An,Rn) (ix)\r
{\r
ot(";@ Get extension word into r3:\n");\r
- ot(" ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)\n");\r
+ ot(" ldrh r3,[r4],#2 ;@ ($Disp,PC,Rn)\n"); pc_dirty=1;\r
ot(" mov r2,r3,lsr #10\n");\r
ot(" tst r3,#0x0800 ;@ Is Rn Word or Long\n");\r
ot(" and r2,r2,#0x3c ;@ r2=Index of Rn\n");\r
\r
if (ea==0x38) // (aw)\r
{\r
- ot(" ldrsh r%d,[r4],#2 ;@ Fetch Absolute Short address\n",a);\r
+ ot(" ldrsh r%d,[r4],#2 ;@ Fetch Absolute Short address\n",a); pc_dirty=1;\r
Cycles+=size<2 ? 8:12; // Extra cycles\r
return 0;\r
}\r
if (ea==0x39) // (al)\r
{\r
ot(" ldrh r2,[r4],#2 ;@ Fetch Absolute Long address\n");\r
- ot(" ldrh r0,[r4],#2\n");\r
+ ot(" ldrh r0,[r4],#2\n"); pc_dirty=1;\r
ot(" orr r%d,r0,r2,lsl #16\n",a);\r
Cycles+=size<2 ? 12:16; // Extra cycles\r
return 0;\r
{\r
ot(" ldr r0,[r7,#0x60] ;@ Get Memory base\n");\r
ot(" sub r0,r4,r0 ;@ Real PC\n");\r
- ot(" ldrsh r2,[r4],#2 ;@ Fetch extension\n");\r
+ ot(" ldrsh r2,[r4],#2 ;@ Fetch extension\n"); pc_dirty=1;\r
ot(" mov r0,r0,lsl #8\n");\r
ot(" add r%d,r2,r0,asr #8 ;@ ($nn,PC)\n",a);\r
Cycles+=size<2 ? 8:12; // Extra cycles\r
ot(" ldr r0,[r7,#0x60] ;@ Get Memory base\n");\r
ot(" ldrh r3,[r4] ;@ Get extension word\n");\r
ot(" sub r0,r4,r0 ;@ r0=PC\n");\r
- ot(" add r4,r4,#2\n");\r
+ ot(" add r4,r4,#2\n"); pc_dirty=1;\r
ot(" mov r0,r0,asl #8 ;@ use only 24bits of PC\n");\r
ot(" mov r2,r3,lsr #10\n");\r
ot(" tst r3,#0x0800 ;@ Is Rn Word or Long\n");\r
{\r
if (size<2)\r
{\r
- ot(" ldr%s r%d,[r4],#2 ;@ Fetch immediate value\n",Sarm[size&3],a);\r
+ ot(" ldr%s r%d,[r4],#2 ;@ Fetch immediate value\n",Sarm[size&3],a); pc_dirty=1;\r
Cycles+=4; // Extra cycles\r
return 0;\r
}\r
\r
ot(" ldrh r2,[r4],#2 ;@ Fetch immediate value\n");\r
- ot(" ldrh r0,[r4],#2\n");\r
+ ot(" ldrh r0,[r4],#2\n"); pc_dirty=1;\r
ot(" orr r%d,r0,r2,lsl #16\n",a);\r
Cycles+=8; // Extra cycles\r
return 0;\r
ot("\n"); return 0;\r
}\r
\r
- if (a!=0) ot(" mov r0,r%d\n",a);\r
-\r
- if (ea>=0x3a && ea<=0x3b) MemHandler(2,size); // Fetch\r
- else MemHandler(0,size); // Read\r
+ if (ea>=0x3a && ea<=0x3b) MemHandler(2,size,a); // Fetch\r
+ else MemHandler(0,size,a); // Read\r
\r
if (v!=0 || shift) {\r
if (shift) ot(" mov r%d,r0,asl #%d\n",v,shift);\r
\r
if (ea==0x3c) { ot("Error! Write EA=0x%x\n\n",ea); return 1; }\r
\r
- if (a!=0 && v!=0) ot(" mov r0,r%d\n",a);\r
if (v!=1 || shift) ot(" mov r1,r%d,asr #%d\n",v,shift);\r
- if (a!=0 && v==0) ot(" mov r0,r%d\n",a);\r
\r
- MemHandler(1,size); // Call write handler\r
+ MemHandler(1,size,a); // Call write handler\r
\r
ot("\n"); return 0;\r
}\r