Ejemplo n.º 1
0
        /// <summary>
        /// This method recreates the .vmstate file for a Spectrum +3 virtual machine
        /// in Spectrum +3 startup mode
        /// </summary>
        /// <param name="controller">Virtual machine controller</param>
        /// <returns>True, if preparation successful; otherwise, true</returns>
        private static async Task <bool> CreateSpectrumP3StartupP3State(ISpectrumVmController controller)
        {
            // --- Wait while the main menu appears
            controller.StartWithOptions(new ExecuteCycleOptions(EmulationMode.UntilExecutionPoint,
                                                                terminationRom: 0,
                                                                terminationPoint: SPP3_MAIN_WAITING_LOOP,
                                                                fastTapeMode: true,
                                                                fastVmMode: true));
            if (!await WaitForTerminationPoint())
            {
                return(false);
            }
            controller.StartWithOptions(new ExecuteCycleOptions(EmulationMode.UntilExecutionPoint,
                                                                terminationRom: 0,
                                                                terminationPoint: SPP3_RETURN_TO_EDITOR,
                                                                fastTapeMode: true,
                                                                fastVmMode: true));

            // --- Move to Spectrum +3 mode
            QueueKeyStroke(SpectrumKeyCode.N6, SpectrumKeyCode.CShift);
            await Task.Delay(WAIT_FOR_MENU_KEY);

            QueueKeyStroke(SpectrumKeyCode.Enter);
            return(await WaitForTerminationPoint());
        }
        /// <summary>
        /// This method recreates the .vmstate file for a Spectrum 128 virtual machine
        /// in Spectrum 48 startup mode
        /// </summary>
        /// <param name="controller">Virtual machine controller</param>
        /// <returns>True, if preparation successful; otherwise, true</returns>
        private async Task <bool> CreateSpectrum128Startup48State(ISpectrumVmController controller)
        {
            // --- Wait while the main menu appears
            controller.SetDebugMode(false);
            controller.Start(new ExecuteCycleOptions(EmulationMode.UntilExecutionPoint,
                                                     terminationRom: 0,
                                                     terminationPoint: SP128_MAIN_WAITING_LOOP,
                                                     fastTapeMode: true,
                                                     fastVmMode: true));
            if (!await WaitForTerminationPoint())
            {
                return(false);
            }
            controller.Start(new ExecuteCycleOptions(EmulationMode.UntilExecutionPoint,
                                                     terminationRom: 1,
                                                     terminationPoint: SP48_MAIN_EXEC_ADDR,
                                                     fastTapeMode: true,
                                                     fastVmMode: true));

            // --- Move to Spectrum 48 mode
            QueueKeyStroke(SpectrumKeyCode.N6, SpectrumKeyCode.CShift);
            await Task.Delay(WAIT_FOR_MENU_KEY);

            QueueKeyStroke(SpectrumKeyCode.N6, SpectrumKeyCode.CShift);
            await Task.Delay(WAIT_FOR_MENU_KEY);

            QueueKeyStroke(SpectrumKeyCode.N6, SpectrumKeyCode.CShift);
            await Task.Delay(WAIT_FOR_MENU_KEY);

            QueueKeyStroke(SpectrumKeyCode.Enter);
            return(await WaitForTerminationPoint());
        }
Ejemplo n.º 3
0
 public SpectrumVmStateFileManager(string modelName, ISpectrumVm spectrum, ISpectrumVmController controller,
                                   Func <string> cacheFolderFunc)
 {
     ModelName        = modelName;
     SpectrumVm       = spectrum;
     VmController     = controller;
     _cacheFolderFunc = cacheFolderFunc;
 }
Ejemplo n.º 4
0
 /// <summary>
 /// This method recreates the .vmstate file for a Spectrum 48 virtual machine startup
 /// </summary>
 /// <param name="controller">Virtual machine controller</param>
 /// <returns>True, if preparation successful; otherwise, true</returns>
 private static async Task <bool> CreateSpectrum48StartupState(ISpectrumVmController controller)
 {
     controller.StartWithOptions(new ExecuteCycleOptions(EmulationMode.UntilExecutionPoint,
                                                         terminationRom: 0,
                                                         terminationPoint: SP48_MAIN_EXEC_ADDR,
                                                         fastTapeMode: true,
                                                         fastVmMode: true));
     return(await WaitForTerminationPoint());
 }