Tandy PSSJ (ISA Clone boards)

This commit is contained in:
Jasmine Iwanek
2022-01-08 20:14:34 -05:00
parent 65310e0141
commit e40c664a9b
3 changed files with 227 additions and 169 deletions

View File

@@ -101,6 +101,7 @@ extern const device_t pas16_device;
/* Tandy PSSJ */
extern const device_t pssj_device;
extern const device_t pssj_isa_device;
/* Creative Labs Sound Blaster */
extern const device_t sb_1_device;

View File

@@ -215,6 +215,22 @@ void *pssj_1e0_init(const device_t *info)
return pssj;
}
void *pssj_isa_init(const device_t *info)
{
pssj_t *pssj = malloc(sizeof(pssj_t));
memset(pssj, 0, sizeof(pssj_t));
sn76489_init(&pssj->sn76489, 0x00c0, 0x0004, PSSJ, 3579545);
uint16_t addr = device_get_config_hex16("base");
io_sethandler(addr, 0x0004, pssj_read, NULL, NULL, pssj_write, NULL, NULL, pssj);
timer_add(&pssj->timer_count, pssj_callback, pssj, pssj->enable);
sound_add_handler(pssj_get_buffer, pssj);
return pssj;
}
void pssj_close(void *p)
{
pssj_t *pssj = (pssj_t *)p;
@@ -222,10 +238,35 @@ void pssj_close(void *p)
free(pssj);
}
static const device_config_t pssj_isa_config[] =
{
{
"base", "Address", CONFIG_HEX16, "", 0xC0, "", { 0 },
{
{
"0xC0", 0xC0
},
{
"0x1E0", 0x1E0
},
{
"0x2C0", 0x2C0
},
{
""
}
}
},
{
"", "", -1
}
};
const device_t pssj_device =
{
"Tandy PSSJ",
0, 0,
0,
0,
pssj_init,
pssj_close,
NULL,
@@ -237,7 +278,8 @@ const device_t pssj_device =
const device_t pssj_1e0_device =
{
"Tandy PSSJ (port 1e0h)",
0, 0,
0,
0,
pssj_1e0_init,
pssj_close,
NULL,
@@ -245,3 +287,17 @@ const device_t pssj_1e0_device =
NULL,
NULL
};
const device_t pssj_isa_device =
{
"Tandy PSSJ (ISA Clone)",
DEVICE_ISA,
0,
pssj_isa_init,
pssj_close,
NULL,
{ NULL },
NULL,
NULL,
pssj_isa_config
};

View File

@@ -85,6 +85,7 @@ static const SOUND_CARD sound_cards[] =
{
{ "none", NULL },
{ "internal", NULL },
{ "pssj_isa", &pssj_isa_device },
{ "adlib", &adlib_device },
{ "adlibgold", &adgold_device },
{ "azt2316a", &azt2316a_device },