More updates regarding the PC-98x1:

1.Fixed I/O step when using interleaving I/O.
2. Add more and fixes of the existing incomplete PC-98x1 core.
This commit is contained in:
TC1995
2024-02-13 01:29:00 +01:00
parent d4cf722d7d
commit 9910b6f3cd
15 changed files with 640 additions and 526 deletions

View File

@@ -59,6 +59,7 @@ typedef struct dma_t {
uint8_t ext_mode;
uint8_t page_l;
uint8_t page_h;
uint8_t bound;
uint8_t pad;
uint16_t cb;
uint16_t io_addr;
@@ -81,6 +82,7 @@ extern uint8_t dma_e;
extern uint8_t dma_m;
extern void dma_init(void);
extern void dma_pc98_init(void);
extern void dma16_init(void);
extern void ps2_dma_init(void);
extern void dma_reset(void);

View File

@@ -338,7 +338,6 @@ typedef struct _machine_ {
/*ToDo: preliminary, to improve.*/
typedef struct _machine_pc98_ {
char *font_rom;
char *hdd_rom;
char *pci_rom;
char *sound_rom;
@@ -408,6 +407,7 @@ extern uint32_t machine_handle_gpio_acpi(uint8_t write, uint32_t val);
/* Initialization functions for boards and systems. */
extern void machine_common_init(const machine_t *);
extern void machine_pc98_common_init(const machine_t *);
/* m_amstrad.c */
extern int machine_pc1512_init(const machine_t *);

View File

@@ -81,6 +81,10 @@ extern void pic_init_pcjr(void);
extern void pic2_init(void);
extern void pic_reset(void);
extern void pic_pc98_init(void);
extern void pic2_pc98_init(void);
extern void pic_pc98_reset(void);
extern uint8_t pic_read_icw(uint8_t pic_id, uint8_t icw);
extern uint8_t pic_read_ocw(uint8_t pic_id, uint8_t ocw);
extern int picint_is_level(int irq);

View File

@@ -135,6 +135,7 @@ extern uint8_t pit_read_reg(void *priv, uint8_t reg);
#ifdef EMU_DEVICE_H
extern const device_t i8253_device;
extern const device_t i8253_pc98_device;
extern const device_t i8254_device;
extern const device_t i8254_sec_device;
extern const device_t i8254_ext_io_device;

View File

@@ -75,6 +75,7 @@ extern const pit_intf_t pit_fast_intf;
#ifdef EMU_DEVICE_H
extern const device_t i8253_fast_device;
extern const device_t i8253_fast_pc98_device;
extern const device_t i8254_fast_device;
extern const device_t i8254_sec_fast_device;
extern const device_t i8254_ext_io_fast_device;

View File

@@ -142,8 +142,10 @@ typedef struct pc98x1_vid_t {
double clock;
} pc98x1_vid_t;
# ifdef EMU_DEVICE_H
extern void pc98x1_font_init(pc98x1_vid_t *dev, char *s);
#ifdef EMU_DEVICE_H
extern const device_t pc98x1_vid_device;
# endif // EMU_DEVICE_H
#endif // EMU_DEVICE_H
#endif /*VIDEO_PC98X1_EGC_H*/

View File

@@ -122,10 +122,8 @@ extern void upd7220_init(upd7220_t *dev, void *priv,
void (*vram_write)(uint32_t addr, uint8_t val, void *priv));
extern void upd7220_recalctimings(upd7220_t *dev);
extern void upd7220_param_write(uint16_t addr, uint8_t value, void *priv);
extern uint8_t upd7220_statreg_read(uint16_t addr, void *priv);
extern void upd7220_cmdreg_write(uint16_t addr, uint8_t value, void *priv);
extern uint8_t upd7220_data_read(uint16_t addr, void *priv);
extern void upd7220_write(uint16_t addr, uint8_t value, void *priv);
extern uint8_t upd7220_read(uint16_t addr, void *priv);
extern void upd7220_reset(upd7220_t *dev);
#endif /*VIDEO_UPD7220_H*/