diff --git a/src/cpu/core_16/main.h b/src/cpu/core_16/main.h index 12e70963..075e5655 100644 --- a/src/cpu/core_16/main.h +++ b/src/cpu/core_16/main.h @@ -32,9 +32,9 @@ restart: case 0x05: /* ADD AX,Iw */ AXIw(ADDW);break; case 0x06: /* PUSH ES */ - Push_16(Segs[es].value);break; + Push_16(SegValue(es));break; case 0x07: /* POP ES */ - SetSegment_16(es,Pop_16());break; + SegSet16(es,Pop_16());break; case 0x08: /* OR Eb,Gb */ RMEbGb(ORB);break; case 0x09: /* OR Ew,Gw */ @@ -48,7 +48,7 @@ restart: case 0x0d: /* OR AX,Iw */ AXIw(ORW);break; case 0x0e: /* PUSH CS */ - Push_16(Segs[cs].value);break; + Push_16(SegValue(cs));break; case 0x0f: /* 2 byte opcodes*/ #include "prefix_of.h" break; @@ -65,9 +65,9 @@ restart: case 0x15: /* ADC AX,Iw */ AXIw(ADCW);break; case 0x16: /* PUSH SS */ - Push_16(Segs[ss].value);break; + Push_16(SegValue(ss));break; case 0x17: /* POP SS */ - SetSegment_16(ss,Pop_16());break; + SegSet16(ss,Pop_16());break; case 0x18: /* SBB Eb,Gb */ RMEbGb(SBBB);break; case 0x19: /* SBB Ew,Gw */ @@ -81,9 +81,9 @@ restart: case 0x1d: /* SBB AX,Iw */ AXIw(SBBW);break; case 0x1e: /* PUSH DS */ - Push_16(Segs[ds].value);break; + Push_16(SegValue(ds));break; case 0x1f: /* POP DS */ - SetSegment_16(ds,Pop_16());break; + SegSet16(ds,Pop_16());break; case 0x20: /* AND Eb,Gb */ RMEbGb(ANDB);break; case 0x21: /* AND Ew,Gw */ @@ -524,17 +524,17 @@ restart: GetRM;Bit16u val; switch (rm & 0x38) { case 0x00: /* MOV Ew,ES */ - val=Segs[es].value;break; + val=SegValue(es);break; case 0x08: /* MOV Ew,CS */ - val=Segs[cs].value;break; + val=SegValue(cs);break; case 0x10: /* MOV Ew,SS */ - val=Segs[ss].value;break; + val=SegValue(ss);break; case 0x18: /* MOV Ew,DS */ - val=Segs[ds].value;break; + val=SegValue(ds);break; case 0x20: /* MOV Ew,FS */ - val=Segs[fs].value;break; + val=SegValue(fs);break; case 0x28: /* MOV Ew,GS */ - val=Segs[gs].value;break; + val=SegValue(gs);break; default: val=0; E_Exit("CPU:8c:Illegal RM Byte"); @@ -583,18 +583,18 @@ restart: else {GetEAa;val=LoadMw(eaa);} switch (rm & 0x38) { case 0x00: /* MOV ES,Ew */ - SetSegment_16(es,val);break; + SegSet16(es,val);break; case 0x08: /* MOV CS,Ew Illegal*/ E_Exit("CPU:Illegal MOV CS Call"); break; case 0x10: /* MOV SS,Ew */ - SetSegment_16(ss,val);break; + SegSet16(ss,val);break; case 0x18: /* MOV DS,Ew */ - SetSegment_16(ds,val);break; + SegSet16(ds,val);break; case 0x20: /* MOV FS,Ew */ - SetSegment_16(fs,val);break; + SegSet16(fs,val);break; case 0x28: /* MOV GS,Ew */ - SetSegment_16(gs,val);break; + SegSet16(gs,val);break; default: E_Exit("CPU:8e:Illegal RM Byte"); } @@ -639,8 +639,8 @@ restart: case 0x9a: /* CALL Ap */ { Bit16u newip=Fetchw();Bit16u newcs=Fetchw(); - Push_16(Segs[cs].value);Push_16(GETIP); - SetSegment_16(cs,newcs);SETIP(newip); + Push_16(SegValue(cs));Push_16(GETIP); + SegSet16(cs,newcs);SETIP(newip); break; } case 0x9b: /* WAIT */ @@ -838,13 +838,13 @@ restart: case 0xc4: /* LES */ { GetRMrw;GetEAa; - *rmrw=LoadMw(eaa);SetSegment_16(es,LoadMw(eaa+2)); + *rmrw=LoadMw(eaa);SegSet16(es,LoadMw(eaa+2)); break; } case 0xc5: /* LDS */ { GetRMrw;GetEAa; - *rmrw=LoadMw(eaa);SetSegment_16(ds,LoadMw(eaa+2)); + *rmrw=LoadMw(eaa);SegSet16(ds,LoadMw(eaa+2)); break; } case 0xc6: /* MOV Eb,Ib */ @@ -876,13 +876,13 @@ restart: { Bit16u addsp=Fetchw(); Bit16u newip=Pop_16();Bit16u newcs=Pop_16(); - reg_sp+=addsp;SetSegment_16(cs,newcs);SETIP(newip); + reg_sp+=addsp;SegSet16(cs,newcs);SETIP(newip); break; } case 0xcb: /* RETF */ { Bit16u newip=Pop_16();Bit16u newcs=Pop_16(); - SetSegment_16(cs,newcs);SETIP(newip); + SegSet16(cs,newcs);SETIP(newip); } break; case 0xcc: /* INT3 */ @@ -900,7 +900,7 @@ restart: case 0xcf: /* IRET */ { Bit16u newip=Pop_16();Bit16u newcs=Pop_16(); - SetSegment_16(cs,newcs);SETIP(newip); + SegSet16(cs,newcs);SETIP(newip); Bit16u pflags=Pop_16();Save_Flagsw(pflags); break; } @@ -1018,7 +1018,7 @@ restart: { Bit16u newip=Fetchw(); Bit16u newcs=Fetchw(); - SetSegment_16(cs,newcs); + SegSet16(cs,newcs); SETIP(newip); break; } @@ -1466,11 +1466,11 @@ restart: break; case 0x18: /* CALL Ep */ { - Push_16(Segs[cs].value); + Push_16(SegValue(cs)); GetEAa;Push_16(GETIP); Bit16u newip=LoadMw(eaa); Bit16u newcs=LoadMw(eaa+2); - SetSegment_16(cs,newcs); + SegSet16(cs,newcs); SETIP(newip); } break; @@ -1483,7 +1483,7 @@ restart: GetEAa; Bit16u newip=LoadMw(eaa); Bit16u newcs=LoadMw(eaa+2); - SetSegment_16(cs,newcs); + SegSet16(cs,newcs); SETIP(newip); } break; diff --git a/src/cpu/core_16/prefix_of.h b/src/cpu/core_16/prefix_of.h index 2010372c..e92594d8 100644 --- a/src/cpu/core_16/prefix_of.h +++ b/src/cpu/core_16/prefix_of.h @@ -155,9 +155,9 @@ switch(Fetchb()) { SETcc((get_SF() == get_OF()) && !get_ZF());break; case 0xa0: /* PUSH FS */ - Push_16(Segs[fs].value);break; + Push_16(SegValue(fs));break; case 0xa1: /* POP FS */ - SetSegment_16(fs,Pop_16());break; + SegSet16(fs,Pop_16());break; /* 0xa2 CPUID */ case 0xa3: /* BT Ew,Gw */ { @@ -190,9 +190,9 @@ switch(Fetchb()) { /* 0xa6 XBTS (early 386 only) CMPXCHG (early 486 only) */ /* 0xa7 IBTS (early 386 only) CMPXCHG (early 486 only) */ case 0xa8: /* PUSH GS */ - Push_16(Segs[gs].value);break; + Push_16(SegValue(gs));break; case 0xa9: /* POP GS */ - SetSegment_16(gs,Pop_16());break; + SegSet16(gs,Pop_16());break; /* 0xaa RSM */ case 0xab: /* BTS Ew,Gw */ { @@ -258,13 +258,13 @@ switch(Fetchb()) { case 0xb4: /* LFS */ { GetRMrw;GetEAa; - *rmrw=LoadMw(eaa);SetSegment_16(fs,LoadMw(eaa+2)); + *rmrw=LoadMw(eaa);SegSet16(fs,LoadMw(eaa+2)); break; } case 0xb5: /* LGS */ { GetRMrw;GetEAa; - *rmrw=LoadMw(eaa);SetSegment_16(gs,LoadMw(eaa+2)); + *rmrw=LoadMw(eaa);SegSet16(gs,LoadMw(eaa+2)); break; } case 0xb6: /* MOVZX Gw,Eb */ diff --git a/src/cpu/slow_16.cpp b/src/cpu/slow_16.cpp index aaed2d80..30df16c0 100644 --- a/src/cpu/slow_16.cpp +++ b/src/cpu/slow_16.cpp @@ -25,9 +25,7 @@ #include "fpu.h" typedef PhysPt EAPoint; - -#define SegBase(seg) Segs[seg].phys - +#define SegBase(c) SegPhys(c) #define LoadMb(off) mem_readb(off) #define LoadMw(off) mem_readw(off) #define LoadMd(off) mem_readd(off) @@ -52,7 +50,7 @@ extern Bitu cycle_count; /* Enable parts of the cpu emulation */ #define CPU_386 //Enable 386 instructions -#ifdef C_FPU +#if C_FPU #define CPU_FPU //Enable FPU escape instructions #endif @@ -61,7 +59,7 @@ static Bitu CPU_Real_16_Slow_Decode_Special(Bitu count); static Bitu CPU_Real_16_Slow_Decode(Bitu count) { #include "core_16/start.h" while (count) { -#ifdef C_DEBUG +#if C_DEBUG cycle_count++; #endif count--;