![](http://www.nedopc.org/nedopc/image/nedobanner3.gif) |
nedoPC.orgElectronics hobbyists community established in 2002 |
![](http://www.nedopc.org/nedopc/image/nedobanner4.gif) |
Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22820 Location: Silicon Valley
|
|
22 Aug 2017 20:43 |
|
![](./styles/getaway/theme/images/spacer.gif) |
jcuken
Junior
Joined: 04 Jul 2017 12:45 Posts: 2
|
Работает, аж шуба заворачивается.
|
22 Aug 2017 21:33 |
|
![](./styles/getaway/theme/images/spacer.gif) |
alexcp
Senior
Joined: 11 Jun 2012 07:30 Posts: 128
|
Неожиданно, Ilya Kozlov (afaik не участник форума) собрал мой вариант контроллера образца конца 2012 года и смог его запустить на РК86/SRAM: ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | Quote: Добрый день, всё-таки получилось запустить Ваш контроллер FDC для платы Rk-86 SRAM 32k, подтянул резистором 1КОм сигнал Ready на плате контроллера, так что подтверждаю работоспособность Вашей версии контроллера, но без подбора дисковода всё-таки не обошлось, гарантирована работоспособность на дисководах марки Samsung SFD-321B/LE(b) ревизий T3, T4, T5, так же, возможно в каждом случае, необходимо регулировать головку дисковода. | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) |
Он же собрал описанный выше клон контроллера НГМД для "Микроши": Респект!
Last edited by alexcp on 15 Aug 2019 17:20, edited 1 time in total.
|
14 Aug 2019 10:01 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22820 Location: Silicon Valley
|
Круто ![:rotate:](./images/smilies/icon_rotateicon.gif)
|
14 Aug 2019 17:47 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Приспичило мне сегодня "контрольную сумму" посчитать... и вроде идею этого метода я помню, но и помню, что где-то там был косяк, ставший стандартом. Пришлось искать Бориса Фролкина... Но чтобы в другой раз не искать, пусть будет здесь... ![8)](./images/smilies/icon_cool.gif) Как подсчитать контрольную суммуЖурналы "Радиолюбитель", если вдруг надо, можно невозбранно брать здесь: Белорусский журнал «Радиолюбитель»P.S. И когда я это всё прочитал, выяснилось, что "контрольную сумму" посчитать мне надо для "Микроши", а она считается несколько иначе... ![:-?](./images/smilies/icon_confused.gif)
_________________ iLavr
|
14 Dec 2019 11:12 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
В общем, ковырял я, ковырял Интернет на повод адреса подпрограммы, где вычисляется КС у "Микроши"... А нашел в своём собственном бумажном руководстве по "Микроше" там ручкой было мной приписано: 0FBAAH - подсчет контрольной суммы [HL]-[DE] (портит [HL]), выход - [BC]Ну и я быстренько код подсчета контрольной суммы для "Микроши" раскопал: Я не знаю и не стал смотреть, что за ячейка памяти 760BH, но код 03H в ней подпрограмму прерывает.
_________________ iLavr
|
14 Dec 2019 12:38 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
![Reply with quote Reply with quote](./styles/getaway/imageset/en/icon_post_quote.gif)
Не то, чтобы мне на старости лет захотелось посчитать контрольные суммы... Просто я пытаюсь программировать на Best_C под "Микрошей", "Специалистом" и "Партнером" на эмуляторе Виктора Пыхонина. И есть необходимость корректно "подсовывать" ему файлы. В общем, чтобы больше не возвращаться к этой теме, - КОНТРОЛЬНАЯ СУММА - алгоритм по-русски:![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | Lavr wrote: У "Радио РК-86", "Специалиста", "Партнера", "Ориона" в регистре C складываются все байты подряд. В регистре B складываются все эти же байты КРОМЕ ПОСЛЕДНЕГО ![exclain :exclaim:](./images/smilies/icon_exclaim.gif) с учетом флага переноса при сложении в регистре C. Только в "Специалисте" Начало Программы, Конец Программы и Контрольная Сумма записываются как " Младший Байт - Старший Байт", во всех остальных - как " Старший Байт - Младший Байт". У "Партнера" перед Контрольной Суммой идут байты: 00H, 0E6H. У "Микроши" через XOR в регистре C складываются все ПЕРВЫЕ БАЙТЫ. В регистре B складываются через XOR все ВТОРЫЕ БАЙТЫ. ( Специально не пишу чётные–нечетные, т.к. индексация в файле может быть как от "0, так и от "1".) | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) |
Ну я себе по-быстрому набросал две консольные утилиты, которые считают эти Контрольные Суммы: Проверял только на вариантах Best_C, но вроде всё правильно...
_________________ iLavr
|
15 Dec 2019 06:35 |
|
![](./styles/getaway/theme/images/spacer.gif) |
alexcp
Senior
Joined: 11 Jun 2012 07:30 Posts: 128
|
Для коллекции: я когда-то писал программу для эмуляции загрузки программ в РК с магнитофона на Маке (на самом деле, на любой платформе. где есть компилятор С и библиотека PortAudio). Там контрольная сумма считалась так: В Мониторе РК это сделано так:
|
15 Dec 2019 07:46 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Я подумал, что если алгоритм понятен по-русски, всяк его сможет воплотить на том, на чем сам пишет. Я лично на Quick Basic написал, потому как у меня там шаблон готовый для утилит преобразования файлов. Я только заголовок и основной цикл меняю в каждом конкретном случае... ![:wink:](./images/smilies/icon_wink.gif) А на С и под РК-86 ещё Виктор Пыхонин давненько исходник выкладывал из emu80:
_________________ iLavr
|
15 Dec 2019 08:29 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
В какие-то древние года я эти статьи оцифровывал, но когда надо - нифига не найдёшь... В общем, с контрольными суммами всё понятно, убираю опять на флешку, ну и чтобы долго не искать в следующий раз, выкладываю тут обе статьи оцифрованные и остальной материал: Ну не люблю я читать с картинок! ![:lol:](./images/smilies/icon_lol.gif)
_________________ iLavr
|
17 Dec 2019 14:22 |
|
![](./styles/getaway/theme/images/spacer.gif) |
barsik
Doomed
Joined: 19 Feb 2017 03:46 Posts: 583 Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
|
![Reply with quote Reply with quote](./styles/getaway/imageset/en/icon_post_quote.gif)
. Посты про контрольную сумму здесь не по теме. К тому же в RK-DOS контрольная сумма секторов считается другим, хотя и подобным алгоритмом (отличие во втором байте КС). Прошу админа перенести шесть предыдущих постов о изысканиях на тему КС в Микроше в тему "Разное для Микроши" или ещё куда-нибудь. И если уж речь о подпрограмме подсчёта стандартной КС (п/п F82A), то оптимальнее всех других она сделана в ПЗУ ОРИОНА: Пару лет назад я выкладывал несколько улучшенных версий RK-DOS, но сейчас тот сайт протух. Изменять RK-DOS требуется по многим причинам. Во-первых, популярные в 1992 году дисководы 5.25"-DD имеющие выходной сигнал READY на 34-той ламели врубного разъёма, сейчас стали недоступными. В моду вошли дисководы на 3.5", в которых сигнал READY был только на ранних вариантах этих дисководов. Дешёвые массовые флопы 3.5" не имеют не только сигнала READY, но в них нет даже конфигуратора с перемычками для выбора номера привода (т.е для выбора включать дисковод в ОС как A: или как B:) и задавать это приходится позиционно, перекрученным шлейфом. Оригинал RK-DOS нуждается для работы в наличии сигнала READY, иначе происходит запись на диск при ещё не раскрученном до номинальной скорости шпинделе и дискета портится. Выход из этой ситуациия я придумал в 1993, когда поимел флоповод TEAC-55FR 5.25"-HD, в котором тоже не было сигнала READY. Я использовал аппаратное решение - два последовательно включённых КМОП-вентиля с RC цепочкой между, образующие собой узел задержки сигнала на 0.75 секунды. На вход первого вентиля подаётся сигнал полученный объединением на диодах выборки DS0 и DS1. В итоге READY формируется спустя 0.75 секунды после вызова подпрограммы PUSK RK-DOS. Такая "химия" работала. Современные пользователи RK-DOS почему-то до этого не додумались и надрываются в безуспешных поисках антикварных дисководов 3.5" с сигналом READY. Впоследствии я чуть изменил RK-DOS, введя программное формирование сигнала READY из сигнала INDEX. По линии INDEX выдаётся один импульс за оборот в момент прохождения индексной дырки над оптроном. Т.к в современном флоповоде колесо разгоняется до номинальной скорости всего за пару оборотов, то достаточно обнаружить прохождение нескольких импульсов INDEX и можно считать, что READY получен. Кроме того менять код оригинала RK-DOS надо потому, что на процессоре Z80 оригинал RK-DOS вообще не работает (т.к в Z80 команды IN/OUT работают иначе). Также очень неудобно, что команда DIR выдаёт список файлов в одну колонку, что из-за ролика экрана не позволяет обзор списка файлов. Есть ещё два неудобства - в именах файлов допустимы только цифры и буквы (спец.сиволы недопустимы). Кстати, оригинальное ПЗУ F800 в РК86 не умеет вводить символ "подчёркивание", это делает только доработанное ПЗУ. А также неприятно, что RK-DOS разделителем в командах всегда требует "запятую", а пробел недопустим, что неудобно для людей. Два года назад я странслировал универсальную для обоих процессоров версию 2.96. Эта версия получена оптимизацией RK-DOS по объёму кода. За счёт чего исключены команды IN/OUT, но команды Z80 не используются. Благодаря чему получилась универсальная версия RK-DOS пригодная, как для процессора КР580, так и для Z80, но по прежнему нуждающаяся в сигнале READY. Но т.к версия работающая на НГМД без READY была только для Z80, а он у большинства пользователей РК86 отсутствует, то вчера я ещё немного уплющил код и мне удалось отчистив код от команд IN/OUT, впихнуть в 4 кб версию RK-DOS работающую с дисководом без READY и, таким образом получить версию пригодную как для КР580 так и для Z80. Версия RK-DOS с командами IN/OUT использующая INDEX уже имелась ранее, её удалось сделать сразу, ещё пару лет назад, но вот от команд IN/OUT ранее избавиться не удавалось. Очистка от команд IN/OUT увеличивает объём кода и в кодах КР580 никак не влезала в 4 кб. Недавно делая CP/M для РК86 я обнаружил, что сдуру использовал п/п-му READY из RK-DOS 1994 года. Оказывается впоследствии, используя п/п-ммы RK-DOS для CP/M, я немного оптимизировал эту п/п-мму. Подпрограмма READY там стала на 15 байтов короче. Использование этой п/п-ммы из CP/M ОРИОНА решило наконец проблему нехватки объёма ПЗУ. Стало не хватать лишь десятка байтов, которые приложив дополнительные усилия удалось выиграть. В итоге удалось избавить версию 2.97 от мерзких команд IN/OUT и получилась наконец желаемая версия и без READY и без команд IN/OUT, т.е универсальная, пригодная для всех дисководов и всех процессоров. Эти версии решают проблему с подбором дисководов для РК86 и Микроши. Итак на сегодня есть следующие версии RK-DOS: Версия 2.95. READY надо, КР580. Требует дисковод с сигналом READY, на Z80 не работает. DIR в одну колонку. Версия 2.96. READY надо, Z80 / КР580. Требует дисковод с сигналом READY, но работает и на Z80. Версия 2.97. Без READY, КР580. Не требует наличия сигнала READY. Только КР580 (есть IN/OUT). Версия 2.98. Без READY. Z80. Работает только при Z80, имеет свободное место для доработок. Версия 2.99. Без READY, Z80 / КР580. Не требует дисковод с сигналом READY и не требует КР580. Вот здесь все исходники и коды этих версий RK-DOS (чтобы получить код надо запустить командный файл или можно коды взять в эмуляторе по ссылке ниже). Версии RK-DOS (кроме 2.99) разрешают в именах файлов запрещённые в оригинале символы (апостроф, доллар, тире, равно) и вывод каталога делается в три колонки. В качестве ПЗУ в РК удобно ПЗУ, код которого выложен здесь. Оригинал ПЗУ РК не работает с Z80, а это ПЗУ универсальное, т.е работает с Z80 и КР580 (и имеет ещё 153 свободных ячейки ПЗУ для расширений). Вот здесь можно скачать версию эмулятора с эмуляцией РК-КНГМД, работающую с обоими процессорами, где можно посмотреть и проверить RKDOS, а для удобства в ПЗУ F800, кроме директив <K> и <H> там добавлена команда <B> (без параметров), что делает запуск RK-DOS. Директива <G> - правильная, передаёт запускаемой программе два параметра и позволяет возврат в монитор по RET. Пользование простое, распаковываете, запускаете файл Emu80.exe, затем нажимаете <B> и <ВК>. Затем можно ввести команду DIR или запустить седовский нортон SE.COM. Чтобы при смене платформы не надо было удалять файл emu80.run, откомментируйте одну из строк в конце файла emu80.conf. Чтобы заменить файл RK-DOS надо заменить строку с именем файла (это сразу в начале конфига). Позднее я выложу версию RK-DOS на 6 кб (ПЗУ 8 кб с E000, а РК-КНГМД перенесён с F000 на 8800), которая не нуждается в некоторых часто используемых SYS-файлах и поддерживает эл.диск (32К...512К, размер ЭД определяется автоматически) из дополнительного ОЗУ включенного странично в окне A000...BFFF. Я занялся РК-КНГМД для РК86 не ради РК86, который меня мало интересует, а лишь потому, что надо отладить CP/M-подпрограммы для РК-КНГМД. Для РК86 вообще и в том числе под RK-DOS я не намеревался что-либо писать, хотя возможно что-то перетранслирую из имеющихся исходников. Однако у меня есть исходники нортона на Z80 для RK-DOS, но не для РК86, а для ОРИОНА. Адаптация его для РК86 в 15 раз проще, чем написание с нуля. Надо только убрать Z80-команды LD (nnnn),RR JR DJNZ и SBC (а другие Z80-команды я не использую) и переделать вывод на экран ОРИОНА на вывод на экран РК86. Для меня лично этот нортон интересен лишь для RK-DOS Специалиста, потому вскоре я собираюсь адаптировать этот нортон для него (для Специалиста это проще, чем для РК86, т.к у ОРИОНА и Специалиста одинаковый экран). Если будут заинтересованные в RK-DOS-нортоне на РК86 лучшем, чем SE.COM Е.Седова, то я могу этот нортон переделать для базового РК86. . Вот с такой простой процедурой эмуляции READY у меня почти 25 лет с РК-КНГМД работали в CP/M дисководы без READY. Для эмуляции READY из сигнала INDEX не обязательно мерить период 200 МСЕК между двумя импульсами (что на РК проблематично, т.к он плохо работает в реальном времени). Современные флопы разгоняются уже за 2-3 оборота, потому достаточно просто отследить приход 2-3 импульсов и можно считать, что шпиндель вышел на номинальную скорость в 300 об/мин. Я использовал дисковод 5.25"-HD и ждал 6 оборотов. Для дисковода 3.5" достаточно ждать всего 2-3 оборота. В эмуляторе EMU80 READY выдаётся быстро, потому кажется, что версия RK-DOS с контролем READY реагирует быстрее. А на реале задержка одинакова. Флаг PSKFLG взводится по первому вызову п/п PUSK (сбрасывается он в RK-DOS п/п-ммой OSTANOV). П/п PUSK вызывается при чтении/записи каждого сектора, но благодаря флагу PSKFLG контроль раскрутки колеса делается только первый раз при невращающемся колесе. ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | Code: CHK_OB EQU 4 ; число оборотов колеса до выдачи READY
READY: LD HL,PSKFLG ; READY нет - проверяем INDEX LD A,(HL) LD (HL),255
INC A RET Z
LD B,CHK_OB IDXLOO: CALL OBOROT RET NZ DEC B JP NZ,IDXLOO RET
OBOROT: ; LD H,0FFH ; ЖДЕМ INDX 1 LD D,H INDX1: LD A,(PORT+1) AND IDXMSK JP NZ,INDX2 DEC HL LD A,H OR L JP NZ,INDX1 INC A RET
INDX2: ; LD D,0FFH ; ЖДЕМ INDX 0 INDX3: LD A,(PORT+1) AND IDXMSK RET Z DEC DE LD A,D OR E JP NZ,INDX3 INC A RET
| ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) |
PS. Если у кого-то родится идея как ещё можно ужать код в 580-тых версиях хотя бы на один байт, пожалуйста сообщите.
|
15 Jan 2020 14:18 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Savoj
Senior
Joined: 22 Oct 2010 11:36 Posts: 101 Location: 178.122.227.140
|
Хотелось бы задать два наивных вопроса.... 1. Где скачать ПЗУ на данную плату. 2. Подключается ли эта плата к первому варианту РК86 из журнала Радио.
|
18 Sep 2022 10:42 |
|
![](./styles/getaway/theme/images/spacer.gif) |
alexcp
Senior
Joined: 11 Jun 2012 07:30 Posts: 128
|
Вроде у соседей лежало. Я постараюсь выложить на pbworks, и заодно подчистить там неработающие ссылки. В принципе да, но придется поколхозить. Плата сделана так, чтобы втыкаться в панельку ПЗУ на основной плате РК86-SRAM. Проблема в том, что вариант платы из журнала Радио сделан под К573РФ5, а не AT28C64, как в РК86-SRAM.
|
24 Oct 2022 17:00 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Savoj
Senior
Joined: 22 Oct 2010 11:36 Posts: 101 Location: 178.122.227.140
|
А как лучше поколхозить? Вот читал дружеский форум не один раз, а прошивку не заметил.
|
25 Oct 2022 08:27 |
|
![](./styles/getaway/theme/images/spacer.gif) |
alexcp
Senior
Joined: 11 Jun 2012 07:30 Posts: 128
|
![Reply with quote Reply with quote](./styles/getaway/imageset/en/icon_post_quote.gif)
Известно как - отрезками провода. Этот НГМД подключается к шине данных, к шине адреса и к шине управления. В Микроше, к примеру, для этого предусмотрен отдельный разъем. Я решил, что удобно подключиться (плоским шлейфом с соответствующими разъёмами, или 28-контактным переходником) к панельке ПЗУ, на которой есть почти все необходимые сигналы, а само ПЗУ вынести на плату КНГМД. В оригинальной плате из журнала Радио, как я понимаю, требовалось припаяться к нужным площадкам на плате. Вот это и нужно сделать - каждый контакт разъема, обозначенного как "CONNECT TO ROM SOCKET", и еще трехконтактного рядом с ним, нужно кусочком провода подключить к соответствующему месту на основной плате РК. Поскольку цоколёвка ПЗУ другая, да и ног у РФ5 меньше, это соответствующее место нужно сначала найти. ПЗУ устроено просто: из общего объема в 8Кб первые 4Кб занимает РК-ДОС (в адресном пространстве это соответствует адресам E000..EFFF), затем 2Кб чего угодно, затем 2Кб обычного Монитора (F800-FFFF). В принципе его легко собрать из отдельных кусочков - варианты ДОСа чуть выше выложил @barsik, да и у соседей где-то лежит в соответствующей теме, а Монитор много где выложен, хотя бы в файловом архиве на emu80.org.
|
25 Oct 2022 09:24 |
|
|
Who is online |
Users browsing this forum: No registered users and 4 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|