Change to logging - when logging is disabled, the logging functions are now #define'd to nothing, so the compiler ignores the lines that call them completely, seems to slightly speed up the emulator; note that the logging in vid_table.c has not been changed yet, because this file on my local tree currently contains other WIP changes.

This commit is contained in:
OBattler
2018-10-19 00:39:32 +02:00
parent d56df03a53
commit cfc626f111
78 changed files with 658 additions and 590 deletions

View File

@@ -10,7 +10,7 @@
# settings, so we can avoid changing the main one for all of
# our local setups.
#
# Version: @(#)Makefile.local 1.0.17 2018/09/03
# Version: @(#)Makefile.local 1.0.18 2018/10/17
#
# Author: Fred N. van Kempen, <decwiz@yahoo.com>
#
@@ -38,9 +38,7 @@ STUFF :=
# -DENABLE_BUGGER_LOG=N sets logging level at N.
# -DENABLE_CONFIG_LOG=N sets logging level at N.
# -DENABLE_DEVICE_LOG=N sets logging level at N.
# -DENABLE_KEYBOARD_AMSTRAD_LOG=N sets logging level at N.
# -DENABLE_KEYBOARD_AT_LOG=N sets logging level at N.
# -DENABLE_KEYBOARD_LOG=N sets logging level at N.
# -DENABLE_IO_LOG=N sets logging level at N.
# -DENABLE_ISAMEM_LOG=N sets logging level at N.
# -DENABLE_ISARTC_LOG=N sets logging level at N.
@@ -97,10 +95,12 @@ STUFF :=
# -DENABLE_T3100E_LOG=N sets logging level at N.
# -DENABLE_TANDY_LOG=N sets logging level at N.
# network/ logging:
# -DENABLE_3COM503_LOG=N sets logging level at N.
# -DENABLE_NETWORK_LOG=N sets logging level at N.
# -DENABLE_NIC_LOG=N sets logging level at N.
# -DENABLE_PCAP_LOG=N sets logging level at N.
# -DENABLE_SLIRP_LOG=N sets logging level at N.
# -DENABLE_WD_LOG=N sets logging level at N.
# scsi/ logging:
# -DENABLE_AHA154X_LOG=N sets logging level at N.
# -DENABLE_BUSLOGIC_LOG=N sets logging level at N.
@@ -122,8 +122,6 @@ STUFF :=
# -DENABLE_ATI28800_LOG=N sets logging level at N.
# -DENABLE_MACH64_LOG=N sets logging level at N.
# -DENABLE_ET4000W32_LOG=N sets logging level at N.
# -DENABLE_NV_RIVA_LOG=N sets logging level at N.
# -DENABLE_NVIDIA_LOG=N sets logging level at N.
# -DENABLE_S3_VIRGE_LOG=N sets logging level at N.
# -DENABLE_VID_TABLE_LOG=N sets logging level at N.
# -DENABLE_VOODOO_LOG=N sets logging level at N.

View File

@@ -44,7 +44,7 @@
* configuration register (CTRL_SPCFG bit set) but have to
* remember that stuff first...
*
* Version: @(#)bugger.c 1.0.12 2018/04/29
* Version: @(#)bugger.c 1.0.13 2018/10/17
*
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
* Copyright 1989-2018 Fred N. van Kempen.
@@ -93,22 +93,22 @@ extern void ui_sb_bugui(char *__str);
#ifdef ENABLE_BUGGER_LOG
int bugger_do_log = ENABLE_BUGGER_LOG;
#endif
static void
bugger_log(const char *format, ...)
bugger_log(const char *fmt, ...)
{
#ifdef ENABLE_BUGGER_LOG
va_list ap;
if (bugger_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define bugger_log(fmt, ...)
#endif
/* Update the system's UI with the actual Bugger status. */

View File

@@ -111,13 +111,11 @@ extern int dontprint;
#ifdef ENABLE_386_LOG
int x386_do_log = ENABLE_386_LOG;
#endif
static void
x386_log(const char *fmt, ...)
{
#ifdef ENABLE_386_LOG
va_list ap;
if (x386_do_log) {
@@ -125,8 +123,10 @@ x386_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define x386_log(fmt, ...)
#endif
void exec386(int cycs)

View File

@@ -73,14 +73,12 @@ uint32_t *mod1seg[8];
#ifdef ENABLE_386_DYNAREC_LOG
int x386_dynarec_do_log = ENABLE_386_DYNAREC_LOG;
#endif
int x386_dynarec_do_log = ENABLE_386_DYNAREC_LOG;#endif
void
x386_dynarec_log(const char *fmt, ...)
{
#ifdef ENABLE_386_DYNAREC_LOG
va_list ap;
if (x386_dynarec_do_log) {
@@ -88,8 +86,10 @@ x386_dynarec_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define x86_dynarec_log (fmt, ...)
#endif
static __inline void fetch_ea_32_long(uint32_t rmdat)
@@ -233,7 +233,9 @@ void x86_int(int num)
cpu_state.abrt = 0;
softresetx86();
cpu_set_edx();
#ifdef ENABLE_386_DYNAREC_LOG
x386_dynarec_log("Triple fault in real mode - reset\n");
#endif
}
else
x86_int(8);
@@ -326,9 +328,21 @@ int x86_int_sw_rm(int num)
if (cpu_state.abrt) return 1;
writememw(ss,((SP-2)&0xFFFF),flags); if (cpu_state.abrt) {x386_dynarec_log("abrt5\n"); return 1; }
writememw(ss,((SP-2)&0xFFFF),flags);
if (cpu_state.abrt) {
#ifdef ENABLE_386_DYNAREC_LOG
x386_dynarec_log("abrt5\n");
#endif
return 1;
}
writememw(ss,((SP-4)&0xFFFF),CS);
writememw(ss,((SP-6)&0xFFFF),cpu_state.pc); if (cpu_state.abrt) {x386_dynarec_log("abrt6\n"); return 1; }
writememw(ss,((SP-6)&0xFFFF),cpu_state.pc);
if (cpu_state.abrt) {
#ifdef ENABLE_386_DYNAREC_LOG
x386_dynarec_log("abrt6\n");
#endif
return 1;
}
SP-=6;
eflags &= ~VIF_FLAG;
@@ -858,14 +872,18 @@ inrecomp=0;
cpu_state.abrt = 0;
CS = oldcs;
cpu_state.pc = cpu_state.oldpc;
#ifdef ENABLE_386_DYNAREC_LOG
x386_dynarec_log("Double fault %i\n", ins);
#endif
pmodeint(8, 0);
if (cpu_state.abrt)
{
cpu_state.abrt = 0;
softresetx86();
cpu_set_edx();
#ifdef ENABLE_386_DYNAREC_LOG
x386_dynarec_log("Triple fault - reset\n");
#endif
}
}
}

View File

@@ -8,7 +8,7 @@
*
* 286/386+ instruction handlers list.
*
* Version: @(#)386_ops.h 1.0.4 2018/09/19
* Version: @(#)386_ops.h 1.0.5 2018/10/17
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Sarah Walker, <tommowalker@tommowalker.co.uk>
@@ -176,7 +176,13 @@ static int internal_illegal(char *s)
}
#endif
#ifdef ENABLE_386_DYNAREC_LOG
extern void x386_dynarec_log(const char *fmt, ...);
#else
#ifndef x386_dynarec_log
#define x386_dynarec_log(fmt, ...)
#endif
#endif
#include "x86seg.h"
#if defined(DEV_BRANCH) && defined(USE_AMD_K)

View File

@@ -18,7 +18,7 @@
* 2 clocks - fetch opcode 1 2 clocks - execute
* 2 clocks - fetch opcode 2 etc
*
* Version: @(#)808x.c 1.0.6 2018/09/20
* Version: @(#)808x.c 1.0.7 2018/10/17
*
* Authors: Sarah Walker, <tommowalker@tommowalker.co.uk>
* Miran Grca, <mgrca8@gmail.com>
@@ -86,13 +86,11 @@ void writememll(uint32_t seg, uint32_t addr, uint32_t val);
#ifdef ENABLE_808X_LOG
int x808x_do_log = ENABLE_808X_LOG;
#endif
static void
x808x_log(const char *fmt, ...)
{
#ifdef ENABLE_808X_LOG
va_list ap;
if (x808x_do_log) {
@@ -100,8 +98,10 @@ x808x_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define x808x_log(fmt, ...)
#endif
#undef readmemb

View File

@@ -8,7 +8,7 @@
*
* AMD SYSCALL and SYSRET CPU Instructions.
*
* Version: @(#)x86_ops_amd.h 1.0.3 2018/04/25
* Version: @(#)x86_ops_amd.h 1.0.4 2018/10/17
*
* Author: Miran Grca, <mgrca8@gmail.com>
* Copyright 2016-2018 Miran Grca.
@@ -55,7 +55,7 @@ static int opSYSCALL(uint32_t fetchdat)
{
if (_cs.seg >= ldt.limit)
{
pclog("Bigger than LDT limit %04X %04X CS\n",AMD_SYSCALL_SB,ldt.limit);
x386_dynarec_log("Bigger than LDT limit %04X %04X CS\n",AMD_SYSCALL_SB,ldt.limit);
x86gpf(NULL, AMD_SYSCALL_SB & ~3);
return 1;
}
@@ -65,7 +65,7 @@ static int opSYSCALL(uint32_t fetchdat)
{
if (_cs.seg >= gdt.limit)
{
pclog("Bigger than GDT limit %04X %04X CS\n",AMD_SYSCALL_SB,gdt.limit);
x386_dynarec_log("Bigger than GDT limit %04X %04X CS\n",AMD_SYSCALL_SB,gdt.limit);
x86gpf(NULL, AMD_SYSCALL_SB & ~3);
return 1;
}
@@ -133,7 +133,7 @@ static int opSYSRET(uint32_t fetchdat)
{
if (_cs.seg >= ldt.limit)
{
pclog("Bigger than LDT limit %04X %04X CS\n",AMD_SYSRET_SB,ldt.limit);
x386_dynarec_log("Bigger than LDT limit %04X %04X CS\n",AMD_SYSRET_SB,ldt.limit);
x86gpf(NULL, AMD_SYSRET_SB & ~3);
return 1;
}
@@ -143,7 +143,7 @@ static int opSYSRET(uint32_t fetchdat)
{
if (_cs.seg >= gdt.limit)
{
pclog("Bigger than GDT limit %04X %04X CS\n",AMD_SYSRET_SB,gdt.limit);
x386_dynarec_log("Bigger than GDT limit %04X %04X CS\n",AMD_SYSRET_SB,gdt.limit);
x86gpf(NULL, AMD_SYSRET_SB & ~3);
return 1;
}

View File

@@ -171,7 +171,7 @@ static int opBA_w_a16(uint32_t fetchdat)
break;
default:
pclog("Bad 0F BA opcode %02X\n", rmdat & 0x38);
x386_dynarec_log("Bad 0F BA opcode %02X\n", rmdat & 0x38);
cpu_state.pc = cpu_state.oldpc;
x86illegal();
break;
@@ -213,7 +213,7 @@ static int opBA_w_a32(uint32_t fetchdat)
break;
default:
pclog("Bad 0F BA opcode %02X\n", rmdat & 0x38);
x386_dynarec_log("Bad 0F BA opcode %02X\n", rmdat & 0x38);
cpu_state.pc = cpu_state.oldpc;
x86illegal();
break;
@@ -256,7 +256,7 @@ static int opBA_l_a16(uint32_t fetchdat)
break;
default:
pclog("Bad 0F BA opcode %02X\n", rmdat & 0x38);
x386_dynarec_log("Bad 0F BA opcode %02X\n", rmdat & 0x38);
cpu_state.pc = cpu_state.oldpc;
x86illegal();
break;
@@ -298,7 +298,7 @@ static int opBA_l_a32(uint32_t fetchdat)
break;
default:
pclog("Bad 0F BA opcode %02X\n", rmdat & 0x38);
x386_dynarec_log("Bad 0F BA opcode %02X\n", rmdat & 0x38);
cpu_state.pc = cpu_state.oldpc;
x86illegal();
break;

View File

@@ -8,7 +8,7 @@
*
* x86 i686 (Pentium Pro/Pentium II) CPU Instructions.
*
* Version: @(#)x86_ops_i686.h 1.0.4 2018/04/25
* Version: @(#)x86_ops_i686.h 1.0.5 2018/10/17
*
* Author: Miran Grca, <mgrca8@gmail.com>
* Copyright 2016-2018 Miran Grca.
@@ -40,18 +40,18 @@ static int opSYSENTER(uint32_t fetchdat)
uint16_t sysenter_ss_seg_data[4];
#ifdef SYSENTER_LOG
pclog("SYSENTER called\n");
x386_dynarec_log("SYSENTER called\n");
#endif
if (!(cr0 & 1)) return internal_illegal("SYSENTER: CPU not in protected mode");
if (!(cs_msr & 0xFFFC)) return internal_illegal("SYSENTER: CS MSR is zero");
#ifdef SYSENTER_LOG
pclog("SYSENTER started:\n");
pclog("CS (%04X): base=%08X, limit=%08X, access=%02X, seg=%04X, limit_low=%08X, limit_high=%08X, checked=%i\n", CS, _cs.base, _cs.limit, _cs.access, _cs.seg, _cs.limit_low, _cs.limit_high, _cs.checked);
pclog("SS (%04X): base=%08X, limit=%08X, access=%02X, seg=%04X, limit_low=%08X, limit_high=%08X, checked=%i\n", SS, _ss.base, _ss.limit, _ss.access, _ss.seg, _ss.limit_low, _ss.limit_high, _ss.checked);
pclog("Model specific registers: cs_msr=%04X, esp_msr=%08X, eip_msr=%08X\n", cs_msr, esp_msr, eip_msr);
pclog("Other information: eip=%08X esp=%08X eflags=%04X flags=%04X use32=%04X stack32=%i\n", cpu_state.pc, ESP, eflags, flags, use32, stack32);
x386_dynarec_log("SYSENTER started:\n");
x386_dynarec_log("CS (%04X): base=%08X, limit=%08X, access=%02X, seg=%04X, limit_low=%08X, limit_high=%08X, checked=%i\n", CS, _cs.base, _cs.limit, _cs.access, _cs.seg, _cs.limit_low, _cs.limit_high, _cs.checked);
x386_dynarec_log("SS (%04X): base=%08X, limit=%08X, access=%02X, seg=%04X, limit_low=%08X, limit_high=%08X, checked=%i\n", SS, _ss.base, _ss.limit, _ss.access, _ss.seg, _ss.limit_low, _ss.limit_high, _ss.checked);
x386_dynarec_log("Model specific registers: cs_msr=%04X, esp_msr=%08X, eip_msr=%08X\n", cs_msr, esp_msr, eip_msr);
x386_dynarec_log("Other information: eip=%08X esp=%08X eflags=%04X flags=%04X use32=%04X stack32=%i\n", cpu_state.pc, ESP, eflags, flags, use32, stack32);
#endif
if (cpu_state.abrt) return 1;
@@ -83,11 +83,11 @@ static int opSYSENTER(uint32_t fetchdat)
CPU_BLOCK_END();
#ifdef SYSENTER_LOG
pclog("SYSENTER completed:\n");
pclog("CS (%04X): base=%08X, limit=%08X, access=%02X, seg=%04X, limit_low=%08X, limit_high=%08X, checked=%i\n", CS, _cs.base, _cs.limit, _cs.access, _cs.seg, _cs.limit_low, _cs.limit_high, _cs.checked);
pclog("SS (%04X): base=%08X, limit=%08X, access=%02X, seg=%04X, limit_low=%08X, limit_high=%08X, checked=%i\n", SS, _ss.base, _ss.limit, _ss.access, _ss.seg, _ss.limit_low, _ss.limit_high, _ss.checked);
pclog("Model specific registers: cs_msr=%04X, esp_msr=%08X, eip_msr=%08X\n", cs_msr, esp_msr, eip_msr);
pclog("Other information: eip=%08X esp=%08X eflags=%04X flags=%04X use32=%04X stack32=%i\n", cpu_state.pc, ESP, eflags, flags, use32, stack32);
x386_dynarec_log("SYSENTER completed:\n");
x386_dynarec_log("CS (%04X): base=%08X, limit=%08X, access=%02X, seg=%04X, limit_low=%08X, limit_high=%08X, checked=%i\n", CS, _cs.base, _cs.limit, _cs.access, _cs.seg, _cs.limit_low, _cs.limit_high, _cs.checked);
x386_dynarec_log("SS (%04X): base=%08X, limit=%08X, access=%02X, seg=%04X, limit_low=%08X, limit_high=%08X, checked=%i\n", SS, _ss.base, _ss.limit, _ss.access, _ss.seg, _ss.limit_low, _ss.limit_high, _ss.checked);
x386_dynarec_log("Model specific registers: cs_msr=%04X, esp_msr=%08X, eip_msr=%08X\n", cs_msr, esp_msr, eip_msr);
x386_dynarec_log("Other information: eip=%08X esp=%08X eflags=%04X flags=%04X use32=%04X stack32=%i\n", cpu_state.pc, ESP, eflags, flags, use32, stack32);
#endif
return 0;
@@ -99,7 +99,7 @@ static int opSYSEXIT(uint32_t fetchdat)
uint16_t sysexit_ss_seg_data[4];
#ifdef SYSEXIT_LOG
pclog("SYSEXIT called\n");
x386_dynarec_log("SYSEXIT called\n");
#endif
if (!(cs_msr & 0xFFFC)) return internal_illegal("SYSEXIT: CS MSR is zero");
@@ -107,11 +107,11 @@ static int opSYSEXIT(uint32_t fetchdat)
if (CS & 3) return internal_illegal("SYSEXIT: CPL not 0");
#ifdef SYSEXIT_LOG
pclog("SYSEXIT start:\n");
pclog("CS (%04X): base=%08X, limit=%08X, access=%02X, seg=%04X, limit_low=%08X, limit_high=%08X, checked=%i\n", CS, _cs.base, _cs.limit, _cs.access, _cs.seg, _cs.limit_low, _cs.limit_high, _cs.checked);
pclog("SS (%04X): base=%08X, limit=%08X, access=%02X, seg=%04X, limit_low=%08X, limit_high=%08X, checked=%i\n", SS, _ss.base, _ss.limit, _ss.access, _ss.seg, _ss.limit_low, _ss.limit_high, _ss.checked);
pclog("Model specific registers: cs_msr=%04X, esp_msr=%08X, eip_msr=%08X\n", cs_msr, esp_msr, eip_msr);
pclog("Other information: eip=%08X esp=%08X eflags=%04X flags=%04X use32=%04X stack32=%i ECX=%08X EDX=%08X\n", cpu_state.pc, ESP, eflags, flags, use32, stack32, ECX, EDX);
x386_dynarec_log("SYSEXIT start:\n");
x386_dynarec_log("CS (%04X): base=%08X, limit=%08X, access=%02X, seg=%04X, limit_low=%08X, limit_high=%08X, checked=%i\n", CS, _cs.base, _cs.limit, _cs.access, _cs.seg, _cs.limit_low, _cs.limit_high, _cs.checked);
x386_dynarec_log("SS (%04X): base=%08X, limit=%08X, access=%02X, seg=%04X, limit_low=%08X, limit_high=%08X, checked=%i\n", SS, _ss.base, _ss.limit, _ss.access, _ss.seg, _ss.limit_low, _ss.limit_high, _ss.checked);
x386_dynarec_log("Model specific registers: cs_msr=%04X, esp_msr=%08X, eip_msr=%08X\n", cs_msr, esp_msr, eip_msr);
x386_dynarec_log("Other information: eip=%08X esp=%08X eflags=%04X flags=%04X use32=%04X stack32=%i ECX=%08X EDX=%08X\n", cpu_state.pc, ESP, eflags, flags, use32, stack32, ECX, EDX);
#endif
if (cpu_state.abrt) return 1;
@@ -141,11 +141,11 @@ static int opSYSEXIT(uint32_t fetchdat)
CPU_BLOCK_END();
#ifdef SYSEXIT_LOG
pclog("SYSEXIT completed:\n");
pclog("CS (%04X): base=%08X, limit=%08X, access=%02X, seg=%04X, limit_low=%08X, limit_high=%08X, checked=%i\n", CS, _cs.base, _cs.limit, _cs.access, _cs.seg, _cs.limit_low, _cs.limit_high, _cs.checked);
pclog("SS (%04X): base=%08X, limit=%08X, access=%02X, seg=%04X, limit_low=%08X, limit_high=%08X, checked=%i\n", SS, _ss.base, _ss.limit, _ss.access, _ss.seg, _ss.limit_low, _ss.limit_high, _ss.checked);
pclog("Model specific registers: cs_msr=%04X, esp_msr=%08X, eip_msr=%08X\n", cs_msr, esp_msr, eip_msr);
pclog("Other information: eip=%08X esp=%08X eflags=%04X flags=%04X use32=%04X stack32=%i ECX=%08X EDX=%08X\n", cpu_state.pc, ESP, eflags, flags, use32, stack32, ECX, EDX);
x386_dynarec_log("SYSEXIT completed:\n");
x386_dynarec_log("CS (%04X): base=%08X, limit=%08X, access=%02X, seg=%04X, limit_low=%08X, limit_high=%08X, checked=%i\n", CS, _cs.base, _cs.limit, _cs.access, _cs.seg, _cs.limit_low, _cs.limit_high, _cs.checked);
x386_dynarec_log("SS (%04X): base=%08X, limit=%08X, access=%02X, seg=%04X, limit_low=%08X, limit_high=%08X, checked=%i\n", SS, _ss.base, _ss.limit, _ss.access, _ss.seg, _ss.limit_low, _ss.limit_high, _ss.checked);
x386_dynarec_log("Model specific registers: cs_msr=%04X, esp_msr=%08X, eip_msr=%08X\n", cs_msr, esp_msr, eip_msr);
x386_dynarec_log("Other information: eip=%08X esp=%08X eflags=%04X flags=%04X use32=%04X stack32=%i ECX=%08X EDX=%08X\n", cpu_state.pc, ESP, eflags, flags, use32, stack32, ECX, EDX);
#endif
return 0;
@@ -169,7 +169,7 @@ static int opFXSAVESTOR_a16(uint32_t fetchdat)
if (cpu_state.eaaddr & 0xf)
{
pclog("Effective address %04X not on 16-byte boundary\n", cpu_state.eaaddr);
x386_dynarec_log("Effective address %04X not on 16-byte boundary\n", cpu_state.eaaddr);
x86gpf(NULL, 0);
return cpu_state.abrt;
}
@@ -262,7 +262,7 @@ static int opFXSAVESTOR_a16(uint32_t fetchdat)
CLOCK_CYCLES((cr0 & 1) ? 34 : 44);
if(cpu_state.abrt) pclog("FXRSTOR: abrt != 0\n");
if(cpu_state.abrt) x386_dynarec_log("FXRSTOR: abrt != 0\n");
}
else
{
@@ -323,7 +323,7 @@ static int opFXSAVESTOR_a16(uint32_t fetchdat)
CLOCK_CYCLES((cr0 & 1) ? 56 : 67);
if(cpu_state.abrt) pclog("FXSAVE: abrt != 0\n");
if(cpu_state.abrt) x386_dynarec_log("FXSAVE: abrt != 0\n");
}
return cpu_state.abrt;
@@ -347,7 +347,7 @@ static int opFXSAVESTOR_a32(uint32_t fetchdat)
if (cpu_state.eaaddr & 0xf)
{
pclog("Effective address %08X not on 16-byte boundary\n", cpu_state.eaaddr);
x386_dynarec_log("Effective address %08X not on 16-byte boundary\n", cpu_state.eaaddr);
x86gpf(NULL, 0);
return cpu_state.abrt;
}
@@ -440,7 +440,7 @@ static int opFXSAVESTOR_a32(uint32_t fetchdat)
CLOCK_CYCLES((cr0 & 1) ? 34 : 44);
if(cpu_state.abrt) pclog("FXRSTOR: abrt != 0\n");
if(cpu_state.abrt) x386_dynarec_log("FXRSTOR: abrt != 0\n");
}
else
{
@@ -501,7 +501,7 @@ static int opFXSAVESTOR_a32(uint32_t fetchdat)
CLOCK_CYCLES((cr0 & 1) ? 56 : 67);
if(cpu_state.abrt) pclog("FXSAVE: abrt != 0\n");
if(cpu_state.abrt) x386_dynarec_log("FXSAVE: abrt != 0\n");
}
return cpu_state.abrt;

View File

@@ -8,7 +8,7 @@
*
* Miscellaneous x86 CPU Instructions.
*
* Version: @(#)x86_ops_misc.h 1.0.1 2018/04/12
* Version: @(#)x86_ops_misc.h 1.0.2 2018/10/17
*
* Author: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -160,7 +160,7 @@ static int opF6_a16(uint32_t fetchdat)
break;
default:
pclog("Bad F6 opcode %02X\n", rmdat & 0x38);
x386_dynarec_log("Bad F6 opcode %02X\n", rmdat & 0x38);
x86illegal();
}
return 0;
@@ -259,7 +259,7 @@ static int opF6_a32(uint32_t fetchdat)
break;
default:
pclog("Bad F6 opcode %02X\n", rmdat & 0x38);
x386_dynarec_log("Bad F6 opcode %02X\n", rmdat & 0x38);
x86illegal();
}
return 0;
@@ -354,7 +354,7 @@ static int opF7_w_a16(uint32_t fetchdat)
break;
default:
pclog("Bad F7 opcode %02X\n", rmdat & 0x38);
x386_dynarec_log("Bad F7 opcode %02X\n", rmdat & 0x38);
x86illegal();
}
return 0;
@@ -446,7 +446,7 @@ static int opF7_w_a32(uint32_t fetchdat)
break;
default:
pclog("Bad F7 opcode %02X\n", rmdat & 0x38);
x386_dynarec_log("Bad F7 opcode %02X\n", rmdat & 0x38);
x86illegal();
}
return 0;
@@ -517,7 +517,7 @@ static int opF7_l_a16(uint32_t fetchdat)
break;
default:
pclog("Bad F7 opcode %02X\n", rmdat & 0x38);
x386_dynarec_log("Bad F7 opcode %02X\n", rmdat & 0x38);
x86illegal();
}
return 0;
@@ -587,7 +587,7 @@ static int opF7_l_a32(uint32_t fetchdat)
break;
default:
pclog("Bad F7 opcode %02X\n", rmdat & 0x38);
x386_dynarec_log("Bad F7 opcode %02X\n", rmdat & 0x38);
x86illegal();
}
return 0;
@@ -714,7 +714,7 @@ static int opCLTS(uint32_t fetchdat)
{
if ((CPL || (eflags&VM_FLAG)) && (cr0&1))
{
pclog("Can't CLTS\n");
x386_dynarec_log("Can't CLTS\n");
x86gpf(NULL,0);
return 1;
}

View File

@@ -52,7 +52,7 @@ static int opPSxxW_imm(uint32_t fetchdat)
}
break;
default:
pclog("Bad PSxxW (0F 71) instruction %02X\n", op);
x386_dynarec_log("Bad PSxxW (0F 71) instruction %02X\n", op);
cpu_state.pc = cpu_state.oldpc;
x86illegal();
return 0;
@@ -223,7 +223,7 @@ static int opPSxxD_imm(uint32_t fetchdat)
}
break;
default:
pclog("Bad PSxxD (0F 72) instruction %02X\n", op);
x386_dynarec_log("Bad PSxxD (0F 72) instruction %02X\n", op);
cpu_state.pc = cpu_state.oldpc;
x86illegal();
return 0;
@@ -375,7 +375,7 @@ static int opPSxxQ_imm(uint32_t fetchdat)
cpu_state.MM[reg].q <<= shift;
break;
default:
pclog("Bad PSxxQ (0F 73) instruction %02X\n", op);
x386_dynarec_log("Bad PSxxQ (0F 73) instruction %02X\n", op);
cpu_state.pc = cpu_state.oldpc;
x86illegal();
return 0;

View File

@@ -2,7 +2,7 @@ static int opMOV_r_CRx_a16(uint32_t fetchdat)
{
if ((CPL || (eflags&VM_FLAG)) && (cr0&1))
{
pclog("Can't load from CRx\n");
x386_dynarec_log("Can't load from CRx\n");
x86gpf(NULL, 0);
return 1;
}
@@ -27,7 +27,7 @@ static int opMOV_r_CRx_a16(uint32_t fetchdat)
break;
}
default:
pclog("Bad read of CR%i %i\n",rmdat&7,cpu_reg);
x386_dynarec_log("Bad read of CR%i %i\n",rmdat&7,cpu_reg);
cpu_state.pc = cpu_state.oldpc;
x86illegal();
break;
@@ -40,7 +40,7 @@ static int opMOV_r_CRx_a32(uint32_t fetchdat)
{
if ((CPL || (eflags&VM_FLAG)) && (cr0&1))
{
pclog("Can't load from CRx\n");
x386_dynarec_log("Can't load from CRx\n");
x86gpf(NULL, 0);
return 1;
}
@@ -65,7 +65,7 @@ static int opMOV_r_CRx_a32(uint32_t fetchdat)
break;
}
default:
pclog("Bad read of CR%i %i\n",rmdat&7,cpu_reg);
x386_dynarec_log("Bad read of CR%i %i\n",rmdat&7,cpu_reg);
cpu_state.pc = cpu_state.oldpc;
x86illegal();
break;
@@ -79,7 +79,7 @@ static int opMOV_r_DRx_a16(uint32_t fetchdat)
{
if ((CPL || (eflags&VM_FLAG)) && (cr0&1))
{
pclog("Can't load from DRx\n");
x386_dynarec_log("Can't load from DRx\n");
x86gpf(NULL, 0);
return 1;
}
@@ -93,7 +93,7 @@ static int opMOV_r_DRx_a32(uint32_t fetchdat)
{
if ((CPL || (eflags&VM_FLAG)) && (cr0&1))
{
pclog("Can't load from DRx\n");
x386_dynarec_log("Can't load from DRx\n");
x86gpf(NULL, 0);
return 1;
}
@@ -110,7 +110,7 @@ static int opMOV_CRx_r_a16(uint32_t fetchdat)
if ((CPL || (eflags&VM_FLAG)) && (cr0&1))
{
pclog("Can't load CRx\n");
x386_dynarec_log("Can't load CRx\n");
x86gpf(NULL,0);
return 1;
}
@@ -151,7 +151,7 @@ static int opMOV_CRx_r_a16(uint32_t fetchdat)
}
default:
pclog("Bad load CR%i\n", cpu_reg);
x386_dynarec_log("Bad load CR%i\n", cpu_reg);
cpu_state.pc = cpu_state.oldpc;
x86illegal();
break;
@@ -166,7 +166,7 @@ static int opMOV_CRx_r_a32(uint32_t fetchdat)
if ((CPL || (eflags&VM_FLAG)) && (cr0&1))
{
pclog("Can't load CRx\n");
x386_dynarec_log("Can't load CRx\n");
x86gpf(NULL,0);
return 1;
}
@@ -207,7 +207,7 @@ static int opMOV_CRx_r_a32(uint32_t fetchdat)
}
default:
pclog("Bad load CR%i\n", cpu_reg);
x386_dynarec_log("Bad load CR%i\n", cpu_reg);
cpu_state.pc = cpu_state.oldpc;
x86illegal();
break;
@@ -221,7 +221,7 @@ static int opMOV_DRx_r_a16(uint32_t fetchdat)
{
if ((CPL || (eflags&VM_FLAG)) && (cr0&1))
{
pclog("Can't load DRx\n");
x386_dynarec_log("Can't load DRx\n");
x86gpf(NULL, 0);
return 1;
}
@@ -235,7 +235,7 @@ static int opMOV_DRx_r_a32(uint32_t fetchdat)
{
if ((CPL || (eflags&VM_FLAG)) && (cr0&1))
{
pclog("Can't load DRx\n");
x386_dynarec_log("Can't load DRx\n");
x86gpf(NULL, 0);
return 1;
}
@@ -250,7 +250,7 @@ static int opMOV_r_TRx_a16(uint32_t fetchdat)
{
if ((CPL || (eflags&VM_FLAG)) && (cr0&1))
{
pclog("Can't load from TRx\n");
x386_dynarec_log("Can't load from TRx\n");
x86gpf(NULL, 0);
return 1;
}
@@ -264,7 +264,7 @@ static int opMOV_r_TRx_a32(uint32_t fetchdat)
{
if ((CPL || (eflags&VM_FLAG)) && (cr0&1))
{
pclog("Can't load from TRx\n");
x386_dynarec_log("Can't load from TRx\n");
x86gpf(NULL, 0);
return 1;
}
@@ -279,7 +279,7 @@ static int opMOV_TRx_r_a16(uint32_t fetchdat)
{
if ((CPL || (eflags&VM_FLAG)) && (cr0&1))
{
pclog("Can't load TRx\n");
x386_dynarec_log("Can't load TRx\n");
x86gpf(NULL, 0);
return 1;
}
@@ -292,7 +292,7 @@ static int opMOV_TRx_r_a32(uint32_t fetchdat)
{
if ((CPL || (eflags&VM_FLAG)) && (cr0&1))
{
pclog("Can't load TRx\n");
x386_dynarec_log("Can't load TRx\n");
x86gpf(NULL, 0);
return 1;
}

View File

@@ -4,7 +4,7 @@ static int opARPL_a16(uint32_t fetchdat)
NOTRM
fetch_ea_16(fetchdat);
/* pclog("ARPL_a16\n"); */
/* x386_dynarec_log("ARPL_a16\n"); */
temp_seg = geteaw(); if (cpu_state.abrt) return 1;
flags_rebuild();
@@ -27,7 +27,7 @@ static int opARPL_a32(uint32_t fetchdat)
NOTRM
fetch_ea_32(fetchdat);
/* pclog("ARPL_a32\n"); */
/* x386_dynarec_log("ARPL_a32\n"); */
temp_seg = geteaw(); if (cpu_state.abrt) return 1;
flags_rebuild();
@@ -159,7 +159,7 @@ static int op0F00_common(uint32_t fetchdat, int ea32)
uint16_t desc, sel;
uint8_t access;
/* pclog("op0F00 %02X %04X:%04X\n", rmdat & 0x38, CS, pc); */
/* x386_dynarec_log("op0F00 %02X %04X:%04X\n", rmdat & 0x38, CS, pc); */
switch (rmdat & 0x38)
{
case 0x00: /*SLDT*/
@@ -175,7 +175,7 @@ static int op0F00_common(uint32_t fetchdat, int ea32)
case 0x10: /*LLDT*/
if ((CPL || eflags&VM_FLAG) && (cr0&1))
{
pclog("Invalid LLDT!\n");
x386_dynarec_log("Invalid LLDT!\n");
x86gpf(NULL,0);
return 1;
}
@@ -201,7 +201,7 @@ static int op0F00_common(uint32_t fetchdat, int ea32)
case 0x18: /*LTR*/
if ((CPL || eflags&VM_FLAG) && (cr0&1))
{
pclog("Invalid LTR!\n");
x386_dynarec_log("Invalid LTR!\n");
x86gpf(NULL,0);
break;
}
@@ -267,7 +267,7 @@ static int op0F00_common(uint32_t fetchdat, int ea32)
break;
default:
pclog("Bad 0F 00 opcode %02X\n", rmdat & 0x38);
x386_dynarec_log("Bad 0F 00 opcode %02X\n", rmdat & 0x38);
cpu_state.pc -= 3;
x86illegal();
break;
@@ -296,7 +296,7 @@ static int op0F01_common(uint32_t fetchdat, int is32, int is286, int ea32)
{
uint32_t base;
uint16_t limit, tempw;
/* pclog("op0F01 %02X %04X:%04X\n", rmdat & 0x38, CS, pc); */
/* x386_dynarec_log("op0F01 %02X %04X:%04X\n", rmdat & 0x38, CS, pc); */
switch (rmdat & 0x38)
{
case 0x00: /*SGDT*/
@@ -320,14 +320,14 @@ static int op0F01_common(uint32_t fetchdat, int is32, int is286, int ea32)
case 0x10: /*LGDT*/
if ((CPL || eflags&VM_FLAG) && (cr0&1))
{
pclog("Invalid LGDT!\n");
x386_dynarec_log("Invalid LGDT!\n");
x86gpf(NULL,0);
break;
}
/* pclog("LGDT %08X:%08X\n", easeg, eaaddr); */
/* x386_dynarec_log("LGDT %08X:%08X\n", easeg, eaaddr); */
limit = geteaw();
base = readmeml(0, easeg + cpu_state.eaaddr + 2); if (cpu_state.abrt) return 1;
/* pclog(" %08X %04X\n", base, limit); */
/* x386_dynarec_log(" %08X %04X\n", base, limit); */
gdt.limit = limit;
gdt.base = base;
if (!is32) gdt.base &= 0xffffff;
@@ -337,14 +337,14 @@ static int op0F01_common(uint32_t fetchdat, int is32, int is286, int ea32)
case 0x18: /*LIDT*/
if ((CPL || eflags&VM_FLAG) && (cr0&1))
{
pclog("Invalid LIDT!\n");
x386_dynarec_log("Invalid LIDT!\n");
x86gpf(NULL,0);
break;
}
/* pclog("LIDT %08X:%08X\n", easeg, eaaddr); */
/* x386_dynarec_log("LIDT %08X:%08X\n", easeg, eaaddr); */
limit = geteaw();
base = readmeml(0, easeg + cpu_state.eaaddr + 2); if (cpu_state.abrt) return 1;
/* pclog(" %08X %04X\n", base, limit); */
/* x386_dynarec_log(" %08X %04X\n", base, limit); */
idt.limit = limit;
idt.base = base;
if (!is32) idt.base &= 0xffffff;
@@ -362,7 +362,7 @@ static int op0F01_common(uint32_t fetchdat, int is32, int is286, int ea32)
case 0x30: /*LMSW*/
if ((CPL || eflags&VM_FLAG) && (msw&1))
{
pclog("LMSW - ring not zero!\n");
x386_dynarec_log("LMSW - ring not zero!\n");
x86gpf(NULL, 0);
break;
}
@@ -387,7 +387,7 @@ static int op0F01_common(uint32_t fetchdat, int is32, int is286, int ea32)
{
if ((CPL || eflags&VM_FLAG) && (cr0&1))
{
pclog("Invalid INVLPG!\n");
x386_dynarec_log("Invalid INVLPG!\n");
x86gpf(NULL, 0);
break;
}
@@ -398,7 +398,7 @@ static int op0F01_common(uint32_t fetchdat, int is32, int is286, int ea32)
}
default:
pclog("Bad 0F 01 opcode %02X\n", rmdat & 0x38);
x386_dynarec_log("Bad 0F 01 opcode %02X\n", rmdat & 0x38);
cpu_state.pc -= 3;
x86illegal();
break;

View File

@@ -8,7 +8,7 @@
*
* x86 CPU segment emulation.
*
* Version: @(#)x86seg.c 1.0.7 2018/04/29
* Version: @(#)x86seg.c 1.0.8 2018/10/17
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -63,13 +63,11 @@ void pmodeint(int num, int soft);
#ifdef ENABLE_X86SEG_LOG
int x86seg_do_log = ENABLE_X86SEG_LOG;
#endif
static void
x86seg_log(const char *fmt, ...)
{
#ifdef ENABLE_X86SEG_LOG
va_list ap;
if (x86seg_do_log) {
@@ -77,8 +75,10 @@ x86seg_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define x86seg_log(fmt, ...)
#endif
void x86abort(const char *format, ...)

View File

@@ -19,13 +19,11 @@
#ifdef ENABLE_FPU_LOG
int fpu_do_log = ENABLE_FPU_LOG;
#endif
static void
fpu_log(const char *fmt, ...)
{
#ifdef ENABLE_FPU_LOG
va_list ap;
if (fpu_log) {
@@ -33,8 +31,10 @@ fpu_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define fpu_log(fmt, ...)
#endif
uint16_t x87_gettag()

View File

@@ -8,7 +8,7 @@
*
* x87 FPU instructions core.
*
* Version: @(#)x87_ops.h 1.0.6 2018/08/01
* Version: @(#)x87_ops.h 1.0.7 2018/10/17
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Sarah Walker, <tommowalker@tommowalker.co.uk>
@@ -44,7 +44,13 @@
# include <intrin.h>
#endif
#define fplog 0
#ifdef ENABLE_FPU_LOG
extern void fpu_log(const char *fmt, ...);
#else
#ifndef fpu_log
#define fpu_log(fmt, ...)
#endif
#endif
static int rounding_modes[4] = {FE_TONEAREST, FE_DOWNWARD, FE_UPWARD, FE_TOWARDZERO};
@@ -66,7 +72,7 @@ static int rounding_modes[4] = {FE_TONEAREST, FE_DOWNWARD, FE_UPWARD, FE_TOWARDZ
dst = src1 / (double)src2; \
else \
{ \
x386_dynarec_log("FPU : divide by zero\n"); \
fpu_log("FPU : divide by zero\n"); \
picint(1 << 13); \
} \
return 1; \
@@ -289,7 +295,7 @@ static __inline uint16_t x87_compare(double a, double b)
{
if (((a == INFINITY) || (a == -INFINITY)) && ((b == INFINITY) || (b == -INFINITY)))
{
/* x386_dynarec_log("Comparing infinity\n"); */
/* fpu_log("Comparing infinity\n"); */
#ifndef _MSC_VER
__asm volatile ("" : : : "memory");

View File

@@ -111,7 +111,7 @@ static int opFADD(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FADD\n");
fpu_log("FADD\n");
ST(0) = ST(0) + ST(fetchdat & 7);
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
CLOCK_CYCLES(8);
@@ -121,7 +121,7 @@ static int opFADDr(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FADD\n");
fpu_log("FADD\n");
ST(fetchdat & 7) = ST(fetchdat & 7) + ST(0);
cpu_state.tag[(cpu_state.TOP + fetchdat) & 7] &= ~TAG_UINT64;
CLOCK_CYCLES(8);
@@ -131,7 +131,7 @@ static int opFADDP(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FADDP\n");
fpu_log("FADDP\n");
ST(fetchdat & 7) = ST(fetchdat & 7) + ST(0);
cpu_state.tag[(cpu_state.TOP + fetchdat) & 7] &= ~TAG_UINT64;
x87_pop();
@@ -143,7 +143,7 @@ static int opFCOM(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FCOM\n");
fpu_log("FCOM\n");
cpu_state.npxs &= ~(C0|C2|C3);
if (ST(0) == ST(fetchdat & 7)) cpu_state.npxs |= C3;
else if (ST(0) < ST(fetchdat & 7)) cpu_state.npxs |= C0;
@@ -155,7 +155,7 @@ static int opFCOMP(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FCOMP\n");
fpu_log("FCOMP\n");
cpu_state.npxs &= ~(C0|C2|C3);
cpu_state.npxs |= x87_compare(ST(0), ST(fetchdat & 7));
x87_pop();
@@ -168,7 +168,7 @@ static int opFCOMPP(uint32_t fetchdat)
uint64_t *p, *q;
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FCOMPP\n");
fpu_log("FCOMPP\n");
cpu_state.npxs &= ~(C0|C2|C3);
p = (uint64_t *)&ST(0);
q = (uint64_t *)&ST(1);
@@ -186,7 +186,7 @@ static int opFUCOMPP(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FUCOMPP\n", easeg, cpu_state.eaaddr);
fpu_log("FUCOMPP\n", easeg, cpu_state.eaaddr);
cpu_state.npxs &= ~(C0|C2|C3);
cpu_state.npxs |= x87_ucompare(ST(0), ST(1));
x87_pop();
@@ -199,7 +199,7 @@ static int opFCOMI(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FICOM\n");
fpu_log("FICOM\n");
flags_rebuild();
flags &= ~(Z_FLAG | P_FLAG | C_FLAG);
if (ST(0) == ST(fetchdat & 7)) flags |= Z_FLAG;
@@ -211,7 +211,7 @@ static int opFCOMIP(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FICOMP\n");
fpu_log("FICOMP\n");
flags_rebuild();
flags &= ~(Z_FLAG | P_FLAG | C_FLAG);
if (ST(0) == ST(fetchdat & 7)) flags |= Z_FLAG;
@@ -225,7 +225,7 @@ static int opFDIV(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FDIV\n");
fpu_log("FDIV\n");
x87_div(ST(0), ST(0), ST(fetchdat & 7));
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
CLOCK_CYCLES(73);
@@ -235,7 +235,7 @@ static int opFDIVr(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FDIV\n");
fpu_log("FDIV\n");
x87_div(ST(fetchdat & 7), ST(fetchdat & 7), ST(0));
cpu_state.tag[(cpu_state.TOP + fetchdat) & 7] &= ~TAG_UINT64;
CLOCK_CYCLES(73);
@@ -245,7 +245,7 @@ static int opFDIVP(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FDIVP\n");
fpu_log("FDIVP\n");
x87_div(ST(fetchdat & 7), ST(fetchdat & 7), ST(0));
cpu_state.tag[(cpu_state.TOP + fetchdat) & 7] &= ~TAG_UINT64;
x87_pop();
@@ -257,7 +257,7 @@ static int opFDIVR(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FDIVR\n");
fpu_log("FDIVR\n");
x87_div(ST(0), ST(fetchdat&7), ST(0));
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
CLOCK_CYCLES(73);
@@ -267,7 +267,7 @@ static int opFDIVRr(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FDIVR\n");
fpu_log("FDIVR\n");
x87_div(ST(fetchdat & 7), ST(0), ST(fetchdat & 7));
cpu_state.tag[(cpu_state.TOP + fetchdat) & 7] &= ~TAG_UINT64;
CLOCK_CYCLES(73);
@@ -277,7 +277,7 @@ static int opFDIVRP(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FDIVR\n");
fpu_log("FDIVR\n");
x87_div(ST(fetchdat & 7), ST(0), ST(fetchdat & 7));
cpu_state.tag[(cpu_state.TOP + fetchdat) & 7] &= ~TAG_UINT64;
x87_pop();
@@ -289,7 +289,7 @@ static int opFMUL(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FMUL\n");
fpu_log("FMUL\n");
ST(0) = ST(0) * ST(fetchdat & 7);
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
CLOCK_CYCLES(16);
@@ -299,7 +299,7 @@ static int opFMULr(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FMUL\n");
fpu_log("FMUL\n");
ST(fetchdat & 7) = ST(0) * ST(fetchdat & 7);
cpu_state.tag[(cpu_state.TOP + fetchdat) & 7] &= ~TAG_UINT64;
CLOCK_CYCLES(16);
@@ -309,7 +309,7 @@ static int opFMULP(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FMULP\n");
fpu_log("FMULP\n");
ST(fetchdat & 7) = ST(0) * ST(fetchdat & 7);
cpu_state.tag[(cpu_state.TOP + fetchdat) & 7] &= ~TAG_UINT64;
x87_pop();
@@ -321,7 +321,7 @@ static int opFSUB(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FSUB\n");
fpu_log("FSUB\n");
ST(0) = ST(0) - ST(fetchdat & 7);
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
CLOCK_CYCLES(8);
@@ -331,7 +331,7 @@ static int opFSUBr(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FSUB\n");
fpu_log("FSUB\n");
ST(fetchdat & 7) = ST(fetchdat & 7) - ST(0);
cpu_state.tag[(cpu_state.TOP + fetchdat) & 7] &= ~TAG_UINT64;
CLOCK_CYCLES(8);
@@ -341,7 +341,7 @@ static int opFSUBP(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FSUBP\n");
fpu_log("FSUBP\n");
ST(fetchdat & 7) = ST(fetchdat & 7) - ST(0);
cpu_state.tag[(cpu_state.TOP + fetchdat) & 7] &= ~TAG_UINT64;
x87_pop();
@@ -353,7 +353,7 @@ static int opFSUBR(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FSUBR\n");
fpu_log("FSUBR\n");
ST(0) = ST(fetchdat & 7) - ST(0);
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
CLOCK_CYCLES(8);
@@ -363,7 +363,7 @@ static int opFSUBRr(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FSUBR\n");
fpu_log("FSUBR\n");
ST(fetchdat & 7) = ST(0) - ST(fetchdat & 7);
cpu_state.tag[(cpu_state.TOP + fetchdat) & 7] &= ~TAG_UINT64;
CLOCK_CYCLES(8);
@@ -373,7 +373,7 @@ static int opFSUBRP(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FSUBRP\n");
fpu_log("FSUBRP\n");
ST(fetchdat & 7) = ST(0) - ST(fetchdat & 7);
cpu_state.tag[(cpu_state.TOP + fetchdat) & 7] &= ~TAG_UINT64;
x87_pop();
@@ -385,7 +385,7 @@ static int opFUCOM(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FUCOM\n");
fpu_log("FUCOM\n");
cpu_state.npxs &= ~(C0|C2|C3);
cpu_state.npxs |= x87_ucompare(ST(0), ST(fetchdat & 7));
CLOCK_CYCLES(4);
@@ -396,7 +396,7 @@ static int opFUCOMP(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FUCOMP\n");
fpu_log("FUCOMP\n");
cpu_state.npxs &= ~(C0|C2|C3);
cpu_state.npxs |= x87_ucompare(ST(0), ST(fetchdat & 7));
x87_pop();
@@ -408,7 +408,7 @@ static int opFUCOMI(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FUCOMI\n");
fpu_log("FUCOMI\n");
flags_rebuild();
flags &= ~(Z_FLAG | P_FLAG | C_FLAG);
if (ST(0) == ST(fetchdat & 7)) flags |= Z_FLAG;
@@ -420,7 +420,7 @@ static int opFUCOMIP(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
x386_dynarec_log("FUCOMIP\n");
fpu_log("FUCOMIP\n");
flags_rebuild();
flags &= ~(Z_FLAG | P_FLAG | C_FLAG);
if (ST(0) == ST(fetchdat & 7)) flags |= Z_FLAG;

View File

@@ -8,7 +8,7 @@
*
* x87 FPU instructions core.
*
* Version: @(#)x87_ops_loadstore.h 1.0.0 2017/05/30
* Version: @(#)x87_ops_loadstore.h 1.0.1 2017/10/17
*
* Author: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -21,9 +21,9 @@ static int opFILDiw_a16(uint32_t fetchdat)
int16_t temp;
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FILDw %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FILDw %08X:%08X\n", easeg, cpu_state.eaaddr);
temp = geteaw(); if (cpu_state.abrt) return 1;
if (fplog) pclog(" %f\n", (double)temp);
fpu_log(" %f\n", (double)temp);
x87_push((double)temp);
CLOCK_CYCLES(13);
return 0;
@@ -33,9 +33,9 @@ static int opFILDiw_a32(uint32_t fetchdat)
int16_t temp;
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FILDw %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FILDw %08X:%08X\n", easeg, cpu_state.eaaddr);
temp = geteaw(); if (cpu_state.abrt) return 1;
if (fplog) pclog(" %f\n", (double)temp);
fpu_log(" %f\n", (double)temp);
x87_push((double)temp);
CLOCK_CYCLES(13);
return 0;
@@ -46,7 +46,7 @@ static int opFISTiw_a16(uint32_t fetchdat)
int64_t temp64;
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FISTw %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FISTw %08X:%08X\n", easeg, cpu_state.eaaddr);
temp64 = x87_fround(ST(0));
/* if (temp64 > 32767 || temp64 < -32768)
fatal("FISTw overflow %i\n", temp64);*/
@@ -59,7 +59,7 @@ static int opFISTiw_a32(uint32_t fetchdat)
int64_t temp64;
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FISTw %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FISTw %08X:%08X\n", easeg, cpu_state.eaaddr);
temp64 = x87_fround(ST(0));
/* if (temp64 > 32767 || temp64 < -32768)
fatal("FISTw overflow %i\n", temp64);*/
@@ -73,7 +73,7 @@ static int opFISTPiw_a16(uint32_t fetchdat)
int64_t temp64;
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FISTw %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FISTw %08X:%08X\n", easeg, cpu_state.eaaddr);
temp64 = x87_fround(ST(0));
/* if (temp64 > 32767 || temp64 < -32768)
fatal("FISTw overflow %i\n", temp64);*/
@@ -87,7 +87,7 @@ static int opFISTPiw_a32(uint32_t fetchdat)
int64_t temp64;
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FISTw %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FISTw %08X:%08X\n", easeg, cpu_state.eaaddr);
temp64 = x87_fround(ST(0));
/* if (temp64 > 32767 || temp64 < -32768)
fatal("FISTw overflow %i\n", temp64);*/
@@ -102,9 +102,9 @@ static int opFILDiq_a16(uint32_t fetchdat)
int64_t temp64;
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FILDl %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FILDl %08X:%08X\n", easeg, cpu_state.eaaddr);
temp64 = geteaq(); if (cpu_state.abrt) return 1;
if (fplog) pclog(" %f %08X %08X\n", (double)temp64, readmeml(easeg,cpu_state.eaaddr), readmeml(easeg,cpu_state.eaaddr+4));
fpu_log(" %f %08X %08X\n", (double)temp64, readmeml(easeg,cpu_state.eaaddr), readmeml(easeg,cpu_state.eaaddr+4));
x87_push((double)temp64);
cpu_state.MM[cpu_state.TOP].q = temp64;
cpu_state.tag[cpu_state.TOP] |= TAG_UINT64;
@@ -117,9 +117,9 @@ static int opFILDiq_a32(uint32_t fetchdat)
int64_t temp64;
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FILDl %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FILDl %08X:%08X\n", easeg, cpu_state.eaaddr);
temp64 = geteaq(); if (cpu_state.abrt) return 1;
if (fplog) pclog(" %f %08X %08X\n", (double)temp64, readmeml(easeg,cpu_state.eaaddr), readmeml(easeg,cpu_state.eaaddr+4));
fpu_log(" %f %08X %08X\n", (double)temp64, readmeml(easeg,cpu_state.eaaddr), readmeml(easeg,cpu_state.eaaddr+4));
x87_push((double)temp64);
cpu_state.MM[cpu_state.TOP].q = temp64;
cpu_state.tag[cpu_state.TOP] |= TAG_UINT64;
@@ -134,7 +134,7 @@ static int FBSTP_a16(uint32_t fetchdat)
int c;
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FBSTP %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FBSTP %08X:%08X\n", easeg, cpu_state.eaaddr);
tempd = ST(0);
if (tempd < 0.0)
tempd = -tempd;
@@ -160,7 +160,7 @@ static int FBSTP_a32(uint32_t fetchdat)
int c;
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FBSTP %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FBSTP %08X:%08X\n", easeg, cpu_state.eaaddr);
tempd = ST(0);
if (tempd < 0.0)
tempd = -tempd;
@@ -186,7 +186,7 @@ static int FISTPiq_a16(uint32_t fetchdat)
int64_t temp64;
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FISTPl %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FISTPl %08X:%08X\n", easeg, cpu_state.eaaddr);
if (cpu_state.tag[cpu_state.TOP] & TAG_UINT64)
temp64 = cpu_state.MM[cpu_state.TOP].q;
else
@@ -201,7 +201,7 @@ static int FISTPiq_a32(uint32_t fetchdat)
int64_t temp64;
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FISTPl %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FISTPl %08X:%08X\n", easeg, cpu_state.eaaddr);
if (cpu_state.tag[cpu_state.TOP] & TAG_UINT64)
temp64 = cpu_state.MM[cpu_state.TOP].q;
else
@@ -217,9 +217,9 @@ static int opFILDil_a16(uint32_t fetchdat)
int32_t templ;
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FILDs %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FILDs %08X:%08X\n", easeg, cpu_state.eaaddr);
templ = geteal(); if (cpu_state.abrt) return 1;
if (fplog) pclog(" %f %08X %i\n", (double)templ, templ, templ);
fpu_log(" %f %08X %i\n", (double)templ, templ, templ);
x87_push((double)templ);
CLOCK_CYCLES(9);
return 0;
@@ -229,9 +229,9 @@ static int opFILDil_a32(uint32_t fetchdat)
int32_t templ;
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FILDs %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FILDs %08X:%08X\n", easeg, cpu_state.eaaddr);
templ = geteal(); if (cpu_state.abrt) return 1;
if (fplog) pclog(" %f %08X %i\n", (double)templ, templ, templ);
fpu_log(" %f %08X %i\n", (double)templ, templ, templ);
x87_push((double)templ);
CLOCK_CYCLES(9);
return 0;
@@ -242,7 +242,7 @@ static int opFISTil_a16(uint32_t fetchdat)
int64_t temp64;
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FISTs %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FISTs %08X:%08X\n", easeg, cpu_state.eaaddr);
temp64 = x87_fround(ST(0));
/* if (temp64 > 2147483647 || temp64 < -2147483647)
fatal("FISTl out of range! %i\n", temp64);*/
@@ -255,7 +255,7 @@ static int opFISTil_a32(uint32_t fetchdat)
int64_t temp64;
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FISTs %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FISTs %08X:%08X\n", easeg, cpu_state.eaaddr);
temp64 = x87_fround(ST(0));
/* if (temp64 > 2147483647 || temp64 < -2147483647)
fatal("FISTl out of range! %i\n", temp64);*/
@@ -269,7 +269,7 @@ static int opFISTPil_a16(uint32_t fetchdat)
int64_t temp64;
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FISTs %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FISTs %08X:%08X\n", easeg, cpu_state.eaaddr);
temp64 = x87_fround(ST(0));
/* if (temp64 > 2147483647 || temp64 < -2147483647)
fatal("FISTl out of range! %i\n", temp64);*/
@@ -283,7 +283,7 @@ static int opFISTPil_a32(uint32_t fetchdat)
int64_t temp64;
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FISTs %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FISTs %08X:%08X\n", easeg, cpu_state.eaaddr);
temp64 = x87_fround(ST(0));
/* if (temp64 > 2147483647 || temp64 < -2147483647)
fatal("FISTl out of range! %i\n", temp64);*/
@@ -298,9 +298,9 @@ static int opFLDe_a16(uint32_t fetchdat)
double t;
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FLDe %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FLDe %08X:%08X\n", easeg, cpu_state.eaaddr);
t=x87_ld80(); if (cpu_state.abrt) return 1;
if (fplog) pclog(" %f\n", t);
fpu_log(" %f\n", t);
x87_push(t);
CLOCK_CYCLES(6);
return 0;
@@ -310,9 +310,9 @@ static int opFLDe_a32(uint32_t fetchdat)
double t;
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FLDe %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FLDe %08X:%08X\n", easeg, cpu_state.eaaddr);
t=x87_ld80(); if (cpu_state.abrt) return 1;
if (fplog) pclog(" %f\n", t);
fpu_log(" %f\n", t);
x87_push(t);
CLOCK_CYCLES(6);
return 0;
@@ -322,7 +322,7 @@ static int opFSTPe_a16(uint32_t fetchdat)
{
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FSTPe %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FSTPe %08X:%08X\n", easeg, cpu_state.eaaddr);
x87_st80(ST(0)); if (cpu_state.abrt) return 1;
x87_pop();
CLOCK_CYCLES(6);
@@ -332,7 +332,7 @@ static int opFSTPe_a32(uint32_t fetchdat)
{
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FSTPe %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FSTPe %08X:%08X\n", easeg, cpu_state.eaaddr);
x87_st80(ST(0)); if (cpu_state.abrt) return 1;
x87_pop();
CLOCK_CYCLES(6);
@@ -344,9 +344,9 @@ static int opFLDd_a16(uint32_t fetchdat)
x87_td t;
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FLDd %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FLDd %08X:%08X\n", easeg, cpu_state.eaaddr);
t.i = geteaq(); if (cpu_state.abrt) return 1;
if (fplog) pclog(" %f\n", t.d);
fpu_log(" %f\n", t.d);
x87_push(t.d);
CLOCK_CYCLES(3);
return 0;
@@ -356,9 +356,9 @@ static int opFLDd_a32(uint32_t fetchdat)
x87_td t;
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FLDd %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FLDd %08X:%08X\n", easeg, cpu_state.eaaddr);
t.i = geteaq(); if (cpu_state.abrt) return 1;
if (fplog) pclog(" %f\n", t.d);
fpu_log(" %f\n", t.d);
x87_push(t.d);
CLOCK_CYCLES(3);
return 0;
@@ -369,7 +369,7 @@ static int opFSTd_a16(uint32_t fetchdat)
x87_td t;
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FSTd %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FSTd %08X:%08X\n", easeg, cpu_state.eaaddr);
t.d = ST(0);
seteaq(t.i);
CLOCK_CYCLES(8);
@@ -380,7 +380,7 @@ static int opFSTd_a32(uint32_t fetchdat)
x87_td t;
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FSTd %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FSTd %08X:%08X\n", easeg, cpu_state.eaaddr);
t.d = ST(0);
seteaq(t.i);
CLOCK_CYCLES(8);
@@ -393,7 +393,7 @@ static int opFSTPd_a16(uint32_t fetchdat)
FP_ENTER();
fetch_ea_16(fetchdat);
CHECK_WRITE(cpu_state.ea_seg, cpu_state.eaaddr, cpu_state.eaaddr + 7);
if (fplog) pclog("FSTd %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FSTd %08X:%08X\n", easeg, cpu_state.eaaddr);
t.d = ST(0);
seteaq(t.i); if (cpu_state.abrt) return 1;
x87_pop();
@@ -406,7 +406,7 @@ static int opFSTPd_a32(uint32_t fetchdat)
FP_ENTER();
fetch_ea_32(fetchdat);
CHECK_WRITE(cpu_state.ea_seg, cpu_state.eaaddr, cpu_state.eaaddr + 7);
if (fplog) pclog("FSTd %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FSTd %08X:%08X\n", easeg, cpu_state.eaaddr);
t.d = ST(0);
seteaq(t.i); if (cpu_state.abrt) return 1;
x87_pop();
@@ -419,9 +419,9 @@ static int opFLDs_a16(uint32_t fetchdat)
x87_ts ts;
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FLDs %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FLDs %08X:%08X\n", easeg, cpu_state.eaaddr);
ts.i = geteal(); if (cpu_state.abrt) return 1;
if (fplog) pclog(" %f\n", ts.s);
fpu_log(" %f\n", ts.s);
x87_push((double)ts.s);
CLOCK_CYCLES(3);
return 0;
@@ -431,9 +431,9 @@ static int opFLDs_a32(uint32_t fetchdat)
x87_ts ts;
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FLDs %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FLDs %08X:%08X\n", easeg, cpu_state.eaaddr);
ts.i = geteal(); if (cpu_state.abrt) return 1;
if (fplog) pclog(" %f\n", ts.s);
fpu_log(" %f\n", ts.s);
x87_push((double)ts.s);
CLOCK_CYCLES(3);
return 0;
@@ -444,7 +444,7 @@ static int opFSTs_a16(uint32_t fetchdat)
x87_ts ts;
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FSTs %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FSTs %08X:%08X\n", easeg, cpu_state.eaaddr);
ts.s = (float)ST(0);
seteal(ts.i);
CLOCK_CYCLES(7);
@@ -455,7 +455,7 @@ static int opFSTs_a32(uint32_t fetchdat)
x87_ts ts;
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FSTs %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FSTs %08X:%08X\n", easeg, cpu_state.eaaddr);
ts.s = (float)ST(0);
seteal(ts.i);
CLOCK_CYCLES(7);
@@ -467,7 +467,7 @@ static int opFSTPs_a16(uint32_t fetchdat)
x87_ts ts;
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FSTs %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FSTs %08X:%08X\n", easeg, cpu_state.eaaddr);
ts.s = (float)ST(0);
seteal(ts.i); if (cpu_state.abrt) return 1;
x87_pop();
@@ -479,7 +479,7 @@ static int opFSTPs_a32(uint32_t fetchdat)
x87_ts ts;
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FSTs %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FSTs %08X:%08X\n", easeg, cpu_state.eaaddr);
ts.s = (float)ST(0);
seteal(ts.i); if (cpu_state.abrt) return 1;
x87_pop();

View File

@@ -2,7 +2,7 @@ static int opFSTSW_AX(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FSTSW\n");
fpu_log("FSTSW\n");
AX = cpu_state.npxs;
CLOCK_CYCLES(3);
return 0;
@@ -48,7 +48,7 @@ static int opFFREE(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FFREE\n");
fpu_log("FFREE\n");
cpu_state.tag[(cpu_state.TOP + fetchdat) & 7] = 3;
CLOCK_CYCLES(3);
return 0;
@@ -58,7 +58,7 @@ static int opFFREEP(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FFREE\n");
fpu_log("FFREE\n");
cpu_state.tag[(cpu_state.TOP + fetchdat) & 7] = 3; if (cpu_state.abrt) return 1;
x87_pop();
CLOCK_CYCLES(3);
@@ -69,7 +69,7 @@ static int opFST(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FST\n");
fpu_log("FST\n");
ST(fetchdat & 7) = ST(0);
cpu_state.tag[(cpu_state.TOP + fetchdat) & 7] = cpu_state.tag[cpu_state.TOP & 7];
CLOCK_CYCLES(3);
@@ -80,7 +80,7 @@ static int opFSTP(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FSTP\n");
fpu_log("FSTP\n");
ST(fetchdat & 7) = ST(0);
cpu_state.tag[(cpu_state.TOP + fetchdat) & 7] = cpu_state.tag[cpu_state.TOP & 7];
x87_pop();
@@ -135,7 +135,7 @@ static int FSTOR()
cpu_state.ismmx = 1;
CLOCK_CYCLES((cr0 & 1) ? 34 : 44);
if (fplog) pclog("FRSTOR %08X:%08X %i %i %04X\n", easeg, cpu_state.eaaddr, cpu_state.ismmx, cpu_state.TOP, x87_gettag());
fpu_log("FRSTOR %08X:%08X %i %i %04X\n", easeg, cpu_state.eaaddr, cpu_state.ismmx, cpu_state.TOP, x87_gettag());
return cpu_state.abrt;
}
static int opFSTOR_a16(uint32_t fetchdat)
@@ -158,7 +158,7 @@ static int FSAVE()
uint64_t *p;
FP_ENTER();
if (fplog) pclog("FSAVE %08X:%08X %i\n", easeg, cpu_state.eaaddr, cpu_state.ismmx);
fpu_log("FSAVE %08X:%08X %i\n", easeg, cpu_state.eaaddr, cpu_state.ismmx);
cpu_state.npxs = (cpu_state.npxs & ~(7 << 11)) | (cpu_state.TOP << 11);
switch ((cr0 & 1) | (cpu_state.op32 & 0x100))
@@ -320,7 +320,7 @@ static int opFSTSW_a16(uint32_t fetchdat)
{
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FSTSW %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FSTSW %08X:%08X\n", easeg, cpu_state.eaaddr);
seteaw((cpu_state.npxs & 0xC7FF) | (cpu_state.TOP << 11));
CLOCK_CYCLES(3);
return cpu_state.abrt;
@@ -329,7 +329,7 @@ static int opFSTSW_a32(uint32_t fetchdat)
{
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FSTSW %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FSTSW %08X:%08X\n", easeg, cpu_state.eaaddr);
seteaw((cpu_state.npxs & 0xC7FF) | (cpu_state.TOP << 11));
CLOCK_CYCLES(3);
return cpu_state.abrt;
@@ -343,7 +343,7 @@ static int opFLD(uint32_t fetchdat)
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FLD %f\n", ST(fetchdat & 7));
fpu_log("FLD %f\n", ST(fetchdat & 7));
old_tag = cpu_state.tag[(cpu_state.TOP + fetchdat) & 7];
old_i64 = cpu_state.MM[(cpu_state.TOP + fetchdat) & 7].q;
x87_push(ST(fetchdat&7));
@@ -360,7 +360,7 @@ static int opFXCH(uint32_t fetchdat)
uint64_t old_i64;
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FXCH\n");
fpu_log("FXCH\n");
td = ST(0);
ST(0) = ST(fetchdat&7);
ST(fetchdat&7) = td;
@@ -379,7 +379,7 @@ static int opFCHS(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FCHS\n");
fpu_log("FCHS\n");
ST(0) = -ST(0);
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
CLOCK_CYCLES(6);
@@ -390,7 +390,7 @@ static int opFABS(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FABS %f\n", ST(0));
fpu_log("FABS %f\n", ST(0));
ST(0) = fabs(ST(0));
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
CLOCK_CYCLES(3);
@@ -401,7 +401,7 @@ static int opFTST(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FTST\n");
fpu_log("FTST\n");
cpu_state.npxs &= ~(C0|C2|C3);
if (ST(0) == 0.0) cpu_state.npxs |= C3;
else if (ST(0) < 0.0) cpu_state.npxs |= C0;
@@ -413,7 +413,7 @@ static int opFXAM(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FXAM %i %f\n", cpu_state.tag[cpu_state.TOP&7], ST(0));
fpu_log("FXAM %i %f\n", cpu_state.tag[cpu_state.TOP&7], ST(0));
cpu_state.npxs &= ~(C0|C1|C2|C3);
if (cpu_state.tag[cpu_state.TOP&7] == 3) cpu_state.npxs |= (C0|C3);
else if (ST(0) == 0.0) cpu_state.npxs |= C3;
@@ -427,7 +427,7 @@ static int opFLD1(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FLD1\n");
fpu_log("FLD1\n");
x87_push(1.0);
CLOCK_CYCLES(4);
return 0;
@@ -437,7 +437,7 @@ static int opFLDL2T(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FLDL2T\n");
fpu_log("FLDL2T\n");
x87_push(3.3219280948873623);
CLOCK_CYCLES(8);
return 0;
@@ -447,7 +447,7 @@ static int opFLDL2E(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FLDL2E\n");
fpu_log("FLDL2E\n");
x87_push(1.4426950408889634);
CLOCK_CYCLES(8);
return 0;
@@ -457,7 +457,7 @@ static int opFLDPI(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FLDPI\n");
fpu_log("FLDPI\n");
x87_push(3.141592653589793);
CLOCK_CYCLES(8);
return 0;
@@ -467,7 +467,7 @@ static int opFLDEG2(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FLDEG2\n");
fpu_log("FLDEG2\n");
x87_push(0.3010299956639812);
CLOCK_CYCLES(8);
return 0;
@@ -477,7 +477,7 @@ static int opFLDLN2(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FLDLN2\n");
fpu_log("FLDLN2\n");
x87_push_u64(0x3fe62e42fefa39f0ull);
CLOCK_CYCLES(8);
return 0;
@@ -487,7 +487,7 @@ static int opFLDZ(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FLDZ\n");
fpu_log("FLDZ\n");
x87_push(0.0);
cpu_state.tag[cpu_state.TOP&7] = 1;
CLOCK_CYCLES(4);
@@ -498,7 +498,7 @@ static int opF2XM1(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("F2XM1\n");
fpu_log("F2XM1\n");
ST(0) = pow(2.0, ST(0)) - 1.0;
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
CLOCK_CYCLES(200);
@@ -509,7 +509,7 @@ static int opFYL2X(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FYL2X\n");
fpu_log("FYL2X\n");
ST(1) = ST(1) * (log(ST(0)) / log(2.0));
cpu_state.tag[(cpu_state.TOP + 1) & 7] &= ~TAG_UINT64;
x87_pop();
@@ -521,7 +521,7 @@ static int opFYL2XP1(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FYL2XP1\n");
fpu_log("FYL2XP1\n");
ST(1) = ST(1) * (log1p(ST(0)) / log(2.0));
cpu_state.tag[(cpu_state.TOP + 1) & 7] &= ~TAG_UINT64;
x87_pop();
@@ -533,7 +533,7 @@ static int opFPTAN(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FPTAN\n");
fpu_log("FPTAN\n");
ST(0) = tan(ST(0));
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
x87_push(1.0);
@@ -546,7 +546,7 @@ static int opFPATAN(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FPATAN\n");
fpu_log("FPATAN\n");
ST(1) = atan2(ST(1), ST(0));
cpu_state.tag[(cpu_state.TOP + 1) & 7] &= ~TAG_UINT64;
x87_pop();
@@ -558,7 +558,7 @@ static int opFDECSTP(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FDECSTP\n");
fpu_log("FDECSTP\n");
cpu_state.TOP = (cpu_state.TOP - 1) & 7;
CLOCK_CYCLES(4);
return 0;
@@ -568,7 +568,7 @@ static int opFINCSTP(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FDECSTP\n");
fpu_log("FDECSTP\n");
cpu_state.TOP = (cpu_state.TOP + 1) & 7;
CLOCK_CYCLES(4);
return 0;
@@ -579,11 +579,11 @@ static int opFPREM(uint32_t fetchdat)
int64_t temp64;
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FPREM %f %f ", ST(0), ST(1));
fpu_log("FPREM %f %f ", ST(0), ST(1));
temp64 = (int64_t)(ST(0) / ST(1));
ST(0) = ST(0) - (ST(1) * (double)temp64);
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
if (fplog) pclog("%f\n", ST(0));
fpu_log("%f\n", ST(0));
cpu_state.npxs &= ~(C0|C1|C2|C3);
if (temp64 & 4) cpu_state.npxs|=C0;
if (temp64 & 2) cpu_state.npxs|=C3;
@@ -596,11 +596,11 @@ static int opFPREM1(uint32_t fetchdat)
int64_t temp64;
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FPREM1 %f %f ", ST(0), ST(1));
fpu_log("FPREM1 %f %f ", ST(0), ST(1));
temp64 = (int64_t)(ST(0) / ST(1));
ST(0) = ST(0) - (ST(1) * (double)temp64);
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
if (fplog) pclog("%f\n", ST(0));
fpu_log("%f\n", ST(0));
cpu_state.npxs &= ~(C0|C1|C2|C3);
if (temp64 & 4) cpu_state.npxs|=C0;
if (temp64 & 2) cpu_state.npxs|=C3;
@@ -613,7 +613,7 @@ static int opFSQRT(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FSQRT\n");
fpu_log("FSQRT\n");
ST(0) = sqrt(ST(0));
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
CLOCK_CYCLES(83);
@@ -625,7 +625,7 @@ static int opFSINCOS(uint32_t fetchdat)
double td;
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FSINCOS\n");
fpu_log("FSINCOS\n");
td = ST(0);
ST(0) = sin(td);
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
@@ -639,10 +639,10 @@ static int opFRNDINT(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FRNDINT %g ", ST(0));
fpu_log("FRNDINT %g ", ST(0));
ST(0) = (double)x87_fround(ST(0));
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
if (fplog) pclog("%g\n", ST(0));
fpu_log("%g\n", ST(0));
CLOCK_CYCLES(21);
return 0;
}
@@ -652,7 +652,7 @@ static int opFSCALE(uint32_t fetchdat)
int64_t temp64;
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FSCALE\n");
fpu_log("FSCALE\n");
temp64 = (int64_t)ST(1);
ST(0) = ST(0) * pow(2.0, (double)temp64);
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
@@ -664,7 +664,7 @@ static int opFSIN(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FSIN\n");
fpu_log("FSIN\n");
ST(0) = sin(ST(0));
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
cpu_state.npxs &= ~C2;
@@ -676,7 +676,7 @@ static int opFCOS(uint32_t fetchdat)
{
FP_ENTER();
cpu_state.pc++;
if (fplog) pclog("FCOS\n");
fpu_log("FCOS\n");
ST(0) = cos(ST(0));
cpu_state.tag[cpu_state.TOP] &= ~TAG_UINT64;
cpu_state.npxs &= ~C2;
@@ -688,7 +688,7 @@ static int opFCOS(uint32_t fetchdat)
static int FLDENV()
{
FP_ENTER();
if (fplog) pclog("FLDENV %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FLDENV %08X:%08X\n", easeg, cpu_state.eaaddr);
switch ((cr0 & 1) | (cpu_state.op32 & 0x100))
{
case 0x000: /*16-bit real mode*/
@@ -732,7 +732,7 @@ static int opFLDCW_a16(uint32_t fetchdat)
uint16_t tempw;
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FLDCW %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FLDCW %08X:%08X\n", easeg, cpu_state.eaaddr);
tempw = geteaw();
if (cpu_state.abrt) return 1;
cpu_state.npxc = tempw;
@@ -745,7 +745,7 @@ static int opFLDCW_a32(uint32_t fetchdat)
uint16_t tempw;
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FLDCW %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FLDCW %08X:%08X\n", easeg, cpu_state.eaaddr);
tempw = geteaw();
if (cpu_state.abrt) return 1;
cpu_state.npxc = tempw;
@@ -757,7 +757,7 @@ static int opFLDCW_a32(uint32_t fetchdat)
static int FSTENV()
{
FP_ENTER();
if (fplog) pclog("FSTENV %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FSTENV %08X:%08X\n", easeg, cpu_state.eaaddr);
switch ((cr0 & 1) | (cpu_state.op32 & 0x100))
{
case 0x000: /*16-bit real mode*/
@@ -817,7 +817,7 @@ static int opFSTCW_a16(uint32_t fetchdat)
{
FP_ENTER();
fetch_ea_16(fetchdat);
if (fplog) pclog("FSTCW %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FSTCW %08X:%08X\n", easeg, cpu_state.eaaddr);
seteaw(cpu_state.npxc);
CLOCK_CYCLES(3);
return cpu_state.abrt;
@@ -826,7 +826,7 @@ static int opFSTCW_a32(uint32_t fetchdat)
{
FP_ENTER();
fetch_ea_32(fetchdat);
if (fplog) pclog("FSTCW %08X:%08X\n", easeg, cpu_state.eaaddr);
fpu_log("FSTCW %08X:%08X\n", easeg, cpu_state.eaaddr);
seteaw(cpu_state.npxc);
CLOCK_CYCLES(3);
return cpu_state.abrt;
@@ -837,7 +837,7 @@ static int opFSTCW_a32(uint32_t fetchdat)
{ \
FP_ENTER(); \
cpu_state.pc++; \
if (fplog) pclog("FCMOV %f\n", ST(fetchdat & 7)); \
fpu_log("FCMOV %f\n", ST(fetchdat & 7)); \
if (cond_ ## condition) \
{ \
cpu_state.tag[cpu_state.TOP] = cpu_state.tag[(cpu_state.TOP + fetchdat) & 7]; \

View File

@@ -9,7 +9,7 @@
* Implementation of the generic device interface to handle
* all devices attached to the emulator.
*
* Version: @(#)device.c 1.0.19 2018/10/10
* Version: @(#)device.c 1.0.20 2018/10/17
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Miran Grca, <mgrca8@gmail.com>
@@ -69,22 +69,22 @@ static clonedev_t *clones = NULL;
#ifdef ENABLE_DEVICE_LOG
int device_do_log = ENABLE_DEVICE_LOG;
#endif
static void
device_log(const char *format, ...)
device_log(const char *fmt, ...)
{
#ifdef ENABLE_DEVICE_LOG
va_list ap;
if (device_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define device_log(fmt, ...)
#endif
/* Initialize the module for use. */
void
@@ -154,6 +154,7 @@ device_add(const device_t *d)
{
void *priv = NULL;
int c;
device_t *old;
for (c = 0; c < 256; c++) {
if (devices[c] == (device_t *)d) {
@@ -165,6 +166,7 @@ device_add(const device_t *d)
if (c >= DEVICE_MAX)
fatal("DEVICE: too many devices\n");
old = device_current;
device_current = (device_t *)d;
devices[c] = (device_t *)d;
@@ -184,6 +186,7 @@ device_add(const device_t *d)
}
device_priv[c] = priv;
device_current = old;
return(priv);
}
@@ -205,8 +208,6 @@ device_add_ex(const device_t *d, void *priv)
if (c >= DEVICE_MAX)
fatal("device_add: too many devices\n");
device_current = (device_t *)d;
devices[c] = (device_t *)d;
device_priv[c] = priv;
}

View File

@@ -8,7 +8,7 @@
*
* Common code to handle all sorts of disk controllers.
*
* Version: @(#)hdc.c 1.0.15 2018/04/29
* Version: @(#)hdc.c 1.0.16 2018/10/17
*
* Authors: Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
@@ -36,13 +36,11 @@ int hdc_current;
#ifdef ENABLE_HDC_LOG
int hdc_do_log = ENABLE_HDC_LOG;
#endif
static void
hdc_log(const char *fmt, ...)
{
#ifdef ENABLE_HDC_LOG
va_list ap;
if (hdc_do_log) {
@@ -50,8 +48,10 @@ hdc_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define hdc_log(fmt, ...)
#endif
static void *

View File

@@ -8,7 +8,7 @@
*
* Driver for the ESDI controller (WD1007-vse1) for PC/AT.
*
* Version: @(#)hdc_esdi_at.c 1.0.13 2018/05/02
* Version: @(#)hdc_esdi_at.c 1.0.14 2018/10/17
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -108,13 +108,11 @@ typedef struct {
#ifdef ENABLE_ESDI_AT_LOG
int esdi_at_do_log = ENABLE_ESDI_AT_LOG;
#endif
static void
esdi_at_log(const char *fmt, ...)
{
#ifdef ENABLE_ESDI_AT_LOG
va_list ap;
if (esdi_at_do_log) {
@@ -122,8 +120,10 @@ esdi_at_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define esdi_at_log(fmt, ...)
#endif
static inline void

View File

@@ -52,7 +52,7 @@
* however, are auto-configured by the system software as
* shown above.
*
* Version: @(#)hdc_esdi_mca.c 1.0.13 2018/04/29
* Version: @(#)hdc_esdi_mca.c 1.0.14 2018/10/17
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Fred N. van Kempen, <decwiz@yahoo.com>
@@ -196,13 +196,11 @@ typedef struct esdi {
#ifdef ENABLE_ESDI_MCA_LOG
int esdi_mca_do_log = ENABLE_ESDI_MCA_LOG;
#endif
static void
esdi_mca_log(const char *fmt, ...)
{
#ifdef ENABLE_ESDI_MCA_LOG
va_list ap;
if (esdi_mca_do_log) {
@@ -210,8 +208,10 @@ esdi_mca_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define esdi_mca_log(fmt, ...)
#endif
static __inline void

View File

@@ -12,7 +12,7 @@
* based design. Most cards were WD1003-WA2 or -WAH, where the
* -WA2 cards had a floppy controller as well (to save space.)
*
* Version: @(#)hdc_mfm_at.c 1.0.17 2018/05/02
* Version: @(#)hdc_mfm_at.c 1.0.18 2018/10/17
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Fred N. van Kempen, <decwiz@yahoo.com>
@@ -114,13 +114,11 @@ typedef struct {
#ifdef ENABLE_MFM_AT_LOG
int mfm_at_do_log = ENABLE_MFM_AT_LOG;
#endif
static void
mfm_at_log(const char *fmt, ...)
{
#ifdef ENABLE_MFM_AT_LOG
va_list ap;
if (mfm_at_do_log) {
@@ -128,8 +126,10 @@ mfm_at_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define mfm_at_log(fmt, ...)
#endif
static inline void

View File

@@ -41,7 +41,7 @@
* Since all controllers (including the ones made by DTC) use
* (mostly) the same API, we keep them all in this module.
*
* Version: @(#)hdc_mfm_xt.c 1.0.17 2018/04/29
* Version: @(#)hdc_mfm_xt.c 1.0.18 2018/10/17
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Fred N. van Kempen, <decwiz@yahoo.com>
@@ -157,13 +157,11 @@ typedef struct {
#ifdef ENABLE_MFM_XT_LOG
int mfm_xt_do_log = ENABLE_MFM_XT_LOG;
#endif
static void
mfm_xt_log(const char *fmt, ...)
{
#ifdef ENABLE_MFM_XT_LOG
va_list ap;
if (mfm_xt_do_log) {
@@ -171,8 +169,10 @@ mfm_xt_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define mfm_xt_log(fmt, ...)
#endif
static uint8_t

View File

@@ -46,7 +46,7 @@
*
* NOTE: The XTA interface is 0-based for sector numbers !!
*
* Version: @(#)hdc_ide_xta.c 1.0.8 2018/04/29
* Version: @(#)hdc_ide_xta.c 1.0.9 2018/10/17
*
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
*
@@ -281,13 +281,11 @@ typedef struct {
#ifdef ENABLE_XTA_LOG
int xta_do_log = ENABLE_XTA_LOG;
#endif
static void
xta_log(const char *fmt, ...)
{
#ifdef ENABLE_XTA_LOG
va_list ap;
if (xta_do_log) {
@@ -295,8 +293,10 @@ xta_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define xta_log(fmt, ...)
#endif
static void

View File

@@ -8,7 +8,7 @@
*
* Handling of hard disk image files.
*
* Version: @(#)hdd_image.c 1.0.18 2018/10/08
* Version: @(#)hdd_image.c 1.0.19 2018/10/17
*
* Authors: Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
@@ -72,13 +72,11 @@ static char *empty_sector_1mb;
#ifdef ENABLE_HDD_IMAGE_LOG
int hdd_image_do_log = ENABLE_HDD_IMAGE_LOG;
#endif
static void
hdd_image_log(const char *fmt, ...)
{
#ifdef ENABLE_HDD_IMAGE_LOG
va_list ap;
if (hdd_image_do_log) {
@@ -86,8 +84,10 @@ hdd_image_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define hdd_image_log(fmt, ...)
#endif
int

View File

@@ -9,7 +9,7 @@
* Implementation of the Iomega ZIP drive with SCSI(-like)
* commands, for both ATAPI and SCSI usage.
*
* Version: @(#)zip.c 1.0.26 2018/10/09
* Version: @(#)zip.c 1.0.27 2018/10/17
*
* Author: Miran Grca, <mgrca8@gmail.com>
*
@@ -458,22 +458,22 @@ static void zip_callback(void *p);
#ifdef ENABLE_ZIP_LOG
int zip_do_log = ENABLE_ZIP_LOG;
#endif
static void
zip_log(const char *format, ...)
zip_log(const char *fmt, ...)
{
#ifdef ENABLE_ZIP_LOG
va_list ap;
if (zip_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define zip_log(fmt, ...)
#endif
int
@@ -2347,7 +2347,9 @@ zip_irq_raise(zip_t *dev)
static int
zip_read_from_dma(zip_t *dev)
{
#ifdef ENABLE_ZIP_LOG
int32_t *BufLen = &scsi_devices[dev->drv->scsi_device_id].buffer_length;
#endif
int ret = 0;
if (dev->drv->bus_type == ZIP_BUS_SCSI)
@@ -2417,7 +2419,9 @@ zip_write_to_scsi_dma(uint8_t scsi_id)
static int
zip_write_to_dma(zip_t *dev)
{
#ifdef ENABLE_ZIP_LOG
int32_t *BufLen = &scsi_devices[dev->drv->scsi_device_id].buffer_length;
#endif
int ret = 0;
if (dev->drv->bus_type == ZIP_BUS_SCSI) {

View File

@@ -9,7 +9,7 @@
* Implementation of the NEC uPD-765 and compatible floppy disk
* controller.
*
* Version: @(#)fdc.c 1.0.11 2018/09/22
* Version: @(#)fdc.c 1.0.12 2018/10/18
*
* Authors: Miran Grca, <mgrca8@gmail.com>
* Sarah Walker, <tommowalker@tommowalker.co.uk>
@@ -111,13 +111,11 @@ int floppyrate[4];
#ifdef ENABLE_FDC_LOG
int fdc_do_log = ENABLE_FDC_LOG;
#endif
static void
fdc_log(const char *fmt, ...)
{
#ifdef ENABLE_FDC_LOG
va_list ap;
if (fdc_do_log)
@@ -126,8 +124,10 @@ fdc_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define fdc_log(fmt, ...)
#endif
uint8_t

View File

@@ -8,7 +8,7 @@
*
* Implementation of the floppy drive emulation.
*
* Version: @(#)fdd.c 1.0.11 2018/10/02
* Version: @(#)fdd.c 1.0.12 2018/10/18
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Miran Grca, <mgrca8@gmail.com>
@@ -227,13 +227,11 @@ static const struct
#ifdef ENABLE_FDD_LOG
int fdd_do_log = ENABLE_FDD_LOG;
#endif
static void
fdd_log(const char *fmt, ...)
{
#ifdef ENABLE_FDD_LOG
va_list ap;
if (fdd_do_log)
@@ -242,8 +240,10 @@ fdd_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define fdd_log(fmt, ...)
#endif
char *fdd_getname(int type)

View File

@@ -10,7 +10,7 @@
* data in the form of FM/MFM-encoded transitions) which also
* forms the core of the emulator's floppy disk emulation.
*
* Version: @(#)fdd_86f.c 1.0.15 2018/10/02
* Version: @(#)fdd_86f.c 1.0.16 2018/10/17
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Miran Grca, <mgrca8@gmail.com>
@@ -239,11 +239,6 @@ typedef struct {
} d86f_t;
#ifdef ENABLE_D86F_LOG
int d86f_do_log = ENABLE_D86F_LOG;
#endif
static const uint8_t encoded_fm[64] = {
0xaa, 0xab, 0xae, 0xaf, 0xba, 0xbb, 0xbe, 0xbf,
0xea, 0xeb, 0xee, 0xef, 0xfa, 0xfb, 0xfe, 0xff,
@@ -280,19 +275,24 @@ void d86f_poll_write_data(int drive, int side, uint16_t pos, uint8_t data);
int d86f_format_conditions(int drive);
static void
d86f_log(const char *format, ...)
{
#ifdef ENABLE_D86F_LOG
int d86f_do_log = ENABLE_D86F_LOG;
static void
d86f_log(const char *fmt, ...)
{
va_list ap;
if (d86f_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define d86f_log(fmt, ...)
#endif
static void

View File

@@ -9,7 +9,7 @@
* Implementation of the FDI floppy stream image format
* interface to the FDI2RAW module.
*
* Version: @(#)fdd_fdi.c 1.0.3 2018/04/29
* Version: @(#)fdd_fdi.c 1.0.4 2018/10/18
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Miran Grca, <mgrca8@gmail.com>
@@ -75,13 +75,11 @@ static fdc_t *fdi_fdc;
#ifdef ENABLE_FDI_LOG
int fdi_do_log = ENABLE_FDI_LOG;
#endif
static void
fdi_log(const char *fmt, ...)
{
#ifdef ENABLE_FDI_LOG
va_list ap;
if (fdi_do_log)
@@ -90,8 +88,10 @@ fdi_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define fdi_log(fmt, ...)
#endif
static uint16_t

View File

@@ -8,7 +8,7 @@
*
* Implementation of the IMD floppy image format.
*
* Version: @(#)fdd_imd.c 1.0.7 2018/04/29
* Version: @(#)fdd_imd.c 1.0.8 2018/10/18
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Miran Grca, <mgrca8@gmail.com>
@@ -86,13 +86,11 @@ static fdc_t *imd_fdc;
#ifdef ENABLE_IMD_LOG
int imd_do_log = ENABLE_IMD_LOG;
#endif
static void
imd_log(const char *fmt, ...)
{
#ifdef ENABLE_IMD_LOG
va_list ap;
if (imd_do_log)
@@ -101,8 +99,10 @@ imd_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define imd_log(fmt, ...)
#endif
static uint32_t

View File

@@ -13,7 +13,7 @@
* re-merged with the other files. Much of it is generic to
* all formats.
*
* Version: @(#)fdd_img.c 1.0.8 2018/05/09
* Version: @(#)fdd_img.c 1.0.9 2018/10/18
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Miran Grca, <mgrca8@gmail.com>
@@ -301,13 +301,11 @@ const int gap3_sizes[5][8][48] = { { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
#ifdef ENABLE_IMG_LOG
int img_do_log = ENABLE_IMG_LOG;
#endif
static void
img_log(const char *fmt, ...)
{
#ifdef ENABLE_IMG_LOG
va_list ap;
if (img_do_log)
@@ -316,8 +314,10 @@ img_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define img_log(fmt, ...)
#endif
/* Generic */

View File

@@ -8,7 +8,7 @@
*
* Implementation of the PCjs JSON floppy image format.
*
* Version: @(#)fdd_json.c 1.0.5 2018/04/29
* Version: @(#)fdd_json.c 1.0.6 2018/10/18
*
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
*
@@ -108,13 +108,11 @@ static json_t *images[FDD_NUM];
#ifdef ENABLE_JSON_LOG
int json_do_log = ENABLE_JSON_LOG;
#endif
static void
json_log(const char *fmt, ...)
{
#ifdef ENABLE_JSON_LOG
va_list ap;
if (json_do_log)
@@ -123,8 +121,10 @@ json_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define json_log(fmt, ...)
#endif
static void

View File

@@ -8,7 +8,7 @@
*
* Implementation of the Teledisk floppy image format.
*
* Version: @(#)fdd_td0.c 1.0.6 2018/04/29
* Version: @(#)fdd_td0.c 1.0.7 2018/10/18
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Miran Grca, <mgrca8@gmail.com>
@@ -222,13 +222,11 @@ static td0_t *td0[FDD_NUM];
#ifdef ENABLE_TD0_LOG
int td0_do_log = ENABLE_TD0_LOG;
#endif
static void
td0_log(const char *fmt, ...)
{
#ifdef ENABLE_TD0_LOG
va_list ap;
if (td0_do_log)
@@ -237,8 +235,10 @@ td0_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define td0_log(fmt, ...)
#endif
static void

View File

@@ -12,7 +12,7 @@
* addition of get_last_head and C++ callability by Thomas
* Harte.
*
* Version: @(#)fdi2raw.c 1.0.3 2018/04/29
* Version: @(#)fdi2raw.c 1.0.4 2018/10/18
*
* Authors: Toni Wilen, <twilen@arabuusimiehet.com>
* and Vincent Joguin,
@@ -66,13 +66,11 @@
#ifdef ENABLE_FDI2RAW_LOG
int fdi2raw_do_log = ENABLE_FDI2RAW_LOG;
#endif
static void
fdi2raw_log(const char *fmt, ...)
{
#ifdef ENABLE_FDI2RAW_LOG
va_list ap;
if (fdi2raw_do_log)
@@ -81,10 +79,13 @@ fdi2raw_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define fdi2raw_log(fmt, ...)
#endif
#ifdef ENABLE_FDI2RAW_LOG
#ifdef DEBUG
static char *datalog(uae_u8 *src, int len)
{
@@ -110,6 +111,8 @@ static char *datalog(uae_u8 *src, int len) { return ""; }
#endif
static int fdi_allocated;
#endif
#ifdef DEBUG
static void fdi_free (void *p)
{
@@ -1329,8 +1332,10 @@ static void fix_mfm_sync (FDI *fdi)
static int handle_sectors_described_track (FDI *fdi)
{
#ifdef ENABLE_FDI2RAW_LOG
int oldout;
uae_u8 *start_src = fdi->track_src ;
#endif
fdi->encoding_type = *fdi->track_src++;
fdi->index_offset = get_u32(fdi->track_src);
fdi->index_offset >>= 8;
@@ -1340,10 +1345,14 @@ static int handle_sectors_described_track (FDI *fdi)
do {
fdi->track_type = *fdi->track_src++;
fdi2raw_log("%06.6X %06.6X %02.2X:",fdi->track_src - start_src + 0x200, fdi->out/8, fdi->track_type);
#ifdef ENABLE_FDI2RAW_LOG
oldout = fdi->out;
#endif
decode_sectors_described_track[fdi->track_type](fdi);
fdi2raw_log(" %d\n", fdi->out - oldout);
#ifdef ENABLE_FDI2RAW_LOG
oldout = fdi->out;
#endif
if (fdi->out < 0 || fdi->err) {
fdi2raw_log("\nin %d bytes, out %d bits\n", fdi->track_src - fdi->track_src_buffer, fdi->out);
return -1;

View File

@@ -8,7 +8,7 @@
*
* Implement I/O ports and their operations.
*
* Version: @(#)io.c 1.0.4 2018/04/29
* Version: @(#)io.c 1.0.5 2018/10/17
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -52,23 +52,21 @@ io_t *io[NPORTS], *io_last[NPORTS];
#ifdef ENABLE_IO_LOG
int io_do_log = ENABLE_IO_LOG;
#endif
#ifdef ENABLE_IO_LOG
static void
io_log(const char *format, ...)
io_log(const char *fmt, ...)
{
#ifdef ENABLE_IO_LOG
va_list ap;
if (io_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define io_log(fmt, ...)
#endif

View File

@@ -32,7 +32,7 @@
* TODO: The EV159 is supposed to support 16b EMS transfers, but the
* EMM.sys driver for it doesn't seem to want to do that..
*
* Version: @(#)isamem.c 1.0.6 2018/10/02
* Version: @(#)isamem.c 1.0.7 2018/10/17
*
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
*
@@ -133,23 +133,22 @@ typedef struct {
#ifdef ENABLE_ISAMEM_LOG
int isamem_do_log = ENABLE_ISAMEM_LOG;
#endif
static void
isamem_log(const char *fmt, ...)
{
#ifdef ENABLE_ISAMEM_LOG
va_list ap;
va_list ap;
if (isamem_do_log)
{
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
if (isamem_do_log) {
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
}
#else
#define isamem_log(fmt, ...)
#endif
/* Local variables. */

View File

@@ -28,7 +28,7 @@
* NOTE: The IRQ functionalities have been implemented, but not yet
* tested, as I need to write test software for them first :)
*
* Version: @(#)isartc.c 1.0.6 2018/10/07
* Version: @(#)isartc.c 1.0.7 2018/10/17
*
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
*
@@ -151,23 +151,22 @@ typedef struct {
#ifdef ENABLE_ISARTC_LOG
int isartc_do_log = ENABLE_ISARTC_LOG;
#endif
static void
isartc_log(const char *fmt, ...)
{
#ifdef ENABLE_ISARTC_LOG
va_list ap;
va_list ap;
if (isartc_do_log)
{
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
if (isartc_do_log) {
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
}
#else
#define isartc_log(fmt, ...)
#endif
/* Check if the current time matches a set alarm time. */

View File

@@ -8,7 +8,7 @@
*
* Intel 8042 (AT keyboard controller) emulation.
*
* Version: @(#)keyboard_at.c 1.0.41 2018/09/21
* Version: @(#)keyboard_at.c 1.0.42 2018/10/17
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -581,15 +581,12 @@ static const scancode scancode_set3[512] = {
#ifdef ENABLE_KEYBOARD_AT_LOG
#define ENABLE_KEYBOARD_LOG
int keyboard_at_do_log = ENABLE_KEYBOARD_AT_LOG;
#endif
static void
kbd_log(const char *fmt, ...)
{
#ifdef ENABLE_KEYBOARD_AT_LOG
va_list ap;
if (keyboard_at_do_log) {
@@ -597,8 +594,10 @@ kbd_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define kbd_log(fmt, ...)
#endif
static void
kbd_setmap(atkbd_t *kbd)

View File

@@ -154,22 +154,22 @@ static int port_92_reg = 0;
#ifdef ENABLE_MEM_LOG
int mem_do_log = ENABLE_MEM_LOG;
#endif
static void
mem_log(const char *format, ...)
mem_log(const char *fmt, ...)
{
#ifdef ENABLE_MEM_LOG
va_list ap;
if (mem_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define mem_log(fmt, ...)
#endif
void

View File

@@ -11,7 +11,7 @@
* TODO: Add the Genius bus- and serial mouse.
* Remove the '3-button' flag from mouse types.
*
* Version: @(#)mouse.c 1.0.27 2018/04/29
* Version: @(#)mouse.c 1.0.28 2018/10/17
*
* Authors: Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
@@ -82,22 +82,22 @@ static int (*mouse_dev_poll)();
#ifdef ENABLE_MOUSE_LOG
int mouse_do_log = ENABLE_MOUSE_LOG;
#endif
static void
mouse_log(const char *format, ...)
mouse_log(const char *fmt, ...)
{
#ifdef ENABLE_MOUSE_LOG
va_list ap;
if (mouse_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define mouse_log(fmt, ...)
#endif
/* Initialize the mouse module. */

View File

@@ -40,6 +40,8 @@
* Logitech Mouse.exe 6.50
* Microsoft Mouse.com 2.00
* Microsoft Mouse.sys 3.00
* Microsoft Mouse.com 7.04
* Microsoft Mouse.com 8.21J
* Microsoft Windows 1.00 DR5
* Microsoft Windows 3.10.026
* Microsoft Windows NT 3.1
@@ -51,7 +53,7 @@
* Microsoft Windows NT 3.1
* Microsoft Windows 98 SE
*
* Version: @(#)mouse_bus.c 1.0.2 2018/10/09
* Version: @(#)mouse_bus.c 1.0.3 2018/10/17
*
* Authors: Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
@@ -144,22 +146,22 @@ typedef struct mouse {
#ifdef ENABLE_MOUSE_BUS_LOG
int bm_do_log = ENABLE_MOUSE_BUS_LOG;
#endif
static void
bm_log(const char *format, ...)
bm_log(const char *fmt, ...)
{
#ifdef ENABLE_MOUSE_BUS_LOG
va_list ap;
if (bm_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define bm_log(fmt, ...)
#endif
/* Handle a READ operation from one of our registers. */

View File

@@ -8,7 +8,7 @@
*
* Implementation of PS/2 series Mouse devices.
*
* Version: @(#)mouse_ps2.c 1.0.11 2018/10/02
* Version: @(#)mouse_ps2.c 1.0.12 2018/10/17
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
*/
@@ -60,22 +60,22 @@ int mouse_scan = 0;
#ifdef ENABLE_MOUSE_PS2_LOG
int mouse_ps2_do_log = ENABLE_MOUSE_PS2_LOG;
#endif
static void
mouse_ps2_log(const char *format, ...)
mouse_ps2_log(const char *fmt, ...)
{
#ifdef ENABLE_MOUSE_PS2_LOG
va_list ap;
if (mouse_ps2_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define mouse_ps2_log(fmt, ...)
#endif
void

View File

@@ -10,7 +10,7 @@
*
* TODO: Add the Genius Serial Mouse.
*
* Version: @(#)mouse_serial.c 1.0.24 2018/10/02
* Version: @(#)mouse_serial.c 1.0.25 2018/10/17
*
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
*/
@@ -53,22 +53,22 @@ typedef struct {
#ifdef ENABLE_MOUSE_SERIAL_LOG
int mouse_serial_do_log = ENABLE_MOUSE_SERIAL_LOG;
#endif
static void
mouse_serial_log(const char *format, ...)
mouse_serial_log(const char *fmt, ...)
{
#ifdef ENABLE_MOUSE_SERIAL_LOG
va_list ap;
if (mouse_serial_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define mouse_serial_log(fmt, ...)
#endif
/* Callback from serial driver: RTS was toggled. */

View File

@@ -8,7 +8,7 @@
*
* Implement a generic NVRAM/CMOS/RTC device.
*
* Version: @(#)nvr.c 1.0.14 2018/10/02
* Version: @(#)nvr.c 1.0.15 2018/10/17
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>,
* David Hrdlička, <hrdlickadavid@outlook.com>
@@ -72,22 +72,22 @@ static nvr_t *saved_nvr = NULL;
#ifdef ENABLE_NVR_LOG
int nvr_do_log = ENABLE_NVR_LOG;
#endif
static void
nvr_log(const char *format, ...)
nvr_log(const char *fmt, ...)
{
#ifdef ENABLE_NVR_LOG
va_list ap;
if (nvr_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define nvr_log(fmt, ...)
#endif
/* Determine whether or not the year is leap. */

View File

@@ -8,7 +8,7 @@
*
* Main emulator module where most things are controlled.
*
* Version: @(#)pc.c 1.0.84 2018/10/17
* Version: @(#)pc.c 1.0.85 2018/10/17
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -275,22 +275,22 @@ fatal(const char *fmt, ...)
#ifdef ENABLE_PC_LOG
int pc_do_log = ENABLE_PC_LOG;
#endif
static void
pc_log(const char *format, ...)
pc_log(const char *fmt, ...)
{
#ifdef ENABLE_PC_LOG
va_list ap;
if (pc_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define pc_log(fmt, ...)
#endif
/*

View File

@@ -51,23 +51,22 @@ static int trc_reg = 0;
#ifdef ENABLE_PCI_LOG
int pci_do_log = ENABLE_PCI_LOG;
#endif
static void
pcilog(const char *fmt, ...)
pci_log(const char *fmt, ...)
{
#ifdef ENABLE_PCI_LOG
va_list ap;
va_list ap;
if (pci_do_log)
{
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
if (pci_do_log) {
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
}
#else
#define pci_log(fmt, ...)
#endif
static void pci_cf8_write(uint16_t port, uint32_t val, void *p)
@@ -101,7 +100,7 @@ static void pci_write(uint16_t port, uint8_t val, void *priv)
{
if (pci_cards[slot].write)
{
/* pcilog("Reading PCI card on slot %02X (pci_cards[%i])...\n", pci_card, slot); */
/* pci_log("Reading PCI card on slot %02X (pci_cards[%i])...\n", pci_card, slot); */
pci_cards[slot].write(pci_func, pci_index | (port & 3), val, pci_cards[slot].priv);
}
}
@@ -140,7 +139,7 @@ static uint8_t pci_read(uint16_t port, void *priv)
static void elcr_write(uint16_t port, uint8_t val, void *priv)
{
/* pcilog("ELCR%i: WRITE %02X\n", port & 1, val); */
/* pci_log("ELCR%i: WRITE %02X\n", port & 1, val); */
if (port & 1)
{
val &= 0xDE;
@@ -151,12 +150,12 @@ static void elcr_write(uint16_t port, uint8_t val, void *priv)
}
elcr[port & 1] = val;
pcilog("ELCR %i: %c %c %c %c %c %c %c %c\n", port & 1, (val & 1) ? 'L' : 'E', (val & 2) ? 'L' : 'E', (val & 4) ? 'L' : 'E', (val & 8) ? 'L' : 'E', (val & 0x10) ? 'L' : 'E', (val & 0x20) ? 'L' : 'E', (val & 0x40) ? 'L' : 'E', (val & 0x80) ? 'L' : 'E');
pci_log("ELCR %i: %c %c %c %c %c %c %c %c\n", port & 1, (val & 1) ? 'L' : 'E', (val & 2) ? 'L' : 'E', (val & 4) ? 'L' : 'E', (val & 8) ? 'L' : 'E', (val & 0x10) ? 'L' : 'E', (val & 0x20) ? 'L' : 'E', (val & 0x40) ? 'L' : 'E', (val & 0x80) ? 'L' : 'E');
}
static uint8_t elcr_read(uint16_t port, void *priv)
{
/* pcilog("ELCR%i: READ %02X\n", port & 1, elcr[port & 1]); */
/* pci_log("ELCR%i: READ %02X\n", port & 1, elcr[port & 1]); */
return elcr[port & 1];
}
@@ -288,7 +287,7 @@ uint8_t pci_use_mirq(uint8_t mirq)
return 1;
}
#define pci_mirq_log pcilog
#define pci_mirq_log pci_log
void pci_set_mirq(uint8_t mirq)
{
@@ -359,82 +358,82 @@ void pci_set_irq(uint8_t card, uint8_t pci_int)
if (!last_pci_card)
{
pcilog("pci_set_irq(%02X, %02X): No PCI slots (how are we even here?!)\n", card, pci_int);
pci_log("pci_set_irq(%02X, %02X): No PCI slots (how are we even here?!)\n", card, pci_int);
return;
}
else
{
pcilog("pci_set_irq(%02X, %02X): %i PCI slots\n", card, pci_int, last_pci_card);
pci_log("pci_set_irq(%02X, %02X): %i PCI slots\n", card, pci_int, last_pci_card);
}
slot = pci_card_to_slot_mapping[card];
if (slot == 0xFF)
{
pcilog("pci_set_irq(%02X, %02X): Card is not on a PCI slot (how are we even here?!)\n", card, pci_int);
pci_log("pci_set_irq(%02X, %02X): Card is not on a PCI slot (how are we even here?!)\n", card, pci_int);
return;
}
else
{
pcilog("pci_set_irq(%02X, %02X): Card is on PCI slot %02X\n", card, pci_int, slot);
pci_log("pci_set_irq(%02X, %02X): Card is on PCI slot %02X\n", card, pci_int, slot);
}
if (!pci_cards[slot].irq_routing[pci_int_index])
{
pcilog("pci_set_irq(%02X, %02X): No IRQ routing for this slot and INT pin combination\n", card, pci_int);
pci_log("pci_set_irq(%02X, %02X): No IRQ routing for this slot and INT pin combination\n", card, pci_int);
return;
}
else
{
irq_routing = (pci_cards[slot].irq_routing[pci_int_index] - PCI_INTA) & 3;
pcilog("pci_set_irq(%02X, %02X): IRQ routing for this slot and INT pin combination: %02X\n", card, pci_int, irq_routing);
pci_log("pci_set_irq(%02X, %02X): IRQ routing for this slot and INT pin combination: %02X\n", card, pci_int, irq_routing);
}
if (pci_irqs[irq_routing] > 0x0F)
{
pcilog("pci_set_irq(%02X, %02X): IRQ line is disabled\n", card, pci_int);
pci_log("pci_set_irq(%02X, %02X): IRQ line is disabled\n", card, pci_int);
return;
}
else
{
irq_line = pci_irqs[irq_routing];
pcilog("pci_set_irq(%02X, %02X): Using IRQ %i\n", card, pci_int, irq_line);
pci_log("pci_set_irq(%02X, %02X): Using IRQ %i\n", card, pci_int, irq_line);
}
if (pci_irq_is_level(irq_line) && (pci_irq_hold[irq_line] & (1 << card)))
{
/* IRQ already held, do nothing. */
pcilog("pci_set_irq(%02X, %02X): Card is already holding the IRQ\n", card, pci_int);
pci_log("pci_set_irq(%02X, %02X): Card is already holding the IRQ\n", card, pci_int);
return;
}
else
{
pcilog("pci_set_irq(%02X, %02X): Card not yet holding the IRQ\n", card, pci_int);
pci_log("pci_set_irq(%02X, %02X): Card not yet holding the IRQ\n", card, pci_int);
}
level = pci_irq_is_level(irq_line);
if (!level || !pci_irq_hold[irq_line])
{
pcilog("pci_set_irq(%02X, %02X): Issuing %s-triggered IRQ (%sheld)\n", card, pci_int, level ? "level" : "edge", pci_irq_hold[irq_line] ? "" : "not ");
pci_log("pci_set_irq(%02X, %02X): Issuing %s-triggered IRQ (%sheld)\n", card, pci_int, level ? "level" : "edge", pci_irq_hold[irq_line] ? "" : "not ");
/* Only raise the interrupt if it's edge-triggered or level-triggered and not yet being held. */
picintlevel(1 << irq_line);
}
else if (level && pci_irq_hold[irq_line])
{
pcilog("pci_set_irq(%02X, %02X): IRQ line already being held\n", card, pci_int);
pci_log("pci_set_irq(%02X, %02X): IRQ line already being held\n", card, pci_int);
}
/* If the IRQ is level-triggered, mark that this card is holding it. */
if (pci_irq_is_level(irq_line))
{
pcilog("pci_set_irq(%02X, %02X): Marking that this card is holding the IRQ\n", card, pci_int);
pci_log("pci_set_irq(%02X, %02X): Marking that this card is holding the IRQ\n", card, pci_int);
pci_irq_hold[irq_line] |= (1 << card);
}
else
{
pcilog("pci_set_irq(%02X, %02X): Edge-triggered interrupt, not marking\n", card, pci_int);
pci_log("pci_set_irq(%02X, %02X): Edge-triggered interrupt, not marking\n", card, pci_int);
}
}
@@ -509,52 +508,52 @@ void pci_clear_irq(uint8_t card, uint8_t pci_int)
if (!last_pci_card)
{
pcilog("pci_clear_irq(%02X, %02X): No PCI slots (how are we even here?!)\n", card, pci_int);
pci_log("pci_clear_irq(%02X, %02X): No PCI slots (how are we even here?!)\n", card, pci_int);
return;
}
else
{
pcilog("pci_clear_irq(%02X, %02X): %i PCI slots\n", card, pci_int, last_pci_card);
pci_log("pci_clear_irq(%02X, %02X): %i PCI slots\n", card, pci_int, last_pci_card);
}
slot = pci_card_to_slot_mapping[card];
if (slot == 0xFF)
{
pcilog("pci_clear_irq(%02X, %02X): Card is not on a PCI slot (how are we even here?!)\n", card, pci_int);
pci_log("pci_clear_irq(%02X, %02X): Card is not on a PCI slot (how are we even here?!)\n", card, pci_int);
return;
}
else
{
pcilog("pci_clear_irq(%02X, %02X): Card is on PCI slot %02X\n", card, pci_int, slot);
pci_log("pci_clear_irq(%02X, %02X): Card is on PCI slot %02X\n", card, pci_int, slot);
}
if (!pci_cards[slot].irq_routing[pci_int_index])
{
pcilog("pci_clear_irq(%02X, %02X): No IRQ routing for this slot and INT pin combination\n", card, pci_int);
pci_log("pci_clear_irq(%02X, %02X): No IRQ routing for this slot and INT pin combination\n", card, pci_int);
return;
}
else
{
irq_routing = (pci_cards[slot].irq_routing[pci_int_index] - PCI_INTA) & 3;
pcilog("pci_clear_irq(%02X, %02X): IRQ routing for this slot and INT pin combination: %02X\n", card, pci_int, irq_routing);
pci_log("pci_clear_irq(%02X, %02X): IRQ routing for this slot and INT pin combination: %02X\n", card, pci_int, irq_routing);
}
if (pci_irqs[irq_routing] > 0x0F)
{
pcilog("pci_clear_irq(%02X, %02X): IRQ line is disabled\n", card, pci_int);
pci_log("pci_clear_irq(%02X, %02X): IRQ line is disabled\n", card, pci_int);
return;
}
else
{
irq_line = pci_irqs[irq_routing];
pcilog("pci_clear_irq(%02X, %02X): Using IRQ %i\n", card, pci_int, irq_line);
pci_log("pci_clear_irq(%02X, %02X): Using IRQ %i\n", card, pci_int, irq_line);
}
if (pci_irq_is_level(irq_line) && !(pci_irq_hold[irq_line] & (1 << card)))
{
/* IRQ not held, do nothing. */
pcilog("pci_clear_irq(%02X, %02X): Card is not holding the IRQ\n", card, pci_int);
pci_log("pci_clear_irq(%02X, %02X): Card is not holding the IRQ\n", card, pci_int);
return;
}
@@ -562,22 +561,22 @@ void pci_clear_irq(uint8_t card, uint8_t pci_int)
if (level)
{
pcilog("pci_clear_irq(%02X, %02X): Releasing this card's hold on the IRQ\n", card, pci_int);
pci_log("pci_clear_irq(%02X, %02X): Releasing this card's hold on the IRQ\n", card, pci_int);
pci_irq_hold[irq_line] &= ~(1 << card);
if (!pci_irq_hold[irq_line])
{
pcilog("pci_clear_irq(%02X, %02X): IRQ no longer held by any card, clearing it\n", card, pci_int);
pci_log("pci_clear_irq(%02X, %02X): IRQ no longer held by any card, clearing it\n", card, pci_int);
picintc(1 << irq_line);
}
else
{
pcilog("pci_clear_irq(%02X, %02X): IRQ is still being held\n", card, pci_int);
pci_log("pci_clear_irq(%02X, %02X): IRQ is still being held\n", card, pci_int);
}
}
else
{
pcilog("pci_clear_irq(%02X, %02X): Clearing edge-triggered interrupt\n", card, pci_int);
pci_log("pci_clear_irq(%02X, %02X): Clearing edge-triggered interrupt\n", card, pci_int);
picintc(1 << irq_line);
}
}
@@ -644,7 +643,7 @@ static void trc_reset(uint8_t val)
static void trc_write(uint16_t port, uint8_t val, void *priv)
{
/* pcilog("TRC Write: %02X\n", val); */
/* pci_log("TRC Write: %02X\n", val); */
if (!(trc_reg & 4) && (val & 4))
{
trc_reset(val);
@@ -708,7 +707,7 @@ void pci_register_slot(int card, int type, int inta, int intb, int intc, int int
pci_cards[last_pci_card].write = NULL;
pci_cards[last_pci_card].priv = NULL;
pci_card_to_slot_mapping[card] = last_pci_card;
pcilog("pci_register_slot(): pci_cards[%i].id = %02X\n", last_pci_card, card);
pci_log("pci_register_slot(): pci_cards[%i].id = %02X\n", last_pci_card, card);
last_pci_card++;
}
@@ -718,18 +717,18 @@ uint8_t pci_add_card(uint8_t add_type, uint8_t (*read)(int func, int addr, void
if (add_type < PCI_ADD_NORMAL)
{
pcilog("pci_add_card(): Adding PCI CARD at specific slot %02X [SPECIFIC]\n", add_type);
pci_log("pci_add_card(): Adding PCI CARD at specific slot %02X [SPECIFIC]\n", add_type);
}
if (!PCI)
{
pcilog("pci_add_card(): Adding PCI CARD failed (non-PCI machine) [%s]\n", (add_type == PCI_ADD_NORMAL) ? "NORMAL" : ((add_type == PCI_ADD_VIDEO) ? "VIDEO" : "SPECIFIC"));
pci_log("pci_add_card(): Adding PCI CARD failed (non-PCI machine) [%s]\n", (add_type == PCI_ADD_NORMAL) ? "NORMAL" : ((add_type == PCI_ADD_VIDEO) ? "VIDEO" : "SPECIFIC"));
return 0xFF;
}
if (!last_pci_card)
{
pcilog("pci_add_card(): Adding PCI CARD failed (no PCI slots) [%s]\n", (add_type == PCI_ADD_NORMAL) ? "NORMAL" : ((add_type == PCI_ADD_VIDEO) ? "VIDEO" : "SPECIFIC"));
pci_log("pci_add_card(): Adding PCI CARD failed (no PCI slots) [%s]\n", (add_type == PCI_ADD_NORMAL) ? "NORMAL" : ((add_type == PCI_ADD_VIDEO) ? "VIDEO" : "SPECIFIC"));
return 0xFF;
}
@@ -744,12 +743,12 @@ uint8_t pci_add_card(uint8_t add_type, uint8_t (*read)(int func, int addr, void
pci_cards[i].read = read;
pci_cards[i].write = write;
pci_cards[i].priv = priv;
pcilog("pci_add_card(): Adding PCI CARD to pci_cards[%i] (slot %02X) [%s]\n", i, pci_cards[i].id, (add_type == PCI_ADD_NORMAL) ? "NORMAL" : ((add_type == PCI_ADD_VIDEO) ? "VIDEO" : "SPECIFIC"));
pci_log("pci_add_card(): Adding PCI CARD to pci_cards[%i] (slot %02X) [%s]\n", i, pci_cards[i].id, (add_type == PCI_ADD_NORMAL) ? "NORMAL" : ((add_type == PCI_ADD_VIDEO) ? "VIDEO" : "SPECIFIC"));
return pci_cards[i].id;
}
}
}
pcilog("pci_add_card(): Adding PCI CARD failed (unable to find a suitable PCI slot) [%s]\n", (add_type == PCI_ADD_NORMAL) ? "NORMAL" : ((add_type == PCI_ADD_VIDEO) ? "VIDEO" : "SPECIFIC"));
pci_log("pci_add_card(): Adding PCI CARD failed (unable to find a suitable PCI slot) [%s]\n", (add_type == PCI_ADD_NORMAL) ? "NORMAL" : ((add_type == PCI_ADD_VIDEO) ? "VIDEO" : "SPECIFIC"));
return 0xFF;
}

View File

@@ -8,7 +8,7 @@
*
* Implementation of the Intel PIC chip emulation.
*
* Version: @(#)pic.c 1.0.1 2018/10/02
* Version: @(#)pic.c 1.0.2 2018/10/17
*
* Author: Miran Grca, <mgrca8@gmail.com>
*
@@ -38,22 +38,22 @@ uint16_t pic_current;
#ifdef ENABLE_PIC_LOG
int pic_do_log = ENABLE_PIC_LOG;
#endif
static void
pic_log(const char *format, ...)
pic_log(const char *fmt, ...)
{
#ifdef ENABLE_PIC_LOG
va_list ap;
if (pic_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define pic_log(fmt, ...)
#endif
void

View File

@@ -13,7 +13,7 @@
* - c386sx16 BIOS fails checksum
* - the loadfont() calls should be done elsewhere
*
* Version: @(#)rom.c 1.0.40 2018/10/02
* Version: @(#)rom.c 1.0.41 2018/10/17
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -43,22 +43,22 @@ int romspresent[ROM_MAX];
#ifdef ENABLE_ROM_LOG
int rom_do_log = ENABLE_ROM_LOG;
#endif
static void
rom_log(const char *format, ...)
rom_log(const char *fmt, ...)
{
#ifdef ENABLE_ROM_LOG
va_list ap;
if (rom_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define rom_log(fmt, ...)
#endif
FILE *

View File

@@ -10,7 +10,7 @@
* made by Adaptec, Inc. These controllers were designed for
* the ISA bus.
*
* Version: @(#)scsi_aha154x.c 1.0.43 2018/10/02
* Version: @(#)scsi_aha154x.c 1.0.44 2018/10/18
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Original Buslogic version by SA1988 and Miran Grca.
@@ -82,13 +82,11 @@ typedef struct {
#ifdef ENABLE_AHA154X_LOG
int aha_do_log = ENABLE_AHA154X_LOG;
#endif
static void
aha_log(const char *fmt, ...)
{
#ifdef ENABLE_AHA154X_LOG
va_list ap;
if (aha_do_log) {
@@ -96,8 +94,10 @@ aha_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define aha_log(fmt, ...)
#endif
/*

View File

@@ -11,7 +11,7 @@
* 1 - BT-545S ISA;
* 2 - BT-958D PCI
*
* Version: @(#)scsi_buslogic.c 1.0.40 2018/10/09
* Version: @(#)scsi_buslogic.c 1.0.41 2018/10/18
*
* Authors: TheCollector1995, <mariogplayer@gmail.com>
* Miran Grca, <mgrca8@gmail.com>
@@ -240,13 +240,11 @@ enum {
#ifdef ENABLE_BUSLOGIC_LOG
int buslogic_do_log = ENABLE_BUSLOGIC_LOG;
#endif
static void
buslogic_log(const char *fmt, ...)
{
#ifdef ENABLE_BUSLOGIC_LOG
va_list ap;
if (buslogic_do_log) {
@@ -254,8 +252,10 @@ buslogic_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define buslogic_log(fmt, ...)
#endif
static wchar_t *
@@ -590,7 +590,9 @@ BuslogicSCSIBIOSRequestSetup(x54x_t *dev, uint8_t *CmdBuf, uint8_t *DataInBuf, u
uint32_t i;
uint8_t temp_cdb[12];
int target_cdb_len = 12;
#ifdef ENABLE_BUSLOGIC_LOG
uint8_t target_id = 0;
#endif
int phase;
scsi_device_t *sd = &scsi_devices[ESCSICmd->TargetId];
@@ -1112,7 +1114,9 @@ static uint8_t
BuslogicPCIRead(int func, int addr, void *p)
{
x54x_t *dev = (x54x_t *)p;
#ifdef ENABLE_BUSLOGIC_LOG
buslogic_data_t *bl = (buslogic_data_t *) dev->ven_data;
#endif
buslogic_log("BT-958D: Reading register %02X\n", addr & 0xff);

View File

@@ -6,7 +6,7 @@
*
* Emulation of SCSI fixed disks.
*
* Version: @(#)scsi_disk.c 1.0.24 2018/10/09
* Version: @(#)scsi_disk.c 1.0.25 2018/10/18
*
* Author: Miran Grca, <mgrca8@gmail.com>
*
@@ -145,13 +145,11 @@ static void scsi_disk_callback(void *p);
#ifdef ENABLE_SCSI_DISK_LOG
int scsi_disk_do_log = ENABLE_SCSI_DISK_LOG;
#endif
static void
scsi_disk_log(const char *fmt, ...)
{
#ifdef ENABLE_SCSI_DISK_LOG
va_list ap;
if (scsi_disk_do_log) {
@@ -159,8 +157,10 @@ scsi_disk_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define scsi_disk_log(fmt, ...)
#endif
/* Translates ATAPI status (ERR_STAT flag) to SCSI status. */
@@ -555,7 +555,9 @@ static void
scsi_disk_command(void *p, uint8_t *cdb)
{
scsi_disk_t *dev = (scsi_disk_t *) p;
#ifdef ENABLE_SCSI_DISK_LOG
uint8_t *hdbufferb;
#endif
int32_t *BufLen;
int32_t len, max_len, alloc_length;
int pos = 0;
@@ -566,7 +568,9 @@ scsi_disk_command(void *p, uint8_t *cdb)
char device_identify_ex[15] = { '8', '6', 'B', '_', 'H', 'D', '0', '0', ' ', 'v', '1', '.', '0', '0', 0 };
int block_desc = 0;
#ifdef ENABLE_SCSI_DISK_LOG
hdbufferb = scsi_devices[dev->drv->scsi_id].cmd_buffer;
#endif
BufLen = &scsi_devices[dev->drv->scsi_id].buffer_length;
last_sector = hdd_image_get_last_sector(dev->id);

View File

@@ -9,7 +9,7 @@
* Implementation of the NCR 5380 series of SCSI Host Adapters
* made by NCR. These controllers were designed for the ISA bus.
*
* Version: @(#)scsi_ncr5380.c 1.0.22 2018/10/09
* Version: @(#)scsi_ncr5380.c 1.0.23 2018/10/18
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* TheCollector1995, <mariogplayer@gmail.com>
@@ -170,13 +170,11 @@ static int cmd_len[8] = {6, 10, 10, 6, 16, 12, 6, 6};
#ifdef ENABLE_NCR5380_LOG
int ncr5380_do_log = ENABLE_NCR5380_LOG;
#endif
static void
ncr_log(const char *fmt, ...)
{
#ifdef ENABLE_NCR5380_LOG
va_list ap;
if (ncr5380_do_log) {
@@ -184,8 +182,11 @@ ncr_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define ncr_log(fmt, ...)
#endif
#define SET_BUS_STATE(ncr, state) ncr->cur_bus = (ncr->cur_bus & ~(SCSI_PHASE_MESSAGE_IN)) | (state & (SCSI_PHASE_MESSAGE_IN))

View File

@@ -10,7 +10,7 @@
* NCR and later Symbios and LSI. This controller was designed
* for the PCI bus.
*
* Version: @(#)scsi_ncr53c810.c 1.0.15 2018/10/09
* Version: @(#)scsi_ncr53c810.c 1.0.16 2018/10/18
*
* Authors: Paul Brook (QEMU)
* Artyom Tarasenko (QEMU)
@@ -282,13 +282,11 @@ typedef struct {
#ifdef ENABLE_NCR53C810_LOG
int ncr53c810_do_log = ENABLE_NCR53C810_LOG;
#endif
static void
ncr53c810_log(const char *fmt, ...)
{
#ifdef ENABLE_NCR53C810_LOG
va_list ap;
if (ncr53c810_do_log) {
@@ -296,8 +294,10 @@ ncr53c810_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define ncr53c810_log(fmt, ...)
#endif
static uint8_t ncr53c810_reg_readb(ncr53c810_t *dev, uint32_t offset);
@@ -829,12 +829,16 @@ ncr53c810_do_msgout(ncr53c810_t *dev, uint8_t id)
{
uint8_t msg;
int len;
#ifdef ENABLE_NCR53C810_LOG
uint32_t current_tag;
#endif
scsi_device_t *sd;
sd = &scsi_devices[id];
#ifdef ENABLE_NCR53C810_LOG
current_tag = id;
#endif
ncr53c810_log("MSG out len=%d\n", dev->dbc);
while (dev->dbc) {
@@ -952,7 +956,10 @@ ncr53c810_process_script(ncr53c810_t *dev)
uint32_t insn, addr, id, buf[2], dest;
int opcode, insn_processed = 0, reg, operator, cond, jmp, n, i, c;
int32_t offset;
uint8_t op0, op1, data8, mask, data[7], *pp;
uint8_t op0, op1, data8, mask, data[7];
#ifdef ENABLE_NCR53C810_LOG
uint8_t *pp;
#endif
dev->sstop = 0;
again:
@@ -1278,7 +1285,9 @@ again:
dev->dsp += 4;
ncr53c810_memcpy(dev, dest, addr, insn & 0xffffff);
} else {
#ifdef ENABLE_NCR53C810_LOG
pp = data;
#endif
if (insn & (1 << 28))
addr = dev->dsa + sextract32(addr, 0, 24);

View File

@@ -11,7 +11,7 @@
* series of SCSI Host Adapters made by Mylex.
* These controllers were designed for various buses.
*
* Version: @(#)scsi_x54x.c 1.0.24 2018/10/11
* Version: @(#)scsi_x54x.c 1.0.25 2018/10/18
*
* Authors: TheCollector1995, <mariogplayer@gmail.com>
* Miran Grca, <mgrca8@gmail.com>
@@ -57,13 +57,11 @@ x54x_t *x54x_dev;
#ifdef ENABLE_X54X_LOG
int x54x_do_log = ENABLE_X54X_LOG;
#endif
static void
x54x_log(const char *fmt, ...)
{
#ifdef ENABLE_X54X_LOG
va_list ap;
if (x54x_do_log) {
@@ -72,8 +70,10 @@ x54x_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define x54x_log(fmt, ...)
#endif
static void
@@ -952,7 +952,10 @@ static void
x54x_scsi_cmd(x54x_t *dev)
{
Req_t *req = &dev->Req;
uint8_t id, lun, phase, bit24 = !!req->Is24bit;
uint8_t id, phase, bit24 = !!req->Is24bit;
#ifdef ENABLE_X54X_LOG
uint8_t lun;
#endif
uint8_t temp_cdb[12];
uint32_t i, SenseBufferAddress;
int target_data_len, target_cdb_len = 12;
@@ -962,7 +965,9 @@ x54x_scsi_cmd(x54x_t *dev)
id = req->TargetID;
sd = &scsi_devices[id];
#ifdef ENABLE_X54X_LOG
lun = req->LUN;
#endif
target_cdb_len = 12;
target_data_len = x54x_get_length(req, bit24);

View File

@@ -30,22 +30,22 @@ int serial_do_log = 0;
#ifdef ENABLE_SERIAL_LOG
int serial_do_log = ENABLE_SERIAL_LOG;
#endif
static void
serial_log(const char *format, ...)
serial_log(const char *fmt, ...)
{
#ifdef ENABLE_SERIAL_LOG
va_list ap;
if (serial_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define serial_log(fmt, ...)
#endif
void serial_reset()

View File

@@ -16,13 +16,11 @@
#ifdef ENABLE_ADLIB_LOG
int adlib_do_log = ENABLE_ADLIB_LOG;
#endif
static void
adlib_log(const char *fmt, ...)
{
#ifdef ENABLE_ADLIB_LOG
va_list ap;
if (adlib_do_log) {
@@ -30,8 +28,10 @@ adlib_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define adlib_log(fmt, ...)
#endif
typedef struct adlib_t

View File

@@ -138,13 +138,11 @@ static void update_legacy(es1371_t *es1371);
#ifdef ENABLE_AUDIOPCI_LOG
int audiopci_do_log = ENABLE_AUDIOPCI_LOG;
#endif
static void
audiopci_log(const char *fmt, ...)
{
#ifdef ENABLE_AUDIOPCI_LOG
va_list ap;
if (audiopci_do_log) {
@@ -152,8 +150,10 @@ audiopci_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define audiopci_log(fmt, ...)
#endif
static void es1371_update_irqs(es1371_t *es1371)

View File

@@ -295,13 +295,11 @@ uint32_t rep_count_w = 0;
#ifdef ENABLE_EMU8K_LOG
int emu8k_do_log = ENABLE_EMU8K_LOG;
#endif
static void
emu8k_log(const char *fmt, ...)
{
#ifdef ENABLE_EMU8K_LOG
va_list ap;
if (emu8k_do_log) {
@@ -309,8 +307,10 @@ emu8k_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define emu8k_log(fmt, ...)
#endif
static inline int16_t EMU8K_READ(emu8k_t *emu8k, uint32_t addr)

View File

@@ -8,7 +8,7 @@
*
* Roland MPU-401 emulation.
*
* Version: @(#)snd_mpu401.c 1.0.17 2018/09/15
* Version: @(#)snd_mpu401.c 1.0.18 2018/10/18
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* DOSBox Team,
@@ -58,13 +58,11 @@ static void MPU401_EOIHandlerDispatch(void *p);
#ifdef ENABLE_MPU401_LOG
int mpu401_do_log = ENABLE_MPU401_LOG;
#endif
static void
mpu401_log(const char *fmt, ...)
{
#ifdef ENABLE_MPU401_LOG
va_list ap;
if (mpu401_do_log) {
@@ -72,8 +70,10 @@ mpu401_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define mpu401_log(fmt, ...)
#endif
static void

View File

@@ -181,13 +181,11 @@ enum
#ifdef ENABLE_PAS16_LOG
int pas16_do_log = ENABLE_PAS16_LOG;
#endif
static void
pas16_log(const char *fmt, ...)
{
#ifdef ENABLE_PAS16_LOG
va_list ap;
if (pas16_do_log) {
@@ -195,8 +193,10 @@ pas16_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define pas16_log(fmt, ...)
#endif
static uint8_t pas16_in(uint16_t port, void *p)

View File

@@ -8,7 +8,7 @@
*
* Sound Blaster emulation.
*
* Version: @(#)sound_sb.c 1.0.13 2018/09/11
* Version: @(#)sound_sb.c 1.0.14 2018/10/18
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -173,13 +173,11 @@ const int32_t sb_att_7dbstep_2bits[]=
#ifdef ENABLE_SB_LOG
int sb_do_log = ENABLE_SB_LOG;
#endif
static void
sb_log(const char *fmt, ...)
{
#ifdef ENABLE_SB_LOG
va_list ap;
if (sb_do_log) {
@@ -187,8 +185,10 @@ sb_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define sb_log(fmt, ...)
#endif
/* sb 1, 1.5, 2, 2 mvc do not have a mixer, so signal is hardwired */

View File

@@ -113,13 +113,11 @@ float low_fir_sb16_coef[SB16_NCoef];
#ifdef ENABLE_SB_DSP_LOG
int sb_dsp_do_log = ENABLE_SB_DSP_LOG;
#endif
static void
sb_dsp_log(const char *fmt, ...)
{
#ifdef ENABLE_SB_DSP_LOG
va_list ap;
if (sb_dsp_do_log) {
@@ -127,8 +125,10 @@ sb_dsp_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define sb_dsp_log(fmt, ...)
#endif
static inline double sinc(double x)

View File

@@ -8,7 +8,7 @@
*
* ATI 28800 emulation (VGA Charger and Korean VGA)
*
* Version: @(#)vid_ati28800.c 1.0.25 2018/10/04
* Version: @(#)vid_ati28800.c 1.0.26 2018/10/18
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -84,13 +84,11 @@ static video_timings_t timing_ati28800 = {VIDEO_ISA, 3, 3, 6, 5, 5, 10};
#ifdef ENABLE_ATI28800_LOG
int ati28800_do_log = ENABLE_ATI28800_LOG;
#endif
static void
ati28800_log(const char *fmt, ...)
{
#ifdef ENABLE_ATI28800_LOG
va_list ap;
if (ati28800_do_log) {
@@ -98,8 +96,11 @@ ati28800_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define ati28800_log(fmt, ...)
#endif
static void ati28800_recalctimings(svga_t *svga);

View File

@@ -8,7 +8,7 @@
*
* ATi Mach64 graphics card emulation.
*
* Version: @(#)vid_ati_mach64.c 1.0.25 2018/10/04
* Version: @(#)vid_ati_mach64.c 1.0.26 2018/10/18
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -344,13 +344,11 @@ void mach64_ext_writel(uint32_t addr, uint32_t val, void *priv);
#ifdef ENABLE_MACH64_LOG
int mach64_do_log = ENABLE_MACH64_LOG;
#endif
static void
mach64_log(const char *fmt, ...)
{
#ifdef ENABLE_MACH64_LOG
va_list ap;
if (mach64_do_log) {
@@ -358,8 +356,10 @@ mach64_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define mach64_log(fmt, ...)
#endif
void mach64_out(uint16_t addr, uint8_t val, void *p)

View File

@@ -10,7 +10,7 @@
*
* Known bugs: Accelerator doesn't work in planar modes
*
* Version: @(#)vid_et4000w32.c 1.0.20 2018/10/04
* Version: @(#)vid_et4000w32.c 1.0.21 2018/10/18
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -154,22 +154,22 @@ void et4000w32_blit(int count, uint32_t mix, uint32_t sdat, int cpu_input, et400
#ifdef ENABLE_ET4000W32_LOG
int et4000w32_do_log = ENABLE_ET4000W32_LOG;
#endif
static void
et4000w32_log(const char *format, ...)
et4000w32_log(const char *fmt, ...)
{
#ifdef ENABLE_ET4000W32_LOG
va_list ap;
if (et4000w32_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define et4000w32_log(fmt, ...)
#endif
uint8_t et4000w32p_in(uint16_t addr, void *p);

View File

@@ -8,7 +8,7 @@
*
* S3 ViRGE emulation.
*
* Version: @(#)vid_s3_virge.c 1.0.15 2018/09/21
* Version: @(#)vid_s3_virge.c 1.0.16 2018/10/18
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -347,22 +347,22 @@ enum
#ifdef ENABLE_S3_VIRGE_LOG
int s3_virge_do_log = ENABLE_S3_VIRGE_LOG;
#endif
static void
s3_virge_log(const char *format, ...)
s3_virge_log(const char *fmt, ...)
{
#ifdef ENABLE_S3_VIRGE_LOG
va_list ap;
if (s3_virge_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define s3_virge_log(fmt, ...)
#endif
static void s3_virge_update_irqs(virge_t *virge)

View File

@@ -8,7 +8,7 @@
*
* Emulation of the 3DFX Voodoo Graphics controller.
*
* Version: @(#)vid_voodoo.c 1.0.14 2018/04/26
* Version: @(#)vid_voodoo.c 1.0.15 2018/10/18
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* leilei
@@ -1044,13 +1044,11 @@ enum
#ifdef ENABLE_VOODOO_LOG
int voodoo_do_log = ENABLE_VOODOO_LOG;
#endif
static void
voodoo_log(const char *fmt, ...)
{
#ifdef ENABLE_VOODOO_LOG
va_list ap;
if (voodoo_do_log) {
@@ -1058,8 +1056,10 @@ voodoo_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define voodoo_log(fmt, ...)
#endif
static void voodoo_threshold_check(voodoo_t *voodoo);
@@ -2802,7 +2802,10 @@ static void voodoo_half_triangle(voodoo_t *voodoo, voodoo_params_t *params, vood
{
int x, x2;
int real_y = (state->y << 4) + 8;
int start_x, start_x2;
int start_x;
#ifdef ENABLE_VOODOO_LOG
int start_x2;
#endif
int dx;
uint16_t *fb_mem, *aux_mem;
@@ -2849,7 +2852,9 @@ static void voodoo_half_triangle(voodoo_t *voodoo, voodoo_params_t *params, vood
else
x -= (1 << 16);
dx = ((x + 0x7000) >> 16) - (((state->vertexAx << 12) + 0x7000) >> 16);
#ifdef ENABLE_VOODOO_LOG
start_x2 = x + 0x7000;
#endif
x = (x + 0x7000) >> 16;
x2 = (x2 + 0x7000) >> 16;

View File

@@ -8,7 +8,7 @@
*
* Implement the VNC remote renderer with LibVNCServer.
*
* Version: @(#)vnc.c 1.0.13 2018/09/03
* Version: @(#)vnc.c 1.0.14 2018/10/17
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Based on raw code by RichardG, <richardg867@gmail.com>
@@ -49,22 +49,22 @@ static int ptr_x, ptr_y, ptr_but;
#ifdef ENABLE_VNC_LOG
int vnc_do_log = ENABLE_VNC_LOG;
#endif
static void
vnc_log(const char *format, ...)
vnc_log(const char *fmt, ...)
{
#ifdef ENABLE_VNC_LOG
va_list ap;
if (vnc_do_log) {
va_start(ap, format);
pclog_ex(format, ap);
va_start(ap, fmt);
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define vnc_log(fmt, ...)
#endif
static void

View File

@@ -8,7 +8,7 @@
#
# Makefile for Win32 (MinGW32) environment.
#
# Version: @(#)Makefile.mingw 1.0.130 2018/10/17
# Version: @(#)Makefile.mingw 1.0.131 2018/10/17
#
# Authors: Miran Grca, <mgrca8@gmail.com>
# Fred N. van Kempen, <decwiz@yahoo.com>
@@ -543,6 +543,7 @@ VIDOBJ := video.o \
vid_ti_cf62011.o \
vid_tvga.o \
vid_tgui9440.o vid_tkd8001_ramdac.o \
vid_v7vga.o \
vid_s3.o vid_s3_virge.o \
vid_sdac_ramdac.o \
vid_voodoo.o

View File

@@ -8,7 +8,7 @@
*
* Platform main support module for Windows.
*
* Version: @(#)win.c 1.0.53 2018/10/12
* Version: @(#)win.c 1.0.54 2018/10/18
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -107,13 +107,11 @@ static struct {
#ifdef ENABLE_WIN_LOG
int win_do_log = ENABLE_WIN_LOG;
#endif
static void
win_log(const char *fmt, ...)
{
#ifdef ENABLE_WIN_LOG
va_list ap;
if (win_do_log) {
@@ -121,8 +119,10 @@ win_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define win_log(fmt, ...)
#endif
static void

View File

@@ -1,4 +1,4 @@
/*
/*
* 86Box A hypervisor and IBM PC system emulator that specializes in
* running old operating systems and software designed for IBM
* PC systems and compatibles from 1981 through fairly recent
@@ -8,7 +8,7 @@
*
* Rendering module for Microsoft Direct2D.
*
* Version: @(#)win_d2d.cpp 1.0.1 2018/07/28
* Version: @(#)win_d2d.cpp 1.0.2 2018/10/18
*
* Authors: David Hrdlička, <hrdlickadavid@outlook.com>
*
@@ -52,13 +52,11 @@ static int d2d_width, d2d_height, d2d_screen_width, d2d_screen_height, d2d_fs;
#ifdef ENABLE_D2D_LOG
int d2d_do_log = ENABLE_D2D_LOG;
#endif
static void
d2d_log(const char *fmt, ...)
{
#ifdef ENABLE_D2D_LOG
va_list ap;
if (d2d_do_log) {
@@ -66,8 +64,10 @@ d2d_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define d2d_log(fmt, ...)
#endif
#ifdef USE_D2D

View File

@@ -11,7 +11,7 @@
* NOTES: This code should be re-merged into a single init() with a
* 'fullscreen' argument, indicating FS mode is requested.
*
* Version: @(#)win_ddraw.cpp 1.0.11 2018/10/10
* Version: @(#)win_ddraw.cpp 1.0.12 2018/10/18
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -60,13 +60,11 @@ static png_infop info_ptr;
#ifdef ENABLE_DDRAW_LOG
int ddraw_do_log = ENABLE_DDRAW_LOG;
#endif
static void
ddraw_log(const char *fmt, ...)
{
#ifdef ENABLE_DDRAW_LOG
va_list ap;
if (ddraw_do_log) {
@@ -74,8 +72,10 @@ ddraw_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define ddraw_log(fmt, ...)
#endif
static void

View File

@@ -8,7 +8,7 @@
*
* Try to load a support DLL.
*
* Version: @(#)win_dynld.c 1.0.7 2018/04/29
* Version: @(#)win_dynld.c 1.0.8 2018/10/18
*
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
*
@@ -28,13 +28,11 @@
#ifdef ENABLE_DYNLD_LOG
int dynld_do_log = ENABLE_DYNLD_LOG;
#endif
static void
dynld_log(const char *fmt, ...)
{
#ifdef ENABLE_DYNLD_LOG
va_list ap;
if (dynld_do_log) {
@@ -42,8 +40,10 @@ dynld_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define dynld_log(fmt, ...)
#endif
void *

View File

@@ -8,7 +8,7 @@
*
* Joystick interface to host device.
*
* Version: @(#)win_joystick.cpp 1.0.9 2018/04/29
* Version: @(#)win_joystick.cpp 1.0.10 2018/10/18
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -42,13 +42,11 @@ static GUID joystick_guids[MAX_JOYSTICKS];
#ifdef ENABLE_JOYSTICK_LOG
int joystick_do_log = ENABLE_JOYSTICK_LOG;
#endif
static void
joystick_log(const char *fmt, ...)
{
#ifdef ENABLE_JOYSTICK_LOG
va_list ap;
if (joystick_do_log) {
@@ -56,8 +54,10 @@ joystick_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define joystick_log(fmt, ...)
#endif
static BOOL CALLBACK joystick_enum_callback(LPCDIDEVICEINSTANCE lpddi, UNUSED(LPVOID data))

View File

@@ -12,7 +12,7 @@
* we will not use that, but, instead, use a new window which
* coverrs the entire desktop.
*
* Version: @(#)win_sdl.c 1.0.1 2018/10/10
* Version: @(#)win_sdl.c 1.0.2 2018/10/18
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Michael Drüing, <michael@drueing.de>
@@ -146,13 +146,11 @@ static dllimp_t sdl_imports[] = {
#ifdef ENABLE_SDL_LOG
int sdl_do_log = ENABLE_SDL_LOG;
#endif
static void
sdl_log(const char *fmt, ...)
{
#ifdef ENABLE_SDL_LOG
va_list ap;
if (sdl_do_log) {
@@ -160,8 +158,10 @@ sdl_log(const char *fmt, ...)
pclog_ex(fmt, ap);
va_end(ap);
}
#endif
}
#else
#define sdl_log(fmt, ...)
#endif
static void