/// <summary> /// Inserts expansion cart to the one of the TV Computer expansion slot /// </summary> /// <param name="in_slot_index">Index of the exansion slot</param> /// <param name="in_card">Expansion card to object to insert</param> public void InsertCard(int in_slot_index, ITVCCard in_card) { // sanity check if (in_slot_index < 0 || in_slot_index >= TVComputerConstants.ExpansionCardCount || in_card == null) { return; } // remove card (if installed) if (Cards[in_slot_index] != null) { RemoveCard(in_slot_index); } // store card Cards[in_slot_index] = in_card; // set parent Cards[in_slot_index].Install(this); // set io callbacks ushort port_address = GetCardIOAddress(in_slot_index); // subscribe to port read-write event for (int port_count = 0; port_count < ExpansionCardPortRange; port_count++) { Ports.AddPortReader(port_address, in_card.PortRead); Ports.AddPortWriter(port_address, in_card.PortWrite); port_address++; } }
public void InsertCard(int in_slot_index, ITVCCard in_card) { // remove card (if installed) if (Cards[in_slot_index] != null) { RemoveCard(in_slot_index); } // store card Cards[in_slot_index] = in_card; // set io callbacks ushort port_address = GetCardIOAddress(in_slot_index); for (int port_count = 0; port_count < ExpansionCardPortRange; port_count++) { Ports.AddPortReader(port_address, in_card.CardPortRead); Ports.AddPortWriter(port_address, in_card.CardPortWrite); port_address++; } }