Previous 199869 Revisions Next

r18896 Wednesday 7th November, 2012 at 18:30:05 UTC by O. Galibert
65c02: Fix the bitwise ops and their disassembly [O. Galibert]
[src/emu/cpu/m6502]m6502.c m6502.h m6502make.c om65c02.lst

trunk/src/emu/cpu/m6502/om65c02.lst
r18895r18896
136136   TMP2 = read(TMP);
137137   TMP = read_pc();
138138   read_pc_noinc();
139   if(!(TMP2 & (1 << (inst_state & 7)))) {
139   if(!(TMP2 & (1 << ((inst_state >> 4) & 7)))) {
140140      PC += INT8(TMP);
141141   }
142142   prefetch();
r18895r18896
147147   TMP2 = read(TMP);
148148   TMP = read_pc();
149149   read_pc_noinc();
150   if(TMP2 & (1 << (inst_state & 7))) {
150   if(TMP2 & (1 << ((inst_state >> 4) & 7))) {
151151      PC += INT8(TMP);
152152   }
153153   prefetch();
r18895r18896
340340   TMP = read_pc();
341341   TMP2 = read(TMP);
342342   write(TMP, TMP2);
343   TMP2 &= ~(1 << (inst_state & 7));
343   TMP2 &= ~(1 << ((inst_state >> 4) & 7));
344344   write(TMP, TMP2);
345345   prefetch();
346346
r18895r18896
485485   TMP = read_pc();
486486   TMP2 = read(TMP);
487487   write(TMP, TMP2);
488   TMP2 |= 1 << (inst_state & 7);
488   TMP2 |= 1 << ((inst_state >> 4) & 7);
489489   write(TMP, TMP2);
490490   prefetch();
491491
trunk/src/emu/cpu/m6502/m6502.c
r18895r18896
477477{
478478   const disasm_entry &e = table[oprom[0]];
479479   UINT32 flags = e.flags | DASMFLAG_SUPPORTED;
480   buffer += sprintf(buffer, "%-5s", e.opcode);
481   if(e.per_bit)
482      buffer += sprintf(buffer, "%d, ", (oprom[0] >> 4) & 7);
480   buffer += sprintf(buffer, "%s", e.opcode);
483481
484482   switch(table[oprom[0]].mode) {
485483   case DASM_non:
r18895r18896
512510      break;
513511
514512   case DASM_bzp:
515      sprintf(buffer, "%d $%02x", oprom[0] & 7, opram[1]);
513      sprintf(buffer, "%d $%02x", (oprom[0] >> 4) & 7, opram[1]);
516514      flags |= 2;
517515      break;
518516
r18895r18896
576574      break;
577575
578576   case DASM_zpb:
579      sprintf(buffer, "%d $%02x, $%04x", oprom[0] & 7, opram[1], (pc & 0xf0000) | UINT16(pc + 3 + INT8(opram[2])));
577      sprintf(buffer, "%d $%02x, $%04x", (oprom[0] >> 4) & 7, opram[1], (pc & 0xf0000) | UINT16(pc + 3 + INT8(opram[2])));
580578      flags |= 3;
581579      break;
582580
trunk/src/emu/cpu/m6502/m6502.h
r18895r18896
8989      const char *opcode;
9090      int mode;
9191      offs_t flags;
92      bool per_bit;
9392   };
9493
9594   enum {
trunk/src/emu/cpu/m6502/m6502make.c
r18895r18896
214214         
215215         bool step_over = opc == "jsr" || opc == "bsr";
216216         bool step_out = opc == "rts" || opc == "rti" || opc == "rtn";
217         bool per_bit = opc == "bbr" || opc == "bbs" || opc == "rmb" || opc == "smb";
218         fprintf(f, "\t{ \"%s\", DASM_%s, %s, %s },\n",
219               opc.c_str(), mode.c_str(), step_over ? "DASMFLAG_STEP_OVER" : step_out ? "DASMFLAG_STEP_OUT" : "0",
220               per_bit ? "true" : "false");
217         fprintf(f, "\t{ \"%s\", DASM_%s, %s },\n",
218               opc.c_str(), mode.c_str(), step_over ? "DASMFLAG_STEP_OVER" : step_out ? "DASMFLAG_STEP_OUT" : "0");
221219      } else
222220         fprintf(f, "\t{ \"???\", DASM_imp, 0, false },\n");
223221   fprintf(f, "};\n");

Previous 199869 Revisions Next


© 1997-2024 The MAME Team