Пример #1
0
        /// <summary>
        /// Define how to handle an unattached port
        /// </summary>
        /// <param name="addr">Port address</param>
        /// <returns>Port value for the unhandled port address</returns>
        public override byte UnhandledRead(ushort addr)
        {
            var tact    = HostVm.CurrentFrameTact % ScreenDevice.RenderingTactTable.Length;
            var rt      = ScreenDevice.RenderingTactTable[tact];
            var memAddr = (ushort)0;

            switch (rt.Phase)
            {
            case ScreenRenderingPhase.BorderFetchPixel:
            case ScreenRenderingPhase.DisplayB1FetchB2:
            case ScreenRenderingPhase.DisplayB2FetchB1:
                memAddr = rt.PixelByteToFetchAddress;
                break;

            case ScreenRenderingPhase.BorderFetchPixelAttr:
            case ScreenRenderingPhase.DisplayB1FetchA2:
            case ScreenRenderingPhase.DisplayB2FetchA1:
                memAddr = rt.AttributeToFetchAddress;
                break;
            }

            if (memAddr == 0)
            {
                return(0xFF);
            }
            var readValue = _memoryDevice.Read(memAddr, true);

            return(readValue);
        }