Последние темы
» Вити больше нет!автор bug19 Пн Фев 20 2023, 19:54
» Собираем оригинальный Орион 128
автор bug19 Пн Фев 20 2023, 19:47
» Проблема плющеного экрана ОРИОНА
автор kanzler Пн Ноя 28 2022, 12:05
» Орион 128 и его клоны возрождение 2019-2022 год
автор kanzler Пн Ноя 28 2022, 12:03
» Электроника КР-04. Информация, документы, фото.
автор kanzler Пн Ноя 28 2022, 12:02
» Новости форума
автор kanzler Пн Ноя 28 2022, 11:52
» Орион-128 НГМД запуск 2021 года
автор matrixplus Сб Сен 10 2022, 17:36
» ПЗУ F800 для РК86
автор ведущий_специалист Сб Сен 10 2022, 10:37
» Микропроцессорная лаборатория "Микролаб К580ИК80", УМК-80, УМПК-80 и др.
автор Электротехник Вт Июл 26 2022, 19:33
» Орион-128 SD карта в Орионе
автор matrixplus Чт Июн 02 2022, 09:00
» 7 Мая. День Радио!
автор Viktor2312 Чт Май 12 2022, 10:58
» Серия: Массовая радио библиотека. МРБ
автор Viktor2312 Ср Май 11 2022, 12:17
» Полезные книги
автор Viktor2312 Пн Май 09 2022, 15:07
» Орион 128 Стандарты портов и системной шины Х2
автор matrixplus Вс Май 08 2022, 23:08
» Орион-128 и Орион ПРО еще раз про блоки питания
автор matrixplus Вс Май 08 2022, 19:09
» Орион-128 Программаторы
автор matrixplus Вс Май 08 2022, 19:02
» Орион ПРО история сборки 2021 до 2022
автор matrixplus Вс Май 08 2022, 18:47
» Анонсы монет (New coin).
автор Viktor2312 Сб Май 07 2022, 23:11
» Хочу свой усилок для квартиры собрать не спеша
автор Viktor2312 Сб Май 07 2022, 19:33
» Амфитон 25у-002С
автор Viktor2312 Сб Май 07 2022, 09:38
» Майнер: T-Rex
автор Viktor2312 Вс Май 01 2022, 09:12
» GoWin. Изучение документации. SUG100-2.6E_Gowin Software User Guide. Среда разработки EDA.
автор Viktor2312 Пн Апр 25 2022, 01:01
» GoWin. Изучение документации. UG286-1.9.1E Gowin Clock User Guide.
автор Viktor2312 Сб Апр 23 2022, 18:22
» GoWin. Documentation Database. Device. GW2A.
автор Viktor2312 Ср Апр 20 2022, 14:08
» GOWIN AEC IP
автор Viktor2312 Ср Апр 20 2022, 12:08
Самые активные пользователи за месяц
Нет пользователей |
Поиск
РК86: подключение винчестера IDE (или CF-карты)
Страница 1 из 1 • Поделиться
РК86: подключение винчестера IDE (или CF-карты)
1
К РК86 после публикации в ж.РАДИО статьи о РК-КНГМД (01.1993) стало можно подключать дисковод 5.25" с дискетами на 400 кб. Дисководы 3.5" тоже годятся, но из-за того, что РК-ДОС используют сигнал READY с таким дисководом есть некоторые сложности. Для НГМД 3.5" приходится аппаратно эмулировать сигнал READY задержкой на секунду сигнала START. Но есть более лучшее, программное решение, при котором сигнал READY программно эмулируется за счёт контроля сигнала INDEX (для чего оригинал РК-ДОС требуется чуть модифицировать).
Впоследствии выяснилось, что если РК86 немного турбировать, заменив кварц на 20 МГЦ, то быстродействия хватает, чтобы иметь на той же самой DD-дискете не 5 секторов по 512 байт, а 7 секторов (при этом кварц в КНГМД меняется с 8 МГЦ до 10.5 МГЦ) при той же или даже лучшей надёжности, что даёт формат 560 кб на DD-диск.
Программный контроллер РК-КНГМД обеспечивает скорость обмена меньший, чем КНГМД на ВГ93. Но благодаря обмену физическими, а не логическими секторами скорость обмена с диском РК-ДОС оказывается даже быстрее, чем при ВГ93 с CP/M. Это потому, что в CP/M очень тормозной обмен с дискетой. Обмен происходит логическими, а не физическими секторами.
В РК-ДОС физический сектор 512 байт читается сразу на DMA, т.е сразу попадает туда куда надо. А в CP/M физический сектор сначала считывается в дисковый буфер, а затем логический сектор в 128 байт уже медленным процессором копируется на DMA. Потому CP/M с РК-КНГМД даже при принятии всех мер ускорения работает в 2-3 раза медленнее, чем CP/M на ОРИОНЕ (или MSDOS на IBM PC).
К сожалению, в настоящее время дискеты уже давно перестали быть популярными и их выпуск прекращён 20 лет назад. С течением времени недохлых дискет становится всё меньше и меньше. С другой стороны старые IDE винчестеры стоят ныне дешевле стоимости их пересылки по почте.
Современные винчестеры, которые вращаются со скоростью 7200 rpm и более и греются как печки служат всего 3, в лучшем случае 4 года, и затем неизменно дохнут. Более старые винчестеры на 5400 rpm обычно служат 5-8 лет. У меня с 1994 уже сдохло более 10 винчестеров. Конечно возмущает столь недолгий срок эксплуатации современных винчестеров, создаётся впечатление, что это сознательное вредительство изготовителей. Хотя отчасти, вероятно это из-за повышенной скорости вращения.
Чем древнее винчестер, тем больше его срок службы. Винчестеры произведённые до середины 90-тых годов имеют ресурс в 20 лет, работая каждый день. Потому, если купить старый винчестер из 90-тых, который эксплуатировали не зверски, то он может прослужить ещё десяток лет работая каждый день.
Я в своё время подключил IDE-винчестер к ОРИОНУ используя CP/M. К сожалению, я использовал винчестер выпущенный до середины 90-тых объёмом 40 мб от ноутбука. Он оказался довольно медленным, вероятно из-за экономии энергопотребления и отсутствия кэширования. В итоге скорость обмена с винчестером получилась раза в 2 медленнее, чем обмен с DD-дискетой и в 4 раза медленнее, чем с HD-дискетой на ОРИОНЕ. В итоге, винчестер использовался лишь как архив хранения, а не для повседневного использования.
Хотя обмен с винчестером даже без использования DMA должен быть в несколько раз быстрее, чем обмен с дискетой. Это видно по подпрограмме чтения, - в дискетной подпрограмме ожидается готовность контроллера, а для винчестера этого нет, потому, чем скоростнее процессор, тем быстрее обмен.
Кстати, несмотря на то, что в РК86 есть контроллер ПДП, но он включён по извращённой схеме. Это сделано потому, что ВТ57 рассчитан на пересылки между портом и памятью. В Партнёре это сделано грамотнее, потому там второй канал ПДП была возможность использовать для ускорения обмена с КНГМД на базе ВГ93 (без DMA скоростей РК-подобной машины с тактом всего 2 МГЦ не хватило бы для DD-формата).
Так что скорее всего в РК86 не удастся задействовать ПДП для ускорения работы с винчестером и таким образом скорость обмена будет напрямую зависеть от быстродействия CPU. В любом случае скорость обмена с винчестером будет раза в два выше, чем обмен с РК-КНГМД (а при турбировании РК соответственно ещё выше).
Контроллер винчестера в моём варианте состоит из ППА и трех микросхем 1533. Если в качестве ППА использовать запасной ППА D14, то контроллер винчестера совсем прост. Это маленькая платка вертикально втыкаемая вместо ROM-диска в разъём СНП34-30. На ней стоит 3 микросхемы 1533 и разъём IDC-40, куда вставляется гибкий шлейф от винчестера.
Я уже более 10 лет не использовал контроллер винчестера на ОРИОНЕ, но исходники сохранились и странслировать любую ДОС на базе винчестера можно быстро и без хлопот. Недавно я попытался почитать в форуме ZX-PK.ru на тему винчестеров для ОРИОНА. В основном винчестер подключали также как я, используя в качестве интерфейса ППА (F500 или F600). Есть и более простая схемотехника с всего одной дополнительной TTL-микросхемой и с двумя. В моей схеме использовано 3 корпуса и хотя несложно упростить до 2-х, делать это не буду. И даже разбираться в программировании и переписывать драйверы не буду.
Есть нюанс. Простой контроллер получается лишь за счёт байтового обмена с винчестером. Винчестер может обмениваться байтами и словами (по 16 бит). Т.к это 8-ми разрядка, то при байтовом обмене программа проще и деталей меньше. Но я не знаю сохраняется ли 8-ми разрядный обмен у самых современных винчестеров. Я использовал винчестер из 90-тых. И соответственно не имею никакой статистики по использованию более современных винчестеров.
На PC винчестеры используются с 16-ти разрядным обменом в режиме DMA. Потому производители современных винчестеров в силу ненадобности в новых винчестерах могли исключить байтовый обмен, оставив только 16-ти битный. Этот вопрос надо уточнить. Винчестер лучше старый из 90-тых. Я не занимался темой IDE винчестера с прошлого века, потому в этот вопрос не вникал.
Однако остаётся вопрос о 16-ти битном обмене. Обмен с винчестером очень прост и не проблема переписать его для 16-ти разрядного обмена. При 16-ти разрядном обмене уже выгоднее поставить кучу регистров ИР22 вместо использования ППА. 16-ти разрядный обмен возможно придётся делать и вовсе не для ускорения (это ускорит, но не намного), а в случае, если в современных винчестерах уже не поддерживается 8-ми битный режим.
Вопрос. Кто нибудь знает, поддерживается ли 8-ми битный обмен во всех современных винчестерах.
CF-карта использует такой же разъём IDC-40, как и разъём от винчестера, ставится на его место и поддерживает тот же стандарта ATA. Потому без разницы применять винчестер или CF-карту. И здесь тот же вопрос, поддерживает ли CF-карта 8-ми разрядный обмен?
Для начала я вероятно попробую использовать РК-ДОС (ибо у РК слишком мало ОЗУ). Винчестер будет разбит на крошечные диски по 1 мб. Причём, я не использую стандартное разбиение на партиции. Контроллер просто физически читает и пишет сектора, какие хочет. Важно лишь знать число плоскостей, число цилиндров и секторов на цилиндр. Для форматирования в РК-ДОС сектора каталога заполняются нулями, а для CP/M каталог заполняется E5. Чтобы считать данные такого диска в PC нужно писать специальную программу, которая работает с диском на низком уровне функциями ROM-BIOS.
Для себя я естественно планирую сделать версию с использованием доп.ОЗУ. Но и для базового РК 32К будет не проблема странслировать версию РК-ДОС для винчестера, но ей нужно будет не менее 6 кб дополнительного ОЗУ или ПЗУ. Т.е придётся базовый РК слегка доработать, например поставить 6 кб ПЗУ где-нибудь в дырке адресного пространства портов. Например, по адресу C800...DFFF, что сохраняет совместимость, т.к адрес C000 остаётся за ВГ75.
ПЗУ для РК-ДОС удобнее, чем ОЗУ, т.к тогда отпадает ROM-диск. А в случае, если ОЗУ в РК сделано на 565 РУ5, то можно "открыть ОЗУ" в области A000...BFFF (окно 8 кб) или A800...BFFF (окно 6 кб). Если используется расширение ОЗУ, то возникает проблема откуда грузить DOS или хотя-бы откуда стартовать холодный загрузчик DOS.
Т.к ROM-диск использует запасной ППА D14 и его же использует винчестер, то если очень нужен ROM-диск надо или ставить ещё один ППА или лучше расширять ПЗУ ROM-BIOS-а (например напайкой РФ2 в 2 этажа или заменой РФ2 на 2764). Холодный загрузчик, прошитый в ROM-BIOS 4 кб сможет загружать DOS в ОЗУ. ППА D14 в любом случае необходимо иметь (и не важно по какому адресу), т.к именно через него работает контроллер винчестера.
Впоследствии выяснилось, что если РК86 немного турбировать, заменив кварц на 20 МГЦ, то быстродействия хватает, чтобы иметь на той же самой DD-дискете не 5 секторов по 512 байт, а 7 секторов (при этом кварц в КНГМД меняется с 8 МГЦ до 10.5 МГЦ) при той же или даже лучшей надёжности, что даёт формат 560 кб на DD-диск.
Программный контроллер РК-КНГМД обеспечивает скорость обмена меньший, чем КНГМД на ВГ93. Но благодаря обмену физическими, а не логическими секторами скорость обмена с диском РК-ДОС оказывается даже быстрее, чем при ВГ93 с CP/M. Это потому, что в CP/M очень тормозной обмен с дискетой. Обмен происходит логическими, а не физическими секторами.
В РК-ДОС физический сектор 512 байт читается сразу на DMA, т.е сразу попадает туда куда надо. А в CP/M физический сектор сначала считывается в дисковый буфер, а затем логический сектор в 128 байт уже медленным процессором копируется на DMA. Потому CP/M с РК-КНГМД даже при принятии всех мер ускорения работает в 2-3 раза медленнее, чем CP/M на ОРИОНЕ (или MSDOS на IBM PC).
К сожалению, в настоящее время дискеты уже давно перестали быть популярными и их выпуск прекращён 20 лет назад. С течением времени недохлых дискет становится всё меньше и меньше. С другой стороны старые IDE винчестеры стоят ныне дешевле стоимости их пересылки по почте.
Современные винчестеры, которые вращаются со скоростью 7200 rpm и более и греются как печки служат всего 3, в лучшем случае 4 года, и затем неизменно дохнут. Более старые винчестеры на 5400 rpm обычно служат 5-8 лет. У меня с 1994 уже сдохло более 10 винчестеров. Конечно возмущает столь недолгий срок эксплуатации современных винчестеров, создаётся впечатление, что это сознательное вредительство изготовителей. Хотя отчасти, вероятно это из-за повышенной скорости вращения.
Чем древнее винчестер, тем больше его срок службы. Винчестеры произведённые до середины 90-тых годов имеют ресурс в 20 лет, работая каждый день. Потому, если купить старый винчестер из 90-тых, который эксплуатировали не зверски, то он может прослужить ещё десяток лет работая каждый день.
Я в своё время подключил IDE-винчестер к ОРИОНУ используя CP/M. К сожалению, я использовал винчестер выпущенный до середины 90-тых объёмом 40 мб от ноутбука. Он оказался довольно медленным, вероятно из-за экономии энергопотребления и отсутствия кэширования. В итоге скорость обмена с винчестером получилась раза в 2 медленнее, чем обмен с DD-дискетой и в 4 раза медленнее, чем с HD-дискетой на ОРИОНЕ. В итоге, винчестер использовался лишь как архив хранения, а не для повседневного использования.
Хотя обмен с винчестером даже без использования DMA должен быть в несколько раз быстрее, чем обмен с дискетой. Это видно по подпрограмме чтения, - в дискетной подпрограмме ожидается готовность контроллера, а для винчестера этого нет, потому, чем скоростнее процессор, тем быстрее обмен.
Кстати, несмотря на то, что в РК86 есть контроллер ПДП, но он включён по извращённой схеме. Это сделано потому, что ВТ57 рассчитан на пересылки между портом и памятью. В Партнёре это сделано грамотнее, потому там второй канал ПДП была возможность использовать для ускорения обмена с КНГМД на базе ВГ93 (без DMA скоростей РК-подобной машины с тактом всего 2 МГЦ не хватило бы для DD-формата).
Так что скорее всего в РК86 не удастся задействовать ПДП для ускорения работы с винчестером и таким образом скорость обмена будет напрямую зависеть от быстродействия CPU. В любом случае скорость обмена с винчестером будет раза в два выше, чем обмен с РК-КНГМД (а при турбировании РК соответственно ещё выше).
Контроллер винчестера в моём варианте состоит из ППА и трех микросхем 1533. Если в качестве ППА использовать запасной ППА D14, то контроллер винчестера совсем прост. Это маленькая платка вертикально втыкаемая вместо ROM-диска в разъём СНП34-30. На ней стоит 3 микросхемы 1533 и разъём IDC-40, куда вставляется гибкий шлейф от винчестера.
Я уже более 10 лет не использовал контроллер винчестера на ОРИОНЕ, но исходники сохранились и странслировать любую ДОС на базе винчестера можно быстро и без хлопот. Недавно я попытался почитать в форуме ZX-PK.ru на тему винчестеров для ОРИОНА. В основном винчестер подключали также как я, используя в качестве интерфейса ППА (F500 или F600). Есть и более простая схемотехника с всего одной дополнительной TTL-микросхемой и с двумя. В моей схеме использовано 3 корпуса и хотя несложно упростить до 2-х, делать это не буду. И даже разбираться в программировании и переписывать драйверы не буду.
Есть нюанс. Простой контроллер получается лишь за счёт байтового обмена с винчестером. Винчестер может обмениваться байтами и словами (по 16 бит). Т.к это 8-ми разрядка, то при байтовом обмене программа проще и деталей меньше. Но я не знаю сохраняется ли 8-ми разрядный обмен у самых современных винчестеров. Я использовал винчестер из 90-тых. И соответственно не имею никакой статистики по использованию более современных винчестеров.
На PC винчестеры используются с 16-ти разрядным обменом в режиме DMA. Потому производители современных винчестеров в силу ненадобности в новых винчестерах могли исключить байтовый обмен, оставив только 16-ти битный. Этот вопрос надо уточнить. Винчестер лучше старый из 90-тых. Я не занимался темой IDE винчестера с прошлого века, потому в этот вопрос не вникал.
Однако остаётся вопрос о 16-ти битном обмене. Обмен с винчестером очень прост и не проблема переписать его для 16-ти разрядного обмена. При 16-ти разрядном обмене уже выгоднее поставить кучу регистров ИР22 вместо использования ППА. 16-ти разрядный обмен возможно придётся делать и вовсе не для ускорения (это ускорит, но не намного), а в случае, если в современных винчестерах уже не поддерживается 8-ми битный режим.
Вопрос. Кто нибудь знает, поддерживается ли 8-ми битный обмен во всех современных винчестерах.
CF-карта использует такой же разъём IDC-40, как и разъём от винчестера, ставится на его место и поддерживает тот же стандарта ATA. Потому без разницы применять винчестер или CF-карту. И здесь тот же вопрос, поддерживает ли CF-карта 8-ми разрядный обмен?
Для начала я вероятно попробую использовать РК-ДОС (ибо у РК слишком мало ОЗУ). Винчестер будет разбит на крошечные диски по 1 мб. Причём, я не использую стандартное разбиение на партиции. Контроллер просто физически читает и пишет сектора, какие хочет. Важно лишь знать число плоскостей, число цилиндров и секторов на цилиндр. Для форматирования в РК-ДОС сектора каталога заполняются нулями, а для CP/M каталог заполняется E5. Чтобы считать данные такого диска в PC нужно писать специальную программу, которая работает с диском на низком уровне функциями ROM-BIOS.
Для себя я естественно планирую сделать версию с использованием доп.ОЗУ. Но и для базового РК 32К будет не проблема странслировать версию РК-ДОС для винчестера, но ей нужно будет не менее 6 кб дополнительного ОЗУ или ПЗУ. Т.е придётся базовый РК слегка доработать, например поставить 6 кб ПЗУ где-нибудь в дырке адресного пространства портов. Например, по адресу C800...DFFF, что сохраняет совместимость, т.к адрес C000 остаётся за ВГ75.
ПЗУ для РК-ДОС удобнее, чем ОЗУ, т.к тогда отпадает ROM-диск. А в случае, если ОЗУ в РК сделано на 565 РУ5, то можно "открыть ОЗУ" в области A000...BFFF (окно 8 кб) или A800...BFFF (окно 6 кб). Если используется расширение ОЗУ, то возникает проблема откуда грузить DOS или хотя-бы откуда стартовать холодный загрузчик DOS.
Т.к ROM-диск использует запасной ППА D14 и его же использует винчестер, то если очень нужен ROM-диск надо или ставить ещё один ППА или лучше расширять ПЗУ ROM-BIOS-а (например напайкой РФ2 в 2 этажа или заменой РФ2 на 2764). Холодный загрузчик, прошитый в ROM-BIOS 4 кб сможет загружать DOS в ОЗУ. ППА D14 в любом случае необходимо иметь (и не важно по какому адресу), т.к именно через него работает контроллер винчестера.
Последний раз редактировалось: barsik (Сб Фев 06 2021, 16:56), всего редактировалось 2 раз(а)
barsik- Ветеран
- Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия, СПб
Re: РК86: подключение винчестера IDE (или CF-карты)
2
ИМХО. CF-карты нынче бОльшая редкость, чем дискеты. И для работы с ними нужен протокол, который по сложности не отличается от SD карты.
Протокол SD карты очень прост. Вот алгоритм чтения сектора (где то мог ошибиться):
Установить CS в 0
Отправить код команды "чтение сектора" 51h, номер сектора, код 95h.
Повторять чтение, пока из SD карты читается 0xFF. Если прочиталось не 0, значит произошла ошибка.
Установить CS в 1
Установить CS в 0
Повторять чтение, пока из SD карты не прочитается 0xFE.
Прочитать 512 байт, это данные.
Прочитать 2 байта (контрольная сумма) и забыть.
Установить CS в 1
Тактовую частоту задает компьютер. Протокол обмена однобитный. Его можно программно реализовать, но это будет работать не очень быстро. Лучше поставить внешний сдвиговый регистр. Если же совсем лениво с ТТЛ связываться, то любой микроконтроллер.
Протокол SD карты очень прост. Вот алгоритм чтения сектора (где то мог ошибиться):
Установить CS в 0
Отправить код команды "чтение сектора" 51h, номер сектора, код 95h.
Повторять чтение, пока из SD карты читается 0xFF. Если прочиталось не 0, значит произошла ошибка.
Установить CS в 1
Установить CS в 0
Повторять чтение, пока из SD карты не прочитается 0xFE.
Прочитать 512 байт, это данные.
Прочитать 2 байта (контрольная сумма) и забыть.
Установить CS в 1
Тактовую частоту задает компьютер. Протокол обмена однобитный. Его можно программно реализовать, но это будет работать не очень быстро. Лучше поставить внешний сдвиговый регистр. Если же совсем лениво с ТТЛ связываться, то любой микроконтроллер.
.
3
Я имел ввиду такую CF-карту, что имеет разъём винчестера. Или обычная CF-карта вставлена в переходник SPI-IDE. Которые устанавливаются в IDE-разъём на плате PC вместо гибкого шлейфа от винчестера. И полностью заменяют винчестер, также намного ускоряя обмен с диском. Есть также твёрдотельные современные винчестеры, но они дорогие. У всех этих устройств интерфейс IDE такой же как у винчестера.
IDE или ATA интерфейс это 40-ка штырьковый разъём в который подключается ленточный кабель от винчестера (есть ещё мини-ATA для винчестеров 2.5" для ноутбуков, там распайка точно та же, но 44 штырька, т.к питание подается через тот же разъём).
А Вы говорите о командах для micro-SD, которые используют совсем другой - SPI-интерфейс. У меня есть свободные micro-SD на 1 мб и 4 мб и крошечные разъёмчики, куда они втыкаются. Видел и схему контроллера, который использовал для связи с ними напрямую из 8-ми разрядки error404. Спаять несложно. Потому я пытался почитать о SPI, но ничего не понял. И потому не могу написать процедуры нужные для использования micro-SD.
Если бы у меня были подпрограммы чтения/записи сектора с micro-SD, то я бы использовал и их. Но пока у меня есть лишь мой простой контроллер IDE-винчестера и подпрограммы для его использования. Потому мне на порядки проще не трахаться, чтобы разобраться в последовательных протоколах обмена с micro-SD и не паять контроллер micro-SD, а без хлопот подключить старый винчестер.
Ещё у меня есть от дохлого ноутбука совсем маленький (винчестер 250 Гб с SATA интерфейсом). Вопрос. Его можно как нибудь использовать для 8-ми разрядки?
IDE или ATA интерфейс это 40-ка штырьковый разъём в который подключается ленточный кабель от винчестера (есть ещё мини-ATA для винчестеров 2.5" для ноутбуков, там распайка точно та же, но 44 штырька, т.к питание подается через тот же разъём).
А Вы говорите о командах для micro-SD, которые используют совсем другой - SPI-интерфейс. У меня есть свободные micro-SD на 1 мб и 4 мб и крошечные разъёмчики, куда они втыкаются. Видел и схему контроллера, который использовал для связи с ними напрямую из 8-ми разрядки error404. Спаять несложно. Потому я пытался почитать о SPI, но ничего не понял. И потому не могу написать процедуры нужные для использования micro-SD.
Если бы у меня были подпрограммы чтения/записи сектора с micro-SD, то я бы использовал и их. Но пока у меня есть лишь мой простой контроллер IDE-винчестера и подпрограммы для его использования. Потому мне на порядки проще не трахаться, чтобы разобраться в последовательных протоколах обмена с micro-SD и не паять контроллер micro-SD, а без хлопот подключить старый винчестер.
Ещё у меня есть от дохлого ноутбука совсем маленький (винчестер 250 Гб с SATA интерфейсом). Вопрос. Его можно как нибудь использовать для 8-ми разрядки?
barsik- Ветеран
- Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия, СПб
Re: РК86: подключение винчестера IDE (или CF-карты)
4
Контроллер винчестера IDE уже существует для Суры (ПК8000), на форуме, о котором нельзя говорить.
Автор сего чуда - DemonId7.
Интерфейс Суры, это подключение к ША, ШД и сигнал выбора банка (разьема), на который надо отреагировать. То есть, плата представляет из себя ПЗУ, с дополнительными портами В/В. То есть, автономное устройство, на железном уровне готовое для любой архитектуры. Разве что, содержимое ПЗУ придется адаптировать.
Автор сего чуда - DemonId7.
Интерфейс Суры, это подключение к ША, ШД и сигнал выбора банка (разьема), на который надо отреагировать. То есть, плата представляет из себя ПЗУ, с дополнительными портами В/В. То есть, автономное устройство, на железном уровне готовое для любой архитектуры. Разве что, содержимое ПЗУ придется адаптировать.
bug19- Новичок
- Сообщения : 6
Дата регистрации : 2019-01-09
Откуда : СССР
.
5
Спасибо за наводку, жаль, что без ссылки. Рад появлению на форуме новых и компетентных любителей ретро техники. Попробую сегодня поискать в теме Корвета на ZX-PK информацию о контроллере IDE для Суры. Ещё бы интересно посмотреть на схемы контроллеров IDE для 8-ми разрядок с 16-ти битовым обменом.bug19 пишет:Контроллер винчестера IDE уже существует для Суры
Начал думать о 16-ти разрядном обмене. Можно затратить всего две ИР22 / ИР23. Одна ИР22 для защелки одного (младшего) байта при записи в винт, второй (старший) байт пишется в винчестер прямо с шины процессора. Можно задействовать команду работы со словами LD (port),HL. Это вероятно ускорит обмен. При чтении тоже можно читать словом. Тогда уже младший байт читается напрямую с винта, а старший байт при этом защёлкивается в регистре ИР22 и считывается отдельной командой процессора позднее.
barsik- Ветеран
- Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия, СПб
Re: РК86: подключение винчестера IDE (или CF-карты)
6
Вот, пожалуйста https://zx-pk.ru/threads/23229-pk8000-zagruzka-s-vneshnikh-nositelej.html
barsik пишет:Спасибо за наводку, жаль, что без ссылки.bug19 пишет:Контроллер винчестера IDE уже существует для Суры
bug19- Новичок
- Сообщения : 6
Дата регистрации : 2019-01-09
Откуда : СССР
Re: РК86: подключение винчестера IDE (или CF-карты)
7
Удалено, устройство устарело и не рекомендуется к повторению.
Последний раз редактировалось: freddy (Сб Ноя 07 2020, 13:38), всего редактировалось 1 раз(а)
freddy- Новичок
- Сообщения : 84
Дата регистрации : 2019-07-21
.
8
Это верное, но абстрактное утверждение. Оно не имеет смысла для 8-ми разрядок. Только при использовании DMA в высокоскоростной шине скорость обмена с винтом - в ~100 раз больше, чем с дисководом.freddy пишет:Скорость обмена с винтом IDE в десятки раз больше чем с флоповодами
А применительно к 8-ми разрядкам, - это совсем не так. На 8-ми разрядках с клоком до 5 МГЦ скорости винта и флопа отличаются не более, чем вдвое. HD-дисковод на ОРИОНЕ работает быстрее, чем программный обмен с винчестером (тем более, если IDE-контроллер 16-ти разрядный).
Речь же о бытовом компьютере с 8-ми разрядным процессором тактируемым клоком не выше 4 МГЦ (да ещё иногда и с циклами WAIT, тормозящими на 20%) и при отсутствии в системе DMA.
Скорость обмена с В/У организованного программно зависит от быстродействия процессора. Учитывая, что Z80 (за счёт LDIR) тратит 21 такт на байт, а КР580 в 1.5 раза больше. Потому при клоке в 3.55 МГЦ винчестер с программным обменом на вашем устройстве будет работать, как минимум, в 1.5 раза медленнее, чем мой HD-дисковод 3.5" на ОРИОНЕ.
Я, кстати, видел в 1991 фирменный американский CP/M-компьютер с винчестером. Так вот там тоже скорость работы с винтом была примерно вдвое (если не втрое) ниже, чем работа с дисководом. Из увиденного у меня и сложилось мнение, что CP/M тормозит при больших дисках. Это мнение ещё более укрепилось, когда я сделал на винчестере для ОРИОНА диски по 8 мб (но там, видимо, это было из-за медленного винчестера, а не из-за CP/M).
CP/M действительно тормозная система, но в основном не из-за необходимости при больших дисках сканировать огромный каталог (при поиске блоков и построении Alloc Table), а из-за обмена логическими секторами. Любая ДОС с обменом физическими секторами на порядок быстрее.
Главная привлекательность винчестера на 8-ми разрядке в другом, - намного более простой контроллер и надёжность работы. И конечно, в пользу винта решает проблема дискет, новых дискет уже нет в природе, а старые быстро дохнут.
Спасибо за информацию. Я так где-то и предполагал.freddy пишет:Современные диски не поддерживают 8-ми битный обмен
Хотя ещё есть неясность с командами записываемыми в винт IDE. Непонятно как передаётся команда, если она не однобайтовая. Если в команде, например, два байта, то надо делать две записи в регистр команд (передавая данные в младших битах), или нужна одна запись со вторым байтом в старшем байте слова.
Если команды передаются побайтово, то можно сделать обмен 8-ю битами с винтом, что использует все 16 разрядов. Потеря половины ёмкости не играет роли, т.к объёмы винтов в сотни раз больше, чем достаточно.
Да, можно купить переходник IDE-SATA, тут для PC проблем нет. Но для 8-ми разрядки кто-то пробовал? У меня есть уже три неиспользуемых крошечных Sata-винта (250, 500, 750 Гб) от сдохших ноутбуков. Но сначала попробую подключить древние дохлые винты (объёмом менее 1 Гб) из 90-тых. Мне как раз важно, что они древние из 90-тых и в них, надеюсь, есть 8-ми разрядный обмен. Они пытаются читать свой MBR-сектор при инициализации на PC, но видать дохлота. Если всё остальное работает, то если обращаться к другим цилиндрам и секторам, то использовать со своим специально написанным ПО можно. Если с этим не выйдет, то есть и два исправных обычных маленьких IDE винта, - на 10 Гб и 20 Гб. Но для них скорее всего нужен уже 16-ти разрядный контроллер.freddy пишет:Sata диски прекрасно работают с вышеупомянутым контроллером через переходник
Винтом я займусь чуть позднее, пока монтирую обычный FDC-контроллер для ИРИШИ (на ВГ93) по схеме КОРВЕТА. Т.к без дисковода ретро компьютер - это не "лампово". Кроме того эмулятор EMU эмулирует такой FDC-контроллер, а винчестер - нет. А это мне важно, т.к у меня пока нет своего эмулятора ИРИШИ.
Думаю, что Вы имели ввиду, что уже существует 16-ти разрядный контроллер IDE. Т.к 8-ми разрядный контроллер IDE это не новинка, - ещё в первой половине 90-тых сделали для ВЕКТОРА, а в конце 90-тых и для других самодельных 8-ми разрядок.freddy пишет:Контроллер IDE (на фото) давно уже существует. На zxpkru есть исходники и демонстрационное видео.
Последний раз редактировалось: barsik (Вт Июл 23 2019, 13:00), всего редактировалось 1 раз(а)
barsik- Ветеран
- Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия, СПб
Re: РК86: подключение винчестера IDE (или CF-карты)
9
Удалено, причина выше.
Последний раз редактировалось: freddy (Сб Ноя 07 2020, 13:40), всего редактировалось 1 раз(а)
freddy- Новичок
- Сообщения : 84
Дата регистрации : 2019-07-21
.
10
По этому высказыванию можно сделать вывод насколько много Вы думаете при написании постов. А ещё более показательно, ваше высказывание, что бородатый профессиональный программист (к коим Вы себя отнесли), - цитата: "за день на ассемблере способен написать управление целой технологической линией завода...". И даже за пол рабочего дня. Заметьте, - на ассемблере.freddy пишет:У меня 16-ти битный контроллер IDE выдает на моей же машине 220 килобайт в секунду.
И много строк ассемблера вы введёте за 4 рабочих часа (даже не учитывая время тестирования и отладки). А особенно с продемонстрированным в вашем видео темпом ввода текста. Странно, что профессиональный программист набирает текст одним пальцем. Я лишь программист-любитель, но такой темп набора имел лишь в 1987, когда сделал себе первый самодельный компьютер (РК86).
При программной пересылке со скоростью 220 кб в секунду при вашем такте CPU в 3.5 МГЦ программно должна выполняться передача в темпе 15 маш.тактов на байт. С учётом того, что CP/M сначала грузит физ.сектор в дисковый буфер, а затем копирует лог.сектор на DMA, то (в зависимости от размера физ.сектора) пересылка должна происходить в темпе ~10 тактов на байт. А это не может даже Z80 (он может только 21 такт на байт), куда уж это сделать КР580. А если файл фрагментирован по цилиндрам, то добавляются потери времени на позиционирование и считывание в буфер. Так что скорость обмена в 220 кб/сек на своём компьютере 8080@3.5МГЦ Вы никак не можете иметь. Реальная максимальная скорость загрузки в CP/M при 3.5 МГЦ даже в идеале не превысит 80 кб в секунду. А с учётом тормознутости CP/M сократите цифры ещё в несколько раз.
Т.о на 8-ми разрядке без 16-ти разрядного ПДП, хоть со сверхбыстрым винчестером, хоть со сверхбыстрой флэш, реально можно поиметь обмен со средней скоростью всего несколько десятков килобайт в секунду. Но больше и не надо, т.к больших программ для 8-ми разрядки нет. Если программа загружается с диска одну или даже две секунды это нормально. Программную скорость обмена 220 кб в секунду можно получить только при такте Z80 в 12 МГЦ или аппаратно, используя ПДП.
И заметьте, я специально применял термин скорость обмена, а не писал о субъективной скорости работы всей системы в DOS. А скорость потока данных у HD-флопа как минимум в 1.5 раза выше, чем скорость передачи, что может обеспечить ваш КР580 с клоком в 3.5 МГЦ в вашем новом компьютере 8080@3.5МГЦ. Потому я в своих постах не ошибся ни разу, а Вы как и в большинстве своих постов выложеных вчера в этом форуме, написали мягко говоря, неточности.
Естественно, дисковод субъективно работает медленнее, но в данном случае вовсе не из-за разницы в скоростях обмена. Дисковод теряет в скорости работы системы из-за медленной скорости колеса, шага головки и особенностей CP/M, в которой после чтения физ.сектора нельзя сразу читать следующий физ.сектор, т.к следует работа со считанным физ.сектором (пересылка на адрес DMA запрошенного лог.сектора). Потому при очередном чтении физ.сектора FDC тратит время на нахождение нужного сектора (а на это уходит время на оборот колеса, т.е до 20 МСЕК). А ещё и низкая скорость позиционирования головки. Даже с использованием интерливинга секторов контроллер дисковода теряет слишком много времени на поиск очередного сектора.
В то время как в IDE-винчестере вообще нет потерь времени на это, т.к в современном IDE винте есть большой буфер. У меня был винчестер IDE без буфера и он работал медленно.
Даже в грамотной DOS, где работа ведётся с физическим сектором и сектора читаются не по одному (как в CP/M 3.0 есть п/п-мма чтения сразу группы секторов) потери на поиск данных намного больше, чем при винчестере.
DD-дисковод имеет скорость передачи примерно равную скорости программного обмена на процессоре с тактом 2.5 МГЦ. А HD-дисковод имеет вдвое большую скорость обмена (т.е тогда вдвое большая скорость потока данных, для которой и CPU нужен на 5 МГЦ).
На практике HD-дисковод работает настолько быстро, что при крошечных размерах CP/M-файлов нет разницы загружается файл полсекунды или намного быстрее. Дальнейшее ускорение скорости обмена не приводит к резкому ускорению работы, т.к выше определённой скорости обмена при медленном CPU бОльший вклад вносит торможение, что даёт сама CP/M прогоняемая на низкой скорости.
Я охотно изучу Ваши исходники, если они попадут ко мне в руки. Я даже хочу посмотреть на качество кода профессионального (и даже бородатого) программиста.freddy пишет:Изучайте лучше мои исходники
Но о каких исходниках Вы пишете? - Исходники подпрограмм для чужого 16-ти битного IDE-контроллера, чтобы понять как в него выдаются команды? - Или исходники для вашего компьютера 8080@3.5 МГЦ? - Или для вашего цветного текстового адаптера с выходом на VGA.
Кроме как понять, что Вы такое как программист, какой смысл изучать Ваши исходники? Чтобы сдуру напрягая мозг по этим исходникам, выяснить архитектуру и принципы работы вашего компьютера 8080@3.5 МГЦ или вашего текстового адаптера?
Если представляют изделие, то принято давать хотя бы его детальное словесное описание. А т.к это не было сделано, то я и предположил, что речь о вашем VGA-терминале на базе ВГ75 по сложной схеме, что много лет обсуждался на форуме ZX-PK.ru.
Последний раз редактировалось: barsik (Вт Июл 23 2019, 17:07), всего редактировалось 1 раз(а)
barsik- Ветеран
- Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия, СПб
IDE винчестер на РК86, миф или возможная реальность?
11
Нашлись интересанты для винта к РК86. Я и сам уже давно хочу этим заняться, да всё не поимею пригодное основное железо для этого (эмуляторов пока хватало).
Ситуация с винтом на РК86 до сих пор была нулевая, но я надеюсь, что в ближайшие месяцы это изменится. Сам я винчестер на РК86 никогда не использовал. Этому были следующие вполне объективные причины.
Вот такая история моего опыта с винтом на 8-ми разрядках. Как видите на РК86 я винт не применял. Думаю, что и никто ещё не имел винта на базовом РК86. И этому есть причины.
Во-первых, для винта нужна DOS, что поддерживает большие диски. А я знаю для КР580 лишь одну такую DOS. Это - CP/M. Но она довольно большая. С буферами отжирает аж 8...9 Кб, в зависимости от размера сектора и объёма дисков. Если диск большой, то Allocation Table для него тоже большая ибо каждый CP/M блок занимает бит. Т.о чем больше диск и чем дисков больше, тем ниже приходится опускать уровень BDOS.
Потому, чтобы BDOS не опустился ниже приемлемого, мне приходилось принимать специальные меры, - коммутацию дисков, т.е в одном режиме доступны диски A,B,C,D,E,F а в другом A,G,H,I,K,L. Копирование файлов между группами дисков через диск А (эл.диск). При этом число дисков 10, но больших таблиц Allocation Table в ОЗУ только 5 и CP/M-буферов только 5. Отчего TPA падает меньше. Для этого в CCP я добавлял спец.команду (вроде бы VINT 0/1)
Сейчас и для РК86 винт стал как раз актуальным, ибо дискеты уже 20 лет как перестали выпускать и их нигде не достать. Контроллер на microSD я не могу сделать, ибо мне не хватает ума понять SPI или IC2 интерфейсы (а готовые нужные подпрограммы никто не даёт). А с IDE-винтом я уже знаком и всего за день могу подключить винт к РК86.
Что у меня есть. Есть этот КНЖМД (работающий через ППА) содержащий две ИМС (там надо ТМ9 и ЛА3, но ещё и на готовый чип-селект STA FB00 3-х разрядный регистр на вывод ставится на плате самого ОРИОНА). Есть исходники DOS работающей с винчестером для ОРИОНА. Потому для любой машины, имеющей 60...62 Кб ОЗУ странслировать CP/M с винтом займет менее 5 минут.
Но с РК86 всё иначе. Если ставить CP/M на базовый РК86, в котором полезного ОЗУ "кот наплакал", всего 28 Кб, то, если CP/M для винта отнимет на себя хотя бы 10...12 Кб ОЗУ, то для программ останется TPA всего 16...18 Кб. То есть можно будет запустить с винта программу размером не превышающую 16 Кб. А у РК хватает программ с размером намного большим. Да и запустить со столь малым TPA почти ничего из фирменных программ CP/M не удастся.
Из этого есть выходы.
- Можно сократить размер отнимаемый DOS, если CP/M-BDOS и CP/M-BIOS перенести в добавленное в РК86 ПЗУ в адресах E000...FFFF. Тогда в ОЗУ придётся хранить только буфера CP/M и CCP. Что позволит запускать программы размером аж в 24...25 Кб, что уже вполне приличный объём. Увы, программы странслированные компиляторами ЯВУ (а только это сейчас интересно) имеют бОльшой объём и 24К им будет мало
- Далее можно ввести расширение ОЗУ на 8... 15 Кб в окне 8400...BFFF, что совместимо, т.е не конфликтует с существующими программами для РК86. Если CP/M разместится в окне 8400...BFFF, то всё основное ОЗУ останется нетронутым, что позволит запускать программы РК86 любого размера.
- Ещё есть вариант, который мне нравится. Это открыть ОЗУ 8000...BFFF (совместимо, т.е отключаемо) и поместив бОльшую часть CP/M в расширенное ПЗУ E000...FFFF, поиметь CP/M с уровнем TPA в 44 Кб. CP/M с таким TPA была на Apple-II с Z80CARD (правда там имелась и версия и с бОльшим TPA при ОЗУ 128К).
- И четвёртый вариант - отказ от CP/M. Кому нахрен сейчас нужна CP/M на РК86 в нашем просвещённом XIX-веке? Для этого есть и эмуляторы CP/M для PC и есть специально сделанные для CP/M простые самодельные машинки (вот недавно ещё одну придумали, КРИСС называется, может слышали?).
Возможно использовать другие уже не фирменные (самодельные) DOS, которые возможно не столь развитые и могучие, но зато занимают меньше памяти и из коробки могут работать из ПЗУ (в то время как CP/M на ПЗУ не рассчитана и её для работы из ПЗУ придётся переделывать, для меня это не сложно, сделаю за час).
Кстати, та же седовская РК-ДОС имея размер всего 4 Кб даёт всё, что человеку надо. Правда РК-ДОС слегка извращённая, отчего её хреново адаптировать на настоящие КНГМД, ибо там применены сектора плавающей длины, а увы, БИС, и в частности 1818ВГ93 этого не умеет (не говорю, что RK-DOS невозможно адаптировать и даже собираюсь это сделать, когда поимею какой-либо дисковый носитель у 8-ми разрядки). Кроме того в RK-DOS (как и в её прототипе Apple-DOS 3.3) для винта нужны существенные переделки, ибо она поддерживает диски размером только до 1 Мб (а для винта хотелось бы всё-же побольше).
Но есть проблемы. Те подпрограммы, что есть у меня рассчитаны на винт работающий с 8-ми разрядным обменом. Но слышал, что современные (из XXI века) IDE-винты работают лишь с 16-ти разрядным обменом. А в моём РК86, как назло, стоит как раз 8-ми разрядный процессор. Это значит, что 16-ти разрядный обмен надо как-то эмулировать. Т.е нужно сесть, разобраться с интерфейсом, придумать соответствующий контроллер и далее начать эксперименты, чтобы отладить подпрограммы чтения/записи сектора.
Пока не определился в плане винта, как его мне поиметь. -- Или пытаться разработать 16-ти разрядный контроллер для современных винтов. Или (что естественно для меня намного проще), если мой винт 42 Мб за 15 лет бездействия не сдох, то смогу использовать простой древний 8-ми разрядный контроллер. Позже можно поискать на барахолках древний IDE винт 40...120 Мб из начала 90-тых, который, естественно, заработает в 8-ми разрядном интерфейсе. Но сначала попробую всё-же поэкспериментировать с имеющимися винтами из XXI века, ибо надеюсь, что история про отсутствие в них 8-ми разрядного обмена преувеличена.
Ситуация с винтом на РК86 до сих пор была нулевая, но я надеюсь, что в ближайшие месяцы это изменится. Сам я винчестер на РК86 никогда не использовал. Этому были следующие вполне объективные причины.
- Спойлер:
Я в какой-то мере пользовался РК86 лишь в периоды 1987...1990 и 1993...1995. Сначала, в первом периоде (1987...1990) на базовом РК86, т.к настроил РК86 осенью 1987 и далее на нём пытался освоить компьютер и программирование. Это оказалось для моего не очень большого по объёму ума довольно сложным и потому прилично (а не на уровне малоопытного дилетанта) я научился программировать лишь к 1992 году (хотя у молодых гениев на то же самое уходили лишь месяцы). А на РК86 я пытался осваивать бейсик, даже не ассемблер, ибо редакция журнала Радио втюхала мне и другим людям бредовую идею, что на бейсике можно что-то написать, отчего сотни тысяч людей впустую тратили своё время.
Лишь когда в 1988 я собрал и Специалист и познакомился с настоящими программистами для КР580, то узнал, что для 8-ми разрядки имеет смысл программировать лишь на ассемблере. До 1990 г. я периодически пользовался РК86, в основном лишь, чтобы прошить ПЗУ и загнать ксоникса. Но когда в 1990 поимел 8-ми разрядку с дисководом, то магнитофонный РК86 надолго убрал в шкаф.
И лишь когда в 1993 неожиданно появилась возможность подключить к РК86 дисковод, то я решил поиметь из РК86 пользу, - превратить его в инструментальную машину. Ибо оказалось, что ОРИОН очень хреново (медленно из-за тормознутости CPU и огромного графического экрана) работает с текстом, а на РК86 вывод текста мгновенен (как раз из-за его текстовости, а не графичности). Потому, поимев RK-DOS с КНГМД от Е.Седова, я дизассемблировал его DOS (и утилиты) и получив подпрограммы чтения/записи сектора для РК-КНГМД (чего достаточно для инсталляции CP/M под конкретное железо) сделал себе версию CP/M для РК86.
В итоге получился довольно развитый РК86. Фонт 8*10, эффективная скорость 1.7 МГЦ вместо 1.3 МГЦ (за счёт замены кварца 16 на 20), ASCII-клавиатура (т.е аппаратная: Консул или от Apple-II, у них одинаковый интерфейс), ОЗУ 60 Кб с экраном на E6D0 и ещё и внешний эл.диск 256 Кб отдельной внешней платкой (через него и переносил первые программы на дискеты в формат РК-CP/M, потом уже написал скоростной обмен по проводной линии между РК и ОРИОНОМ).
Но, увы, оказалось, что винчестер попался тормозной и CP/M тормозная, отчего в итоге получилась дико тормозная и дискозапильная система, которой пользоваться кое-как можно, но невыгодно - во-первых, дискеты от длительного дискозапила быстро дохли, а во-вторых скорость обмена с диском была на порядок ниже, чем у дисковода в ОРИОНЕ. Так, что толка от быстрого вывода текста, если DOS тормозная - оказалось мало. А с программами базового РК совместимость исчезла. Получилась совсем бесполезная вещь.
Потому в начале 1995 я вновь вернул схемотехнику своего РК86 под ОЗУ 32К и ОС РК-ДОС. Точнее расширилОЗУ уже другим (а именно совместимым) способом добавив в окне 15 Кб (8400...BFFF), что не мешало использовать все программы РК86. И стал пользоваться RK-DOS 2.95 от Е.Седова. Как пользоваться ? - Не особо, просто иногда загонял ксоникса.
После этого, я РК86 практически не пользовался, лишь изредка (может раз в несколько лет включал из любопытства, чтобы узнать жив ли он). В итоге он конечно сдох где-то в начале XXI-века.
Естественно, винчестер для самодельщиков в период до середины 90-х был недоступен. Да и сама идея не пришла бы в голову, ибо всё имеющееся ПО для РК86 (а у меня это было думаю не менее 80% от всего когда либо существовавшего ПО для РК86) умещалось на две дискеты по 560 Кб, плюс ещё пара сотен килобайт убогих программ на бейсике.
Винчестер я всегда хотел применить для ОРИОНА с тех пор как в 1996 узнал, что Д.Темиразов уже снабдил свой Вектор-06Ц винчестером. Но как это сделать никто не знал. Ибо доступа к Интернету не было и скачать спецификацию АТА-интерфейса никто не мог, а книг об этом в магазинах не было. И лишь в 1998 году знакомые имеющие выход в Интернет скачали мне этот документ. Я купил на радиорынке маленький б/у винчестер (точно не помню сумму, но кажется всего за 15 или 20 баксов) и затем всего за три дня возни в 1999 году подключил винчестер к ОРИОНУ. Ибо интерфейс IDE очень прост и его обслуга на порядок проще, чем для дисковода.
Но у меня не было никакой информации про винчестеры IDE, потому я даже не заморачивался стандартами, т.е не разбивал винчестер на CP/M-партиции (а это возможно, т.е предусмотрено и тогда бы фирменные программы обмена MSDOS<-->CP/M работали бы и признавали CP/M диск для ОРИОНА). Винт был на 42 Мб. Я просто в LINUX Red Hat 1997, ибо там fdisk это позволяет, разбил винт так, чтобы в начале винта 5 Мб была единственная партиция с FAT16 для MSDOS, а последующие 35 Мб, т.е дальние цилиндры остались не входящими в какие-либо партиции. И на свободном месте CP/M-диски просто занимали сектора, допустим, - диск J с размером 3 Мб занимает на 3-й плоскости винта цилиндры с 560 по 791. Хотя MSDOS об этих дисках даже не знает, хотя физически считывая нужные сектора CP/M-диска в PC можно считать CP/M-файлы.
Затем сделав простейший контроллер, занялся экспериментами, опробуя команды АТА-интерфейса - типа запустить мотор, считать сектор 512 байт, записать сектор 512 байт. А отладив подпрограммы, странслировал CP/M для ОРИОНА с винчестером. В двух видах - одна версия даёт флоп и винт с одним диском 2 Мб, вторая только винт и эл.диск 120 Кб, зато дисков по 3...4 Мб на винте десяток. Первая DOS нужна была для переноса на винт файлов ОРИОНА, коих вместе с CP/M ПО и моими и чужими исходниками за десять лет, - было аж ~50 мб.
Потому на винт ОРИОНА перенёс только самое нужное и актуальное в данный момент. Увы, винт, что я поимел, оказался тормозным, ибо был от ноутбука из начала 90-тых. Он всё время нагло из экономии останавливал мотор, а ещё и разгонялся медленно, отчего на раскрутку при очередном обмене уходило 2-3 секунды. Да ещё и сама CP/M при больших дисках тормозит. В итоге скорость обмена с винтом получилась низкой - была примерно вдвое ниже, чем с дискетой. А если в доступе к винту сделать паузу более 5 секунд, то мотор сам выключался и работа тормозилась ещё больше (это в принципе лечится, если ввести в ОРИОН апп.прерывания и не реже раза в 5 секунд перезапускать мотор).
Потому я использовал этот винт лишь для резервирования файлов, что меня здорово выручило после краха винта на PC при котором я потерял все хранимые там файлы по всем самодельным ЭВМ. Сохранилось лишь то, что было на винте ОРИОНА. Погибло почти половина софта и исходников для ОРИОНА, в т.числе несколько адаптированных ZX-игр, которых не было ни у кгого, а вот 100% игр РК и Специалиста сохранилось (ибо их архивы были малы по объёму LZX-файла, LZX это архиватор для CP/M).
Так как медленный винт был не нужен, то когда через несколько лет сдох очередной ОРИОН к которому он был подключен, то взяв другую исправную плату ОРИОНА( ибо их было 6-7 штук в запасе), я даже не стал утруждаться подключать к нему винта 42 Мб.
Вот такая история моего опыта с винтом на 8-ми разрядках. Как видите на РК86 я винт не применял. Думаю, что и никто ещё не имел винта на базовом РК86. И этому есть причины.
Во-первых, для винта нужна DOS, что поддерживает большие диски. А я знаю для КР580 лишь одну такую DOS. Это - CP/M. Но она довольно большая. С буферами отжирает аж 8...9 Кб, в зависимости от размера сектора и объёма дисков. Если диск большой, то Allocation Table для него тоже большая ибо каждый CP/M блок занимает бит. Т.о чем больше диск и чем дисков больше, тем ниже приходится опускать уровень BDOS.
Потому, чтобы BDOS не опустился ниже приемлемого, мне приходилось принимать специальные меры, - коммутацию дисков, т.е в одном режиме доступны диски A,B,C,D,E,F а в другом A,G,H,I,K,L. Копирование файлов между группами дисков через диск А (эл.диск). При этом число дисков 10, но больших таблиц Allocation Table в ОЗУ только 5 и CP/M-буферов только 5. Отчего TPA падает меньше. Для этого в CCP я добавлял спец.команду (вроде бы VINT 0/1)
Сейчас и для РК86 винт стал как раз актуальным, ибо дискеты уже 20 лет как перестали выпускать и их нигде не достать. Контроллер на microSD я не могу сделать, ибо мне не хватает ума понять SPI или IC2 интерфейсы (а готовые нужные подпрограммы никто не даёт). А с IDE-винтом я уже знаком и всего за день могу подключить винт к РК86.
Что у меня есть. Есть этот КНЖМД (работающий через ППА) содержащий две ИМС (там надо ТМ9 и ЛА3, но ещё и на готовый чип-селект STA FB00 3-х разрядный регистр на вывод ставится на плате самого ОРИОНА). Есть исходники DOS работающей с винчестером для ОРИОНА. Потому для любой машины, имеющей 60...62 Кб ОЗУ странслировать CP/M с винтом займет менее 5 минут.
Но с РК86 всё иначе. Если ставить CP/M на базовый РК86, в котором полезного ОЗУ "кот наплакал", всего 28 Кб, то, если CP/M для винта отнимет на себя хотя бы 10...12 Кб ОЗУ, то для программ останется TPA всего 16...18 Кб. То есть можно будет запустить с винта программу размером не превышающую 16 Кб. А у РК хватает программ с размером намного большим. Да и запустить со столь малым TPA почти ничего из фирменных программ CP/M не удастся.
Из этого есть выходы.
- Можно сократить размер отнимаемый DOS, если CP/M-BDOS и CP/M-BIOS перенести в добавленное в РК86 ПЗУ в адресах E000...FFFF. Тогда в ОЗУ придётся хранить только буфера CP/M и CCP. Что позволит запускать программы размером аж в 24...25 Кб, что уже вполне приличный объём. Увы, программы странслированные компиляторами ЯВУ (а только это сейчас интересно) имеют бОльшой объём и 24К им будет мало
- Далее можно ввести расширение ОЗУ на 8... 15 Кб в окне 8400...BFFF, что совместимо, т.е не конфликтует с существующими программами для РК86. Если CP/M разместится в окне 8400...BFFF, то всё основное ОЗУ останется нетронутым, что позволит запускать программы РК86 любого размера.
- Ещё есть вариант, который мне нравится. Это открыть ОЗУ 8000...BFFF (совместимо, т.е отключаемо) и поместив бОльшую часть CP/M в расширенное ПЗУ E000...FFFF, поиметь CP/M с уровнем TPA в 44 Кб. CP/M с таким TPA была на Apple-II с Z80CARD (правда там имелась и версия и с бОльшим TPA при ОЗУ 128К).
- И четвёртый вариант - отказ от CP/M. Кому нахрен сейчас нужна CP/M на РК86 в нашем просвещённом XIX-веке? Для этого есть и эмуляторы CP/M для PC и есть специально сделанные для CP/M простые самодельные машинки (вот недавно ещё одну придумали, КРИСС называется, может слышали?).
Возможно использовать другие уже не фирменные (самодельные) DOS, которые возможно не столь развитые и могучие, но зато занимают меньше памяти и из коробки могут работать из ПЗУ (в то время как CP/M на ПЗУ не рассчитана и её для работы из ПЗУ придётся переделывать, для меня это не сложно, сделаю за час).
Кстати, та же седовская РК-ДОС имея размер всего 4 Кб даёт всё, что человеку надо. Правда РК-ДОС слегка извращённая, отчего её хреново адаптировать на настоящие КНГМД, ибо там применены сектора плавающей длины, а увы, БИС, и в частности 1818ВГ93 этого не умеет (не говорю, что RK-DOS невозможно адаптировать и даже собираюсь это сделать, когда поимею какой-либо дисковый носитель у 8-ми разрядки). Кроме того в RK-DOS (как и в её прототипе Apple-DOS 3.3) для винта нужны существенные переделки, ибо она поддерживает диски размером только до 1 Мб (а для винта хотелось бы всё-же побольше).
Но есть проблемы. Те подпрограммы, что есть у меня рассчитаны на винт работающий с 8-ми разрядным обменом. Но слышал, что современные (из XXI века) IDE-винты работают лишь с 16-ти разрядным обменом. А в моём РК86, как назло, стоит как раз 8-ми разрядный процессор. Это значит, что 16-ти разрядный обмен надо как-то эмулировать. Т.е нужно сесть, разобраться с интерфейсом, придумать соответствующий контроллер и далее начать эксперименты, чтобы отладить подпрограммы чтения/записи сектора.
Пока не определился в плане винта, как его мне поиметь. -- Или пытаться разработать 16-ти разрядный контроллер для современных винтов. Или (что естественно для меня намного проще), если мой винт 42 Мб за 15 лет бездействия не сдох, то смогу использовать простой древний 8-ми разрядный контроллер. Позже можно поискать на барахолках древний IDE винт 40...120 Мб из начала 90-тых, который, естественно, заработает в 8-ми разрядном интерфейсе. Но сначала попробую всё-же поэкспериментировать с имеющимися винтами из XXI века, ибо надеюсь, что история про отсутствие в них 8-ми разрядного обмена преувеличена.
barsik- Ветеран
- Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия, СПб
Re: РК86: подключение винчестера IDE (или CF-карты)
12
Мне кажется, корень тормозов - не блокирование/деблокирование 128-байтных блоков, а физическое чередование секторов - иначе при программном обмене просто не успеть передать данные программе за межсекторный промежуток. А вот если контроллер передает данные через ПДП, можно обойтись без чередования. Передавай свои данные программе хоть целый следующий сектор. Так был подключен ВГ93 у меня на РК. Не заметил никаких тормозов, даже компиляция с диска на диск шла со скоростью почти как у электронного диска.barsik пишет:
Программный контроллер РК-КНГМД обеспечивает скорость обмена меньший, чем КНГМД на ВГ93. Но благодаря обмену физическими, а не логическими секторами скорость обмена с диском РК-ДОС оказывается даже быстрее, чем при ВГ93 с CP/M. Это потому, что в CP/M очень тормозной обмен с дискетой. Обмен происходит логическими, а не физическими секторами.
В РК-ДОС физический сектор 512 байт читается сразу на DMA, т.е сразу попадает туда куда надо. А в CP/M физический сектор сначала считывается в дисковый буфер, а затем логический сектор в 128 байт уже медленным процессором копируется на DMA. Потому CP/M с РК-КНГМД даже при принятии всех мер ускорения работает в 2-3 раза медленнее, чем CP/M на ОРИОНЕ (или MSDOS на IBM PC).
Но да, за это надо платить двумя килобайтами буферов, при размере сектора 1024 байта.
Похожие темы
» Специалист: Подключение SD карты
» Орион 128. Подключение SD карты.
» Радио-86РК: Подключение дисковода
» Партнер 01.01: Подключение к телевизору
» Подключение 3.5" дисковода к Ориону
» Орион 128. Подключение SD карты.
» Радио-86РК: Подключение дисковода
» Партнер 01.01: Подключение к телевизору
» Подключение 3.5" дисковода к Ориону
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения