From: Hugo Villeneuve Date: Sat, 7 Sep 2013 22:10:27 +0000 (-0400) Subject: Fix error with CJNE instruction X-Git-Tag: v1.1.2~4 X-Git-Url: http://gitweb.hugovil.com/?a=commitdiff_plain;h=67a0a710e077d824e90681614e867d0b78e26520;hp=7121e7929df83dae68f66d3ee1dcdbb5231760f3;p=emu8051.git Fix error with CJNE instruction When the comparison was true, the PC was advanced by 2 instead of 3 bytes. Error reported and fixed by Tobias Diedrich (ranma at tdiedrich.de). --- diff --git a/src/opcode2c.pl b/src/opcode2c.pl index 4741f07..a80f651 100755 --- a/src/opcode2c.pl +++ b/src/opcode2c.pl @@ -610,7 +610,7 @@ for ($i=0 ; $i< 256; $i++) { print INST_IMP "unsigned int reladdr = ((char) memory_read8(PGM_MEM_ID, cpu8051.pc)) + (cpu8051.pc + 1);\n"; print INST_IMP "cpu8051_WriteD( _PSW_, ( cpu8051_ReadD( _PSW_ ) & 0x7F ) );\n"; print INST_IMP "if ( destination < source ) cpu8051_WriteD( _PSW_, ( cpu8051_ReadD( _PSW_ ) | 0x80 ) );\n"; - print INST_IMP "if ( destination != source ) cpu8051.pc = reladdr;\n"; + print INST_IMP "if ( destination != source ) cpu8051.pc = reladdr; else cpu8051.pc++; \n"; } # PUSH