Fixed memory access in the 80286 cpu core which made i286.h obsolete. Changed CPUINFO_INT_MAX_INSTRUCTION_BYTES to prevent crashes during disassembly.

This commit is contained in:
Wilbert Pol 2008-05-24 15:14:12 +00:00
parent 4b53f7eebb
commit 4e1afc32f5
3 changed files with 4 additions and 39 deletions

1
.gitattributes vendored
View File

@ -150,7 +150,6 @@ src/emu/cpu/i86/host.h svneol=native#text/plain
src/emu/cpu/i86/i186intf.h svneol=native#text/plain
src/emu/cpu/i86/i188intf.h svneol=native#text/plain
src/emu/cpu/i86/i286.c svneol=native#text/plain
src/emu/cpu/i86/i286.h svneol=native#text/plain
src/emu/cpu/i86/i286intf.h svneol=native#text/plain
src/emu/cpu/i86/i86.c svneol=native#text/plain
src/emu/cpu/i86/i86.h svneol=native#text/plain

View File

@ -16,7 +16,9 @@
#define i8086_ICount i80286_ICount
#include "i286.h"
#define INPUT_LINE_A20 1
#include "i86.h"
#include "i286intf.h"
@ -387,7 +389,7 @@ void i80286_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_CLOCK_MULTIPLIER: info->i = 1; break;
case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break;
case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 1; break;
case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 8; break;
case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 15; break;
case CPUINFO_INT_MIN_CYCLES: info->i = 1; break;
case CPUINFO_INT_MAX_CYCLES: info->i = 50; break;

View File

@ -1,36 +0,0 @@
/****************************************************************************/
/* real mode i286 emulator by Fabrice Frances */
/* (initial work based on David Hedley's pcemu) */
/* */
/****************************************************************************/
#include "i86.h"
#define INPUT_LINE_A20 1
#undef GetMemB
#undef GetMemW
#undef PutMemB
#undef PutMemW
/* ASG 971005 -- changed to program_read_byte_8/program_write_byte_8 */
#define GetMemB(Seg,Off) ( (BYTE)program_read_byte_8le((DefaultBase(Seg)+(Off))&AMASK))
#define GetMemW(Seg,Off) ( (WORD)GetMemB(Seg,Off)+(WORD)(GetMemB(Seg,(Off)+1)<<8))
#define PutMemB(Seg,Off,x) { program_write_byte_8le((DefaultBase(Seg)+(Off))&AMASK,(x)); }
#define PutMemW(Seg,Off,x) { PutMemB(Seg,Off,(BYTE)(x)); PutMemB(Seg,(Off)+1,(BYTE)((x)>>8)); }
#undef PEEKBYTE
#define PEEKBYTE(ea) ((BYTE)program_read_byte_8le((ea)&AMASK))
#undef ReadByte
#undef ReadWord
#undef WriteByte
#undef WriteWord
#define ReadByte(ea) ((BYTE)program_read_byte_8le((ea)&AMASK))
#define ReadWord(ea) (program_read_byte_8le((ea)&AMASK)+(program_read_byte_8le(((ea)+1)&AMASK)<<8))
#define WriteByte(ea,val) { program_write_byte_8le((ea)&AMASK,val); }
#define WriteWord(ea,val) { program_write_byte_8le((ea)&AMASK,(BYTE)(val)); program_write_byte_8le(((ea)+1)&AMASK,(val)>>8); }
#undef CHANGE_PC
#define CHANGE_PC(addr) change_pc(addr)