[Feature Request] Support for FluxEngine and greaseweazle
All kinds of tools for BK-0010 (my personal project open for public
Brought to you by:
wesha
Originally created by: nightgryphon
I've built an opensource GreaseWeazle floppy reader and trying to read/decode and encode/write BK floppies usinf FluxEngine software.
Unfortunately it seems FluxEngine decoder unable to decode some of my weared floppies and the FluxEngine encoder can not write correct data from existing image to new BK floppies :(
It will be cool to have an utility to debug and rescue old BK floppies using open source GreaseWeazle reader hardware or using flux data readed by open source FluxEngine. Also to write floppies from raw images...
Originally posted by: weshatheleopard
Ночной, ты что, своих не узнаёшь?
"Лечение" треков у меня уже есть, см.
MfmTrack#cleanup. Посмотри — может, вытянешь. Вот обратной конвертации изMfmTrackвKryoFluxReaderпока нет, потому как не требовалось. Скажи — если будет надо, напишу.Originally posted by: nightgryphon
Узнаёшь, но все же типа международная площадка всё такое ;) После подыхания телефона контактов много посеялось.
У KryoFluxReader свой формат, сходу тулзы для конвертации из FluxEngine в его формат не нашел, так что не получается твою библиотеку использовать пока к сожалению. С самой МФМ записью пока не разбирался как генерится сигнал.
Во FluxEngine заявлена поддержка БК800 дискет, но что-то декодирование странный результат дает, а новое записал - БКшка не видит.
Так что если будет настроение допилисть генерацию, а то и прям запись - будет очень круто =-.-= Запись можно через опенсорсный GreaseWeazle, он из bluepill (микро девборда STM32) за полчаса паяется подлапными средствами. Цепляется на УСБ как виртуальный ком порт через него работает.
Так-то я сделал свой контроллер на СТМ32 который эмулирует и память СМК и флоп и хард, его пользую. А тут надыбал флоповодный контроллер для БК и встрял с дискетами начиная с того что на новых машинах дисковод тупо некуда воткнуть %)
Originally posted by: weshatheleopard
У меня обе платы есть. GreaseWeasle, кстати, поддерживает файлы формата KryoFlux. Но трахаться с исходными файлами было неудобно, поэтому сделал свой формат
.trk, где всё в человекочитаемом (и редактируемом) виде. Обратное преобразование.trk->.rawтоже вполне себе можно написать. Только тогда нужна помощь тестировать.На википедии есть, с примерами, посмотри. Всё очень просто.
Originally posted by: nightgryphon
гм. напрямую утилитой от GreaseWeasle не пробовал ибо там не было заявлено поддержки БК, гляну.
С тестированием помогу конечно чем смогу. Если что есть и осцил и лог анализатор.
Originally posted by: weshatheleopard
Утилита от GreaseWeasle делает прямой снимок диска, то есть её не волнует, от чего диск. Она как ксерокс. Там есть другая утилита для анализа снимков, и вот там уже важен формат, но я ею не пользовался. Кстати, БКшный формат - это стандартный IBMовский на 720 (он же 800, когда на дороже 10 секторов, а не 9).
Я сохранял свои диски вот таким батничком:
Originally posted by: nightgryphon
что-то у меня ключи --rpm=300 --rate=1000 не приняло, сграбил без них. Поставил Руби под виндой и что-то туплю как конвертировать.
Имя папки с .raw файлами - _new_rec
На Руби раньше никогда не писал, первый раз его вижу, сорри...
Originally posted by: nightgryphon
Тэк. С конвертированием формата КриоФлюкс трэков вроде разобрался. Добавил require
Originally posted by: weshatheleopard
1) Можно запустить консоль - из командной строки
rake console, тогда ты будешь в интерпретаторе и команды можно вводить по одной.2) имена файлов в require задаются строчными буквами (хотя винде пофиг)
3)
convert_diskпереведёт набор треков из формата KryoFlux (raw) в соответствующиеtrk, с которым уже работает моя читалка, см. документацию.Originally posted by: nightgryphon
попробовал декодировать
печаль на первых дорогах :(
плюс при конвертации формата треков последние дорожки странно записывает и декодер не находит файлы, вываливается не записав вообще ничего
Originally posted by: nightgryphon
Переименовал последние файлы, но не помогло :(
Originally posted by: weshatheleopard
Вот то, что у тебя в первых дорожках не все сектора прочитались — это уже проблема пореальнее. Попробуй их обработать отдельно, вручную. Я добавил новый метод для автоматического поиска, попробуй так:
track = MfmTrack.load("file_name.trk")
track.find_sync_pulse_length
Если оно определило и вернуло подходящую длину синхроимпульса, с которой дорожка прочиталась, то можно после этого сделать
track.save("file_name.trk")— оно это значение запомнит в самом файле, и с тех пор файл будет читататься нормально.Если не прочиталось, то можно попробовать сделать так:
track.scantrack.cleanup(значение)track.readЕсли прочиталось — то отлично, можно сохранять. Если нет — то можно этим значением поиграться, каждый раз уменьшая/увеличивая его на пару десятых (каждый раз придётся загружать файл дорожки по новой). Если и после этого не читается — то делать нечего, надо смотреть вручную.