public EthernetController(DSystem system)
        {
            _system         = system;
            _fifo           = new Queue <ushort>();
            _inputPacket    = new Queue <ushort>();
            _outputPacket   = new Queue <ushort>();
            _pendingPackets = new Queue <MemoryStream>();

            _crc32 = new CRC32();

            // Attach real Ethernet device if user has specified one, otherwise leave unattached; output data
            // will go into a bit-bucket.
            try
            {
                if (Configuration.HostRawEthernetInterfacesAvailable &&
                    !string.IsNullOrWhiteSpace(Configuration.HostPacketInterfaceName))
                {
                    _hostInterface = new HostEthernetEncapsulation(Configuration.HostPacketInterfaceName);
                    _hostInterface.RegisterReceiveCallback(OnHostPacketReceived);
                }
            }
            catch (Exception e)
            {
                _hostInterface = null;
                Log.Write(LogComponent.HostEthernet, "Unable to configure network interface.  Error {0}", e.Message);
            }

            _readerLock = new ReaderWriterLockSlim();

            // Start the ethernet reciever poll event, this will run forever.
            _system.Scheduler.Schedule(_receiverPollInterval, ReceiverPollCallback);

            Reset();
        }
示例#2
0
        public ShugartController(DSystem system, SA1000Drive drive)
        {
            _system = system;
            _drive  = drive;

            _writePipeline = new Queue <ushort>();
        }
示例#3
0
        public DebuggerMain(DSystem system, DebuggerReason reason, string message)
        {
            InitializeComponent();

            _reason       = reason;
            _entryMessage = message;
            _system       = system;
        }
示例#4
0
        public DisplayController(DSystem system)
        {
            _system = system;

            _lostSyncEvent = new Event(_lostSyncInterval, null, LostSyncCallback);

            _fifo = new Queue <ushort>(16);
        }
示例#5
0
        public DWindow(DSystem system)
        {
            _system = system;

            InitializeComponent();
            InitializeIO();

            PopulateAltBoot();

            _frameTimer          = new System.Windows.Forms.Timer();
            _frameTimer.Interval = 1000;
            _frameTimer.Tick    += OnFrameTimerTick;
            _frameTimer.Start();

            _system.ExecutionStateChanged += OnExecutionStateChanged;
            _system.IOP.MiscIO.MPChanged  += OnMPCodeChanged;

            //
            // Load any disks referenced by the configuration.
            //
            if (!string.IsNullOrWhiteSpace(Configuration.FloppyDriveImage))
            {
                try
                {
                    _system.IOP.FloppyController.Drive.LoadDisk(new FloppyDisk(Configuration.FloppyDriveImage));
                }
                catch (Exception e)
                {
                    Log.Write(LogType.Error, LogComponent.Configuration, "Unable to load floppy image {0}.  Error {1}",
                              Configuration.FloppyDriveImage,
                              e.Message);
                }
            }

            if (!string.IsNullOrWhiteSpace(Configuration.HardDriveImage))
            {
                try
                {
                    _system.HardDrive.Load(Configuration.HardDriveImage);
                }
                catch (Exception e)
                {
                    Log.Write(LogType.Error, LogComponent.Configuration, "Unable to load hard drive image {0}.  Error {1}",
                              Configuration.FloppyDriveImage,
                              e.Message);
                }
            }

            UpdateUIRunState();
            UpdateMPCode();
            UpdateHardDriveLabel();
            UpdateFloppyDriveLabel();
            UpdateMouseState();
        }
示例#6
0
        public SA1000Drive(DSystem system)
        {
            _type = DriveType.Invalid;
            NewDisk(_type, String.Empty);

            _system = system;

            // Queue up the event that rotates our virtual disk.  This runs continuously.
            _system.Scheduler.Schedule(_diskWordDelay, DiskWordCallback);

            Reset();
        }
示例#7
0
        public IOPDebugger(DSystem system)
        {
            InitializeComponent();

            _system = system;

            _sourceMap = new SourceMap("8085 ROM", "IOP\\Source\\SourceMap.txt", "IOP\\Source");

            SourceDisplay.SetSourceRoot(Path.Combine("IOP", "Source"));
            SourceDisplay.AttachMap(_sourceMap);

            PopulateSourceList();

            DisplayCurrentCode();
        }
示例#8
0
        public CPDebugger(DSystem system)
        {
            InitializeComponent();

            _system = system;

            SourceDisplay.SetSourceRoot(Path.Combine("CP", "Source"));

            _loadMap = new MicrocodeLoadMap();
            _loadMap.Load(Path.Combine("CP", "Source", "load_map.txt"));

            _sourceMaps = new List <SourceMap>();

            Disassembly.AttachCP(system.CP);

            PopulateSourceList();
        }
示例#9
0
        public EthernetController(DSystem system)
        {
            _system         = system;
            _fifo           = new Queue <ushort>();
            _inputPacket    = new Queue <ushort>();
            _outputPacket   = new Queue <ushort>();
            _pendingPackets = new Queue <MemoryStream>();

            _crc32 = new CRC32();

            AttachHostEthernet();

            _readerLock = new ReaderWriterLockSlim();

            // Start the ethernet reciever poll event, this will run forever.
            _system.Scheduler.Schedule(_receiverPollInterval, ReceiverPollCallback);

            Reset();
        }
        public IOProcessor(DSystem system)
        {
            _system   = system;
            _io       = new IOPIOBus();
            _mem      = new IOPMemoryBus(_io);
            _cpu      = new i8085(_mem, _io);
            _keyboard = new Keyboard();
            _mouse    = new Mouse();

            //
            // 8" floppy drive used by the IOP
            //
            _floppyDrive = new FloppyDrive(_system);

            //
            // Add devices to the IO bus
            //
            _miscIO           = new MiscIO(this);
            _floppyController = new FloppyController(_floppyDrive, _system);
            _dma    = new DMAController(this);
            _tty    = new Printer();
            _beeper = new Beeper();

            //
            // Register DMA devices with controller
            //
            _dma.RegisterDevice(_floppyController, 0);  // Floppy, DMA Channel 0
            _dma.RegisterDevice(_system.CP, 1);         // CP, DMA Channel 1

            _io.RegisterDevice(_miscIO);
            _io.RegisterDevice(_floppyController);
            _io.RegisterDevice(_dma);
            _io.RegisterDevice(_system.CP);
            _io.RegisterDevice(_tty);

            Reset();
        }
示例#11
0
 public FloppyController(FloppyDrive drive, DSystem system)
 {
     _system = system;
     _drive  = drive;
 }