RUЭВМ
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Март 2024
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
25262728293031

Календарь Календарь

Последние темы
» Вити больше нет!
автор 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

Самые активные пользователи за месяц
Нет пользователей

Поиск
 
 

Результаты :
 


Rechercher Расширенный поиск


РК86: подключение винчестера IDE (или CF-карты)

Перейти вниз

РК86: подключение винчестера IDE (или CF-карты) Empty РК86: подключение винчестера IDE (или CF-карты)

Сообщение  barsik Вт Дек 25 2018, 12:28

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 в любом случае необходимо иметь (и не важно по какому адресу), т.к именно через него работает контроллер винчестера.


Последний раз редактировалось: barsik (Сб Фев 06 2021, 16:56), всего редактировалось 2 раз(а)
barsik
barsik
Ветеран

Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия

Вернуться к началу Перейти вниз

РК86: подключение винчестера IDE (или CF-карты) Empty Re: РК86: подключение винчестера IDE (или CF-карты)

Сообщение  alemorf Вт Дек 25 2018, 13:25

2
ИМХО. CF-карты нынче бОльшая редкость, чем дискеты. И для работы с ними нужен протокол, который по сложности не отличается от SD карты.

Протокол SD карты очень прост. Вот алгоритм чтения сектора (где то мог ошибиться):

Установить CS в 0
Отправить код команды "чтение сектора" 51h, номер сектора, код 95h.
Повторять чтение, пока из SD карты читается 0xFF. Если прочиталось не 0, значит произошла ошибка.
Установить CS в 1

Установить CS в 0
Повторять чтение, пока из SD карты не прочитается 0xFE.
Прочитать 512 байт, это данные.
Прочитать 2 байта (контрольная сумма) и забыть.
Установить CS в 1

Тактовую частоту задает компьютер. Протокол обмена однобитный. Его можно программно реализовать, но это будет работать не очень быстро. Лучше поставить внешний сдвиговый регистр. Если же совсем лениво с ТТЛ связываться, то любой микроконтроллер.

alemorf
Мастер

Сообщения : 232
Дата регистрации : 2018-12-17

http://alemorf.ru/

Вернуться к началу Перейти вниз

РК86: подключение винчестера IDE (или CF-карты) Empty .

Сообщение  barsik Вт Дек 25 2018, 13:47

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-ми разрядки?
barsik
barsik
Ветеран

Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия

Вернуться к началу Перейти вниз

РК86: подключение винчестера IDE (или CF-карты) Empty Re: РК86: подключение винчестера IDE (или CF-карты)

Сообщение  bug19 Ср Янв 09 2019, 02:22

4
Контроллер винчестера IDE уже существует для Суры (ПК8000), на форуме, о котором нельзя говорить. Smile
Автор сего чуда - DemonId7.

Интерфейс Суры, это подключение к ША, ШД и сигнал выбора банка (разьема), на который надо отреагировать. То есть, плата представляет из себя ПЗУ, с дополнительными портами В/В. То есть, автономное устройство, на железном уровне готовое для любой архитектуры. Разве что, содержимое ПЗУ придется адаптировать.
bug19
bug19
Новичок

Сообщения : 6
Дата регистрации : 2019-01-09
Откуда : СССР

Вернуться к началу Перейти вниз

РК86: подключение винчестера IDE (или CF-карты) Empty .

Сообщение  barsik Ср Янв 09 2019, 03:02

5
bug19 пишет:Контроллер винчестера IDE уже существует для Суры
Спасибо за наводку, жаль, что без ссылки. Рад появлению на форуме новых и компетентных любителей ретро техники. Попробую сегодня поискать в теме Корвета на ZX-PK информацию о контроллере IDE для Суры. Ещё бы интересно посмотреть на схемы контроллеров IDE для 8-ми разрядок с 16-ти битовым обменом.

Начал думать о 16-ти разрядном обмене. Можно затратить всего две ИР22 / ИР23. Одна ИР22 для защелки одного (младшего) байта при записи в винт, второй (старший) байт пишется в винчестер прямо с шины процессора. Можно задействовать команду работы со словами LD (port),HL. Это вероятно ускорит обмен. При чтении тоже можно читать словом. Тогда уже младший байт читается напрямую с винта, а старший байт при этом защёлкивается в регистре ИР22 и считывается отдельной командой процессора позднее.
barsik
barsik
Ветеран

Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия

Вернуться к началу Перейти вниз

РК86: подключение винчестера IDE (или CF-карты) Empty Re: РК86: подключение винчестера IDE (или CF-карты)

Сообщение  bug19 Ср Янв 09 2019, 05:04

6
Вот, пожалуйста https://zx-pk.ru/threads/23229-pk8000-zagruzka-s-vneshnikh-nositelej.html

barsik пишет:
bug19 пишет:Контроллер винчестера IDE уже существует для Суры
Спасибо за наводку, жаль, что без ссылки.
bug19
bug19
Новичок

Сообщения : 6
Дата регистрации : 2019-01-09
Откуда : СССР

Вернуться к началу Перейти вниз

РК86: подключение винчестера IDE (или CF-карты) Empty Re: РК86: подключение винчестера IDE (или CF-карты)

Сообщение  freddy Вс Июл 21 2019, 05:47

7
Удалено, устройство устарело и не рекомендуется к повторению.


Последний раз редактировалось: freddy (Сб Ноя 07 2020, 13:38), всего редактировалось 1 раз(а)

freddy
Новичок

Сообщения : 84
Дата регистрации : 2019-07-21

Вернуться к началу Перейти вниз

РК86: подключение винчестера IDE (или CF-карты) Empty .

Сообщение  barsik Вс Июл 21 2019, 20:49

8
freddy пишет:Скорость обмена с винтом IDE в десятки раз больше чем с флоповодами
Это верное, но абстрактное утверждение. Оно не имеет смысла для 8-ми разрядок. Только при использовании DMA в высокоскоростной шине скорость обмена с винтом - в ~100 раз больше, чем с дисководом.

А применительно к 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 разрядов. Потеря половины ёмкости не играет роли, т.к объёмы винтов в сотни раз больше, чем достаточно.
freddy пишет:Sata диски прекрасно работают с вышеупомянутым контроллером через переходник
Да, можно купить переходник IDE-SATA, тут для PC проблем нет. Но для 8-ми разрядки кто-то пробовал? У меня есть уже три неиспользуемых крошечных Sata-винта (250, 500, 750 Гб) от сдохших ноутбуков. Но сначала попробую подключить древние дохлые винты (объёмом менее 1 Гб) из 90-тых. Мне как раз важно, что они древние из 90-тых и в них, надеюсь, есть 8-ми разрядный обмен. Они пытаются читать свой MBR-сектор при инициализации на PC, но видать дохлота. Если всё остальное работает, то если обращаться к другим цилиндрам и секторам, то использовать со своим специально написанным ПО можно. Если с этим не выйдет, то есть и два исправных обычных маленьких IDE винта, - на 10 Гб и 20 Гб. Но для них скорее всего нужен уже 16-ти разрядный контроллер.

Винтом я займусь чуть позднее, пока монтирую обычный FDC-контроллер для ИРИШИ (на ВГ93) по схеме КОРВЕТА. Т.к без дисковода ретро компьютер - это не "лампово". Кроме того эмулятор EMU эмулирует такой FDC-контроллер, а винчестер - нет. А это мне важно, т.к у меня пока нет своего эмулятора ИРИШИ.
freddy пишет:Контроллер IDE (на фото) давно уже существует. На zxpkru есть исходники и демонстрационное видео.
Думаю, что Вы имели ввиду, что уже существует 16-ти разрядный контроллер IDE. Т.к 8-ми разрядный контроллер IDE это не новинка, - ещё в первой половине 90-тых сделали для ВЕКТОРА, а в конце 90-тых и для других самодельных 8-ми разрядок.


Последний раз редактировалось: barsik (Вт Июл 23 2019, 13:00), всего редактировалось 1 раз(а)
barsik
barsik
Ветеран

Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия

Вернуться к началу Перейти вниз

РК86: подключение винчестера IDE (или CF-карты) Empty Re: РК86: подключение винчестера IDE (или CF-карты)

Сообщение  freddy Пн Июл 22 2019, 01:11

9
Удалено, причина выше.


Последний раз редактировалось: freddy (Сб Ноя 07 2020, 13:40), всего редактировалось 1 раз(а)

freddy
Новичок

Сообщения : 84
Дата регистрации : 2019-07-21

Вернуться к началу Перейти вниз

РК86: подключение винчестера IDE (или CF-карты) Empty .

Сообщение  barsik Пн Июл 22 2019, 22:28

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
barsik
Ветеран

Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия

Вернуться к началу Перейти вниз

РК86: подключение винчестера IDE (или CF-карты) Empty IDE винчестер на РК86, миф или возможная реальность?

Сообщение  barsik Сб Фев 06 2021, 15:14

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-ми разрядного обмена преувеличена.
barsik
barsik
Ветеран

Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия

Вернуться к началу Перейти вниз

РК86: подключение винчестера IDE (или CF-карты) Empty Re: РК86: подключение винчестера IDE (или CF-карты)

Сообщение  tchv71 Вс Мар 28 2021, 11:40

12
barsik пишет:
Программный контроллер РК-КНГМД обеспечивает скорость обмена меньший, чем КНГМД на ВГ93. Но благодаря обмену физическими, а не логическими секторами скорость обмена с диском РК-ДОС оказывается даже быстрее, чем при ВГ93 с CP/M. Это потому, что в CP/M очень тормозной обмен с дискетой. Обмен происходит логическими, а не физическими секторами.

В РК-ДОС физический сектор 512 байт читается сразу на DMA, т.е сразу попадает туда куда надо. А в CP/M физический сектор сначала считывается в дисковый буфер, а затем логический сектор в 128 байт уже медленным процессором копируется на DMA. Потому CP/M с РК-КНГМД даже при принятии всех мер ускорения работает в 2-3 раза медленнее, чем CP/M на ОРИОНЕ (или MSDOS на IBM PC).
Мне кажется, корень тормозов - не блокирование/деблокирование 128-байтных блоков, а физическое чередование секторов - иначе при программном обмене просто не успеть передать данные программе за межсекторный промежуток. А вот если контроллер передает данные через ПДП, можно обойтись без чередования. Передавай свои данные программе хоть целый следующий сектор. Так был подключен ВГ93 у меня на РК. Не заметил никаких тормозов, даже компиляция с диска на диск шла со скоростью почти как у электронного диска.
Но да, за это надо платить двумя килобайтами буферов, при размере сектора 1024 байта.

tchv71
Новичок

Сообщения : 20
Дата регистрации : 2021-03-28
Возраст : 52
Откуда : Москва

https://github.com/tchv71

Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения