Beispiel #1
0
        public SoundBoard(WpcCpuBoard.InitObject initObject)
        {
            bool isPreDcsSoundBoard = initObject.romObject?.preDcsSoundboard == true;

            soundSerialInterface = SoundSerialInterface.getInstance(isPreDcsSoundBoard);
            readDataBytes        = 0;
            writeDataBytes       = 0;
            readControlBytes     = 0;
            writeControlBytes    = 0;
            resetCount           = 0;
        }
Beispiel #2
0
        public CpuBoardAsic(WpcCpuBoard.InitObject initObject)
        {
            foreach (var fieldInfo in typeof(OP).GetFields())
            {
                object value = fieldInfo.GetValue(null);

                if (value is ushort)
                {
                    if (!REVERSEOP.ContainsKey((ushort)value))
                    {
                        REVERSEOP.Add((ushort)value, fieldInfo.Name);
                    }
                }
            }

            interruptCallback = initObject.interruptCallback;
            pageMask          = PAGESIZE_MAP[initObject.romSizeMBit];
            //if (pageMask == 0)
            //{
            //    throw new Exception("PAGEMASK_EMPTY");
            //}
            Debug.Print("pageMask calculated pageMask: {0}, romSizeMBit: {1}", pageMask, initObject.romSizeMBit);
            ram = initObject.ram;
            hardwareHasSecurityPic = initObject.romObject != null && initObject.romObject?.hasSecurityPic == true;

            inputSwitchMatrix    = InputSwitchMatrix.getInstance();
            outputLampMatrix     = OutputLampMatrix.getInstance(Timing.CALL_UPDATELAMP_AFTER_TICKS);
            outputSolenoidMatrix = OutputSolenoidMatrix.getInstance(Timing.CALL_UPDATESOLENOID_AFTER_TICKS);

            bool isWpc95 = initObject.romObject != null && initObject.romObject?.wpc95 == true;

            outputGeneralIllumination = OutputGeneralIllumination.getInstance(isWpc95);
            securityPic             = SecurityPic.getInstance();
            periodicIRQTimerEnabled = true;
            romBank = 0;
            diagnosticLedToggleCount = 0;
            oldDiagnostigLedState    = 0;
            _firqSourceDmd           = false;
            irqCountGI             = 0;
            zeroCrossFlag          = 0;
            ticksZeroCross         = 0;
            memoryProtectionMask   = null;
            midnightMadnessMode    = new DateTimeOffset(DateTime.Now).ToUnixTimeMilliseconds();
            midnightModeEnabled    = false;
            blankSignalHigh        = true;
            watchdogTicks          = 0;
            watchdogExpiredCounter = 0;
            dipSwitchSetting       = DipSwitchCountry.USA;
        }
Beispiel #3
0
        public DisplayBoard(WpcCpuBoard.InitObject initObject)
        {
            foreach (var fieldInfo in typeof(OP).GetFields())
            {
                object value = fieldInfo.GetValue(null);

                if (value is ushort)
                {
                    if (!REVERSEOP.ContainsKey((ushort)value))
                    {
                        REVERSEOP.Add((ushort)value, fieldInfo.Name);
                    }
                }
            }

            interruptCallback = initObject.interruptCallback;
            ram = initObject.ram;
            hasAlphanumericDisplay = initObject.hasAlphanumericDisplay;

            outputDmdDisplay   = OutputDmdDisplay.getInstance(DMD_PAGE_SIZE);
            outputAlphaDisplay = OutputAlphaDisplay.getInstance(DMD_PAGE_SIZE);
        }
Beispiel #4
0
 public static CpuBoardAsic getInstance(WpcCpuBoard.InitObject initObject)
 {
     return(new CpuBoardAsic(initObject));
 }
Beispiel #5
0
 public static DisplayBoard getInstance(WpcCpuBoard.InitObject initObject)
 {
     return(new DisplayBoard(initObject));
 }
Beispiel #6
0
        /**
         * Create a new instance of the sound board, compatible with preDCS, DCS and WPC-95 Sound Boards
         * @function
         * @param {Object} initObject JSON Configuration Object
         * @param {Array} initObject.romObject.preDcsSoundboard preDCS boards use 8bit to communicate with the CPU board, DCS and later use 16 bit
         * @return {SoundBoard} instance
         */

        public static SoundBoard getInstance(WpcCpuBoard.InitObject initObject)
        {
            return(new SoundBoard(initObject));
        }