Exemple #1
0
        public void FormatTrdos()
        {
            // format empty disk...
            for (var cyl = 0; cyl < _cylynderList.Count; cyl++)
            {
                var cylinder = _cylynderList[cyl];
                for (var side = 0; side < cylinder.Length; side++)
                {
                    var sectorList = new List <Sector>();
                    for (var sec = 0; sec < 16; sec++)  // 16 sectors per track
                    {
                        var sector = new SimpleSector(
                            cyl,
                            0,
                            il[sec],
                            1,
                            new byte[256]);
                        for (var i = 0; i < 256; i++)
                        {
                            sector.Data[i] = 0x00;
                        }
                        sector.SetAdCrc(true);
                        sector.SetDataCrc(true);
                        sectorList.Add(sector);
                    }
                    cylinder[side].AssignSectors(sectorList);
                }
            }

            // TRDOS level format: 2544 secs (80 cyls, 2 sides)
            var trsec = new byte[256];

            for (int i = 0; i < trsec.Length; i++)
            {
                trsec[i] = 0x00;
            }

            trsec[0xE2] = 0x01; trsec[0xE3] = 0x16;
            trsec[0xE5] = 0xF0; trsec[0xE6] = 0x09;
            trsec[0xE7] = 0x10;
            for (int i = 0xEA; i <= 0xF2; i++)
            {
                trsec[i] = 0x20;
            }
            trsec[0xF5] = 0x5A;  // Z
            trsec[0xF6] = 0x58;  // X
            trsec[0xF7] = 0x4D;  // M
            trsec[0xF8] = 0x41;  // A
            trsec[0xF9] = 0x4B;  // K
            trsec[0xFA] = 0x32;  // 2
            trsec[0xFB] = 0x20;
            trsec[0xFC] = 0x20;
            WriteLogicalSector(0, 0, 9, trsec);
            _modifyFlag = ModifyFlag.None;
        }
Exemple #2
0
 public void SetPhysics(int cylynderCount, int sideCount)
 {
     _cylynderList.Clear();
     _sideCount = sideCount;
     for (var i = 0; i < cylynderCount; i++)
     {
         var cyl = new Track[_sideCount];
         for (var j = 0; j < cyl.Length; j++)
         {
             cyl[j] = new Track(_rotateTime);
             byte[] rawImage = new byte[6400];
             byte[] rawClock = new byte[rawImage.Length / 8 + (((rawImage.Length & 7) != 0) ? 1 : 0)];
             cyl[j].AssignImage(rawImage, rawClock);
         }
         _cylynderList.Add(cyl);
     }
     _modifyFlag = ModifyFlag.None;
 }
Exemple #3
0
        public bool Set(Guid submitorId, XmlNode alertsNode)
        {
            Logger.Info(string.Format("PriceAlertManager.Set {0}", alertsNode.OuterXml));
            if (this.SaveAlerts(alertsNode.OuterXml, submitorId))
            {
                lock (this.lockObj)
                {
                    foreach (XmlNode alertNode in alertsNode.ChildNodes)
                    {
                        if (string.Compare(alertNode.Name, "PriceAlert", true) == 0)
                        {
                            ModifyFlag flag = (ModifyFlag)(int.Parse(alertNode.Attributes["ModifyFlag"].Value));
                            if (flag == ModifyFlag.Add)
                            {
                                Alert alert = Alert.Create(submitorId, alertNode, quotationSetterProvider);

                                Logger.Info(string.Format("PriceAlertManager.Set add alert {0}", alert));
                                this.Add(alert);
                            }
                            else if (flag == ModifyFlag.Update)
                            {
                                Guid  alertId = Guid.Parse(alertNode.Attributes["ID"].Value);
                                Alert alert   = null;
                                if (this.alerts.TryGetValue(alertId, out alert))
                                {
                                    Guid oldInstrumentId = alert.InstrumentId;
                                    Logger.Info(string.Format("PriceAlertManager.Set update alert {0}", alert));
                                    alert.Update(alertNode, quotationSetterProvider);

                                    if (oldInstrumentId != alert.InstrumentId)
                                    {
                                        // remove from old list
                                        ICollection <Alert> oldList;
                                        if (this.instrument2Alerts.TryGetValue(oldInstrumentId, out oldList))
                                        {
                                            oldList.Remove(alert);
                                        }

                                        // add to new list
                                        List <Alert> newList;
                                        if (!this.instrument2Alerts.ContainsKey(alert.InstrumentId))
                                        {
                                            newList = new List <Alert>();
                                            newList.Add(alert);
                                            this.instrument2Alerts.Add(alert.InstrumentId, newList);
                                        }
                                        else
                                        {
                                            newList = this.instrument2Alerts[alert.InstrumentId] as List <Alert>;
                                            newList.Add(alert);
                                        }
                                    }
                                }
                            }
                            else if (flag == ModifyFlag.Remove)
                            {
                                Guid alertId = Guid.Parse(alertNode.Attributes["ID"].Value);
                                this.Remove(alertId);
                                Logger.Info(string.Format("PriceAlertManager.Set remove alert {0}", alertId));
                            }
                        }
                    }
                }

                return(true);
            }
            else
            {
                return(false);
            }
        }
 public bool IsModified(ModifyFlag pos)
 {
     return(modifyflag.Get((int)pos));
 }
 void SetModified(ModifyFlag pos)
 {
     modifyflag.Set((int)pos, true);
 }
Exemple #6
0
 public void SetPhysics(int cylynderCount, int sideCount)
 {
     _cylynderList.Clear();
     _sideCount = sideCount;
     for (int i = 0; i < cylynderCount; i++)
     {
         Track[] cyl = new Track[_sideCount];
         for (int j = 0; j < cyl.Length; j++)
         {
             cyl[j] = new Track(_rotateTime);
             byte[] rawImage = new byte[6400];
             byte[] rawClock = new byte[rawImage.Length / 8 + (((rawImage.Length & 7) != 0) ? 1 : 0)];
             cyl[j].AssignImage(rawImage, rawClock);
         }
         _cylynderList.Add(cyl);
     }
     _modifyFlag = ModifyFlag.None;
 }
Exemple #7
0
        public void format_trdos()
        {
            // format empty disk...
            for (int cyl = 0; cyl < _cylynderList.Count; cyl++)
            {
                Track[] cylinder = (Track[])_cylynderList[cyl];
                for (int side = 0; side < cylinder.Length; side++)
                {
                    ArrayList sectorList = new ArrayList();
                    for (int sec = 0; sec < 16; sec++)	// 16 sectors per track
                    {
                        SimpleSector sector = new SimpleSector(cyl, 0, il[sec], 1, new byte[256]);
                        for (int i = 0; i < 256; i++)
                            sector.Data[i] = 0x00;
                        sector.SetAdCrc(true);
                        sector.SetDataCrc(true);
                        sectorList.Add(sector);
                    }
                    cylinder[side].AssignSectors(sectorList);
                }
            }

            // TRDOS level format: 2544 secs (80 cyls, 2 sides)
            byte[] trsec = new byte[256];
            for (int i = 0; i < trsec.Length; i++)
                trsec[i] = 0x00;

            trsec[0xE2] = 0x01; trsec[0xE3] = 0x16;
            trsec[0xE5] = 0xF0; trsec[0xE6] = 0x09;
            trsec[0xE7] = 0x10;
            for (int i = 0xEA; i <= 0xF2; i++)
                trsec[i] = 0x20;
            trsec[0xF5] = 0x5A;  // Z
            trsec[0xF6] = 0x58;  // X
            trsec[0xF7] = 0x4D;  // M
            trsec[0xF8] = 0x41;  // A
            trsec[0xF9] = 0x4B;  // K
            trsec[0xFA] = 0x32;  // 2
            trsec[0xFB] = 0x20;
            trsec[0xFC] = 0x20;
            writeLogicalSector(0, 0, 9, trsec);
            _modifyFlag = ModifyFlag.None;
        }