Added Cirrus Logic GD5428 emulation.
As part of this, added emulation of the GD5428-based IBM 1MB SVGA Adapter/A, along with support for external graphics cards on MCA platforms, adding the ability to override the onboard VGA controller.
This commit is contained in:
parent
10f98a85b4
commit
68a2d8cb3c
14 changed files with 342 additions and 43 deletions
18
src/mca.c
18
src/mca.c
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
void (*mca_card_write[8])(int addr, uint8_t val, void *priv);
|
||||
uint8_t (*mca_card_read[8])(int addr, void *priv);
|
||||
void (*mca_card_reset[8])(void *priv);
|
||||
void *mca_priv[8];
|
||||
static int mca_index;
|
||||
static int mca_nr_cards;
|
||||
|
|
@ -14,10 +15,13 @@ void mca_init(int nr_cards)
|
|||
{
|
||||
int c;
|
||||
|
||||
MCA = 1;
|
||||
|
||||
for (c = 0; c < 8; c++)
|
||||
{
|
||||
mca_card_read[c] = NULL;
|
||||
mca_card_write[c] = NULL;
|
||||
mca_card_reset[c] = NULL;
|
||||
mca_priv[c] = NULL;
|
||||
}
|
||||
|
||||
|
|
@ -47,7 +51,18 @@ void mca_write(uint16_t port, uint8_t val)
|
|||
mca_card_write[mca_index](port, val, mca_priv[mca_index]);
|
||||
}
|
||||
|
||||
void mca_add(uint8_t (*read)(int addr, void *priv), void (*write)(int addr, uint8_t val, void *priv), void *priv)
|
||||
void mca_reset(void)
|
||||
{
|
||||
int c;
|
||||
|
||||
for (c = 0; c < 8; c++)
|
||||
{
|
||||
if (mca_card_reset[c])
|
||||
mca_card_reset[c](mca_priv[c]);
|
||||
}
|
||||
}
|
||||
|
||||
void mca_add(uint8_t (*read)(int addr, void *priv), void (*write)(int addr, uint8_t val, void *priv), void (*reset)(void *priv), void *priv)
|
||||
{
|
||||
int c;
|
||||
|
||||
|
|
@ -57,6 +72,7 @@ void mca_add(uint8_t (*read)(int addr, void *priv), void (*write)(int addr, uint
|
|||
{
|
||||
mca_card_read[c] = read;
|
||||
mca_card_write[c] = write;
|
||||
mca_card_reset[c] = reset;
|
||||
mca_priv[c] = priv;
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue