inline void CMemMap::Poke(ULONG addr, UBYTE data) { TRACE_MEMMAP1("Poke() - Data %02x",data); int newstate,loop; // FC00-FCFF Susie area newstate=(data&0x01)?FALSE:TRUE; if(newstate!=mSusieEnabled) { mSusieEnabled=newstate; if(mSusieEnabled) { for(loop=SUSIE_START; loop<SUSIE_START+SUSIE_SIZE; loop++) mSystem.mMemoryHandlers[loop]=mSystem.mSusie; } else { for(loop=SUSIE_START; loop<SUSIE_START+SUSIE_SIZE; loop++) mSystem.mMemoryHandlers[loop]=mSystem.mRam; } } // FD00-FCFF Mikie area newstate=(data&0x02)?FALSE:TRUE; if(newstate!=mMikieEnabled) { mMikieEnabled=newstate; if(mMikieEnabled) { for(loop=MIKIE_START; loop<MIKIE_START+MIKIE_SIZE; loop++) mSystem.mMemoryHandlers[loop]=mSystem.mMikie; } else { for(loop=MIKIE_START; loop<MIKIE_START+MIKIE_SIZE; loop++) mSystem.mMemoryHandlers[loop]=mSystem.mRam; } } // FE00-FFF7 Rom area newstate=(data&0x04)?FALSE:TRUE; if(newstate!=mRomEnabled) { mRomEnabled=newstate; if(mRomEnabled) { for(loop=BROM_START; loop<BROM_START+(BROM_SIZE-8); loop++) mSystem.mMemoryHandlers[loop]=mSystem.mRom; } else { for(loop=BROM_START; loop<BROM_START+(BROM_SIZE-8); loop++) mSystem.mMemoryHandlers[loop]=mSystem.mRam; } } // FFFA-FFFF Vector area - Overload ROM space newstate=(data&0x08)?FALSE:TRUE; if(newstate!=mVectorsEnabled) { mVectorsEnabled=newstate; if(mVectorsEnabled) { for(loop=VECTOR_START; loop<VECTOR_START+VECTOR_SIZE; loop++) mSystem.mMemoryHandlers[loop]=mSystem.mRom; } else { for(loop=VECTOR_START; loop<VECTOR_START+VECTOR_SIZE; loop++) mSystem.mMemoryHandlers[loop]=mSystem.mRam; } } }
INLINE uint8 CMemMap::Peek(uint32 addr) { uint8 retval=0; retval+=(mSusieEnabled)?0:0x01; retval+=(mMikieEnabled)?0:0x02; retval+=(mRomEnabled)?0:0x04; retval+=(mVectorsEnabled)?0:0x08; TRACE_MEMMAP1("Peek() - Data %02x",retval); return retval; }
inline UBYTE CMemMap::Peek(ULONG addr) { UBYTE retval=0; retval+=(mSusieEnabled)?0:0x01; retval+=(mMikieEnabled)?0:0x02; retval+=(mRomEnabled)?0:0x04; retval+=(mVectorsEnabled)?0:0x08; TRACE_MEMMAP1("Peek() - Data %02x",retval); return retval; }