mirror of
https://github.com/86Box/86Box.git
synced 2026-02-22 01:25:33 -07:00
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:
@@ -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.
|
||||
|
||||
14
src/bugger.c
14
src/bugger.c
@@ -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. */
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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, ...)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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]; \
|
||||
|
||||
19
src/device.c
19
src/device.c
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 *
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
14
src/io.c
14
src/io.c
@@ -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
|
||||
|
||||
|
||||
|
||||
21
src/isamem.c
21
src/isamem.c
@@ -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. */
|
||||
|
||||
21
src/isartc.c
21
src/isartc.c
@@ -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. */
|
||||
|
||||
@@ -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)
|
||||
|
||||
12
src/mem.c
12
src/mem.c
@@ -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
|
||||
|
||||
14
src/mouse.c
14
src/mouse.c
@@ -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. */
|
||||
|
||||
@@ -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. */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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. */
|
||||
|
||||
14
src/nvr.c
14
src/nvr.c
@@ -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. */
|
||||
|
||||
14
src/pc.c
14
src/pc.c
@@ -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
|
||||
|
||||
|
||||
/*
|
||||
|
||||
99
src/pci.c
99
src/pci.c
@@ -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;
|
||||
}
|
||||
|
||||
14
src/pic.c
14
src/pic.c
@@ -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
|
||||
|
||||
14
src/rom.c
14
src/rom.c
@@ -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 *
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
12
src/serial.c
12
src/serial.c
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
14
src/vnc.c
14
src/vnc.c
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 *
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user