Giter Site home page Giter Site logo

Comments (11)

weshatheleopard avatar weshatheleopard commented on May 31, 2024

Ночной, ты что, своих не узнаёшь?

"Лечение" треков у меня уже есть, см. MfmTrack#cleanup. Посмотри — может, вытянешь. Вот обратной конвертации из MfmTrack в KryoFluxReader пока нет, потому как не требовалось. Скажи — если будет надо, напишу.

from bktools.

nightgryphon avatar nightgryphon commented on May 31, 2024

Узнаёшь, но все же типа международная площадка всё такое ;) После подыхания телефона контактов много посеялось.

У KryoFluxReader свой формат, сходу тулзы для конвертации из FluxEngine в его формат не нашел, так что не получается твою библиотеку использовать пока к сожалению. С самой МФМ записью пока не разбирался как генерится сигнал.
Во FluxEngine заявлена поддержка БК800 дискет, но что-то декодирование странный результат дает, а новое записал - БКшка не видит.
Так что если будет настроение допилисть генерацию, а то и прям запись - будет очень круто =-.-= Запись можно через опенсорсный GreaseWeazle, он из bluepill (микро девборда STM32) за полчаса паяется подлапными средствами. Цепляется на УСБ как виртуальный ком порт через него работает.

Так-то я сделал свой контроллер на СТМ32 который эмулирует и память СМК и флоп и хард, его пользую. А тут надыбал флоповодный контроллер для БК и встрял с дискетами начиная с того что на новых машинах дисковод тупо некуда воткнуть %)

from bktools.

weshatheleopard avatar weshatheleopard commented on May 31, 2024

У KryoFluxReader свой формат

У меня обе платы есть. GreaseWeasle, кстати, поддерживает файлы формата KryoFlux. Но трахаться с исходными файлами было неудобно, поэтому сделал свой формат .trk, где всё в человекочитаемом (и редактируемом) виде. Обратное преобразование .trk -> .raw тоже вполне себе можно написать. Только тогда нужна помощь тестировать.

С самой МФМ записью пока не разбирался как генерится сигнал.

На википедии есть, с примерами, посмотри. Всё очень просто.

from bktools.

nightgryphon avatar nightgryphon commented on May 31, 2024

гм. напрямую утилитой от GreaseWeasle не пробовал ибо там не было заявлено поддержки БК, гляну.

С тестированием помогу конечно чем смогу. Если что есть и осцил и лог анализатор.

from bktools.

weshatheleopard avatar weshatheleopard commented on May 31, 2024

Утилита от GreaseWeasle делает прямой снимок диска, то есть её не волнует, от чего диск. Она как ксерокс. Там есть другая утилита для анализа снимков, и вот там уже важен формат, но я ею не пользовался. Кстати, БКшный формат - это стандартный IBMовский на 720 (он же 800, когда на дороже 10 секторов, а не 9).

Я сохранял свои диски вот таким батничком:

mkdir %1
gw read --device=COM4 --drive=B --track=c=0-82:h=0,1:step=1 --revs=10 --retries=2 --rpm=300 --rate=1000 %1/%1..raw

from bktools.

nightgryphon avatar nightgryphon commented on May 31, 2024

что-то у меня ключи --rpm=300 --rate=1000 не приняло, сграбил без них. Поставил Руби под виндой и что-то туплю как конвертировать.
Имя папки с .raw файлами - _new_rec
На Руби раньше никогда не писал, первый раз его вижу, сорри...

C:\bktools\lib>irb -I
irb(main):001:0> $: << '.'
=>
["C:/Ruby31-x64/lib/ruby/site_ruby/3.1.0",
 "C:/Ruby31-x64/lib/ruby/site_ruby/3.1.0/x64-ucrt",
 "C:/Ruby31-x64/lib/ruby/site_ruby",
 "C:/Ruby31-x64/lib/ruby/vendor_ruby/3.1.0",
 "C:/Ruby31-x64/lib/ruby/vendor_ruby/3.1.0/x64-ucrt",
 "C:/Ruby31-x64/lib/ruby/vendor_ruby",
 "C:/Ruby31-x64/lib/ruby/3.1.0",
 "C:/Ruby31-x64/lib/ruby/3.1.0/x64-mingw-ucrt",
 "."]

irb(main):003:0> require 'kryo_flux_reader'; KryoFluxReader::convert_disk '_new_rec';
C:/bktools/lib/kryo_flux_reader.rb:165:in `convert_disk': uninitialized constant KryoFluxReader::Pathname (NameError)

    full_path = Pathname.new(dir).realpath
                ^^^^^^^^
        from (irb):3:in `<main>'
        from C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/irb-1.4.1/exe/irb:11:in `<top (required)>'
        from C:/Ruby31-x64/bin/irb:33:in `load'
        from C:/Ruby31-x64/bin/irb:33:in `<main>'

from bktools.

nightgryphon avatar nightgryphon commented on May 31, 2024

Тэк. С конвертированием формата КриоФлюкс трэков вроде разобрался. Добавил require

ruby -e "$:<<'.';require 'pathname'; require 'Tools'; require 'kryo_flux_reader'; KryoFluxReader::convert_disk './andos';"

from bktools.

weshatheleopard avatar weshatheleopard commented on May 31, 2024
  1. Можно запустить консоль - из командной строки rake console, тогда ты будешь в интерпретаторе и команды можно вводить по одной.
  2. имена файлов в require задаются строчными буквами (хотя винде пофиг)
  3. convert_disk переведёт набор треков из формата KryoFlux (raw) в соответствующие trk, с которым уже работает моя читалка, см. документацию.

from bktools.

nightgryphon avatar nightgryphon commented on May 31, 2024

попробовал декодировать

ruby -e "$:<<'.';require 'pathname'; require 'tools'; require 'disk'; require 'mfm_track'; require 'mfm_track'; require 'disk_sector'; require 'colorize'; disk = Disk.load('./andos'); disk.export('./andos.img');"

печаль на первых дорогах :(

Track 0, side 0, sectors read: 6
Track 0, side 1, sectors read: 6
Track 1, side 0, sectors read: 8
Track 1, side 1, sectors read: 3
Track 2, side 0, sectors read: 9
Track 2, side 1, sectors read: 10
Track 3, side 0, sectors read: 10
Track 3, side 1, sectors read: 10
Track 4, side 0, sectors read: 10
Track 4, side 1, sectors read: 10

плюс при конвертации формата треков последние дорожки странно записывает и декодер не находит файлы, вываливается не записав вообще ничего

.....
andos79.1.raw.79.D.trk
andos80.0.raw
andos80.0.raw.80.U.trk
andos80.1.raw
andos80.1.raw.80.D.trk
andos81.0.raw
andos81.0.raw._._.trk
andos81.1.raw
andos81.1.raw._._.trk
andos82.0.raw
andos82.0.raw._._.trk
andos82.1.raw
andos82.1.raw._._.trk

from bktools.

nightgryphon avatar nightgryphon commented on May 31, 2024

Переименовал последние файлы, но не помогло :(

Track 79, side 0, sectors read: 10
Track 79, side 1, sectors read: 10
Track 80, side 0, sectors read: 10
Track 80, side 1, sectors read: 10
Track , side , sectors read: 0
Track , side , sectors read: 0
Track , side , sectors read: 0
Track , side , sectors read: 0
Tracks/sides read: 166
D:/_floppy/bktools/lib/disk.rb:35:in `block in export': undefined method `*' for nil:NilClass (NoMethodError)

    tracks.sort_by{ |track| track.track_no * 2 + track.side }.each { |track|\r
                                           ^
        from D:/_floppy/bktools/lib/disk.rb:35:in `each'
        from D:/_floppy/bktools/lib/disk.rb:35:in `sort_by'
        from D:/_floppy/bktools/lib/disk.rb:35:in `export'
        from -e:1:in `<main>'

from bktools.

weshatheleopard avatar weshatheleopard commented on May 31, 2024
  1. Полный диск имеет 80 дорожек, но многие дисководы позволяли иметь 81, а то и 82 дорожки, и некоторые юзеры их тоже форматировали и использовали, поэтому я считываю с запасом. Если видно, что последние дорожки не форматированы (а это видно по тому, что на них не детектируется маркер сектора), то эти файлы просто вручную выкидываю.
  2. Вот то, что у тебя в первых дорожках не все сектора прочитались — это уже проблема пореальнее. Попробуй их обработать отдельно, вручную. Я добавил новый метод для автоматического поиска, попробуй так:
track = MfmTrack.load("file_name.trk")
track.find_sync_pulse_length

Если оно определило и вернуло подходящую длину синхроимпульса, с которой дорожка прочиталась, то можно после этого сделать track.save("file_name.trk") — оно это значение запомнит в самом файле, и с тех пор файл будет читататься нормально.

Если не прочиталось, то можно попробовать сделать так:

  • определить примерную длительность синхроимпульса: track.scan
  • с этой длительностью сделать чистку дорожки: track.cleanup(значение)
  • после этого попробовать её прочитать: track.read
    Если прочиталось — то отлично, можно сохранять. Если нет — то можно этим значением поиграться, каждый раз уменьшая/увеличивая его на пару десятых (каждый раз придётся загружать файл дорожки по новой). Если и после этого не читается — то делать нечего, надо смотреть вручную.

from bktools.

Related Issues (1)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.