The FDC is now a device_t, and the FDC code has been cleaned up;

Merged floppy.c and fdd.c and renamed floppy_*.c (the floppy image format handlers) to fdd_*.c;
Reading the AT or PS/2 keyboard controller status no longer clears the transmit timeout bit, fixes error 8601 (mouse error) on the IBM PS/2 Model 80;
MMU translate and DMA physical reads and writes now go through _mem_exec instead of directly to ram[], should fix the last remaining problems with remapped mappings;
Implemented the Sound gain dialog;
Added the resource for the "New floppy image" dialog and the needed functions for the functionality of exporting the currently mounted floppy image as 86F, both of which should be finished in the next commit;
Applied the CD-ROM fixes from the PCem commit;
Added the "Keep ratio" option for full screen stretch.
This commit is contained in:
OBattler
2018-01-17 18:43:36 +01:00
parent 74ca5cdc21
commit 5318bc08d8
72 changed files with 3475 additions and 3345 deletions

View File

@@ -32,15 +32,15 @@
* in alpha mode, but in highres ("ECD350") mode, it displays
* some semi-random junk. Video-memory pointer maybe?
*
* Version: @(#)m_amstrad.c 1.0.5 2018/01/09
* Version: @(#)m_amstrad.c 1.0.5 2018/01/16
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
*
* Copyright 2008-2018 Sarah Walker.
* Copyright 2016,2018 Miran Grca.
* Copyright 2018 Fred N. van Kempen.
* Copyright 2016-2018 Miran Grca.
* Copyright 2017,2018 Fred N. van Kempen.
*/
#include <stdio.h>
#include <stdint.h>
@@ -63,7 +63,6 @@
#include "../mouse.h"
#include "../game/gameport.h"
#include "../lpt.h"
#include "../floppy/floppy.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "../sound/sound.h"
@@ -1274,5 +1273,5 @@ machine_amstrad_init(machine_t *model)
if (joystick_type != 7)
device_add(&gameport_device);
device_add(&fdc_xt_amstrad_device);

View File

@@ -11,10 +11,10 @@
* NOTE: The NEAT 82c206 code should be moved into a 82c206 module,
* so it can be re-used by other boards.
*
* Version: @(#)m_4gpv31.c 1.0.3 2018/01/04
* Version: @(#)m_4gpv31.c 1.0.4 2018/01/16
*
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
* Copyright 2018 Fred N. van Kempen.
* Copyright 2017,2018 Fred N. van Kempen.
*/
#include <stdio.h>
#include <stdint.h>
@@ -25,6 +25,8 @@
#include "../io.h"
#include "../device.h"
#include "../keyboard.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "machine.h"
@@ -145,6 +147,7 @@ machine_at_4gpv31_init(machine_t *model)
{
machine_at_common_ide_init(model);
device_add(&keyboard_at_ami_device);
device_add(&fdc_at_device);
neat_init();
}

View File

@@ -11,6 +11,8 @@
#include "../mem.h"
#include "../device.h"
#include "../keyboard.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "../disk/hdc.h"
#include "../disk/hdc_ide.h"
#include "machine.h"
@@ -101,7 +103,9 @@ machine_at_ali1429_init(machine_t *model)
ali1429_reset();
machine_at_common_ide_init(model);
device_add(&keyboard_at_ami_device);
device_add(&fdc_at_device);
ali1429_init();

View File

@@ -3,9 +3,12 @@
#include <string.h>
#include <wchar.h>
#include "../86box.h"
#include "../device.h"
#include "../io.h"
#include "../lpt.h"
#include "../serial.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "machine.h"
@@ -46,6 +49,7 @@ void
machine_at_cmdpc_init(machine_t *model)
{
machine_at_ide_top_remap_init(model);
device_add(&fdc_at_device);
cbm_io_init();
}

View File

@@ -8,14 +8,14 @@
*
* Emulation of various Compaq PC's.
*
* Version: @(#)m_at_compaq.c 1.0.2 2017/12/29
* Version: @(#)m_at_compaq.c 1.0.3 2018/01/16
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
* TheCollector1995, <mariogplayer@gmail.com>
*
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016,2017 Miran Grca.
* Copyright 2008-2018 Sarah Walker.
* Copyright 2016-2018 Miran Grca.
*/
#include <stdio.h>
#include <stdint.h>
@@ -26,6 +26,8 @@
#include "../mem.h"
#include "../rom.h"
#include "../device.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "../disk/hdc.h"
#include "../disk/hdc_ide.h"
#include "machine.h"
@@ -99,6 +101,7 @@ void
machine_at_compaq_init(machine_t *model)
{
machine_at_top_remap_init(model);
device_add(&fdc_at_device);
mem_mapping_add(&ram_mapping, 0xfa0000, 0x60000,
read_ram, read_ramw, read_raml,

View File

@@ -12,6 +12,8 @@
#include "../device.h"
#include "../keyboard.h"
#include "../mem.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "machine.h"
@@ -71,7 +73,9 @@ void
machine_at_headland_init(machine_t *model)
{
machine_at_common_ide_init(model);
device_add(&keyboard_at_ami_device);
device_add(&fdc_at_device);
headland_init();
}

View File

@@ -10,6 +10,8 @@
#include "../device.h"
#include "../io.h"
#include "../keyboard.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "machine.h"
@@ -89,6 +91,7 @@ void
machine_at_neat_init(machine_t *model)
{
machine_at_init(model);
device_add(&fdc_at_device);
neat_init();
}
@@ -98,7 +101,9 @@ void
machine_at_neat_ami_init(machine_t *model)
{
machine_at_common_init(model);
device_add(&keyboard_at_ami_device);
device_add(&fdc_at_device);
neat_init();
}

View File

@@ -261,6 +261,8 @@ SeeAlso: #P0178,#P0187
#include "../device.h"
#include "../keyboard.h"
#include "../mem.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "machine.h"
@@ -324,7 +326,9 @@ void
machine_at_opti495_init(machine_t *model)
{
machine_at_common_ide_init(model);
device_add(&keyboard_at_device);
device_add(&fdc_at_device);
opti495_init();
}
@@ -334,7 +338,9 @@ void
machine_at_opti495_ami_init(machine_t *model)
{
machine_at_common_ide_init(model);
device_add(&keyboard_at_ami_device);
device_add(&fdc_at_device);
opti495_init();
}

View File

@@ -10,20 +10,23 @@
*
* Re-worked version based on the 82C235 datasheet and errata.
*
* Version: @(#)m_at_scat.c 1.0.7 2018/01/05
* Version: @(#)m_at_scat.c 1.0.8 2018/01/16
*
* Authors: Original by GreatPsycho for PCem.
* Fred N. van Kempen, <decwiz@yahoo.com>
*
* Copyright 2018 Fred N. van Kempen.
* Copyright 2017,2018 Fred N. van Kempen.
*/
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <wchar.h>
#include "../86box.h"
#include "../device.h"
#include "../cpu/cpu.h"
#include "../cpu/x86.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "../io.h"
#include "../mem.h"
#include "machine.h"
@@ -736,6 +739,7 @@ void
machine_at_scat_init(machine_t *model)
{
machine_at_init(model);
device_add(&fdc_at_device);
scat_init();
}

View File

@@ -9,11 +9,11 @@
* SiS sis85c471 Super I/O Chip
* Used by DTK PKM-0038S E-2
*
* Version: @(#)m_at_sis85c471.c 1.0.8 2017/11/04
* Version: @(#)m_at_sis85c471.c 1.0.9 2018/01/16
*
* Author: Miran Grca, <mgrca8@gmail.com>
*
* Copyright 2017 Miran Grca.
* Copyright 2015-2018 Miran Grca.
*/
#include <stdio.h>
#include <stdint.h>
@@ -27,9 +27,8 @@
#include "../serial.h"
#include "../disk/hdc.h"
#include "../disk/hdc_ide.h"
#include "../floppy/floppy.h"
#include "../floppy/fdc.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "machine.h"
@@ -236,9 +235,6 @@ static void sis_85c471_init(void)
sis_85c471_regs[0x23] = 0xF0;
sis_85c471_regs[0x26] = 1;
fdc_update_densel_polarity(1);
fdc_update_densel_force(0);
fdd_swap = 0;
io_sethandler(0x0022, 0x0002, sis_85c471_read, NULL, NULL, sis_85c471_write, NULL, NULL, NULL);
}
@@ -247,6 +243,7 @@ void
machine_at_dtk486_init(machine_t *model)
{
machine_at_ide_init(model);
device_add(&fdc_at_device);
memregs_init();
sis_85c471_init();

View File

@@ -12,6 +12,7 @@
#include "../keyboard.h"
#include "../cpu/cpu.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "../video/vid_t3100e.h"
#include "machine.h"
@@ -685,7 +686,9 @@ void machine_at_t3100e_init(machine_t *model)
memset(&t3100e_ems, 0, sizeof(t3100e_ems));
machine_at_common_ide_init(model);
device_add(&keyboard_at_toshiba_device);
device_add(&fdc_at_device);
/* Hook up system control port */
io_sethandler(0x8084, 0x0001,

View File

@@ -11,7 +11,7 @@
#include "../keyboard.h"
#include "../mem.h"
#include "../serial.h"
#include "../floppy/floppy.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "../video/vid_paradise.h"
#include "machine.h"
@@ -23,6 +23,9 @@ static uint16_t wd76c10_2872;
static uint16_t wd76c10_5872;
static fdc_t *wd76c10_fdc;
static uint16_t
wd76c10_read(uint16_t port, void *priv)
{
@@ -89,9 +92,9 @@ wd76c10_write(uint16_t port, uint16_t val, void *priv)
case 0x2872:
wd76c10_2872 = val;
fdc_remove();
fdc_remove(wd76c10_fdc);
if (!(val & 1))
fdc_add();
fdc_set_base(wd76c10_fdc, 0x03f0);
break;
case 0x5872:
@@ -142,7 +145,9 @@ void
machine_at_wd76c10_init(machine_t *model)
{
machine_at_common_ide_init(model);
device_add(&keyboard_ps2_quadtel_device);
wd76c10_fdc = device_add(&fdc_at_device);
wd76c10_init();

View File

@@ -67,7 +67,7 @@
*
* WARNING THIS IS A WORK-IN-PROGRESS MODULE. USE AT OWN RISK.
*
* Version: @(#)europc.c 1.0.5 2017/11/18
* Version: @(#)europc.c 1.0.6 2018/01/16
*
* Author: Fred N. van Kempen, <decwiz@yahoo.com>
*
@@ -76,7 +76,7 @@
* Schneider's schematics and technical manuals, and the
* input from people with real EuroPC hardware.
*
* Copyright 2017 Fred N. van Kempen.
* Copyright 2017,2018 Fred N. van Kempen.
*/
#include <stdio.h>
#include <stdint.h>
@@ -90,6 +90,8 @@
#include "../rom.h"
#include "../nvr.h"
#include "../device.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "../disk/hdc.h"
#include "../keyboard.h"
#include "../mouse.h"
@@ -700,6 +702,9 @@ machine_europc_init(machine_t *model)
/* Initialize the actual NVR. */
nvr_init(&vm->nvr);
/* Enable and set up the FDC. */
device_add(&fdc_xt_device);
/* Enable and set up the mainboard device. */
device_add(&europc_device);
}

View File

@@ -8,15 +8,15 @@
*
* Emulation of the Olivetti M24.
*
* Version: @(#)m_olivetti_m24.c 1.0.8 2018/01/09
* Version: @(#)m_olivetti_m24.c 1.0.9 2018/01/16
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
*
* Copyright 2008-2018 Sarah Walker.
* Copyright 2016,2018 Miran Grca.
* Copyright 2018 Fred N. van Kempen.
* Copyright 2016-2018 Miran Grca.
* Copyright 2017,2018 Fred N. van Kempen.
*/
#include <stdio.h>
#include <stdint.h>
@@ -36,6 +36,8 @@
#include "../nvr.h"
#include "../keyboard.h"
#include "../mouse.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "../game/gameport.h"
#include "../sound/sound.h"
#include "../sound/snd_speaker.h"
@@ -807,6 +809,7 @@ machine_olim24_init(machine_t *model)
memset(m24, 0x00, sizeof(olim24_t));
machine_common_init(model);
device_add(&fdc_xt_device);
io_sethandler(0x0066, 2, m24_read, NULL, NULL, NULL, NULL, NULL, m24);

View File

@@ -8,15 +8,15 @@
*
* Emulation of the IBM PCjr.
*
* Version: @(#)m_pcjr.c 1.0.3 2018/01/09
* Version: @(#)m_pcjr.c 1.0.4 2018/01/16
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
*
* Copyright 2008-2018 Sarah Walker.
* Copyright 2016,2018 Miran Grca.
* Copyright 2018 Fred N. van Kempen.
* Copyright 2016-2018 Miran Grca.
* Copyright 2017,2018 Fred N. van Kempen.
*/
#include <stdio.h>
#include <stdint.h>
@@ -34,9 +34,8 @@
#include "../device.h"
#include "../serial.h"
#include "../keyboard.h"
#include "../floppy/floppy.h"
#include "../floppy/fdc.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "../sound/sound.h"
#include "../sound/snd_speaker.h"
#include "../sound/snd_sn76489.h"
@@ -765,9 +764,9 @@ machine_pcjr_init(machine_t *model)
keyboard_set_table(scancode_xt);
keyboard_send = kbd_adddata_ex;
fdc_add_pcjr();
device_add(&sn76489_device);
nmi_mask = 0x80;
device_add(&fdc_pcjr_device);
}

View File

@@ -28,15 +28,15 @@
* boot. Sometimes, they do, and then it shows an "Incorrect
* DOS" error message?? --FvK
*
* Version: @(#)m_ps1.c 1.0.4 2018/01/04
* Version: @(#)m_ps1.c 1.0.5 2018/01/16
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
*
* Copyright 2008-2018 Sarah Walker.
* Copyright 2016,2018 Miran Grca.
* Copyright 2018 Fred N. van Kempen.
* Copyright 2016-2018 Miran Grca.
* Copyright 2017,2018 Fred N. van Kempen.
*/
#include <stdio.h>
#include <stdint.h>
@@ -61,7 +61,6 @@
#include "../keyboard.h"
#include "../disk/hdc.h"
#include "../disk/hdc_ide.h"
#include "../floppy/floppy.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "../sound/sound.h"
@@ -554,8 +553,13 @@ ps1_common_init(machine_t *model)
device_add(&keyboard_ps2_device);
if (romset != ROM_IBMPS1_2133) {
fdc_set_dskchg_activelow();
if (romset == ROM_IBMPS1_2133)
device_add(&fdc_at_device);
else {
if ((romset == ROM_IBMPS1_2121) || (romset == ROM_IBMPS1_2121_ISA))
device_add(&fdc_at_ps1_device);
else
device_add(&fdc_at_actlow_device);
device_add(&snd_device);
}
@@ -580,8 +584,6 @@ machine_ps1_m2121_init(machine_t *model)
ps1_common_init(model);
ps1_setup(2121);
fdc_set_ps1();
}

View File

@@ -15,7 +15,6 @@
#include "../keyboard.h"
#include "../lpt.h"
#include "../serial.h"
#include "../floppy/floppy.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "../video/vid_vga.h"
@@ -152,6 +151,7 @@ void
machine_ps2_m30_286_init(machine_t *model)
{
machine_common_init(model);
device_add(&fdc_at_ps1_device);
pit_set_out_func(&pit, 1, pit_refresh_timer_at);
dma16_init();
@@ -159,7 +159,5 @@ machine_ps2_m30_286_init(machine_t *model)
nvr_at_init(8);
pic2_init();
ps2board_init();
fdc_set_dskchg_activelow();
fdc_set_ps1();
device_add(&ps1vga_device);
}

View File

@@ -14,6 +14,8 @@
#include "../nmi.h"
#include "../rom.h"
#include "../device.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "../nvr.h"
#include "../nvr_ps2.h"
#include "../keyboard.h"
@@ -790,6 +792,7 @@ static void
machine_ps2_common_init(machine_t *model)
{
machine_common_init(model);
device_add(&fdc_at_device);
dma16_init();
ps2_dma_init();

View File

@@ -8,13 +8,13 @@
*
* Emulation of Tandy models 1000, 1000HX and 1000SL2.
*
* Version: @(#)m_tandy.c 1.0.1 2018/01/10
* Version: @(#)m_tandy.c 1.0.2 2018/01/16
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
*
* Copyright 2008-2018 Sarah Walker.
* Copyright 2016,2018 Miran Grca.
* Copyright 2016-2018 Miran Grca.
*/
#include <stdio.h>
#include <stdint.h>
@@ -31,6 +31,8 @@
#include "../timer.h"
#include "../device.h"
#include "../nvr.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "../game/gameport.h"
#include "../keyboard.h"
#include "../sound/sound.h"
@@ -1688,6 +1690,8 @@ machine_tandy1k_init(machine_t *model)
device_add(&keyboard_tandy_device);
keyboard_set_table(scancode_tandy);
device_add(&fdc_xt_device);
switch(romset) {
case ROM_TANDY:
io_sethandler(0x00a0, 1,

View File

@@ -7,6 +7,8 @@
#include "../pit.h"
#include "../mem.h"
#include "../device.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "../game/gameport.h"
#include "../keyboard.h"
#include "machine.h"
@@ -20,6 +22,7 @@ machine_xt_init(machine_t *model)
pit_set_out_func(&pit, 1, pit_refresh_timer_xt);
device_add(&keyboard_xt_device);
device_add(&fdc_xt_device);
nmi_init();
if (joystick_type != 7)
device_add(&gameport_device);

View File

@@ -8,14 +8,14 @@
*
* Emulation of various Compaq XT-class PC's.
*
* Version: @(#)m_xt_compaq.c 1.0.1 2017/11/11
* Version: @(#)m_xt_compaq.c 1.0.2 2018/01/16
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
* TheCollector1995, <mariogplayer@gmail.com>
*
* Copyright 2008-2017 Sarah Walker.
* Copyright 2016,2017 Miran Grca.
* Copyright 2008-2018 Sarah Walker.
* Copyright 2016-2018 Miran Grca.
*/
#include <stdio.h>
#include <stdint.h>
@@ -28,6 +28,8 @@
#include "../mem.h"
#include "../rom.h"
#include "../device.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "../game/gameport.h"
#include "../keyboard.h"
#include "machine.h"
@@ -41,6 +43,7 @@ machine_xt_compaq_init(machine_t *model)
pit_set_out_func(&pit, 1, pit_refresh_timer_xt);
device_add(&keyboard_xt_device);
device_add(&fdc_xt_device);
nmi_init();
if (joystick_type != 7)
device_add(&gameport_device);

View File

@@ -8,7 +8,7 @@
*
* Handling of the emulated machines.
*
* Version: @(#)machine.c 1.0.28 2018/01/01
* Version: @(#)machine.c 1.0.29 2018/01/16
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -16,7 +16,7 @@
*
* Copyright 2008-2018 Sarah Walker.
* Copyright 2016-2018 Miran Grca.
* Copyright 2018 Fred N. van Kempen.
* Copyright 2017,2018 Fred N. van Kempen.
*/
#include <stdio.h>
#include <stdint.h>
@@ -31,9 +31,6 @@
#include "../rom.h"
#include "../lpt.h"
#include "../serial.h"
#include "../floppy/floppy.h"
#include "../floppy/fdd.h"
#include "../floppy/fdc.h"
#include "../disk/hdc.h"
#include "../disk/hdc_ide.h"
#include "machine.h"
@@ -80,6 +77,4 @@ machine_common_init(machine_t *model)
if (serial_enabled[1])
serial_setup(2, SERIAL2_ADDR, SERIAL2_IRQ);
fdc_add();
}