uint8_t mmio_read(unsigned addr); void mmio_write(unsigned addr, uint8_t data); Memory& mmio_access(unsigned &addr); struct MMIO { //$2200 CCNT bool sa1_irq; bool sa1_rdyb; bool sa1_resb; bool sa1_nmi; uint8_t smeg; //$2201 SIE bool cpu_irqen; bool chdma_irqen; //$2202 SIC bool cpu_irqcl; bool chdma_irqcl; //$2203,$2204 CRV uint16_t crv; //$2205,$2206 CNV uint16_t cnv; //$2207,$2208 CIV uint16_t civ; //$2209 SCNT bool cpu_irq; bool cpu_ivsw; bool cpu_nvsw; uint8_t cmeg; //$220a CIE bool sa1_irqen; bool timer_irqen; bool dma_irqen; bool sa1_nmien; //$220b CIC bool sa1_irqcl; bool timer_irqcl; bool dma_irqcl; bool sa1_nmicl; //$220c,$220d SNV uint16_t snv; //$220e,$220f SIV uint16_t siv; //$2210 TMC bool hvselb; bool ven; bool hen; //$2212,$2213 uint16_t hcnt; //$2214,$2215 uint16_t vcnt; //$2220 CXB bool cbmode; uint8_t cb; //$2221 DXB bool dbmode; uint8_t db; //$2222 EXB bool ebmode; uint8_t eb; //$2223 FXB bool fbmode; uint8_t fb; //$2224 BMAPS uint8_t sbm; //$2225 BMAP bool sw46; uint8_t cbm; //$2226 SBWE bool swen; //$2227 CBWE bool cwen; //$2228 BWPA uint8_t bwp; //$2229 SIWP uint8_t siwp; //$222a CIWP uint8_t ciwp; //$2230 DCNT bool dmaen; bool dprio; bool cden; bool cdsel; bool dd; uint8_t sd; //$2231 CDMA bool chdend; uint8_t dmasize; uint8_t dmacb; //$2232-$2234 SDA uint32_t dsa; //$2235-$2237 DDA uint32_t dda; //$2238,$2239 DTC uint16_t dtc; //$223f BBF bool bbf; //$2240-224f BRF uint8_t brf[16]; //$2250 MCNT bool acm; bool md; //$2251,$2252 MA uint16_t ma; //$2253,$2254 MB uint16_t mb; //$2258 VBD bool hl; uint8_t vb; //$2259-$225b VDA uint32_t va; uint8_t vbit; //$2300 SFR bool cpu_irqfl; bool chdma_irqfl; //$2301 CFR bool sa1_irqfl; bool timer_irqfl; bool dma_irqfl; bool sa1_nmifl; //$2302,$2303 HCR uint16_t hcr; //$2304,$2305 VCR uint16_t vcr; //$2306-230a MR uint64_t mr; //$230b OF bool overflow; } mmio; void mmio_w2200(uint8_t); //CCNT void mmio_w2201(uint8_t); //SIE void mmio_w2202(uint8_t); //SIC void mmio_w2203(uint8_t); //CRVL void mmio_w2204(uint8_t); //CRVH void mmio_w2205(uint8_t); //CNVL void mmio_w2206(uint8_t); //CNVH void mmio_w2207(uint8_t); //CIVL void mmio_w2208(uint8_t); //CIVH void mmio_w2209(uint8_t); //SCNT void mmio_w220a(uint8_t); //CIE void mmio_w220b(uint8_t); //CIC void mmio_w220c(uint8_t); //SNVL void mmio_w220d(uint8_t); //SNVH void mmio_w220e(uint8_t); //SIVL void mmio_w220f(uint8_t); //SIVH void mmio_w2210(uint8_t); //TMC void mmio_w2211(uint8_t); //CTR void mmio_w2212(uint8_t); //HCNTL void mmio_w2213(uint8_t); //HCNTH void mmio_w2214(uint8_t); //VCNTL void mmio_w2215(uint8_t); //VCNTH void mmio_w2220(uint8_t); //CXB void mmio_w2221(uint8_t); //DXB void mmio_w2222(uint8_t); //EXB void mmio_w2223(uint8_t); //FXB void mmio_w2224(uint8_t); //BMAPS void mmio_w2225(uint8_t); //BMAP void mmio_w2226(uint8_t); //SBWE void mmio_w2227(uint8_t); //CBWE void mmio_w2228(uint8_t); //BWPA void mmio_w2229(uint8_t); //SIWP void mmio_w222a(uint8_t); //CIWP void mmio_w2230(uint8_t); //DCNT void mmio_w2231(uint8_t); //CDMA void mmio_w2232(uint8_t); //SDAL void mmio_w2233(uint8_t); //SDAH void mmio_w2234(uint8_t); //SDAB void mmio_w2235(uint8_t); //DDAL void mmio_w2236(uint8_t); //DDAH void mmio_w2237(uint8_t); //DDAB void mmio_w2238(uint8_t); //DTCL void mmio_w2239(uint8_t); //DTCH void mmio_w223f(uint8_t); //BBF void mmio_w2240(uint8_t); //BRF0 void mmio_w2241(uint8_t); //BRF1 void mmio_w2242(uint8_t); //BRF2 void mmio_w2243(uint8_t); //BRF3 void mmio_w2244(uint8_t); //BRF4 void mmio_w2245(uint8_t); //BRF5 void mmio_w2246(uint8_t); //BRF6 void mmio_w2247(uint8_t); //BRF7 void mmio_w2248(uint8_t); //BRF8 void mmio_w2249(uint8_t); //BRF9 void mmio_w224a(uint8_t); //BRFA void mmio_w224b(uint8_t); //BRFB void mmio_w224c(uint8_t); //BRFC void mmio_w224d(uint8_t); //BRFD void mmio_w224e(uint8_t); //BRFE void mmio_w224f(uint8_t); //BRFF void mmio_w2250(uint8_t); //MCNT void mmio_w2251(uint8_t); //MAL void mmio_w2252(uint8_t); //MAH void mmio_w2253(uint8_t); //MBL void mmio_w2254(uint8_t); //MBH void mmio_w2258(uint8_t); //VBD void mmio_w2259(uint8_t); //VDAL void mmio_w225a(uint8_t); //VDAH void mmio_w225b(uint8_t); //VDAB uint8_t mmio_r2300(); //SFR uint8_t mmio_r2301(); //CFR uint8_t mmio_r2302(); //HCRL uint8_t mmio_r2303(); //HCRH uint8_t mmio_r2304(); //VCRL uint8_t mmio_r2305(); //VCRH uint8_t mmio_r2306(); //MR [00-07] uint8_t mmio_r2307(); //MR [08-15] uint8_t mmio_r2308(); //MR [16-23] uint8_t mmio_r2309(); //MR [24-31] uint8_t mmio_r230a(); //MR [32-40] uint8_t mmio_r230b(); //OF uint8_t mmio_r230c(); //VDPL uint8_t mmio_r230d(); //VDPH uint8_t mmio_r230e(); //VC