Merge branch 'master' of https://github.com/86Box/86Box into qt
This commit is contained in:
commit
b70abb8535
@ -114,21 +114,23 @@ option(QT "QT GUI"
|
|||||||
|
|
||||||
# Development branch features
|
# Development branch features
|
||||||
#
|
#
|
||||||
# Option Description Def. Condition Otherwise
|
# Option Description Def. Condition Otherwise
|
||||||
# ------ ----------- ---- --------- ---------
|
# ------ ----------- ---- --------- ---------
|
||||||
cmake_dependent_option(AMD_K5 "AMD K5" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(AMD_K5 "AMD K5" ON "DEV_BRANCH" OFF)
|
||||||
cmake_dependent_option(CYRIX_6X86 "Cyrix 6x86" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(CYRIX_6X86 "Cyrix 6x86" ON "DEV_BRANCH" OFF)
|
||||||
cmake_dependent_option(GUSMAX "Gravis UltraSound MAX" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(GUSMAX "Gravis UltraSound MAX" ON "DEV_BRANCH" OFF)
|
||||||
cmake_dependent_option(LASERXT "VTech Laser XT" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(LASERXT "VTech Laser XT" ON "DEV_BRANCH" OFF)
|
||||||
cmake_dependent_option(MGA "Matrox Mystique graphics adapters" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(MGA "Matrox Mystique graphics adapters" ON "DEV_BRANCH" OFF)
|
||||||
cmake_dependent_option(NO_SIO "Machines without emulated Super I/O chips" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(NO_SIO "Machines without emulated Super I/O chips" ON "DEV_BRANCH" OFF)
|
||||||
cmake_dependent_option(OLIVETTI "Olivetti M290" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(OLIVETTI "Olivetti M290" ON "DEV_BRANCH" OFF)
|
||||||
cmake_dependent_option(OPEN_AT "OpenAT" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(OPEN_AT "OpenAT" ON "DEV_BRANCH" OFF)
|
||||||
cmake_dependent_option(PAS16 "Pro Audio Spectrum 16" OFF "DEV_BRANCH" OFF)
|
cmake_dependent_option(PAS16 "Pro Audio Spectrum 16" OFF "DEV_BRANCH" OFF)
|
||||||
cmake_dependent_option(SIO_DETECT "Super I/O Detection Helper" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(SIO_DETECT "Super I/O Detection Helper" ON "DEV_BRANCH" OFF)
|
||||||
cmake_dependent_option(VGAWONDER "ATI VGA Wonder (ATI-18800)" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(VGAWONDER "ATI VGA Wonder (ATI-18800)" ON "DEV_BRANCH" OFF)
|
||||||
cmake_dependent_option(VNC "VNC renderer" OFF "DEV_BRANCH" OFF)
|
cmake_dependent_option(VNC "VNC renderer" OFF "DEV_BRANCH" OFF)
|
||||||
cmake_dependent_option(XL24 "ATI VGA Wonder XL24 (ATI-28800-6)" ON "DEV_BRANCH" OFF)
|
cmake_dependent_option(XL24 "ATI VGA Wonder XL24 (ATI-28800-6)" ON "DEV_BRANCH" OFF)
|
||||||
|
cmake_dependent_option(ISAMEM_RAMPAGE "AST Rampage" ON "DEV_BRANCH" OFF)
|
||||||
|
cmake_dependent_option(ISAMEM_IAB "Intel Above Board" ON "DEV_BRANCH" OFF)
|
||||||
|
|
||||||
# Ditto but for Qt
|
# Ditto but for Qt
|
||||||
if (QT)
|
if (QT)
|
||||||
|
@ -160,7 +160,8 @@ int GAMEBLASTER = 0; /* (C) sound option */
|
|||||||
int GUS = 0; /* (C) sound option */
|
int GUS = 0; /* (C) sound option */
|
||||||
int SSI2001 = 0; /* (C) sound option */
|
int SSI2001 = 0; /* (C) sound option */
|
||||||
int voodoo_enabled = 0; /* (C) video option */
|
int voodoo_enabled = 0; /* (C) video option */
|
||||||
uint32_t mem_size = 0; /* (C) memory size */
|
uint32_t mem_size = 0; /* (C) memory size (Installed on system board)*/
|
||||||
|
uint32_t isa_mem_size = 0; /* (C) memory size (ISA Memory Cards) */
|
||||||
int cpu_use_dynarec = 0; /* (C) cpu uses/needs Dyna */
|
int cpu_use_dynarec = 0; /* (C) cpu uses/needs Dyna */
|
||||||
int cpu = 0; /* (C) cpu type */
|
int cpu = 0; /* (C) cpu type */
|
||||||
int fpu_type = 0; /* (C) fpu type */
|
int fpu_type = 0; /* (C) fpu type */
|
||||||
@ -976,9 +977,6 @@ pc_reset_hard_init(void)
|
|||||||
/* Reset and reconfigure the Sound Card layer. */
|
/* Reset and reconfigure the Sound Card layer. */
|
||||||
sound_card_reset();
|
sound_card_reset();
|
||||||
|
|
||||||
/* Reset any ISA memory cards. */
|
|
||||||
isamem_reset();
|
|
||||||
|
|
||||||
/* Reset any ISA RTC cards. */
|
/* Reset any ISA RTC cards. */
|
||||||
isartc_reset();
|
isartc_reset();
|
||||||
|
|
||||||
|
@ -21,4 +21,12 @@ add_library(dev OBJECT bugger.c cassette.c cartridge.c hasp.c hwm.c hwm_lm75.c h
|
|||||||
|
|
||||||
if(LASERXT)
|
if(LASERXT)
|
||||||
target_compile_definitions(dev PRIVATE USE_LASERXT)
|
target_compile_definitions(dev PRIVATE USE_LASERXT)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ISAMEM_RAMPAGE)
|
||||||
|
target_compile_definitions(dev PRIVATE USE_ISAMEM_RAMPAGE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(ISAMEM_IAB)
|
||||||
|
target_compile_definitions(dev PRIVATE USE_ISAMEM_IAB)
|
||||||
endif()
|
endif()
|
@ -54,15 +54,29 @@ ibm_5161_in(uint16_t port, void *priv)
|
|||||||
ret = dev->regs[port & 0x0007];
|
ret = dev->regs[port & 0x0007];
|
||||||
|
|
||||||
switch (port) {
|
switch (port) {
|
||||||
case 0x211:
|
case 0x210: /* Write to latch expansion bus data (ED0-ED7) */
|
||||||
case 0x215:
|
/* Read to verify expansion bus data (ED0-ED7) */
|
||||||
|
break;
|
||||||
|
case 0x214: /* Write to latch data bus bits (DO - 07) */
|
||||||
|
/* Read data bus bits (DO - D7) */
|
||||||
|
break;
|
||||||
|
case 0x211: /* Read high-order address bits (A8 - A 15) */
|
||||||
|
case 0x215: /* Read high-order address bits (A8 - A 15) */
|
||||||
ret = (get_last_addr() >> 8) & 0xff;
|
ret = (get_last_addr() >> 8) & 0xff;
|
||||||
break;
|
break;
|
||||||
case 0x212:
|
case 0x212: /* Read low-order address bits (A0 - A7) */
|
||||||
case 0x216:
|
case 0x216: /* Read low-order address bits (A0 - A7) */
|
||||||
ret = get_last_addr() & 0xff;
|
ret = get_last_addr() & 0xff;
|
||||||
break;
|
break;
|
||||||
case 0x213:
|
case 0x213: /* Write 00 to disable expansion unit */
|
||||||
|
/* Write 01 to enable expansion unit */
|
||||||
|
/* Read status of expansion unit
|
||||||
|
00 = enable/disable
|
||||||
|
01 = wait-state request flag
|
||||||
|
02-03 = not used
|
||||||
|
04-07 = switch position
|
||||||
|
1 = Off
|
||||||
|
0 =On */
|
||||||
ret = dev->regs[3] & 0x01;
|
ret = dev->regs[3] & 0x01;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -84,6 +84,16 @@
|
|||||||
|
|
||||||
#include "cpu.h"
|
#include "cpu.h"
|
||||||
|
|
||||||
|
#define ISAMEM_IBMXT_CARD 0
|
||||||
|
#define ISAMEM_GENXT_CARD 1
|
||||||
|
#define ISAMEM_IBMAT_CARD 2
|
||||||
|
#define ISAMEM_GENAT_CARD 3
|
||||||
|
#define ISAMEM_P5PAK_CARD 4
|
||||||
|
#define ISAMEM_A6PAK_CARD 5
|
||||||
|
#define ISAMEM_EMS5150_CARD 6
|
||||||
|
#define ISAMEM_EV159_CARD 10
|
||||||
|
#define ISAMEM_RAMPAGEXT_CARD 11
|
||||||
|
#define ISAMEM_ABOVEBOARD_CARD 12
|
||||||
|
|
||||||
#define ISAMEM_DEBUG 0
|
#define ISAMEM_DEBUG 0
|
||||||
|
|
||||||
@ -95,6 +105,9 @@
|
|||||||
#define EMS_PGSIZE (16 << 10) /* one page is this big */
|
#define EMS_PGSIZE (16 << 10) /* one page is this big */
|
||||||
#define EMS_MAXPAGE 4 /* number of viewport pages */
|
#define EMS_MAXPAGE 4 /* number of viewport pages */
|
||||||
|
|
||||||
|
#define EXTRAM_CONVENTIONAL 0
|
||||||
|
#define EXTRAM_HIGH 1
|
||||||
|
#define EXTRAM_XMS 2
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int8_t enabled; /* 1=ENABLED */
|
int8_t enabled; /* 1=ENABLED */
|
||||||
@ -398,28 +411,31 @@ isamem_init(const device_t *info)
|
|||||||
/* Do per-board initialization. */
|
/* Do per-board initialization. */
|
||||||
tot = 0;
|
tot = 0;
|
||||||
switch(dev->board) {
|
switch(dev->board) {
|
||||||
case 0: /* IBM PC/XT Memory Expansion Card */
|
case ISAMEM_IBMXT_CARD: /* IBM PC/XT Memory Expansion Card */
|
||||||
case 2: /* Paradise Systems 5-PAK */
|
case ISAMEM_GENXT_CARD: /* Generic PC/XT Memory Expansion Card */
|
||||||
|
case ISAMEM_P5PAK_CARD: /* Paradise Systems 5-PAK */
|
||||||
|
case ISAMEM_A6PAK_CARD: /* AST SixPakPlus */
|
||||||
dev->total_size = device_get_config_int("size");
|
dev->total_size = device_get_config_int("size");
|
||||||
dev->start_addr = device_get_config_int("start");
|
dev->start_addr = device_get_config_int("start");
|
||||||
tot = dev->total_size;
|
tot = dev->total_size;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1: /* IBM PC/AT Memory Expansion Card */
|
case ISAMEM_IBMAT_CARD: /* IBM PC/AT Memory Expansion Card */
|
||||||
|
case ISAMEM_GENAT_CARD: /* Generic PC/AT Memory Expansion Card */
|
||||||
dev->total_size = device_get_config_int("size");
|
dev->total_size = device_get_config_int("size");
|
||||||
dev->start_addr = device_get_config_int("start");
|
dev->start_addr = device_get_config_int("start");
|
||||||
tot = dev->total_size;
|
tot = dev->total_size;
|
||||||
dev->flags |= FLAG_WIDE;
|
dev->flags |= FLAG_WIDE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3: /* Micro Mainframe EMS-5150(T) */
|
case ISAMEM_EMS5150_CARD: /* Micro Mainframe EMS-5150(T) */
|
||||||
dev->base_addr = device_get_config_hex16("base");
|
dev->base_addr = device_get_config_hex16("base");
|
||||||
dev->total_size = device_get_config_int("size");
|
dev->total_size = device_get_config_int("size");
|
||||||
dev->frame_addr = 0xD0000;
|
dev->frame_addr = 0xD0000;
|
||||||
dev->flags |= (FLAG_EMS | FLAG_CONFIG);
|
dev->flags |= (FLAG_EMS | FLAG_CONFIG);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 10: /* Everex EV-159 RAM 3000 */
|
case ISAMEM_EV159_CARD: /* Everex EV-159 RAM 3000 */
|
||||||
dev->base_addr = device_get_config_hex16("base");
|
dev->base_addr = device_get_config_hex16("base");
|
||||||
dev->total_size = device_get_config_int("size");
|
dev->total_size = device_get_config_int("size");
|
||||||
dev->start_addr = device_get_config_int("start");
|
dev->start_addr = device_get_config_int("start");
|
||||||
@ -433,7 +449,8 @@ isamem_init(const device_t *info)
|
|||||||
dev->frame_addr = 0xE0000;
|
dev->frame_addr = 0xE0000;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 11:
|
case ISAMEM_RAMPAGEXT_CARD: /* AST RAMpage/XT */
|
||||||
|
case ISAMEM_ABOVEBOARD_CARD: /* Intel AboveBoard */
|
||||||
dev->base_addr = device_get_config_hex16("base");
|
dev->base_addr = device_get_config_hex16("base");
|
||||||
dev->total_size = device_get_config_int("size");
|
dev->total_size = device_get_config_int("size");
|
||||||
dev->start_addr = device_get_config_int("start");
|
dev->start_addr = device_get_config_int("start");
|
||||||
@ -496,8 +513,8 @@ dev->frame_addr = 0xE0000;
|
|||||||
t = tot;
|
t = tot;
|
||||||
isamem_log("ISAMEM: RAM at %05iKB (%iKB)\n", addr>>10, t>>10);
|
isamem_log("ISAMEM: RAM at %05iKB (%iKB)\n", addr>>10, t>>10);
|
||||||
|
|
||||||
dev->ext_ram[0].ptr = ptr;
|
dev->ext_ram[EXTRAM_CONVENTIONAL].ptr = ptr;
|
||||||
dev->ext_ram[0].base = addr;
|
dev->ext_ram[EXTRAM_CONVENTIONAL].base = addr;
|
||||||
|
|
||||||
/* Create, initialize and enable the low-memory mapping. */
|
/* Create, initialize and enable the low-memory mapping. */
|
||||||
mem_mapping_add(&dev->low_mapping, addr, t,
|
mem_mapping_add(&dev->low_mapping, addr, t,
|
||||||
@ -507,7 +524,7 @@ dev->frame_addr = 0xE0000;
|
|||||||
ram_writeb,
|
ram_writeb,
|
||||||
(dev->flags&FLAG_WIDE) ? ram_writew : NULL,
|
(dev->flags&FLAG_WIDE) ? ram_writew : NULL,
|
||||||
NULL,
|
NULL,
|
||||||
ptr, MEM_MAPPING_EXTERNAL, &dev->ext_ram[0]);
|
ptr, MEM_MAPPING_EXTERNAL, &dev->ext_ram[EXTRAM_CONVENTIONAL]);
|
||||||
|
|
||||||
/* Tell the memory system this is external RAM. */
|
/* Tell the memory system this is external RAM. */
|
||||||
mem_set_mem_state(addr, t,
|
mem_set_mem_state(addr, t,
|
||||||
@ -531,8 +548,8 @@ dev->frame_addr = 0xE0000;
|
|||||||
|
|
||||||
isamem_log("ISAMEM: RAM at %05iKB (%iKB)\n", addr>>10, t>>10);
|
isamem_log("ISAMEM: RAM at %05iKB (%iKB)\n", addr>>10, t>>10);
|
||||||
|
|
||||||
dev->ext_ram[1].ptr = ptr;
|
dev->ext_ram[EXTRAM_HIGH].ptr = ptr;
|
||||||
dev->ext_ram[1].base = addr + tot;
|
dev->ext_ram[EXTRAM_HIGH].base = addr + tot;
|
||||||
|
|
||||||
/* Update and enable the remap. */
|
/* Update and enable the remap. */
|
||||||
mem_mapping_set(&ram_remapped_mapping,
|
mem_mapping_set(&ram_remapped_mapping,
|
||||||
@ -540,7 +557,7 @@ dev->frame_addr = 0xE0000;
|
|||||||
ram_readb, ram_readw, NULL,
|
ram_readb, ram_readw, NULL,
|
||||||
ram_writeb, ram_writew, NULL,
|
ram_writeb, ram_writew, NULL,
|
||||||
ptr, MEM_MAPPING_EXTERNAL,
|
ptr, MEM_MAPPING_EXTERNAL,
|
||||||
&dev->ext_ram[1]);
|
&dev->ext_ram[EXTRAM_HIGH]);
|
||||||
mem_mapping_disable(&ram_remapped_mapping);
|
mem_mapping_disable(&ram_remapped_mapping);
|
||||||
|
|
||||||
/* Tell the memory system this is external RAM. */
|
/* Tell the memory system this is external RAM. */
|
||||||
@ -565,14 +582,14 @@ dev->frame_addr = 0xE0000;
|
|||||||
t = tot;
|
t = tot;
|
||||||
isamem_log("ISAMEM: RAM at %05iKB (%iKB)\n", addr>>10, t>>10);
|
isamem_log("ISAMEM: RAM at %05iKB (%iKB)\n", addr>>10, t>>10);
|
||||||
|
|
||||||
dev->ext_ram[2].ptr = ptr;
|
dev->ext_ram[EXTRAM_XMS].ptr = ptr;
|
||||||
dev->ext_ram[2].base = addr;
|
dev->ext_ram[EXTRAM_XMS].base = addr;
|
||||||
|
|
||||||
/* Create, initialize and enable the high-memory mapping. */
|
/* Create, initialize and enable the high-memory mapping. */
|
||||||
mem_mapping_add(&dev->high_mapping, addr, t,
|
mem_mapping_add(&dev->high_mapping, addr, t,
|
||||||
ram_readb, ram_readw, NULL,
|
ram_readb, ram_readw, NULL,
|
||||||
ram_writeb, ram_writew, NULL,
|
ram_writeb, ram_writew, NULL,
|
||||||
ptr, MEM_MAPPING_EXTERNAL, &dev->ext_ram[2]);
|
ptr, MEM_MAPPING_EXTERNAL, &dev->ext_ram[EXTRAM_XMS]);
|
||||||
|
|
||||||
/* Tell the memory system this is external RAM. */
|
/* Tell the memory system this is external RAM. */
|
||||||
mem_set_mem_state(addr, t, MEM_READ_EXTERNAL | MEM_WRITE_EXTERNAL);
|
mem_set_mem_state(addr, t, MEM_READ_EXTERNAL | MEM_WRITE_EXTERNAL);
|
||||||
@ -583,6 +600,8 @@ dev->frame_addr = 0xE0000;
|
|||||||
addr += t;
|
addr += t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isa_mem_size += dev->total_size - (k >> 10);
|
||||||
|
|
||||||
/* If EMS is enabled, use the remainder for EMS. */
|
/* If EMS is enabled, use the remainder for EMS. */
|
||||||
if (dev->flags & FLAG_EMS) {
|
if (dev->flags & FLAG_EMS) {
|
||||||
/* EMS 3.2 cannot have more than 2048KB per board. */
|
/* EMS 3.2 cannot have more than 2048KB per board. */
|
||||||
@ -663,7 +682,7 @@ static const device_config_t ibmxt_config[] =
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"start", "Start Address", CONFIG_SPINNER, "", 256, "",
|
"start", "Start Address", CONFIG_SPINNER, "", 256, "",
|
||||||
{ 0, 640-64, 64 },
|
{ 0, 576, 64 },
|
||||||
{ { 0 } }
|
{ { 0 } }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -674,23 +693,50 @@ static const device_config_t ibmxt_config[] =
|
|||||||
static const device_t ibmxt_device = {
|
static const device_t ibmxt_device = {
|
||||||
"IBM PC/XT Memory Expansion",
|
"IBM PC/XT Memory Expansion",
|
||||||
DEVICE_ISA,
|
DEVICE_ISA,
|
||||||
0,
|
ISAMEM_IBMXT_CARD,
|
||||||
isamem_init, isamem_close, NULL,
|
isamem_init, isamem_close, NULL,
|
||||||
{ NULL }, NULL, NULL,
|
{ NULL }, NULL, NULL,
|
||||||
ibmxt_config
|
ibmxt_config
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static const device_config_t genericxt_config[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"size", "Memory Size", CONFIG_SPINNER, "", 16, "",
|
||||||
|
{ 0, 640, 16 },
|
||||||
|
{ { 0 } }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"start", "Start Address", CONFIG_SPINNER, "", 0, "",
|
||||||
|
{ 0, 624, 16 },
|
||||||
|
{ { 0 } }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"", "", -1
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const device_t genericxt_device = {
|
||||||
|
"Generic PC/XT Memory Expansion",
|
||||||
|
DEVICE_ISA,
|
||||||
|
ISAMEM_GENXT_CARD,
|
||||||
|
isamem_init, isamem_close, NULL,
|
||||||
|
{ NULL }, NULL, NULL,
|
||||||
|
genericxt_config
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
static const device_config_t ibmat_config[] =
|
static const device_config_t ibmat_config[] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
"size", "Memory Size", CONFIG_SPINNER, "", 512, "",
|
"size", "Memory Size", CONFIG_SPINNER, "", 512, "",
|
||||||
{ 0, 4096, 512 },
|
{ 0, 12288, 512 },
|
||||||
{ { 0 } }
|
{ { 0 } }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"start", "Start Address", CONFIG_SPINNER, "", 512, "",
|
"start", "Start Address", CONFIG_SPINNER, "", 512, "",
|
||||||
{ 0, 16128, 128 },
|
{ 0, 15872, 512 },
|
||||||
{ { 0 } }
|
{ { 0 } }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -701,13 +747,40 @@ static const device_config_t ibmat_config[] =
|
|||||||
static const device_t ibmat_device = {
|
static const device_t ibmat_device = {
|
||||||
"IBM PC/AT Memory Expansion",
|
"IBM PC/AT Memory Expansion",
|
||||||
DEVICE_ISA,
|
DEVICE_ISA,
|
||||||
1,
|
ISAMEM_IBMAT_CARD,
|
||||||
isamem_init, isamem_close, NULL,
|
isamem_init, isamem_close, NULL,
|
||||||
{ NULL }, NULL, NULL,
|
{ NULL }, NULL, NULL,
|
||||||
ibmat_config
|
ibmat_config
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static const device_config_t genericat_config[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"size", "Memory Size", CONFIG_SPINNER, "", 512, "",
|
||||||
|
{ 0, 16384, 512 },
|
||||||
|
{ { 0 } }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"start", "Start Address", CONFIG_SPINNER, "", 512, "",
|
||||||
|
{ 0, 15872, 128 },
|
||||||
|
{ { 0 } }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"", "", -1
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const device_t genericat_device = {
|
||||||
|
"Generic PC/AT Memory Expansion",
|
||||||
|
DEVICE_ISA,
|
||||||
|
ISAMEM_GENAT_CARD,
|
||||||
|
isamem_init, isamem_close, NULL,
|
||||||
|
{ NULL }, NULL, NULL,
|
||||||
|
genericat_config
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
static const device_config_t p5pak_config[] =
|
static const device_config_t p5pak_config[] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
@ -728,13 +801,40 @@ static const device_config_t p5pak_config[] =
|
|||||||
static const device_t p5pak_device = {
|
static const device_t p5pak_device = {
|
||||||
"Paradise Systems 5-PAK",
|
"Paradise Systems 5-PAK",
|
||||||
DEVICE_ISA,
|
DEVICE_ISA,
|
||||||
2,
|
ISAMEM_P5PAK_CARD,
|
||||||
isamem_init, isamem_close, NULL,
|
isamem_init, isamem_close, NULL,
|
||||||
{ NULL }, NULL, NULL,
|
{ NULL }, NULL, NULL,
|
||||||
p5pak_config
|
p5pak_config
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static const device_config_t a6pak_config[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"size", "Memory Size", CONFIG_SPINNER, "", 64, "",
|
||||||
|
{ 0, 576, 64 },
|
||||||
|
{ { 0 } }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"start", "Start Address", CONFIG_SPINNER, "", 256, "",
|
||||||
|
{ 64, 512, 64 },
|
||||||
|
{ { 0 } }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"", "", -1
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const device_t a6pak_device = {
|
||||||
|
"AST SixPakPlus",
|
||||||
|
DEVICE_ISA,
|
||||||
|
ISAMEM_A6PAK_CARD,
|
||||||
|
isamem_init, isamem_close, NULL,
|
||||||
|
{ NULL }, NULL, NULL,
|
||||||
|
a6pak_config
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
static const device_config_t ems5150_config[] =
|
static const device_config_t ems5150_config[] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
@ -774,7 +874,7 @@ static const device_config_t ems5150_config[] =
|
|||||||
static const device_t ems5150_device = {
|
static const device_t ems5150_device = {
|
||||||
"Micro Mainframe EMS-5150(T)",
|
"Micro Mainframe EMS-5150(T)",
|
||||||
DEVICE_ISA,
|
DEVICE_ISA,
|
||||||
3,
|
ISAMEM_EMS5150_CARD,
|
||||||
isamem_init, isamem_close, NULL,
|
isamem_init, isamem_close, NULL,
|
||||||
{ NULL }, NULL, NULL,
|
{ NULL }, NULL, NULL,
|
||||||
ems5150_config
|
ems5150_config
|
||||||
@ -877,7 +977,7 @@ static const device_config_t ev159_config[] =
|
|||||||
static const device_t ev159_device = {
|
static const device_t ev159_device = {
|
||||||
"Everex EV-159 RAM 3000 Deluxe",
|
"Everex EV-159 RAM 3000 Deluxe",
|
||||||
DEVICE_ISA,
|
DEVICE_ISA,
|
||||||
10,
|
ISAMEM_EV159_CARD,
|
||||||
isamem_init, isamem_close, NULL,
|
isamem_init, isamem_close, NULL,
|
||||||
{ NULL }, NULL, NULL,
|
{ NULL }, NULL, NULL,
|
||||||
ev159_config
|
ev159_config
|
||||||
@ -975,10 +1075,10 @@ static const device_config_t rampage_config[] =
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const device_t isamem_rampage_device = {
|
static const device_t rampage_device = {
|
||||||
"AST RAMpage/XT",
|
"AST RAMpage/XT",
|
||||||
DEVICE_ISA,
|
DEVICE_ISA,
|
||||||
11,
|
ISAMEM_RAMPAGEXT_CARD,
|
||||||
isamem_init, isamem_close, NULL,
|
isamem_init, isamem_close, NULL,
|
||||||
{ NULL }, NULL, NULL,
|
{ NULL }, NULL, NULL,
|
||||||
rampage_config
|
rampage_config
|
||||||
@ -986,14 +1086,119 @@ static const device_t isamem_rampage_device = {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef USE_ISAMEM_IAB
|
||||||
|
static const device_config_t iab_config[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"base", "Address", CONFIG_HEX16, "", 0x0258, "", { 0 },
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"208H", 0x0208
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"218H", 0x0218
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"258H", 0x0258
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"268H", 0x0268
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"2A8H", 0x02A8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"2B8H", 0x02B8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"2E8H", 0x02E8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"frame", "Frame Address", CONFIG_HEX20, "", 0, "", { 0 },
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"Disabled", 0x00000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"C000H", 0xC0000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"D000H", 0xD0000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"E000H", 0xE0000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"width", "I/O Width", CONFIG_SELECTION, "", 8, "", { 0 },
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"8-bit", 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"16-bit", 16
|
||||||
|
},
|
||||||
|
{
|
||||||
|
""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"speed", "Transfer Speed", CONFIG_SELECTION, "", 0, "", { 0 },
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"Standard", 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"High-Speed", 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"size", "Memory Size", CONFIG_SPINNER, "", 128,
|
||||||
|
"",
|
||||||
|
{ 0, 8192, 128 },
|
||||||
|
{ 0 }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"", "", -1
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const device_t iab_device = {
|
||||||
|
"Intel AboveBoard",
|
||||||
|
DEVICE_ISA,
|
||||||
|
ISAMEM_ABOVEBOARD_CARD,
|
||||||
|
isamem_init, isamem_close, NULL,
|
||||||
|
{ NULL }, NULL, NULL,
|
||||||
|
iab_config
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static const struct {
|
static const struct {
|
||||||
const char *internal_name;
|
const char *internal_name;
|
||||||
const device_t *dev;
|
const device_t *dev;
|
||||||
} boards[] = {
|
} boards[] = {
|
||||||
{ "none", NULL },
|
{ "none", NULL },
|
||||||
{ "ibmxt", &ibmxt_device },
|
{ "ibmxt", &ibmxt_device },
|
||||||
|
{ "genericxt", &genericxt_device },
|
||||||
{ "ibmat", &ibmat_device },
|
{ "ibmat", &ibmat_device },
|
||||||
|
{ "genericat", &genericat_device },
|
||||||
{ "p5pak", &p5pak_device },
|
{ "p5pak", &p5pak_device },
|
||||||
|
{ "a6pak", &a6pak_device },
|
||||||
{ "ems5150", &ems5150_device },
|
{ "ems5150", &ems5150_device },
|
||||||
{ "ev159", &ev159_device },
|
{ "ev159", &ev159_device },
|
||||||
#ifdef USE_ISAMEM_BRAT
|
#ifdef USE_ISAMEM_BRAT
|
||||||
@ -1003,9 +1208,9 @@ static const struct {
|
|||||||
{ "rampage", &rampage_device },
|
{ "rampage", &rampage_device },
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_ISAMEM_IAB
|
#ifdef USE_ISAMEM_IAB
|
||||||
{ "iab", &iab_device },
|
{ "iab", &iab_device },
|
||||||
#endif
|
#endif
|
||||||
{ "", NULL }
|
{ "", NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -1014,6 +1219,9 @@ isamem_reset(void)
|
|||||||
{
|
{
|
||||||
int k, i;
|
int k, i;
|
||||||
|
|
||||||
|
/* We explicitly set to zero here or bad things happen */
|
||||||
|
isa_mem_size = 0;
|
||||||
|
|
||||||
for (i = 0; i < ISAMEM_MAX; i++) {
|
for (i = 0; i < ISAMEM_MAX; i++) {
|
||||||
k = isamem_type[i];
|
k = isamem_type[i];
|
||||||
if (k == 0) continue;
|
if (k == 0) continue;
|
||||||
|
@ -83,6 +83,11 @@
|
|||||||
#include <86box/isartc.h>
|
#include <86box/isartc.h>
|
||||||
|
|
||||||
|
|
||||||
|
#define ISARTC_EV170 0
|
||||||
|
#define ISARTC_DTK 1
|
||||||
|
#define ISARTC_P5PAK 2
|
||||||
|
#define ISARTC_A6PAK 3
|
||||||
|
|
||||||
#define ISARTC_DEBUG 0
|
#define ISARTC_DEBUG 0
|
||||||
|
|
||||||
|
|
||||||
@ -506,7 +511,7 @@ isartc_init(const device_t *info)
|
|||||||
|
|
||||||
/* Do per-board initialization. */
|
/* Do per-board initialization. */
|
||||||
switch(dev->board) {
|
switch(dev->board) {
|
||||||
case 0: /* Everex EV-170 Magic I/O */
|
case ISARTC_EV170: /* Everex EV-170 Magic I/O */
|
||||||
dev->flags |= FLAG_YEAR80;
|
dev->flags |= FLAG_YEAR80;
|
||||||
dev->base_addr = device_get_config_hex16("base");
|
dev->base_addr = device_get_config_hex16("base");
|
||||||
dev->base_addrsz = 32;
|
dev->base_addrsz = 32;
|
||||||
@ -519,7 +524,7 @@ isartc_init(const device_t *info)
|
|||||||
dev->year = MM67_AL_DOM; /* year, NON STANDARD */
|
dev->year = MM67_AL_DOM; /* year, NON STANDARD */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1: /* DTK PII-147 Hexa I/O Plus */
|
case ISARTC_DTK: /* DTK PII-147 Hexa I/O Plus */
|
||||||
dev->flags |= FLAG_YEARBCD;
|
dev->flags |= FLAG_YEARBCD;
|
||||||
dev->base_addr = device_get_config_hex16("base");
|
dev->base_addr = device_get_config_hex16("base");
|
||||||
dev->base_addrsz = 32;
|
dev->base_addrsz = 32;
|
||||||
@ -531,7 +536,8 @@ isartc_init(const device_t *info)
|
|||||||
dev->year = MM67_AL_HUNTEN; /* year, NON STANDARD */
|
dev->year = MM67_AL_HUNTEN; /* year, NON STANDARD */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2: /* Paradise Systems 5PAK */
|
case ISARTC_P5PAK: /* Paradise Systems 5PAK */
|
||||||
|
case ISARTC_A6PAK: /* AST SixPakPlus */
|
||||||
dev->flags |= FLAG_YEAR80;
|
dev->flags |= FLAG_YEAR80;
|
||||||
dev->base_addr = 0x02c0;
|
dev->base_addr = 0x02c0;
|
||||||
dev->base_addrsz = 32;
|
dev->base_addrsz = 32;
|
||||||
@ -627,7 +633,7 @@ static const device_config_t ev170_config[] = {
|
|||||||
static const device_t ev170_device = {
|
static const device_t ev170_device = {
|
||||||
"Everex EV-170 Magic I/O",
|
"Everex EV-170 Magic I/O",
|
||||||
DEVICE_ISA,
|
DEVICE_ISA,
|
||||||
0,
|
ISARTC_EV170,
|
||||||
isartc_init, isartc_close, NULL,
|
isartc_init, isartc_close, NULL,
|
||||||
{ NULL }, NULL, NULL,
|
{ NULL }, NULL, NULL,
|
||||||
ev170_config
|
ev170_config
|
||||||
@ -657,7 +663,7 @@ static const device_config_t pii147_config[] = {
|
|||||||
static const device_t pii147_device = {
|
static const device_t pii147_device = {
|
||||||
"DTK PII-147 Hexa I/O Plus",
|
"DTK PII-147 Hexa I/O Plus",
|
||||||
DEVICE_ISA,
|
DEVICE_ISA,
|
||||||
1,
|
ISARTC_DTK,
|
||||||
isartc_init, isartc_close, NULL,
|
isartc_init, isartc_close, NULL,
|
||||||
{ NULL }, NULL, NULL,
|
{ NULL }, NULL, NULL,
|
||||||
pii147_config
|
pii147_config
|
||||||
@ -693,13 +699,49 @@ static const device_config_t p5pak_config[] = {
|
|||||||
static const device_t p5pak_device = {
|
static const device_t p5pak_device = {
|
||||||
"Paradise Systems 5-PAK",
|
"Paradise Systems 5-PAK",
|
||||||
DEVICE_ISA,
|
DEVICE_ISA,
|
||||||
2,
|
ISARTC_P5PAK,
|
||||||
isartc_init, isartc_close, NULL,
|
isartc_init, isartc_close, NULL,
|
||||||
{ NULL }, NULL, NULL,
|
{ NULL }, NULL, NULL,
|
||||||
p5pak_config
|
p5pak_config
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static const device_config_t a6pak_config[] = {
|
||||||
|
{
|
||||||
|
"irq", "IRQ", CONFIG_SELECTION, "", -1, "", { 0 },
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"Disabled", -1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"IRQ2", 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"IRQ3", 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"IRQ5", 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"", "", -1
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const device_t a6pak_device = {
|
||||||
|
"AST SixPakPlus",
|
||||||
|
DEVICE_ISA,
|
||||||
|
ISARTC_A6PAK,
|
||||||
|
isartc_init, isartc_close, NULL,
|
||||||
|
{ NULL }, NULL, NULL,
|
||||||
|
a6pak_config
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
static const struct {
|
static const struct {
|
||||||
const char *internal_name;
|
const char *internal_name;
|
||||||
const device_t *dev;
|
const device_t *dev;
|
||||||
@ -708,6 +750,7 @@ static const struct {
|
|||||||
{ "ev170", &ev170_device },
|
{ "ev170", &ev170_device },
|
||||||
{ "pii147", &pii147_device },
|
{ "pii147", &pii147_device },
|
||||||
{ "p5pak", &p5pak_device },
|
{ "p5pak", &p5pak_device },
|
||||||
|
{ "a6pak", &a6pak_device },
|
||||||
{ "", NULL },
|
{ "", NULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -55,6 +55,17 @@
|
|||||||
#define STAT_IFULL 0x02
|
#define STAT_IFULL 0x02
|
||||||
#define STAT_OFULL 0x01
|
#define STAT_OFULL 0x01
|
||||||
|
|
||||||
|
// Keyboard Types
|
||||||
|
#define KBD_TYPE_PC81 0
|
||||||
|
#define KBD_TYPE_PC82 1
|
||||||
|
#define KBD_TYPE_XT82 2
|
||||||
|
#define KBD_TYPE_XT86 3
|
||||||
|
#define KBD_TYPE_COMPAQ 4
|
||||||
|
#define KBD_TYPE_TANDY 5
|
||||||
|
#define KBD_TYPE_TOSHIBA 6
|
||||||
|
#define KBD_TYPE_VTECH 7
|
||||||
|
#define KBD_TYPE_OLIVETTI 8
|
||||||
|
#define KBD_TYPE_ZENITH 9
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int want_irq;
|
int want_irq;
|
||||||
@ -357,8 +368,8 @@ kbd_log(const char *fmt, ...)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
static uint8_t
|
static uint8_t
|
||||||
get_fdd_switch_settings(){
|
get_fdd_switch_settings() {
|
||||||
|
|
||||||
int i, fdd_count = 0;
|
int i, fdd_count = 0;
|
||||||
|
|
||||||
for (i = 0; i < FDD_NUM; i++) {
|
for (i = 0; i < FDD_NUM; i++) {
|
||||||
@ -369,20 +380,18 @@ get_fdd_switch_settings(){
|
|||||||
if (!fdd_count)
|
if (!fdd_count)
|
||||||
return 0x00;
|
return 0x00;
|
||||||
else
|
else
|
||||||
return ((fdd_count - 1) << 6) | 0x01;
|
return ((fdd_count - 1) << 6) | 0x01;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t
|
static uint8_t
|
||||||
get_videomode_switch_settings(){
|
get_videomode_switch_settings() {
|
||||||
|
|
||||||
if (video_is_mda())
|
if (video_is_mda())
|
||||||
return 0x30;
|
return 0x30;
|
||||||
else if (video_is_cga())
|
else if (video_is_cga())
|
||||||
return 0x20; /* 0x10 would be 40x25 */
|
return 0x20; /* 0x10 would be 40x25 */
|
||||||
else
|
else
|
||||||
return 0x00;
|
return 0x00;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -392,7 +401,7 @@ kbd_poll(void *priv)
|
|||||||
|
|
||||||
timer_advance_u64(&kbd->send_delay_timer, 1000 * TIMER_USEC);
|
timer_advance_u64(&kbd->send_delay_timer, 1000 * TIMER_USEC);
|
||||||
|
|
||||||
if (!(kbd->pb & 0x40) && (kbd->type != 5))
|
if (!(kbd->pb & 0x40) && (kbd->type != KBD_TYPE_TANDY))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (kbd->want_irq) {
|
if (kbd->want_irq) {
|
||||||
@ -504,7 +513,7 @@ kbd_write(uint16_t port, uint8_t val, void *priv)
|
|||||||
xtkbd_t *kbd = (xtkbd_t *)priv;
|
xtkbd_t *kbd = (xtkbd_t *)priv;
|
||||||
|
|
||||||
switch (port) {
|
switch (port) {
|
||||||
case 0x61:
|
case 0x61: /* Keyboard Control Register (aka Port B) */
|
||||||
if (!(kbd->pb & 0x40) && (val & 0x40)) {
|
if (!(kbd->pb & 0x40) && (val & 0x40)) {
|
||||||
key_queue_start = key_queue_end = 0;
|
key_queue_start = key_queue_end = 0;
|
||||||
kbd->want_irq = 0;
|
kbd->want_irq = 0;
|
||||||
@ -514,9 +523,9 @@ kbd_write(uint16_t port, uint8_t val, void *priv)
|
|||||||
kbd->pb = val;
|
kbd->pb = val;
|
||||||
ppi.pb = val;
|
ppi.pb = val;
|
||||||
|
|
||||||
timer_process();
|
timer_process();
|
||||||
|
|
||||||
if ((kbd->type <= 1) && (cassette != NULL))
|
if (((kbd->type == KBD_TYPE_PC81) || (kbd->type == KBD_TYPE_PC82)) && (cassette != NULL))
|
||||||
pc_cas_set_motor(cassette, (kbd->pb & 0x08) == 0);
|
pc_cas_set_motor(cassette, (kbd->pb & 0x08) == 0);
|
||||||
|
|
||||||
speaker_update();
|
speaker_update();
|
||||||
@ -535,13 +544,13 @@ kbd_write(uint16_t port, uint8_t val, void *priv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ENABLE_KEYBOARD_XT_LOG
|
#ifdef ENABLE_KEYBOARD_XT_LOG
|
||||||
if (kbd->type <= 1)
|
if ((kbd->type == KBD_TYPE_PC81) || (kbd->type == KBD_TYPE_PC82))
|
||||||
kbd_log("Cassette motor is %s\n", !(val & 0x08) ? "ON" : "OFF");
|
kbd_log("Cassette motor is %s\n", !(val & 0x08) ? "ON" : "OFF");
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
#ifdef ENABLE_KEYBOARD_XT_LOG
|
#ifdef ENABLE_KEYBOARD_XT_LOG
|
||||||
case 0x62:
|
case 0x62: /* Switch Register (aka Port C) */
|
||||||
if (kbd->type <= 1)
|
if ((kbd->type == KBD_TYPE_PC81) || (kbd->type == KBD_TYPE_PC82))
|
||||||
kbd_log("Cassette IN is %i\n", !!(val & 0x10));
|
kbd_log("Cassette IN is %i\n", !!(val & 0x10));
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
@ -554,16 +563,17 @@ kbd_read(uint16_t port, void *priv)
|
|||||||
{
|
{
|
||||||
xtkbd_t *kbd = (xtkbd_t *)priv;
|
xtkbd_t *kbd = (xtkbd_t *)priv;
|
||||||
uint8_t ret = 0xff;
|
uint8_t ret = 0xff;
|
||||||
|
|
||||||
|
|
||||||
switch (port) {
|
switch (port) {
|
||||||
case 0x60:
|
case 0x60: /* Keyboard Data Register (aka Port A) */
|
||||||
if ((kbd->pb & 0x80) && ((kbd->type <= 3) || (kbd->type == 9))) {
|
if ((kbd->pb & 0x80) && ((kbd->type == KBD_TYPE_PC81) || (kbd->type == KBD_TYPE_PC82)
|
||||||
if (kbd->type <= 1)
|
|| (kbd->type == KBD_TYPE_XT82) || (kbd->type == KBD_TYPE_XT86)
|
||||||
|
|| (kbd->type == KBD_TYPE_ZENITH))) {
|
||||||
|
if ((kbd->type == KBD_TYPE_PC81) || (kbd->type == KBD_TYPE_PC82))
|
||||||
ret = (kbd->pd & ~0x02) | (hasfpu ? 0x02 : 0x00);
|
ret = (kbd->pd & ~0x02) | (hasfpu ? 0x02 : 0x00);
|
||||||
else if ((kbd->type == 2) || (kbd->type == 3))
|
else if ((kbd->type == KBD_TYPE_XT82) || (kbd->type == KBD_TYPE_XT86))
|
||||||
ret = 0xff; /* According to Ruud on the PCem forum, this is supposed to return 0xFF on the XT. */
|
ret = 0xff; /* According to Ruud on the PCem forum, this is supposed to return 0xFF on the XT. */
|
||||||
else if (kbd->type == 9) {
|
else if (kbd->type == KBD_TYPE_ZENITH) {
|
||||||
/* Zenith Data Systems Z-151
|
/* Zenith Data Systems Z-151
|
||||||
* SW1 switch settings:
|
* SW1 switch settings:
|
||||||
* bits 6-7: floppy drive number
|
* bits 6-7: floppy drive number
|
||||||
@ -586,32 +596,41 @@ kbd_read(uint16_t port, void *priv)
|
|||||||
ret = kbd->pa;
|
ret = kbd->pa;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x61:
|
case 0x61: /* Keyboard Control Register (aka Port B) */
|
||||||
ret = kbd->pb;
|
ret = kbd->pb;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x62:
|
case 0x62: /* Switch Register (aka Port C) */
|
||||||
if (kbd->type == 0)
|
if ((kbd->type == KBD_TYPE_PC81) || (kbd->type == KBD_TYPE_PC82)) {
|
||||||
ret = 0x00;
|
if (kbd->pb & 0x04) /* PB2 */
|
||||||
else if (kbd->type == 1) {
|
switch (mem_size + isa_mem_size) {
|
||||||
if (kbd->pb & 0x04)
|
case 64:
|
||||||
ret = ((mem_size - 64) / 32) & 0x0f;
|
case 48:
|
||||||
|
case 32:
|
||||||
|
case 16:
|
||||||
|
ret = 0x00;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ret = (((mem_size + isa_mem_size) - 64) / 32) & 0x0f;
|
||||||
|
break;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
ret = ((mem_size - 64) / 32) >> 4;
|
ret = (((mem_size + isa_mem_size) - 64) / 32) >> 4;
|
||||||
} else if (kbd->type == 8 || kbd->type == 9) {
|
} else if (kbd->type == KBD_TYPE_OLIVETTI
|
||||||
|
|| kbd->type == KBD_TYPE_ZENITH) {
|
||||||
/* Olivetti M19 or Zenith Data Systems Z-151 */
|
/* Olivetti M19 or Zenith Data Systems Z-151 */
|
||||||
if (kbd->pb & 0x04)
|
if (kbd->pb & 0x04) /* PB2 */
|
||||||
ret = kbd->pd & 0xbf;
|
ret = kbd->pd & 0xbf;
|
||||||
else
|
else
|
||||||
ret = kbd->pd >> 4;
|
ret = kbd->pd >> 4;
|
||||||
} else {
|
} else {
|
||||||
if (kbd->pb & 0x08)
|
if (kbd->pb & 0x08) /* PB3 */
|
||||||
ret = kbd->pd >> 4;
|
ret = kbd->pd >> 4;
|
||||||
else {
|
else {
|
||||||
/* LaserXT = Always 512k RAM;
|
/* LaserXT = Always 512k RAM;
|
||||||
LaserXT/3 = Bit 0: set = 512k, clear = 256k. */
|
LaserXT/3 = Bit 0: set = 512k, clear = 256k. */
|
||||||
#if defined(DEV_BRANCH) && defined(USE_LASERXT)
|
#if defined(DEV_BRANCH) && defined(USE_LASERXT)
|
||||||
if (kbd->type == 6)
|
if (kbd->type == KBD_TYPE_TOSHIBA)
|
||||||
ret = ((mem_size == 512) ? 0x0d : 0x0c) | (hasfpu ? 0x02 : 0x00);
|
ret = ((mem_size == 512) ? 0x0d : 0x0c) | (hasfpu ? 0x02 : 0x00);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
@ -622,19 +641,21 @@ kbd_read(uint16_t port, void *priv)
|
|||||||
|
|
||||||
/* This is needed to avoid error 131 (cassette error).
|
/* This is needed to avoid error 131 (cassette error).
|
||||||
This is serial read: bit 5 = clock, bit 4 = data, cassette header is 256 x 0xff. */
|
This is serial read: bit 5 = clock, bit 4 = data, cassette header is 256 x 0xff. */
|
||||||
if (kbd->type <= 1) {
|
if ((kbd->type == KBD_TYPE_PC81) || (kbd->type == KBD_TYPE_PC82)) {
|
||||||
if (cassette == NULL)
|
if (cassette == NULL)
|
||||||
ret |= (ppispeakon ? 0x10 : 0);
|
ret |= (ppispeakon ? 0x10 : 0);
|
||||||
else
|
else
|
||||||
ret |= (pc_cas_get_inp(cassette) ? 0x10 : 0);
|
ret |= (pc_cas_get_inp(cassette) ? 0x10 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kbd->type == 5)
|
if (kbd->type == KBD_TYPE_TANDY)
|
||||||
ret |= (tandy1k_eeprom_read() ? 0x10 : 0);
|
ret |= (tandy1k_eeprom_read() ? 0x10 : 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x63:
|
case 0x63: /* Keyboard Configuration Register (aka Port D) */
|
||||||
if ((kbd->type == 2) || (kbd->type == 3) || (kbd->type == 4) || (kbd->type == 6))
|
if ((kbd->type == KBD_TYPE_XT82) || (kbd->type == KBD_TYPE_XT86)
|
||||||
|
|| (kbd->type == KBD_TYPE_COMPAQ)
|
||||||
|
|| (kbd->type == KBD_TYPE_TOSHIBA))
|
||||||
ret = kbd->pd;
|
ret = kbd->pd;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -685,9 +706,14 @@ kbd_init(const device_t *info)
|
|||||||
|
|
||||||
video_reset(gfxcard);
|
video_reset(gfxcard);
|
||||||
|
|
||||||
if ((kbd->type <= 3) || (kbd->type == 4) || (kbd->type == 6) || (kbd->type == 8)) {
|
if ((kbd->type == KBD_TYPE_PC81) || (kbd->type == KBD_TYPE_PC82)
|
||||||
|
|| (kbd->type == KBD_TYPE_XT82) || (kbd->type <= KBD_TYPE_XT86)
|
||||||
|
|| (kbd->type == KBD_TYPE_COMPAQ)
|
||||||
|
|| (kbd->type == KBD_TYPE_TOSHIBA)
|
||||||
|
|| (kbd->type == KBD_TYPE_OLIVETTI)) {
|
||||||
|
|
||||||
/* DIP switch readout: bit set = OFF, clear = ON. */
|
/* DIP switch readout: bit set = OFF, clear = ON. */
|
||||||
if (kbd->type == 8)
|
if (kbd->type == KBD_TYPE_OLIVETTI)
|
||||||
/* Olivetti M19
|
/* Olivetti M19
|
||||||
* Jumpers J1, J2 - monitor type.
|
* Jumpers J1, J2 - monitor type.
|
||||||
* 01 - mono (high-res)
|
* 01 - mono (high-res)
|
||||||
@ -699,10 +725,13 @@ kbd_init(const device_t *info)
|
|||||||
/* Switches 7, 8 - floppy drives. */
|
/* Switches 7, 8 - floppy drives. */
|
||||||
kbd->pd = get_fdd_switch_settings();
|
kbd->pd = get_fdd_switch_settings();
|
||||||
|
|
||||||
|
/* Siitches 5, 6 - video card type */
|
||||||
kbd->pd |= get_videomode_switch_settings();
|
kbd->pd |= get_videomode_switch_settings();
|
||||||
|
|
||||||
/* Switches 3, 4 - memory size. */
|
/* Switches 3, 4 - memory size. */
|
||||||
if ((kbd->type == 3) || (kbd->type == 4) || (kbd->type == 6)) {
|
if ((kbd->type == KBD_TYPE_XT86)
|
||||||
|
|| (kbd->type == KBD_TYPE_COMPAQ)
|
||||||
|
|| (kbd->type == KBD_TYPE_TOSHIBA)) {
|
||||||
switch (mem_size) {
|
switch (mem_size) {
|
||||||
case 256:
|
case 256:
|
||||||
kbd->pd |= 0x00;
|
kbd->pd |= 0x00;
|
||||||
@ -718,34 +747,49 @@ kbd_init(const device_t *info)
|
|||||||
kbd->pd |= 0x0c;
|
kbd->pd |= 0x0c;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else if (kbd->type >= 1) {
|
} else if (kbd->type == KBD_TYPE_XT82) {
|
||||||
switch (mem_size) {
|
switch (mem_size) {
|
||||||
case 64:
|
case 64: /* 1x64k */
|
||||||
kbd->pd |= 0x00;
|
kbd->pd |= 0x00;
|
||||||
break;
|
break;
|
||||||
case 128:
|
case 128: /* 2x64k */
|
||||||
kbd->pd |= 0x04;
|
kbd->pd |= 0x04;
|
||||||
break;
|
break;
|
||||||
case 192:
|
case 192: /* 3x64k */
|
||||||
kbd->pd |= 0x08;
|
kbd->pd |= 0x08;
|
||||||
break;
|
break;
|
||||||
case 256:
|
case 256: /* 4x64k */
|
||||||
default:
|
default:
|
||||||
kbd->pd |= 0x0c;
|
kbd->pd |= 0x0c;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else if (kbd->type == KBD_TYPE_PC82) {
|
||||||
switch (mem_size) {
|
switch (mem_size) {
|
||||||
case 16:
|
case 192: /* 3x64k, not supported by stock BIOS due to bugs */
|
||||||
kbd->pd |= 0x00;
|
|
||||||
break;
|
|
||||||
case 32:
|
|
||||||
kbd->pd |= 0x04;
|
|
||||||
break;
|
|
||||||
case 48:
|
|
||||||
kbd->pd |= 0x08;
|
kbd->pd |= 0x08;
|
||||||
break;
|
break;
|
||||||
case 64:
|
case 64: /* 4x16k */
|
||||||
|
case 96: /* 2x32k + 2x16k */
|
||||||
|
case 128: /* 4x32k */
|
||||||
|
case 160: /* 2x64k + 2x16k */
|
||||||
|
case 224: /* 3x64k + 1x32k */
|
||||||
|
case 256: /* 4x64k */
|
||||||
|
default:
|
||||||
|
kbd->pd |= 0x0c;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else { /* really just the PC '81 */
|
||||||
|
switch (mem_size) {
|
||||||
|
case 16: /* 1x16k */
|
||||||
|
kbd->pd |= 0x00;
|
||||||
|
break;
|
||||||
|
case 32: /* 2x16k */
|
||||||
|
kbd->pd |= 0x04;
|
||||||
|
break;
|
||||||
|
case 48: /* 3x16k */
|
||||||
|
kbd->pd |= 0x08;
|
||||||
|
break;
|
||||||
|
case 64: /* 4x16k */
|
||||||
default:
|
default:
|
||||||
kbd->pd |= 0x0c;
|
kbd->pd |= 0x0c;
|
||||||
break;
|
break;
|
||||||
@ -755,7 +799,7 @@ kbd_init(const device_t *info)
|
|||||||
/* Switch 2 - 8087 FPU. */
|
/* Switch 2 - 8087 FPU. */
|
||||||
if (hasfpu)
|
if (hasfpu)
|
||||||
kbd->pd |= 0x02;
|
kbd->pd |= 0x02;
|
||||||
} else if (kbd-> type == 9) {
|
} else if (kbd-> type == KBD_TYPE_ZENITH) {
|
||||||
/* Zenith Data Systems Z-151
|
/* Zenith Data Systems Z-151
|
||||||
* SW2 switch settings:
|
* SW2 switch settings:
|
||||||
* bit 7: monitor frequency
|
* bit 7: monitor frequency
|
||||||
@ -799,8 +843,8 @@ kbd_init(const device_t *info)
|
|||||||
|
|
||||||
keyboard_set_table(scancode_xt);
|
keyboard_set_table(scancode_xt);
|
||||||
|
|
||||||
is_tandy = (kbd->type == 5);
|
is_tandy = (kbd->type == KBD_TYPE_TANDY);
|
||||||
is_t1x00 = (kbd->type == 6);
|
is_t1x00 = (kbd->type == KBD_TYPE_TOSHIBA);
|
||||||
|
|
||||||
is_amstrad = 0;
|
is_amstrad = 0;
|
||||||
|
|
||||||
@ -831,7 +875,7 @@ kbd_close(void *priv)
|
|||||||
const device_t keyboard_pc_device = {
|
const device_t keyboard_pc_device = {
|
||||||
"IBM PC Keyboard (1981)",
|
"IBM PC Keyboard (1981)",
|
||||||
0,
|
0,
|
||||||
0,
|
KBD_TYPE_PC81,
|
||||||
kbd_init,
|
kbd_init,
|
||||||
kbd_close,
|
kbd_close,
|
||||||
kbd_reset,
|
kbd_reset,
|
||||||
@ -841,7 +885,7 @@ const device_t keyboard_pc_device = {
|
|||||||
const device_t keyboard_pc82_device = {
|
const device_t keyboard_pc82_device = {
|
||||||
"IBM PC Keyboard (1982)",
|
"IBM PC Keyboard (1982)",
|
||||||
0,
|
0,
|
||||||
1,
|
KBD_TYPE_PC82,
|
||||||
kbd_init,
|
kbd_init,
|
||||||
kbd_close,
|
kbd_close,
|
||||||
kbd_reset,
|
kbd_reset,
|
||||||
@ -851,7 +895,7 @@ const device_t keyboard_pc82_device = {
|
|||||||
const device_t keyboard_xt_device = {
|
const device_t keyboard_xt_device = {
|
||||||
"XT (1982) Keyboard",
|
"XT (1982) Keyboard",
|
||||||
0,
|
0,
|
||||||
2,
|
KBD_TYPE_XT82,
|
||||||
kbd_init,
|
kbd_init,
|
||||||
kbd_close,
|
kbd_close,
|
||||||
kbd_reset,
|
kbd_reset,
|
||||||
@ -861,7 +905,7 @@ const device_t keyboard_xt_device = {
|
|||||||
const device_t keyboard_xt86_device = {
|
const device_t keyboard_xt86_device = {
|
||||||
"XT (1986) Keyboard",
|
"XT (1986) Keyboard",
|
||||||
0,
|
0,
|
||||||
3,
|
KBD_TYPE_XT86,
|
||||||
kbd_init,
|
kbd_init,
|
||||||
kbd_close,
|
kbd_close,
|
||||||
kbd_reset,
|
kbd_reset,
|
||||||
@ -871,7 +915,7 @@ const device_t keyboard_xt86_device = {
|
|||||||
const device_t keyboard_xt_compaq_device = {
|
const device_t keyboard_xt_compaq_device = {
|
||||||
"Compaq Portable Keyboard",
|
"Compaq Portable Keyboard",
|
||||||
0,
|
0,
|
||||||
4,
|
KBD_TYPE_COMPAQ,
|
||||||
kbd_init,
|
kbd_init,
|
||||||
kbd_close,
|
kbd_close,
|
||||||
kbd_reset,
|
kbd_reset,
|
||||||
@ -881,7 +925,7 @@ const device_t keyboard_xt_compaq_device = {
|
|||||||
const device_t keyboard_tandy_device = {
|
const device_t keyboard_tandy_device = {
|
||||||
"Tandy 1000 Keyboard",
|
"Tandy 1000 Keyboard",
|
||||||
0,
|
0,
|
||||||
5,
|
KBD_TYPE_TANDY,
|
||||||
kbd_init,
|
kbd_init,
|
||||||
kbd_close,
|
kbd_close,
|
||||||
kbd_reset,
|
kbd_reset,
|
||||||
@ -891,7 +935,7 @@ const device_t keyboard_tandy_device = {
|
|||||||
const device_t keyboard_xt_t1x00_device = {
|
const device_t keyboard_xt_t1x00_device = {
|
||||||
"Toshiba T1x00 Keyboard",
|
"Toshiba T1x00 Keyboard",
|
||||||
0,
|
0,
|
||||||
6,
|
KBD_TYPE_TOSHIBA,
|
||||||
kbd_init,
|
kbd_init,
|
||||||
kbd_close,
|
kbd_close,
|
||||||
kbd_reset,
|
kbd_reset,
|
||||||
@ -902,7 +946,7 @@ const device_t keyboard_xt_t1x00_device = {
|
|||||||
const device_t keyboard_xt_lxt3_device = {
|
const device_t keyboard_xt_lxt3_device = {
|
||||||
"VTech Laser XT3 Keyboard",
|
"VTech Laser XT3 Keyboard",
|
||||||
0,
|
0,
|
||||||
7,
|
KBD_TYPE_VTECH,
|
||||||
kbd_init,
|
kbd_init,
|
||||||
kbd_close,
|
kbd_close,
|
||||||
kbd_reset,
|
kbd_reset,
|
||||||
@ -913,7 +957,7 @@ const device_t keyboard_xt_lxt3_device = {
|
|||||||
const device_t keyboard_xt_olivetti_device = {
|
const device_t keyboard_xt_olivetti_device = {
|
||||||
"Olivetti XT Keyboard",
|
"Olivetti XT Keyboard",
|
||||||
0,
|
0,
|
||||||
8,
|
KBD_TYPE_OLIVETTI,
|
||||||
kbd_init,
|
kbd_init,
|
||||||
kbd_close,
|
kbd_close,
|
||||||
kbd_reset,
|
kbd_reset,
|
||||||
@ -923,7 +967,7 @@ const device_t keyboard_xt_olivetti_device = {
|
|||||||
const device_t keyboard_xt_zenith_device = {
|
const device_t keyboard_xt_zenith_device = {
|
||||||
"Zenith XT Keyboard",
|
"Zenith XT Keyboard",
|
||||||
0,
|
0,
|
||||||
9,
|
KBD_TYPE_ZENITH,
|
||||||
kbd_init,
|
kbd_init,
|
||||||
kbd_close,
|
kbd_close,
|
||||||
kbd_reset,
|
kbd_reset,
|
||||||
|
@ -2311,7 +2311,7 @@ fdc_reset(void *priv)
|
|||||||
fdc->max_track = (fdc->flags & FDC_FLAG_MORE_TRACKS) ? 85 : 79;
|
fdc->max_track = (fdc->flags & FDC_FLAG_MORE_TRACKS) ? 85 : 79;
|
||||||
|
|
||||||
fdc_remove(fdc);
|
fdc_remove(fdc);
|
||||||
fdc_set_base(fdc, (fdc->flags & FDC_FLAG_PCJR) ? 0x00f0 : 0x03f0);
|
fdc_set_base(fdc, (fdc->flags & FDC_FLAG_PCJR) ? FDC_PRIMARY_PCJR_ADDR : FDC_PRIMARY_ADDR);
|
||||||
|
|
||||||
current_drive = 0;
|
current_drive = 0;
|
||||||
|
|
||||||
@ -2342,12 +2342,12 @@ fdc_init(const device_t *info)
|
|||||||
|
|
||||||
fdc->flags = info->local;
|
fdc->flags = info->local;
|
||||||
|
|
||||||
fdc->irq = 6;
|
fdc->irq = FDC_PRIMARY_IRQ;
|
||||||
|
|
||||||
if (fdc->flags & FDC_FLAG_PCJR)
|
if (fdc->flags & FDC_FLAG_PCJR)
|
||||||
timer_add(&fdc->watchdog_timer, fdc_watchdog_poll, fdc, 0);
|
timer_add(&fdc->watchdog_timer, fdc_watchdog_poll, fdc, 0);
|
||||||
else
|
else
|
||||||
fdc->dma_ch = 2;
|
fdc->dma_ch = FDC_PRIMARY_DMA;
|
||||||
|
|
||||||
fdc_log("FDC added: %04X (flags: %08X)\n", fdc->base_address, fdc->flags);
|
fdc_log("FDC added: %04X (flags: %08X)\n", fdc->base_address, fdc->flags);
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ b215_init(const device_t *info)
|
|||||||
rom_init(&dev->rom, ROM_B215, ROM_ADDR, 0x2000, 0x1fff, 0, MEM_MAPPING_EXTERNAL);
|
rom_init(&dev->rom, ROM_B215, ROM_ADDR, 0x2000, 0x1fff, 0, MEM_MAPPING_EXTERNAL);
|
||||||
|
|
||||||
dev->fdc_controller = device_add(&fdc_um8398_device);
|
dev->fdc_controller = device_add(&fdc_um8398_device);
|
||||||
io_sethandler(0x03f0, 1, b215_read, NULL, NULL, NULL, NULL, NULL, dev);
|
io_sethandler(FDC_PRIMARY_ADDR, 1, b215_read, NULL, NULL, NULL, NULL, NULL, dev);
|
||||||
|
|
||||||
return dev;
|
return dev;
|
||||||
}
|
}
|
||||||
|
@ -122,7 +122,8 @@ extern int sound_is_float, /* (C) sound uses FP values */
|
|||||||
GUS, GUSMAX, /* (C) sound option */
|
GUS, GUSMAX, /* (C) sound option */
|
||||||
SSI2001, /* (C) sound option */
|
SSI2001, /* (C) sound option */
|
||||||
voodoo_enabled; /* (C) video option */
|
voodoo_enabled; /* (C) video option */
|
||||||
extern uint32_t mem_size; /* (C) memory size */
|
extern uint32_t mem_size; /* (C) memory size (Installed on system board) */
|
||||||
|
extern uint32_t isa_mem_size; /* (C) memory size (ISA Memory Cards) */
|
||||||
extern int cpu, /* (C) cpu type */
|
extern int cpu, /* (C) cpu type */
|
||||||
cpu_use_dynarec, /* (C) cpu uses/needs Dyna */
|
cpu_use_dynarec, /* (C) cpu uses/needs Dyna */
|
||||||
fpu_type; /* (C) fpu type */
|
fpu_type; /* (C) fpu type */
|
||||||
|
@ -24,6 +24,22 @@
|
|||||||
|
|
||||||
extern int fdc_type;
|
extern int fdc_type;
|
||||||
|
|
||||||
|
#define FDC_PRIMARY_ADDR 0x03f0
|
||||||
|
#define FDC_PRIMARY_IRQ 6
|
||||||
|
#define FDC_PRIMARY_DMA 2
|
||||||
|
#define FDC_PRIMARY_PCJR_ADDR 0x00f0
|
||||||
|
#define FDC_PRIMARY_PCJR_IRQ 6
|
||||||
|
#define FDC_PRIMARY_PCJR_DMA 2
|
||||||
|
#define FDC_SECONDARY_ADDR 0x0370
|
||||||
|
#define FDC_SECONDARY_IRQ 6
|
||||||
|
#define FDC_SECONDARY_DMA 2
|
||||||
|
#define FDC_TERTIARY_ADDR 0x0360
|
||||||
|
#define FDC_TERTIARY_IRQ 6
|
||||||
|
#define FDC_TERTIARY_DMA 2
|
||||||
|
#define FDC_QUATERNARY_ADDR 0x03e0
|
||||||
|
#define FDC_QUATERNARY_IRQ 6
|
||||||
|
#define FDC_QUATERNARY_DMA 2
|
||||||
|
|
||||||
#define FDC_FLAG_PCJR 0x01 /* PCjr */
|
#define FDC_FLAG_PCJR 0x01 /* PCjr */
|
||||||
#define FDC_FLAG_DISKCHG_ACTLOW 0x02 /* Amstrad, PS/1, PS/2 ISA */
|
#define FDC_FLAG_DISKCHG_ACTLOW 0x02 /* Amstrad, PS/1, PS/2 ISA */
|
||||||
#define FDC_FLAG_AT 0x04 /* AT+, PS/x */
|
#define FDC_FLAG_AT 0x04 /* AT+, PS/x */
|
||||||
|
@ -19,6 +19,8 @@
|
|||||||
* Copyright 2016-2020 Miran Grca.
|
* Copyright 2016-2020 Miran Grca.
|
||||||
* Copyright 2016-2020 TheCollector1995.
|
* Copyright 2016-2020 TheCollector1995.
|
||||||
*/
|
*/
|
||||||
|
#ifndef SOUND_MPU401_H
|
||||||
|
# define SOUND_MPU401_H
|
||||||
|
|
||||||
#define MPU401_VERSION 0x15
|
#define MPU401_VERSION 0x15
|
||||||
#define MPU401_REVISION 0x01
|
#define MPU401_REVISION 0x01
|
||||||
@ -160,3 +162,6 @@ extern void mpu401_irq_attach(mpu_t *mpu, void (*ext_irq_update)(void *priv, int
|
|||||||
|
|
||||||
extern int MPU401_InputSysex(void *p, uint8_t *buffer, uint32_t len, int abort);
|
extern int MPU401_InputSysex(void *p, uint8_t *buffer, uint32_t len, int abort);
|
||||||
extern void MPU401_InputMsg(void *p, uint8_t *msg, uint32_t len);
|
extern void MPU401_InputMsg(void *p, uint8_t *msg, uint32_t len);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /*SOUND_MPU401_H*/
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
#include "cpu.h"
|
#include "cpu.h"
|
||||||
#include <86box/video.h>
|
#include <86box/video.h>
|
||||||
#include <86box/machine.h>
|
#include <86box/machine.h>
|
||||||
|
#include <86box/isamem.h>
|
||||||
|
|
||||||
|
|
||||||
int bios_only = 0;
|
int bios_only = 0;
|
||||||
@ -101,6 +102,9 @@ machine_init_ex(int m)
|
|||||||
/* Prepare some video-related things if we're using internal
|
/* Prepare some video-related things if we're using internal
|
||||||
or no video. */
|
or no video. */
|
||||||
video_pre_reset(gfxcard);
|
video_pre_reset(gfxcard);
|
||||||
|
|
||||||
|
/* Reset any ISA memory cards. */
|
||||||
|
isamem_reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* All good, boot the machine! */
|
/* All good, boot the machine! */
|
||||||
|
@ -105,7 +105,7 @@ const machine_type_t machine_types[] = {
|
|||||||
const machine_t machines[] = {
|
const machine_t machines[] = {
|
||||||
/* 8088 Machines */
|
/* 8088 Machines */
|
||||||
{ "[8088] IBM PC (1981)", "ibmpc", MACHINE_TYPE_8088, CPU_PKG_8088, 0, 0, 0, 0, 0, 0, 0, MACHINE_PC, 16, 64, 16, 0, machine_pc_init, NULL },
|
{ "[8088] IBM PC (1981)", "ibmpc", MACHINE_TYPE_8088, CPU_PKG_8088, 0, 0, 0, 0, 0, 0, 0, MACHINE_PC, 16, 64, 16, 0, machine_pc_init, NULL },
|
||||||
{ "[8088] IBM PC (1982)", "ibmpc82", MACHINE_TYPE_8088, CPU_PKG_8088, 0, 0, 0, 0, 0, 0, 0, MACHINE_PC, 256, 256, 256, 0, machine_pc82_init, NULL },
|
{ "[8088] IBM PC (1982)", "ibmpc82", MACHINE_TYPE_8088, CPU_PKG_8088, 0, 0, 0, 0, 0, 0, 0, MACHINE_PC, 64, 256, 64, 0, machine_pc82_init, NULL },
|
||||||
{ "[8088] IBM PCjr", "ibmpcjr", MACHINE_TYPE_8088, CPU_PKG_8088, 0, 4772728, 4772728, 0, 0, 0, 0, MACHINE_PC | MACHINE_VIDEO_FIXED | MACHINE_CARTRIDGE, 128, 640, 128, 0, machine_pcjr_init, pcjr_get_device },
|
{ "[8088] IBM PCjr", "ibmpcjr", MACHINE_TYPE_8088, CPU_PKG_8088, 0, 4772728, 4772728, 0, 0, 0, 0, MACHINE_PC | MACHINE_VIDEO_FIXED | MACHINE_CARTRIDGE, 128, 640, 128, 0, machine_pcjr_init, pcjr_get_device },
|
||||||
{ "[8088] IBM XT (1982)", "ibmxt", MACHINE_TYPE_8088, CPU_PKG_8088, 0, 0, 0, 0, 0, 0, 0, MACHINE_PC, 64, 256, 64, 0, machine_xt_init, NULL },
|
{ "[8088] IBM XT (1982)", "ibmxt", MACHINE_TYPE_8088, CPU_PKG_8088, 0, 0, 0, 0, 0, 0, 0, MACHINE_PC, 64, 256, 64, 0, machine_xt_init, NULL },
|
||||||
{ "[8088] IBM XT (1986)", "ibmxt86", MACHINE_TYPE_8088, CPU_PKG_8088, 0, 0, 0, 0, 0, 0, 0, MACHINE_PC, 256, 640, 64, 0, machine_xt86_init, NULL },
|
{ "[8088] IBM XT (1986)", "ibmxt86", MACHINE_TYPE_8088, CPU_PKG_8088, 0, 0, 0, 0, 0, 0, 0, MACHINE_PC, 256, 640, 64, 0, machine_xt86_init, NULL },
|
||||||
|
@ -1259,6 +1259,9 @@ static const device_config_t aha_154xb_config[] = {
|
|||||||
{
|
{
|
||||||
"D800H", 0xd8000
|
"D800H", 0xd8000
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"DC00H", 0xdc000
|
||||||
|
},
|
||||||
{
|
{
|
||||||
""
|
""
|
||||||
}
|
}
|
||||||
@ -1357,6 +1360,9 @@ static const device_config_t aha_154x_config[] = {
|
|||||||
{
|
{
|
||||||
"D800H", 0xd8000
|
"D800H", 0xd8000
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"DC00H", 0xdc000
|
||||||
|
},
|
||||||
{
|
{
|
||||||
""
|
""
|
||||||
}
|
}
|
||||||
@ -1450,12 +1456,21 @@ static const device_config_t aha_154xcf_config[] = {
|
|||||||
{
|
{
|
||||||
"C800H", 0xc8000
|
"C800H", 0xc8000
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"CC00H", 0xcc000
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"D000H", 0xd0000
|
"D000H", 0xd0000
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"D400H", 0xd4000
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"D800H", 0xd8000
|
"D800H", 0xd8000
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"DC00H", 0xdc000
|
||||||
|
},
|
||||||
{
|
{
|
||||||
""
|
""
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#include <86box/filters.h>
|
#include <86box/filters.h>
|
||||||
#include <86box/snd_mpu401.h>
|
#include <86box/snd_mpu401.h>
|
||||||
#include <86box/snd_opl.h>
|
#include <86box/snd_opl.h>
|
||||||
|
#include <86box/snd_sb.h>
|
||||||
#include <86box/snd_sb_dsp.h>
|
#include <86box/snd_sb_dsp.h>
|
||||||
|
|
||||||
|
|
||||||
@ -413,7 +414,7 @@ static void pas16_pit_out(uint16_t port, uint8_t val, void *p)
|
|||||||
{
|
{
|
||||||
if (!(val & 0x20))
|
if (!(val & 0x20))
|
||||||
{
|
{
|
||||||
if (val & 2) pas16->pit.rl[0] = timer_get_remaining_u64(&pit.timer[0]) / PITCONST;;
|
if (val & 2) pas16->pit.rl[0] = timer_get_remaining_u64(&pas16->pit.timer[0]) / PITCONST;;
|
||||||
if (val & 4) pas16->pit.rl[1] = pas16->pit.c[1];
|
if (val & 4) pas16->pit.rl[1] = pas16->pit.c[1];
|
||||||
if (val & 8) pas16->pit.rl[2] = pas16->pit.c[2];
|
if (val & 8) pas16->pit.rl[2] = pas16->pit.c[2];
|
||||||
}
|
}
|
||||||
@ -429,7 +430,7 @@ static void pas16_pit_out(uint16_t port, uint8_t val, void *p)
|
|||||||
if (!(pas16->pit.ctrl & 0x30))
|
if (!(pas16->pit.ctrl & 0x30))
|
||||||
{
|
{
|
||||||
if (!t)
|
if (!t)
|
||||||
pas16->pit.rl[t] = timer_get_remaining_u64(&pit.timer[t]) / PITCONST;
|
pas16->pit.rl[t] = timer_get_remaining_u64(&pas16->pit.timer[t]) / PITCONST;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pas16->pit.rl[t] = pas16->pit.c[t];
|
pas16->pit.rl[t] = pas16->pit.c[t];
|
||||||
@ -450,7 +451,7 @@ static void pas16_pit_out(uint16_t port, uint8_t val, void *p)
|
|||||||
{
|
{
|
||||||
pas16->pit.rm[t] = 3;
|
pas16->pit.rm[t] = 3;
|
||||||
if (!t)
|
if (!t)
|
||||||
pas16->pit.rl[t] = timer_get_remaining_u64(&pit.timer[t]) / PITCONST;
|
pas16->pit.rl[t] = timer_get_remaining_u64(&pas16->pit.timer[t]) / PITCONST;
|
||||||
else
|
else
|
||||||
pas16->pit.rl[t] = pas16->pit.c[t];
|
pas16->pit.rl[t] = pas16->pit.c[t];
|
||||||
}
|
}
|
||||||
@ -519,8 +520,8 @@ static uint8_t pas16_pit_in(uint16_t port, void *p)
|
|||||||
pas16->pit.rereadlatch[t] = 0;
|
pas16->pit.rereadlatch[t] = 0;
|
||||||
if (!t)
|
if (!t)
|
||||||
{
|
{
|
||||||
pas16->pit.rl[t] = timer_get_remaining_u64(&pit.timer[t]) / PITCONST;
|
pas16->pit.rl[t] = timer_get_remaining_u64(&pas16->pit.timer[t]) / PITCONST;
|
||||||
if ((timer_get_remaining_u64(&pit.timer[t]) / PITCONST) > 65536)
|
if ((timer_get_remaining_u64(&pas16->pit.timer[t]) / PITCONST) > 65536)
|
||||||
pas16->pit.rl[t] = 0xFFFF;
|
pas16->pit.rl[t] = 0xFFFF;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -69,6 +69,12 @@ ifeq ($(DEV_BUILD), y)
|
|||||||
ifndef XL24
|
ifndef XL24
|
||||||
XL24 := y
|
XL24 := y
|
||||||
endif
|
endif
|
||||||
|
ifndef ISAMEM_RAMPAGE
|
||||||
|
ISAMEM_RAMPAGE := y
|
||||||
|
endif
|
||||||
|
ifndef ISAMEM_IAB
|
||||||
|
ISAMEM_IAB := y
|
||||||
|
endif
|
||||||
ifndef OLIVETTI
|
ifndef OLIVETTI
|
||||||
OLIVETTI := y
|
OLIVETTI := y
|
||||||
endif
|
endif
|
||||||
@ -118,6 +124,12 @@ else
|
|||||||
ifndef XL24
|
ifndef XL24
|
||||||
XL24 := n
|
XL24 := n
|
||||||
endif
|
endif
|
||||||
|
ifndef ISAMEM_RAMPAGE
|
||||||
|
ISAMEM_RAMPAGE := n
|
||||||
|
endif
|
||||||
|
ifndef ISAMEM_IAB
|
||||||
|
ISAMEM_IAB := n
|
||||||
|
endif
|
||||||
ifndef OLIVETTI
|
ifndef OLIVETTI
|
||||||
OLIVETTI := n
|
OLIVETTI := n
|
||||||
endif
|
endif
|
||||||
@ -450,6 +462,14 @@ ifeq ($(XL24), y)
|
|||||||
OPTS += -DUSE_XL24
|
OPTS += -DUSE_XL24
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(ISAMEM_RAMPAGE), y)
|
||||||
|
OPTS += -DUSE_ISAMEM_RAMPAGE
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(ISAMEM_IAB), y)
|
||||||
|
OPTS += -DUSE_ISAMEM_IAB
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(OLIVETTI), y)
|
ifeq ($(OLIVETTI), y)
|
||||||
OPTS += -DUSE_OLIVETTI
|
OPTS += -DUSE_OLIVETTI
|
||||||
DEVBROBJ += olivetti_eva.o
|
DEVBROBJ += olivetti_eva.o
|
||||||
|
@ -31,8 +31,8 @@ BEGIN
|
|||||||
END
|
END
|
||||||
POPUP "&Вид"
|
POPUP "&Вид"
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "&Скрыть строку статуса", IDM_VID_HIDE_STATUS_BAR
|
MENUITEM "&Скрыть строку состояния", IDM_VID_HIDE_STATUS_BAR
|
||||||
MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
|
MENUITEM "С&крыть панель инструментов", IDM_VID_HIDE_TOOLBAR
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "&Изменяемый размер окна", IDM_VID_RESIZE
|
MENUITEM "&Изменяемый размер окна", IDM_VID_RESIZE
|
||||||
MENUITEM "&Запомнить размер и положение", IDM_VID_REMEMBER
|
MENUITEM "&Запомнить размер и положение", IDM_VID_REMEMBER
|
||||||
@ -98,7 +98,7 @@ BEGIN
|
|||||||
POPUP "&Инструменты"
|
POPUP "&Инструменты"
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "&Настройки машины...", IDM_CONFIG
|
MENUITEM "&Настройки машины...", IDM_CONFIG
|
||||||
MENUITEM "&Обновление значков строки статуса", IDM_UPDATE_ICONS
|
MENUITEM "&Обновление значков строки состояния", IDM_UPDATE_ICONS
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "Сделать с&криншот\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
MENUITEM "Сделать с&криншот\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
@ -208,7 +208,7 @@ CdromSubmenu MENU DISCARDABLE
|
|||||||
BEGIN
|
BEGIN
|
||||||
POPUP ""
|
POPUP ""
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "&Mute", IDM_CDROM_MUTE
|
MENUITEM "О&тключить звук", IDM_CDROM_MUTE
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "П&устой", IDM_CDROM_EMPTY
|
MENUITEM "П&устой", IDM_CDROM_EMPTY
|
||||||
MENUITEM "&Снова загрузить предыдущий образ", IDM_CDROM_RELOAD
|
MENUITEM "&Снова загрузить предыдущий образ", IDM_CDROM_RELOAD
|
||||||
@ -294,8 +294,8 @@ END
|
|||||||
#define STR_MACHINE_TYPE "Тип машины:"
|
#define STR_MACHINE_TYPE "Тип машины:"
|
||||||
#define STR_MACHINE "Системная плата:"
|
#define STR_MACHINE "Системная плата:"
|
||||||
#define STR_CONFIGURE "Настройка"
|
#define STR_CONFIGURE "Настройка"
|
||||||
#define STR_CPU_TYPE "Тип ЦПУ:"
|
#define STR_CPU_TYPE "Тип ЦП:"
|
||||||
#define STR_SPEED "Speed:"
|
#define STR_SPEED "Скорость:"
|
||||||
#define STR_FPU "FPU:"
|
#define STR_FPU "FPU:"
|
||||||
#define STR_WAIT_STATES "Циклы ожидания:"
|
#define STR_WAIT_STATES "Циклы ожидания:"
|
||||||
#define STR_MB "МБ"
|
#define STR_MB "МБ"
|
||||||
@ -463,7 +463,7 @@ BEGIN
|
|||||||
IDS_2102 "Система управления полетом Thrustmaster"
|
IDS_2102 "Система управления полетом Thrustmaster"
|
||||||
IDS_2103 "Нет"
|
IDS_2103 "Нет"
|
||||||
IDS_2104 "Невозможно загрузить ускорители клавиатуры."
|
IDS_2104 "Невозможно загрузить ускорители клавиатуры."
|
||||||
IDS_2105 "Невозможно зарегистрировать необработанный ввод."
|
IDS_2105 "Невозможно зарегистрировать необработанный (RAW) ввод."
|
||||||
IDS_2106 "%u"
|
IDS_2106 "%u"
|
||||||
IDS_2107 "%u МБ (CHS: %i, %i, %i)"
|
IDS_2107 "%u МБ (CHS: %i, %i, %i)"
|
||||||
IDS_2108 "Дисковод %i (%s): %ls"
|
IDS_2108 "Дисковод %i (%s): %ls"
|
||||||
@ -525,21 +525,21 @@ BEGIN
|
|||||||
IDS_2143 "Шейдеры OpenGL (*.GLSL)\0*.GLSL\0Все файлы (*.*)\0*.*\0"
|
IDS_2143 "Шейдеры OpenGL (*.GLSL)\0*.GLSL\0Все файлы (*.*)\0*.*\0"
|
||||||
IDS_2144 "Параметры OpenGL"
|
IDS_2144 "Параметры OpenGL"
|
||||||
IDS_2145 "Вы загружаете неподдерживаемую конфигурацию"
|
IDS_2145 "Вы загружаете неподдерживаемую конфигурацию"
|
||||||
IDS_2146 "Выбор типов CPU для этой системной платы на данной эмулируемой машине отключен.\n\nЭто позволяет выбрать процессор, который в противном случае несовместим с выбранной материнской платой. Однако, вы можете столкнуться с несовместимостью с BIOS материнской платы или другим ПО.\n\nВключение этого параметра официально не поддерживается, и все поданные отчеты об ошибках могут быть закрыты как недействительные."
|
IDS_2146 "Выбор типов ЦП для этой системной платы на данной эмулируемой машине отключен.\n\nЭто позволяет выбрать процессор, который в противном случае несовместим с выбранной материнской платой. Однако, вы можете столкнуться с несовместимостью с BIOS материнской платы или другим ПО.\n\nВключение этого параметра официально не поддерживается, и все поданные отчеты об ошибках могут быть закрыты как недействительные."
|
||||||
IDS_2147 "Продолжить"
|
IDS_2147 "Продолжить"
|
||||||
IDS_2148 "Кассета: %s"
|
IDS_2148 "Кассета: %s"
|
||||||
IDS_2149 "Образы кассет (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Все файлы (*.*)\0*.*\0"
|
IDS_2149 "Образы кассет (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Все файлы (*.*)\0*.*\0"
|
||||||
IDS_2150 "Картридж %i: %ls"
|
IDS_2150 "Картридж %i: %ls"
|
||||||
IDS_2151 "Образы картриджей (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Все файлы (*.*)\0*.*\0"
|
IDS_2151 "Образы картриджей (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Все файлы (*.*)\0*.*\0"
|
||||||
IDS_2152 "Error initializing renderer"
|
IDS_2152 "Ошибка инициализации рендерера"
|
||||||
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
|
IDS_2153 "Невозможно инициализировать рендерер OpenGL (3.0). Пожалуйста, используйте другой рендерер."
|
||||||
IDS_2154 "Resume execution"
|
IDS_2154 "Возобновить выполнение"
|
||||||
IDS_2155 "Pause execution"
|
IDS_2155 "Приостановить выполнение"
|
||||||
IDS_2156 "Press Ctrl+Alt+Del"
|
IDS_2156 "Нажать Ctrl+Alt+Del"
|
||||||
IDS_2157 "Press Ctrl+Alt+Esc"
|
IDS_2157 "Нажать Ctrl+Alt+Esc"
|
||||||
IDS_2158 "Hard reset"
|
IDS_2158 "Холодная перезагрузка"
|
||||||
IDS_2159 "ACPI shutdown"
|
IDS_2159 "Сигнал завершения ACPI"
|
||||||
IDS_2160 "Settings"
|
IDS_2160 "Настройки машины"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRINGTABLE DISCARDABLE
|
STRINGTABLE DISCARDABLE
|
||||||
@ -548,10 +548,10 @@ BEGIN
|
|||||||
IDS_4097 "%01i:%01i"
|
IDS_4097 "%01i:%01i"
|
||||||
IDS_4098 "%01i"
|
IDS_4098 "%01i"
|
||||||
IDS_4099 "MFM/RLL или ESDI дисководов CD-ROM никогда не существовало"
|
IDS_4099 "MFM/RLL или ESDI дисководов CD-ROM никогда не существовало"
|
||||||
IDS_4100 "Custom..."
|
IDS_4100 "Задать вручную..."
|
||||||
IDS_4101 "Custom (large)..."
|
IDS_4101 "Задать вручную (large)..."
|
||||||
IDS_4102 "Создать новый жёсткий диск"
|
IDS_4102 "Создать новый жёсткий диск"
|
||||||
IDS_4103 "Добавить существующий жёсткий диск"
|
IDS_4103 "Выбрать существующий жёсткий диск"
|
||||||
IDS_4104 "Размер образов дисков HDI не может превышать 4 ГБ."
|
IDS_4104 "Размер образов дисков HDI не может превышать 4 ГБ."
|
||||||
IDS_4105 "Размер образов дисков не может превышать 127 ГБ."
|
IDS_4105 "Размер образов дисков не может превышать 127 ГБ."
|
||||||
IDS_4106 "Образы жёстких дисков (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Все файлы (*.*)\0*.*\0"
|
IDS_4106 "Образы жёстких дисков (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Все файлы (*.*)\0*.*\0"
|
||||||
|
@ -52,8 +52,13 @@ typedef struct {
|
|||||||
} disk_size_t;
|
} disk_size_t;
|
||||||
|
|
||||||
|
|
||||||
static const disk_size_t disk_sizes[14] = { { 0, 1, 2, 1, 0, 40, 8, 2, 0xfe, 2, 2, 1, 64 }, /* 160k */
|
static const disk_size_t disk_sizes[14] = {
|
||||||
{ 0, 1, 2, 1, 0, 40, 9, 2, 0xfc, 2, 2, 1, 64 }, /* 180k */
|
// { 1, 1, 2, 1, 1, 77, 26, 0, 0, 4, 2, 6, 68 }, /* 250k 8" */
|
||||||
|
// { 1, 2, 2, 1, 1, 77, 26, 0, 0, 4, 2, 6, 68 }, /* 500k 8" */
|
||||||
|
// { 1, 1, 2, 1, 1, 77, 8, 3, 0, 1, 2, 2, 192 }, /* 616k 8" */
|
||||||
|
// { 1, 2, 0, 1, 1, 77, 8, 3, 0, 1, 2, 2, 192 }, /* 1232k 8" */
|
||||||
|
{ 0, 1, 2, 1, 0, 40, 8, 2, 0xfe, 1, 2, 1, 64 }, /* 160k */
|
||||||
|
{ 0, 1, 2, 1, 0, 40, 9, 2, 0xfc, 1, 2, 2, 64 }, /* 180k */
|
||||||
{ 0, 2, 2, 1, 0, 40, 8, 2, 0xff, 2, 2, 1, 112 }, /* 320k */
|
{ 0, 2, 2, 1, 0, 40, 8, 2, 0xff, 2, 2, 1, 112 }, /* 320k */
|
||||||
{ 0, 2, 2, 1, 0, 40, 9, 2, 0xfd, 2, 2, 2, 112 }, /* 360k */
|
{ 0, 2, 2, 1, 0, 40, 9, 2, 0xfd, 2, 2, 2, 112 }, /* 360k */
|
||||||
{ 0, 2, 2, 1, 0, 80, 8, 2, 0xfb, 2, 2, 2, 112 }, /* 640k */
|
{ 0, 2, 2, 1, 0, 80, 8, 2, 0xfb, 2, 2, 2, 112 }, /* 640k */
|
||||||
@ -698,7 +703,7 @@ NewFloppyDialogProcedure(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
uint8_t disk_size, rpm_mode;
|
uint8_t disk_size, rpm_mode;
|
||||||
int ret;
|
int ret;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
int zip_types, mo_types;
|
int zip_types, mo_types, floppy_types;
|
||||||
wchar_t *twcs;
|
wchar_t *twcs;
|
||||||
|
|
||||||
switch (message) {
|
switch (message) {
|
||||||
@ -716,7 +721,8 @@ NewFloppyDialogProcedure(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
|
|||||||
for (i = 0; i < mo_types; i++)
|
for (i = 0; i < mo_types; i++)
|
||||||
SendMessage(h, CB_ADDSTRING, 0, win_get_string(IDS_5902 + i));
|
SendMessage(h, CB_ADDSTRING, 0, win_get_string(IDS_5902 + i));
|
||||||
} else {
|
} else {
|
||||||
for (i = 0; i < 12; i++)
|
floppy_types = 12;
|
||||||
|
for (i = 0; i < floppy_types; i++)
|
||||||
SendMessage(h, CB_ADDSTRING, 0, win_get_string(IDS_5888 + i));
|
SendMessage(h, CB_ADDSTRING, 0, win_get_string(IDS_5888 + i));
|
||||||
}
|
}
|
||||||
SendMessage(h, CB_SETCURSEL, 0, 0);
|
SendMessage(h, CB_SETCURSEL, 0, 0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user