1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
/****************************************************************************/
/* 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_8((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_8((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_8((ea)&AMASK))
#undef ReadByte
#undef ReadWord
#undef WriteByte
#undef WriteWord
#define ReadByte(ea) ((BYTE)program_read_byte_8((ea)&AMASK))
#define ReadWord(ea) (program_read_byte_8((ea)&AMASK)+(program_read_byte_8(((ea)+1)&AMASK)<<8))
#define WriteByte(ea,val) { program_write_byte_8((ea)&AMASK,val); }
#define WriteWord(ea,val) { program_write_byte_8((ea)&AMASK,(BYTE)(val)); program_write_byte_8(((ea)+1)&AMASK,(val)>>8); }
#undef CHANGE_PC
#define CHANGE_PC(addr) change_pc(addr)
|