Пример #1
0
 private void ButtonDirect_Click(object sender, RoutedEventArgs e)
 {
     using (var lck = new LockForm())
     {
         _navi.Navigate(pageDirectCommand);
     }
 }
Пример #2
0
 private void ButtonImage_Click(object sender, RoutedEventArgs e)
 {
     using (var lck = new LockForm())
     {
         _navi.Navigate(pageImage);
     }
 }
Пример #3
0
        private async void ButtonPortOpen_Click(object sender, RoutedEventArgs e)
        {
            using (var lck = new LockForm())
            {
                portOpen();
                var r = await confirmation();

                if (r == ResultStatusMarker.Confirmation)
                {
                    AppendLog("Communication confirmed. Ready.\r\n");
                    setEnables(true);
                    var r2 = await getN88Version();

                    if (!r2)
                    {
                        AppendLog($"Version {statementReaultString}\r\n");
                        setVersionState("N88-BASIC Version " + statementReaultString + " READY");
                    }
                }
                else
                {
                    AppendLog($"Communication Failed.[{ Util.GetErrorString(r) }] Please verify your environment. Closing Port\r\n");
                    portClose();
                    setEnables(false);
                }
            }
        }
Пример #4
0
        private async void ButtonNext_Click(object sender, RoutedEventArgs e)
        {
            using (var lockf = new LockForm())
            {
                setAllXX();
                var diskinfo = await Util.GetDiskInf(Util.GetSelectedDrive());

                int.TryParse(TextBoxTrack.Text, out int track);
                int.TryParse(TextBoxSector.Text, out int sector);
                sector++;
                if (sector > diskinfo.SectorsInTrack)
                {
                    sector = 1;
                    track++;
                    if (track > diskinfo.MaxTrackNo)
                    {
                        track = 0;
                        var surfaceno = ComboBoxSurface.SelectedIndex;
                        surfaceno++;
                        if (surfaceno > diskinfo.Surfaces)
                        {
                            surfaceno = 0;
                        }
                        ComboBoxSurface.SelectedIndex = surfaceno;
                    }
                }
                TextBoxTrack.Text  = track.ToString();
                TextBoxSector.Text = sector.ToString();
                await readCommon(diskinfo);
            }
        }
Пример #5
0
        private async void AutoSave_Click(object sender, RoutedEventArgs e)
        {
            const string data = @"10 rem auto start program for Remove PC-8801 client
20 console 0,25,1,1
30 cls 1
40 print ""TERM MODE""
50 color 2:print ""SHIFT+STOP"";:color 7:print "" to quit TERM mode.""
60 term ""N81NNF"",,8192
";

            using (var diable = new LockForm())
            {
                if (await Util.SendCommandAsyncAndErrorHandle("open \"" + Util.GetSelectedDrive() + ":rem88\" for output as #1 "))
                {
                    return;
                }
                var reader = new StringReader(data);
                for (; ;)
                {
                    var s = reader.ReadLine();
                    if (s == null)
                    {
                        break;
                    }
                    if (await Util.SendCommandAsyncAndErrorHandle("print #1,\"" + s.Replace("\"", "\"+chr$(34)+\"") + "\""))
                    {
                        return;
                    }
                }
                if (await Util.SendCommandAsyncAndErrorHandle("close #1"))
                {
                    return;
                }
            }
        }
Пример #6
0
 private void ButtonPortClose_Click(object sender, RoutedEventArgs e)
 {
     using (var lck = new LockForm())
     {
         portClose();
         setEnables(false);
     }
 }
Пример #7
0
 private async void ButtonRead_Click(object sender, RoutedEventArgs e)
 {
     using (var lockf = new LockForm())
     {
         setAllXX();
         var diskinfo = await Util.GetDiskInf(Util.GetSelectedDrive());
         await readCommon(diskinfo);
     }
 }
Пример #8
0
 private async void ButtonFiles_Click(object sender, RoutedEventArgs e)
 {
     using (var lck = new LockForm())
     {
         if (port == null)
         {
             return;
         }
         await SendCommandAsync($"files {getTargetDrive()}");
     }
 }
Пример #9
0
 private void ButtonCopy_Click(object sender, RoutedEventArgs e)
 {
     using (var lck = new LockForm())
     {
         if (info == null)
         {
             return;
         }
         var sb = new StringBuilder();
         foreach (var item in info.GetType().GetFields())
         {
             sb.AppendFormat("{0}={1}\r\n", item.Name, item.GetValue(info));
         }
         Clipboard.Clear();
         Clipboard.SetText(sb.ToString());
     }
 }
Пример #10
0
        private async Task update()
        {
            using (var lck = new LockForm())
            {
                ListBoxDiskInfos.Items.Clear();
                var driveNo = Util.GetSelectedDrive();
                info = await Util.GetDiskInf(driveNo);

                if (info == null)
                {
                    return;
                }
                foreach (var item in info.GetType().GetFields())
                {
                    var v = item.GetValue(info);
                    var s = item.Name + "=" + v.ToString();
                    ListBoxDiskInfos.Items.Add(s);
                }
            }
        }
Пример #11
0
        private async void ImageRead_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                using (var lockf = new LockForm())
                {
                    string filename;
                    if (Properties.Settings.Default.ImageAutoFileName)
                    {
                        filename = System.IO.Path.Combine(TextBoxDirectory.Text, DateTimeOffset.Now.ToString("yyyyMMddHHmmss") + ".d88");
                    }
                    else
                    {
                        var dialog = new SaveFileDialog();
                        dialog.InitialDirectory = TextBoxDirectory.Text;
                        dialog.Title            = "Save Image";
                        dialog.Filter           = "D88 Disk Image File(*.d88)|*.d88|All Files(*.*)|*.*";
                        if (dialog.ShowDialog() != true)
                        {
                            return;
                        }
                        filename = dialog.FileName;
                    }
                    var diskinfo = await Util.GetDiskInf(Util.GetSelectedDrive());

                    var format = Util.GetDiskFormatOverride();
                    ProgressBarDefault.Maximum = (diskinfo.Surfaces + 1) * (diskinfo.MaxTrackNo + 1) * diskinfo.SectorsInTrack;
                    ProgressBarDefault.Value   = 0;
                    const int bytesInSector  = 256;
                    const int bytesInSectorN = 1;   // 128=0, 256=1, 512=2, 1024=3, 2048=4
                    const int headerOffset   = 0x2b0;
                    using (var outputRawStream = File.OpenWrite(filename))
                    {
                        using (var outputStream = new BinaryWriter(outputRawStream))
                        {
                            // Write D88 Header
                            var nameInFile = TextBoxNameInFile.Text;
                            if (string.IsNullOrWhiteSpace(nameInFile))
                            {
                                nameInFile = DateTimeOffset.Now.ToString("yyyyMMddHHmmss");
                            }
                            var bytes = Encoding.Default.GetBytes(nameInFile);
                            for (int i = 0; i < 16; i++)
                            {
                                if (bytes.Length > i)
                                {
                                    outputStream.Write(bytes[i]);
                                }
                                else
                                {
                                    outputStream.Write((byte)0);
                                }
                            }
                            // ASCIZ terminater
                            outputStream.Write((byte)0);
                            // RESERVE 9 bytes
                            for (int i = 0; i < 9; i++)
                            {
                                outputStream.Write((byte)0);
                            }
                            // write protect (Ignore)
                            outputStream.Write((byte)0);
                            // type of disk
                            byte typeOfDisk = 0; // 2D
                            if (diskinfo.MaxTrackNo == 80)
                            {
                                typeOfDisk = 0x10;                            //2DD
                            }
                            else if (diskinfo.SectorsInTrack == 26)
                            {
                                typeOfDisk = 0x20;                                     //2HD
                            }
                            outputStream.Write(typeOfDisk);
                            // size of disk (uint)
                            uint sizeOfDisk = 0x2b0 + (uint)((diskinfo.Surfaces + 1) * (diskinfo.MaxTrackNo + 1) * diskinfo.SectorsInTrack * (0x10 + bytesInSector));
                            outputStream.Write(sizeOfDisk);
                            // Track Table (164 Tracks)
                            int bytesInTrack = diskinfo.SectorsInTrack * (0x10 + bytesInSector);
                            for (int i = 0; i < 164; i++)
                            {
                                uint offset    = 0;
                                int  surfaceNo = i / (diskinfo.MaxTrackNo + 1);
                                if (surfaceNo <= diskinfo.Surfaces)
                                {
                                    offset = (uint)(headerOffset + i * bytesInTrack);
                                }
                                outputStream.Write(offset);
                            }
                            for (int track = 0; track < diskinfo.MaxTrackNo + 1; track++)
                            {
                                for (int surface = 0; surface < diskinfo.Surfaces + 1; surface++)
                                {
                                    //sectors in track
                                    for (int sector = 1; sector < diskinfo.SectorsInTrack + 1; sector++)
                                    {
                                        ProgressBarDefault.Value++;
                                        setStatus(diskinfo.DriveNo, format, surface, track, sector);
                                        var array = await Util.SectorRead(diskinfo.DriveNo, surface, track, sector);

                                        if (array == null)
                                        {
                                            return;
                                        }
                                        outputStream.Write((byte)track);
                                        outputStream.Write((byte)surface);
                                        outputStream.Write((byte)sector);
                                        outputStream.Write((byte)bytesInSectorN);
                                        outputStream.Write((ushort)diskinfo.SectorsInTrack);
                                        outputStream.Write((byte)0x00); // 0=DS, 0x40=SS
                                        outputStream.Write((byte)0x00); // 0=NORMAL, 0x10=DELETED DATA
                                        outputStream.Write((byte)0x00); // 0=NORMAL END, RETURNED BY DISK BIOS
                                        for (int i = 0; i < 5; i++)
                                        {
                                            outputStream.Write((byte)0x00);                         // RESERVE
                                        }
                                        outputStream.Write((ushort)array.Length);
                                        outputStream.Write(array, 0, array.Length);
                                    }
                                }
                            }
                        }
                    }
                    SystemSounds.Beep.Play();
                    MessageBox.Show("Done Successfully: " + filename);
                }
            }
            finally
            {
                setStatus("");
                ProgressBarDefault.Value = 0;
            }
        }