Exemplo n.º 1
0
        /// <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++;
            }
        }
Exemplo n.º 2
0
        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++;
            }
        }