public Task StartAsync(CancellationToken cancellationToken)
    {
        var inputFile = config["input"];

        if (inputFile == null)
        {
            Usage();
        }
        logger.LogInformation("start async");

        logger.LogInformation($"Input file: {inputFile}");

        try
        {
            // Load the app image at address zero
            cpu.Memory.Load(inputFile);

            // Run the CPU
            cpu.Run();

            Console.WriteLine();
            cpu.Registers.ToConsole();
            Console.WriteLine();
            cpu.Memory.ToConsole(0, 128);
            Console.WriteLine();
        }
        catch (EmulatorException emulatorException)
        {
            Console.WriteLine($"Emulator error: {emulatorException.Message}\n".Pastel(Color.Tomato));
        }
        catch (Exception emulatorException)
        {
            logger.LogError("Unexpected exception {exception}", emulatorException.Message);
        }


        applicationLifetime.StopApplication();
        return(Task.CompletedTask);
    }