Trned the LPT ports into device_t's.
This commit is contained in:
@@ -155,7 +155,9 @@ typedef struct amstrad_t {
|
||||
|
||||
/* Video stuff. */
|
||||
amsvid_t *vid;
|
||||
|
||||
fdc_t *fdc;
|
||||
lpt_t *lpt;
|
||||
} amstrad_t;
|
||||
|
||||
uint32_t amstrad_latch;
|
||||
@@ -2884,8 +2886,10 @@ machine_amstrad_init(const machine_t *model, int type)
|
||||
|
||||
nmi_init();
|
||||
|
||||
lpt1_remove_ams();
|
||||
lpt2_remove();
|
||||
ams->lpt = device_add_inst(&lpt_port_device, 1);
|
||||
|
||||
lpt1_remove_ams(ams->lpt);
|
||||
lpt_set_next_inst(255);
|
||||
|
||||
io_sethandler(0x0378, 3,
|
||||
ams_read, NULL, NULL, ams_write, NULL, NULL, ams);
|
||||
|
||||
@@ -55,22 +55,22 @@
|
||||
#include <86box/plat_unused.h>
|
||||
|
||||
static serial_t *cmd_uart;
|
||||
static lpt_t *cmd_lpt;
|
||||
|
||||
static void
|
||||
cbm_io_write(UNUSED(uint16_t port), uint8_t val, UNUSED(void *priv))
|
||||
{
|
||||
lpt1_remove();
|
||||
lpt2_remove();
|
||||
lpt_port_remove(cmd_lpt);
|
||||
|
||||
switch (val & 3) {
|
||||
case 1:
|
||||
lpt1_setup(LPT_MDA_ADDR);
|
||||
lpt_port_setup(cmd_lpt, LPT_MDA_ADDR);
|
||||
break;
|
||||
case 2:
|
||||
lpt1_setup(LPT1_ADDR);
|
||||
lpt_port_setup(cmd_lpt, LPT1_ADDR);
|
||||
break;
|
||||
case 3:
|
||||
lpt1_setup(LPT2_ADDR);
|
||||
lpt_port_setup(cmd_lpt, LPT2_ADDR);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -116,6 +116,10 @@ machine_at_cmdpc_init(const machine_t *model)
|
||||
device_add(&fdc_at_device);
|
||||
|
||||
cmd_uart = device_add(&ns8250_device);
|
||||
serial_set_next_inst(1);
|
||||
|
||||
cmd_lpt = device_add(&lpt_port_device);
|
||||
lpt_set_next_inst(1);
|
||||
|
||||
cbm_io_init();
|
||||
|
||||
|
||||
@@ -82,6 +82,7 @@ typedef struct {
|
||||
uint8_t ps1_e0_regs[256];
|
||||
|
||||
serial_t *uart;
|
||||
lpt_t *lpt;
|
||||
} ps1_t;
|
||||
|
||||
static void
|
||||
@@ -135,7 +136,7 @@ ps1_write(uint16_t port, uint8_t val, void *priv)
|
||||
|
||||
case 0x0102:
|
||||
if (!(ps->ps1_94 & 0x80)) {
|
||||
lpt1_remove();
|
||||
lpt_port_remove(ps->lpt);
|
||||
serial_remove(ps->uart);
|
||||
if (val & 0x04) {
|
||||
if (val & 0x08)
|
||||
@@ -146,13 +147,13 @@ ps1_write(uint16_t port, uint8_t val, void *priv)
|
||||
if (val & 0x10) {
|
||||
switch ((val >> 5) & 3) {
|
||||
case 0:
|
||||
lpt1_setup(LPT_MDA_ADDR);
|
||||
lpt_port_setup(ps->lpt, LPT_MDA_ADDR);
|
||||
break;
|
||||
case 1:
|
||||
lpt1_setup(LPT1_ADDR);
|
||||
lpt_port_setup(ps->lpt, LPT1_ADDR);
|
||||
break;
|
||||
case 2:
|
||||
lpt1_setup(LPT2_ADDR);
|
||||
lpt_port_setup(ps->lpt, LPT2_ADDR);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -314,9 +315,9 @@ ps1_setup(int model)
|
||||
ps1_read, NULL, NULL, ps1_write, NULL, NULL, ps);
|
||||
|
||||
ps->uart = device_add_inst(&ns16450_device, 1);
|
||||
|
||||
lpt1_remove();
|
||||
lpt1_setup(LPT_MDA_ADDR);
|
||||
ps->lpt = device_add_inst(&lpt_port_device, 1);
|
||||
lpt_port_remove(ps->lpt);
|
||||
lpt_port_setup(ps->lpt, LPT_MDA_ADDR);
|
||||
|
||||
mem_remap_top(384);
|
||||
|
||||
@@ -345,7 +346,7 @@ ps1_setup(int model)
|
||||
0xfc0000, 0x40000, 0x3ffff, 0, MEM_MAPPING_EXTERNAL);
|
||||
}
|
||||
|
||||
lpt2_remove();
|
||||
lpt_set_next_inst(255);
|
||||
|
||||
device_add(&ps1snd_device);
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
#include <86box/nmi.h>
|
||||
#include <86box/mem.h>
|
||||
#include <86box/device.h>
|
||||
#include <86box/lpt.h>
|
||||
#include <86box/nvr.h>
|
||||
#include <86box/keyboard.h>
|
||||
#include <86box/mouse.h>
|
||||
|
||||
@@ -129,7 +129,8 @@ machine_zenith_init(const machine_t *model)
|
||||
int
|
||||
machine_xt_z184_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
lpt_t *lpt = NULL;
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/zdsupers/z184m v3.1d.10d",
|
||||
0x000f8000, 32768, 0);
|
||||
@@ -142,9 +143,11 @@ machine_xt_z184_init(const machine_t *model)
|
||||
if (fdc_current[0] == FDC_INTERNAL)
|
||||
device_add(&fdc_xt_device);
|
||||
|
||||
lpt1_remove(); /* only one parallel port */
|
||||
lpt2_remove();
|
||||
lpt1_setup(LPT2_ADDR);
|
||||
lpt = device_add_inst(&lpt_port_device, 1);
|
||||
lpt_port_remove(lpt);
|
||||
lpt_port_setup(lpt, LPT2_ADDR);
|
||||
lpt_set_next_inst(255);
|
||||
|
||||
device_add(&ns8250_device);
|
||||
/* So that serial_standalone_init() won't do anything. */
|
||||
serial_set_next_inst(SERIAL_MAX - 1);
|
||||
@@ -183,7 +186,8 @@ machine_xt_z151_init(const machine_t *model)
|
||||
int
|
||||
machine_xt_z159_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
lpt_t *lpt = NULL;
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/zdsz159/z159m v2.9e.10d",
|
||||
0x000f8000, 32768, 0);
|
||||
@@ -197,9 +201,10 @@ machine_xt_z159_init(const machine_t *model)
|
||||
device_add(&fdc_xt_tandy_device);
|
||||
|
||||
/* parallel port is on the memory board */
|
||||
lpt1_remove(); /* only one parallel port */
|
||||
lpt2_remove();
|
||||
lpt1_setup(LPT2_ADDR);
|
||||
lpt = device_add_inst(&lpt_port_device, 1);
|
||||
lpt_port_remove(lpt);
|
||||
lpt_port_setup(lpt, LPT2_ADDR);
|
||||
lpt_set_next_inst(255);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -98,8 +98,6 @@ machine_init_ex(int m)
|
||||
mem_reset();
|
||||
smbase = is_am486dxl ? 0x00060000 : 0x00030000;
|
||||
|
||||
lpt_init();
|
||||
|
||||
if (cassette_enable)
|
||||
device_add(&cassette_device);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user