/// <summary>
        /// Signs that the device has been attached to the Spectrum virtual machine
        /// </summary>
        public override void OnAttachedToVm(ISpectrumVm hostVm)
        {
            base.OnAttachedToVm(hostVm);
            _romConfig    = hostVm.RomConfiguration;
            _nextDevice   = hostVm.NextDevice;
            _divIdeDevice = hostVm.DivIdeDevice;

            // --- Create space for ROM pages (use 10 x 8K pages)
            var romCount = _romConfig.NumberOfRoms * 2;

            _romPages = new byte[romCount][];
            for (var i = 0; i < romCount; i++)
            {
                _romPages[i] = new byte[0x2000];
            }

            // --- Obtain Next memory size
            var memSize = HostVm.MemoryConfiguration.NextMemorySize;

            if (memSize < 1024)
            {
                memSize = 512;
            }
            else if (memSize >= 1024 && memSize < 1536)
            {
                memSize = 1024;
            }
            else if (memSize >= 1536 && memSize < 2048)
            {
                memSize = 1536;
            }
            else
            {
                memSize = 2048;
            }

            // --- Calculate number of RAM pages
            RamPageCount = 16 + 64 * (memSize - 512) / 512;

            // --- Allocate RAM
            _ramPages = new byte[RamPageCount][];
            for (var i = 0; i < RamPageCount; i++)
            {
                _ramPages[i] = new byte[0x2000];
            }

            Reset();
        }
Beispiel #2
0
 /// <summary>
 /// Signs that the device has been attached to the Spectrum virtual machine
 /// </summary>
 public override void OnAttachedToVm(ISpectrumVm hostVm)
 {
     base.OnAttachedToVm(hostVm);
     _divIdeDevice = hostVm.DivIdeDevice;
 }