Although this is technically a synthesizer, I hope no-one gets offended by me posting this here.
Disclaimer: I'm no good at programming. I can read some code, but in no way able to write something from scratch.
I'm a service technician so am fully able hardware wise.
I've finally decided to hopefully break this mystery, once and for all since no-one has done the work as I know of yet.
With help from FluxEngine-David (hjalfi?), progress has been made but we're far from the goal.
Service manual is found here (pages 7, 10, 13 and 17 are of interest) : https://soundprogramming.net/manuals/Roland_D-20_ServiceNotes.pdf
EPROM dumps attached, both the oldest and newest version (with priority on the C ROM).
Facts / claims:
David found that the brother240 (Brother Word Processors) is the closest format when analyzing my flux dumps;
meaning GCR, SSDD, most likely half/micro-stepping using 4 phase inputs instead of /STEP (coincidentally a Brother branded motor) and also most likely a different CRC.
The half-stepping part causes bad reads on a Greaseweazle, thereby bad / partial flux dumps.
Have tried to format a floppy as brother240, but I get "Illegal Disk" when trying to read on the D20.
Most likely (and hopefully) a FAT-ish file format.
The FDC (IC6) and sequencer CPU are on a separate board unique to the D20 together with EPROM C.
The FDC is a Moero u78152-a (good luck finding the datasheets) on the CPU board, and the drive itself has an epoxy clad Moero BX7468 controller on the drive.
Luckily, the D-20 service manual has all the pin descriptions.
There are 3 EPROMs on the unit itself, but I believe that the only EPROM relevant to the floppy is the last one (C), as that is on the CPU / sequencer board with the floppy controller, also the other relatives D5, D10 and D110 which don't have a sequencer or floppy drive don't have a third EPROM.
The GCR conversion lookup-table should be in ROM C somewhere?
Someone has earlier attempted to break some of the code from the EPROM (google translated for convenience) which should be a good starting point:
Goal:
Get a valid flux dump of the floppies and decode the "files", which are most likely SysEx and MIDI data in some form.
Ideally from the Moero drive itself to rule out faults.
Locally on the synth itself, you can save as Sound (SysEx-ish?), Drum pattern (MIDI-ish?) or Song (MIDI-ish?), each indicated with it's own .(icon) when saving.
Build something that can translate the "files" if in some way it's not directly compatible.
Plan / Ideas:
Use an arduino as an FDC on the drive itself, micro stepping manually and use my DSO to scope for the actual tracks then sample with the ardino, or if an easy task, do it automatically.
I'm no good at coding, but I may be able to tweak values etc.
In other words: Is this an easy task code-wise?
Controlling the drive itself shouldn't be that hard?
Disclaimer: I'm no good at programming. I can read some code, but in no way able to write something from scratch.
I'm a service technician so am fully able hardware wise.
I've finally decided to hopefully break this mystery, once and for all since no-one has done the work as I know of yet.
With help from FluxEngine-David (hjalfi?), progress has been made but we're far from the goal.
Service manual is found here (pages 7, 10, 13 and 17 are of interest) : https://soundprogramming.net/manuals/Roland_D-20_ServiceNotes.pdf
EPROM dumps attached, both the oldest and newest version (with priority on the C ROM).
Facts / claims:
David found that the brother240 (Brother Word Processors) is the closest format when analyzing my flux dumps;
meaning GCR, SSDD, most likely half/micro-stepping using 4 phase inputs instead of /STEP (coincidentally a Brother branded motor) and also most likely a different CRC.
The half-stepping part causes bad reads on a Greaseweazle, thereby bad / partial flux dumps.
Have tried to format a floppy as brother240, but I get "Illegal Disk" when trying to read on the D20.
Most likely (and hopefully) a FAT-ish file format.
The FDC (IC6) and sequencer CPU are on a separate board unique to the D20 together with EPROM C.
The FDC is a Moero u78152-a (good luck finding the datasheets) on the CPU board, and the drive itself has an epoxy clad Moero BX7468 controller on the drive.
Luckily, the D-20 service manual has all the pin descriptions.
There are 3 EPROMs on the unit itself, but I believe that the only EPROM relevant to the floppy is the last one (C), as that is on the CPU / sequencer board with the floppy controller, also the other relatives D5, D10 and D110 which don't have a sequencer or floppy drive don't have a third EPROM.
The GCR conversion lookup-table should be in ROM C somewhere?
Someone has earlier attempted to break some of the code from the EPROM (google translated for convenience) which should be a good starting point:
D-20, формат дорожки
На диске может быть 39 либо 77 дорожек. На дорожке 12 секторов. Интерлив: 1, 6, 11, 4, 9, 2, 7, 12, 5, 10, 3, 8 (таблица по адресу 0x6DBF). Формат записи, скорее всего, single density (FM). Формат сектора: 8 байт - заголовок ID сектора BF FF FF FF FF FF FE AB 2 байта - кодированный номер дорожки…
tnt23-livejournal-com.translate.goog
Roland D-20: разбираемся с форматом записи данных
Итак, Roland D-20. Осциллоскопирование показало, что на флоп пишутся данные в виде импульсов длительностью около 2мкс и периодом следования, тоже кратным 2мкс. Параллельно флопу был подключен эмулятор - от синтезатора брались только сигналы выборки дисковода и собственно поток бит на запись. Таким…
tnt23-livejournal-com.translate.goog
Goal:
Get a valid flux dump of the floppies and decode the "files", which are most likely SysEx and MIDI data in some form.
Ideally from the Moero drive itself to rule out faults.
Locally on the synth itself, you can save as Sound (SysEx-ish?), Drum pattern (MIDI-ish?) or Song (MIDI-ish?), each indicated with it's own .(icon) when saving.
Build something that can translate the "files" if in some way it's not directly compatible.
Plan / Ideas:
Use an arduino as an FDC on the drive itself, micro stepping manually and use my DSO to scope for the actual tracks then sample with the ardino, or if an easy task, do it automatically.
I'm no good at coding, but I may be able to tweak values etc.
In other words: Is this an easy task code-wise?
Controlling the drive itself shouldn't be that hard?