Пример #1
0
        internal static MediaTarget FromText(string from)
        {
            var mediaTarget = new MediaTarget();

            mediaTarget.Coordinate = MemoryCoordinate.FromText(from);
            return(mediaTarget);
        }
Пример #2
0
        public override void Run(Process scenario, CpuCommandContext context)
        {
            var advanceAmountRaw = Amount.ReadFromTarget(scenario, context);
            var advanceAmount    = Int32.Parse(advanceAmountRaw);

            var currentValue       = Target.ReadFromTarget(scenario, context);
            var currentMediaTarget = MediaTarget.FromText(currentValue);

            AddressableRegion region;

            if (currentMediaTarget.Coordinate.DriveId == null)
            {
                region = scenario.Memory;
            }
            else
            {
                region = context.Scenario.Disks[currentMediaTarget.Coordinate.DriveId.Value];
            }

            Console.WriteLine($"Seeking {currentMediaTarget.Coordinate} by {advanceAmount}");
            //0:0A0:1A
            var current = currentMediaTarget.Coordinate;

            for (int i = 0; i < advanceAmount; i++)
            {
                current = region.NextAddress(current);
            }

            Console.WriteLine($"Seeked to {current}");

            Target.WriteToTarget(scenario, current.ToString(), context);
        }
Пример #3
0
        public static Target ResolveTarget(string from)
        {
            if (from.StartsWith("M") || Char.IsDigit(from[0]))
            {
                return(MediaTarget.FromText(from));
            }

            if (from.StartsWith("@"))
            {
                return(VariableTarget.FromText(from));
            }

            if (from.StartsWith("KB"))
            {
                return(KeyBoardTarget.FromText(from));
            }

            if (from.StartsWith("PRINT"))
            {
                return(PrinterTarget.FromText(from));
            }

            if (from.StartsWith("X"))
            {
                return(DeRefTarget.FromText(from));
            }

            if (from.StartsWith("`"))
            {
                return(LiteralTarget.FromText(from));
            }

            throw new ArgumentException(from);
        }