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:
43
src/mem.h
43
src/mem.h
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user