Actually, it would not be a big deal to detect RMW errors on the emulator - it is just checking when the last write happened to the actual port, and if X virtual time tick passed, then it is safe again to read that port, otherwise log it as RMW error on the console. You may even can control this by the simulator settings, so one can increase this minimum tick value for deeper test (sometimes a nop is inserted in between RMW instructions as a quick fix and that might not enough in some case, so you can go even further). For this kind of dummy tests you do not need a real SPICE simulation... Tamas On 24 August 2012 15:36, David Meiklejohn wrote: > John Coppens wrote: > > > > Hello all... > > > > As mentioned in my mail, I submitted the strange behaviour I > > experienced with mplab x to the Microchip bug list, and got as answer: > > > > > > We believe that this is due to the read-modify-write nature of the bsf > > instructions. You should keep an image and update the image > > (...and closed the bug) > > > > If I understand the RMW behaviour, then the possible problems are due > > to either capacitive (or other) loading of the outputs, or having some > > internal peripheral enabled which could cause the same loading. > > > > Is there any way this could explain my problem? I even tried the > > 'image' method to update port A, and the mplab X simulator _still_ > > doesn't show any change to the port A output. > > Microchip's reply sounds like a cop-out to me. RMW potentially affects > actual hardware, in ways that depend on the hardware. A simulator can't > take that into account (ok, unless you're using something like Proteus wi= th > a SPICE model of the attached hardware). RMW should not be the explanati= on > for what you see in the simulator. > > I suspect that Microchip didn't understand what you were getting at (or > didn't take the time to understand...). > > > Cheers, > David Meiklejohn > www.gooligum.com.au > > > -- > http://www.piclist.com PIC/SX FAQ & list archive > View/change your membership options at > http://mailman.mit.edu/mailman/listinfo/piclist > --=20 int main() { char *a,*s,*q; printf(s=3D"int main() { char *a,*s,*q; printf(s=3D%s%s%s, q=3D%s%s%s%s,s,q,q,a=3D%s%s%s%s,q,q,q,a,a,q); }", q=3D"\"",s,q,q,a=3D"\\",q,q,q,a,a,q); } --=20 http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist .