private bool RegisterAccessWrite(RegisterAccessType type, ushort address, ushort bank, uint data, bool print) { switch (type) { case RegisterAccessType.Mac: if (!WriteMacRegsiter(address, (uint)data, print)) { return(false); } break; case RegisterAccessType.MacBank: if (!WriteMacRegsiterBank(address, bank, (uint)data, print)) { return(false); } break; case RegisterAccessType.Bypass: if (!WriteBypassRegsiter(address, (ushort)data, print)) { return(false); } break; case RegisterAccessType.OEM: if (!WriteOemRegsiter(address, (uint)data, print)) { return(false); } break; default: System.Diagnostics.Debug.Assert(false, "Register Access Type"); break; } return(true); }
private bool RegisterAccessWrite(RegisterAccessType type, ushort address, ushort bank, uint data, bool print) { switch (type) { case RegisterAccessType.Mac: if (!WriteMacRegsiter(address, (uint)data, print)) { return false; } break; case RegisterAccessType.MacBank: if (!WriteMacRegsiterBank(address, bank, (uint)data, print)) { return false; } break; case RegisterAccessType.Bypass: if (!WriteBypassRegsiter(address, (ushort)data, print)) { return false; } break; case RegisterAccessType.OEM: if (!WriteOemRegsiter(address, (uint)data, print)) { return false; } break; default: System.Diagnostics.Debug.Assert(false, "Register Access Type"); break; } return true; }
/* ***************************************************************************** * * Register Access * ***************************************************************************** */ private bool RegisterAccessRead(RegisterAccessType type, ushort address, ushort bank, uint count, bool print) { ushort registerAddress = 0; ushort endAddress = 0; uint data32 = 0; ushort data16 = 0; //clark 2011.8.17. If use count 0, show error message. if(count == 0) StatusUpdate(print, string.Format("Read Fail [{0:X4}]", address), TextUpdateType.Error); if (ushort.MaxValue >= (uint)(address + count - 1)) { //If address is 0xFFFF and count is 1. endAddress = 0xFFFF + 1. => Over flow. //Let explorer read 0xFFFF, The condition of For Loop is "equal", not "greater". endAddress = (ushort)(address + count - 1); } else { endAddress = ushort.MaxValue; } //Let explorer read 0xFFFF, The condition of For Loop is "equal", not "greater". switch (type) { case RegisterAccessType.Mac: for (registerAddress = address; registerAddress <= endAddress; registerAddress++) { if (!ReadMacRegsiter(registerAddress, out data32, print)) { return false; } } break; case RegisterAccessType.MacBank: for (registerAddress = address; registerAddress <= endAddress; registerAddress++) { RegisterInfo registerInfo; if (!GetMacRegsiterInfo(registerAddress, out registerInfo)) { return false; } if (registerInfo.type == RegisterType.BANKED || (count == 1)) { if (bank == ushort.MaxValue) { if (!ReadMacRegsiter(registerAddress, out data32, print)) { return false; } for (ushort index = 0; index < registerInfo.bankSize; index++) { if (!ReadMacRegsiterBank(registerAddress, index, out data32, print)) { return false; } } } else { if (!ReadMacRegsiterBank(registerAddress, (ushort)bank, out data32, print)) { return false; } } } else { if (!ReadMacRegsiter(registerAddress, out data32, print)) { return false; } } } break; case RegisterAccessType.Bypass: for (registerAddress = address; registerAddress <= endAddress; registerAddress++) { if (!ReadBypassRegsiter(registerAddress, out data16, print)) { return false; } } break; case RegisterAccessType.OEM: for (registerAddress = address; registerAddress <= endAddress; registerAddress++) { if (!ReadOemRegsiter(registerAddress, out data32, print)) { return false; } } break; default: System.Diagnostics.Debug.Assert(false, "Register Access Type"); break; } return true; }
/* ***************************************************************************** * * Register Access * ***************************************************************************** */ private bool RegisterAccessRead(RegisterAccessType type, ushort address, ushort bank, uint count, bool print) { ushort registerAddress = 0; ushort endAddress = 0; uint data32 = 0; ushort data16 = 0; //clark 2011.8.17. If use count 0, show error message. if (count == 0) { StatusUpdate(print, string.Format("Read Fail [{0:X4}]", address), TextUpdateType.Error); } if (ushort.MaxValue >= (uint)(address + count - 1)) { //If address is 0xFFFF and count is 1. endAddress = 0xFFFF + 1. => Over flow. //Let explorer read 0xFFFF, The condition of For Loop is "equal", not "greater". endAddress = (ushort)(address + count - 1); } else { endAddress = ushort.MaxValue; } //Let explorer read 0xFFFF, The condition of For Loop is "equal", not "greater". switch (type) { case RegisterAccessType.Mac: for (registerAddress = address; registerAddress <= endAddress; registerAddress++) { if (!ReadMacRegsiter(registerAddress, out data32, print)) { return(false); } } break; case RegisterAccessType.MacBank: for (registerAddress = address; registerAddress <= endAddress; registerAddress++) { RegisterInfo registerInfo; if (!GetMacRegsiterInfo(registerAddress, out registerInfo)) { return(false); } if (registerInfo.type == RegisterType.BANKED || (count == 1)) { if (bank == ushort.MaxValue) { if (!ReadMacRegsiter(registerAddress, out data32, print)) { return(false); } for (ushort index = 0; index < registerInfo.bankSize; index++) { if (!ReadMacRegsiterBank(registerAddress, index, out data32, print)) { return(false); } } } else { if (!ReadMacRegsiterBank(registerAddress, (ushort)bank, out data32, print)) { return(false); } } } else { if (!ReadMacRegsiter(registerAddress, out data32, print)) { return(false); } } } break; case RegisterAccessType.Bypass: for (registerAddress = address; registerAddress <= endAddress; registerAddress++) { if (!ReadBypassRegsiter(registerAddress, out data16, print)) { return(false); } } break; case RegisterAccessType.OEM: for (registerAddress = address; registerAddress <= endAddress; registerAddress++) { if (!ReadOemRegsiter(registerAddress, out data32, print)) { return(false); } } break; default: System.Diagnostics.Debug.Assert(false, "Register Access Type"); break; } return(true); }