Ported the ISA RTC and Memory expansion cards from VARCem's.

Bunch of improvements in the device, memory and MMU handling.
Re-worked the NEAT 286 chipset (ported from VARCem).
Re-worked the ATI 28800 a bit, added Sierra SC1502x ramdac to VGA Wonder XL (Compaq) since it supports such.
Top 384K memory handling improvements (256K top memory too)
Added MCA version of MPU-401 (not tested much, however).
Re-worked the SCAT 286 chipset.
This commit is contained in:
TC1995
2018-09-03 13:55:09 +02:00
parent 0e96d5d7a4
commit 0d2ee0a57d
29 changed files with 3605 additions and 422 deletions

View File

@@ -8,7 +8,7 @@
*
* Definitions for the memory interface.
*
* Version: @(#)mem.h 1.0.4 2018/03/16
* Version: @(#)mem.h 1.0.5 2018/09/02
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Sarah Walker, <tommowalker@tommowalker.co.uk>
@@ -77,7 +77,9 @@ typedef struct _mem_mapping_ {
uint32_t flags;
void *p;
void *p; /* backpointer to mapping or device */
void *dev; /* backpointer to memory device */
} mem_mapping_t;
typedef struct _page_ {
@@ -114,12 +116,16 @@ extern uintptr_t *writelookup2;
extern int writelnext;
extern uint32_t ram_mapped_addr[64];
extern mem_mapping_t bios_mapping[8],
bios_high_mapping[8],
romext_mapping,
mem_mapping_t base_mapping,
ram_low_mapping,
#if 1
ram_mid_mapping,
ram_high_mapping;
#endif
ram_remapped_mapping,
ram_high_mapping,
bios_mapping[8],
bios_high_mapping[8],
romext_mapping;
extern uint32_t mem_logical_addr;
@@ -135,7 +141,6 @@ extern int readlnum,
extern int nopageerrors;
extern int memspeed[11];
extern uint8_t isram[0x10000];
extern int mmu_perm;
@@ -165,7 +170,10 @@ extern uint32_t mmutranslatereal(uint32_t addr, int rw);
extern void addreadlookup(uint32_t virt, uint32_t phys);
extern void addwritelookup(uint32_t virt, uint32_t phys);
extern void mem_mapping_add(mem_mapping_t *mapping,
extern void mem_mapping_del(mem_mapping_t *);
extern void mem_mapping_add(mem_mapping_t *,
uint32_t base,
uint32_t size,
uint8_t (*read_b)(uint32_t addr, void *p),
@@ -178,7 +186,7 @@ extern void mem_mapping_add(mem_mapping_t *mapping,
uint32_t flags,
void *p);
extern void mem_mapping_set_handler(mem_mapping_t *mapping,
extern void mem_mapping_set_handler(mem_mapping_t *,
uint8_t (*read_b)(uint32_t addr, void *p),
uint16_t (*read_w)(uint32_t addr, void *p),
uint32_t (*read_l)(uint32_t addr, void *p),
@@ -186,22 +194,26 @@ extern void mem_mapping_set_handler(mem_mapping_t *mapping,
void (*write_w)(uint32_t addr, uint16_t val, void *p),
void (*write_l)(uint32_t addr, uint32_t val, void *p));
extern void mem_mapping_set_p(mem_mapping_t *mapping, void *p);
extern void mem_mapping_set_p(mem_mapping_t *, void *p);
extern void mem_mapping_set_addr(mem_mapping_t *mapping,
extern void mem_mapping_set_dev(mem_mapping_t *, void *dev);
extern void mem_mapping_set_addr(mem_mapping_t *,
uint32_t base, uint32_t size);
extern void mem_mapping_set_exec(mem_mapping_t *mapping, uint8_t *exec);
extern void mem_mapping_disable(mem_mapping_t *mapping);
extern void mem_mapping_enable(mem_mapping_t *mapping);
extern void mem_mapping_set_exec(mem_mapping_t *, uint8_t *exec);
extern void mem_mapping_disable(mem_mapping_t *);
extern void mem_mapping_enable(mem_mapping_t *);
extern void mem_set_mem_state(uint32_t base, uint32_t size, int state);
extern uint8_t mem_readb_phys(uint32_t addr);
extern uint8_t mem_readb_phys_dma(uint32_t addr);
extern uint16_t mem_readw_phys(uint32_t addr);
extern uint32_t mem_readl_phys(uint32_t addr);
extern void mem_writeb_phys(uint32_t addr, uint8_t val);
extern void mem_writeb_phys_dma(uint32_t addr, uint8_t val);
extern void mem_writew_phys(uint32_t addr, uint16_t val);
extern void mem_writel_phys(uint32_t addr, uint32_t val);
extern uint8_t mem_read_ram(uint32_t addr, void *priv);
extern uint16_t mem_read_ramw(uint32_t addr, void *priv);
@@ -240,8 +252,7 @@ extern void mem_add_bios(void);
extern void mem_init(void);
extern void mem_reset(void);
extern void mem_remap_top_256k(void);
extern void mem_remap_top_384k(void);
extern void mem_remap_top(int kb);
extern uint8_t port_92_read(uint16_t port, void *priv);
extern void port_92_write(uint16_t port, uint8_t val, void *priv);