Чтение данных дискет с диска ZX Spectrum Swift

Jan 15 2021

Когда-то у нас был swiftdisk на шесть слов, и мы были впереди всех на нашей спецификации, позволив нам использовать 3,5-дюймовые гибкие диски. Видеть:

  • https://www.worthpoint.com/worthopedia/swift-disc-interface-zx-spectrum-540379389
  • http://www.crashonline.org.uk/44/swiftdisk.htm
  • https://spectrumcomputing.co.uk/index.php?cat=96&id=1000412
  • https://hardware.speccy.org/hardware/Swift_Disc-Sixword-i.html

Я вижу полную спецификацию оборудования, и даже ROM доступен в Интернете по ссылке hardware.speccy.org выше, что довольно удивительно.

Кто-нибудь знает, какой формат диска использовался (это был снимок всей памяти) и как наши старые дискеты могут быть оцифрованы для современного ретро-мира. Возможно, мы могли бы преобразовать их в формат FDI ?

Мотивация:

Было бы неплохо попробовать и загрузить нашу никогда не выпускавшуюся игру Galactic Patrol, как мы это сделали со StarBlade . Приносим извинения за то, что заставили вражеские волны там слишком злые! Можно было бы провести еще несколько тестов, но мы оба еще учились в школе.

Это работало в «полном» цвете с использованием схемы быстрого переключения экрана, разработанной моим братом, которая упоминается здесь в аварийном завершении .

Ответы

3 Tommy Jan 16 2021 at 04:11

Мне не удалось найти техническую информацию или существующий эмулятор, но по вашим ссылкам я нашел это изображение платы интерфейса с высоким разрешением .

Оттуда я замечаю следующее:

  • контроллер диска - WD1770, он большой слева;
  • две большие микросхемы справа, обе половины под крайним разъемом, - это 8 КБ ОЗУ и СППЗУ; а также
  • все остальное, что видно, - это логика 74-й серии.

Основываясь на архитектуре Spectrum, можно с уверенностью сказать, что кнопка прерывания переключает встроенное ПЗУ и запускает NMI.

Связанные образы ПЗУ имеют размер 32 КБ и 16 КБ, но первый кажется, что это данные по 16 КБ, скопированные дважды, вы также можете добавить, что размер EPROM составляет 16 КБ, и в этом случае могут возникнуть некоторые догадки при выяснении, когда и где появляются эти 8 КБ ОЗУ. .

Я нашел старые упоминания в comp.sys.sinclair о том, что эмуляция Microdrive, добавленная в более позднюю версию, была частично аппаратной, но, похоже, пришла с ревизией платы. Так что автор эмулятора, вероятно, начал бы со старой EPROM в надежде, что дополнительного оборудования еще не было.

В остальном, хорошая новость заключается в том, что контроллер диска является чрезвычайно стандартной частью, которая просто выполняет ванильное кодирование IBM, и, исходя из заявленной емкости дискеты, составляющей «тринадцать игр по 48 КБ на диск», вы можете предположить, что физический формат данных на диске следующий. MFM (т.е. обычный ПК «двойной плотности»).

Итак: вы можете создать образ своего диска с помощью обычного USB-накопителя (если вы не найдете тот, который поддерживает только дискеты с высокой плотностью), поскольку MFM, по сути, единственное, что они поддерживают, но они часто ограничиваются 512-байтовыми секторами с фиксированная нумерация, поэтому это не гарантируется. Возможно, стоит попробовать, прежде чем искать менее распространенное решение. Эта связанная с MSX страница содержит руководство для Linux и macOS, хотя раздел Windows пуст. Там могут потребоваться некоторые дополнительные исследования.

В противном случае поищите решения, которые могут создавать образы дискет для таких машин, как Amstrad CPC, поскольку они должны обрабатывать различные размеры секторов и адресацию, а общие форматы файлов, связанные с CPC, могут сохранять всю эту информацию. Если у вас достаточно старый компьютер, на котором есть контроллер гибких дисков и дисковод до USB, а также ОС, такая как DOS, которая предоставляет программному обеспечению неограниченный доступ к контроллеру, тогда это должно помочь. Или контроллеры дисков низкого уровня теперь существуют именно для этой проблемы, такие как Greaseweazle, упомянутый scruss, Kryoflux и другие.

Начав с работающего эмулятора Spectrum, не составит большого труда добавить интерфейс диска Swift и прочитать вашу дискету.

Какое программное обеспечение должно записывать на WD1770, хорошо известно, поэтому вы можете довольно легко изолировать эти адреса, и в значительной степени первое, что потребуется сделать процедуре NMI, - это сделать резервную копию текущего дисплея, чтобы вы, вероятно, смогли выяснить Вопрос RAM без особой дилеммы. На этом этапе это может быть так же просто, как просто подключить образ диска.

Часто эти немного более непонятные интерфейсы не эмулируются просто потому, что отсутствуют тестовые данные; вполне возможно, что вы сможете заинтересовать существующего автора, просто имея образ диска. В противном случае эмулятор Spectrum легко подделать, так что кто-то вроде меня, имеющий в целом правильный код, должен быть в состоянии помочь.

В качестве альтернативы, поскольку мой поиск не был особенно тщательным, вы можете обнаружить, что вещь уже эмулирована - в этом случае, пожалуйста, дайте мне знать, чтобы я мог изменить 90% этого ответа.

2 Spektre Jan 16 2021 at 16:25

Похоже, он использует WD1770, я не знаком с ним, но сначала проверьте , совместим ли WD1770 с форматом IBM. Если да, то вы можете читать диски прямо на ПК ... Если нет, вам нужно HW, способное читать диск .

Поэтому в случае совместимости с ПК вы просто создаете его изображение, используя прямой доступ к сектору на C ++ (или на любом другом языке или утилитке) вместо формата файла. После получения двоичного образа дискеты (так или иначе) есть два варианта:

  1. подражать FDC

    поэтому вам нужен эмулятор, способный имитировать ваш интерфейс FDC или добавить такую ​​функциональность в какой-нибудь с открытым исходным кодом.

    В вашей последней ссылке есть образы ПЗУ, а также схема (но она не читается), поэтому можно было бы эмулировать это, изменив схему ... Я делал это раньше для своего эмулятора и D40 / D80 FDC на основе WD2797 . Однако это легко сделать только для эмуляторов, которые работают с разрешением синхронизации MC (машинный цикл) (например, у меня), в противном случае FDC нужно взломать только путем подключения к условию HW и SW, минуя код Z80 и вместо этого вводя код / ​​операции FDC (что это то, как это делают большинство эмуляторов, однако это не на 100% совместимо, и пользовательские загрузчики и прочее могут не работать), что не может сделать никто без глубоких знаний о целевой работе FDC.

  2. извлечь файлы

    или вы полностью обходите FDC и извлекаете несжатые файлы из изображения в формат, читаемый эмуляторами, например *.tap. В случае, если вы поделитесь некоторыми изображениями (лучше всего с описанием, какие файлы и как долго в них), я был бы счастлив попытаться создать конвертер win32, который сделает это за вас.

    поскольку файлы представляют собой просто снимки, это может быть вашим лучшим вариантом. В идеале, если у вас также есть доступ к HW, вы могли бы создать определенный шаблон памяти и сохранить его на дискете, чтобы упростить использование файловой системы ... например, заполните 128 КБ (часть ОЗУ) 32-битными адресами (инкрементное значение), чтобы мы может собрать сектора вместе в правильном порядке, а затем сопоставить его с FAT, если он используется ...