PDA

Просмотр полной версии : ПК8000 - загрузка с внешних носителей



Страницы : 1 [2]

surinm
13.02.2017, 21:29
Продолжил эксперименты с прошивкой сборки Д. Подключил девайс к Весте, у которой глюк с клавиатурой - перезагрузка после нажатия любой кнопки (до этого все эксперименты были с рабочей Сурой). Итог: с реальным хардом Квантумом 2Гб из штук 20 перезагрузок два раза вываливался в промт после определения всех дисков СП/М - на данный момент максимальный результат))). Дальше на Весте не поэксперементируешь, потому что при нажатии на любую кнопку она либо виснет, либо перезагружается. Может дашь свою программу на бейсике, чтобы ее погонять и подобрать оптимальные параметры по чтению разделов, каталога и данных?

DemonId7
13.02.2017, 23:32
Не мучийся. Завтра попытаюсь восстановить заброшенный глючный контроллер. Если получится, то подарю тебе, у меня их и так излишек. Я уже осцилограммы с рабочего контроллера снял, так сказать для образца.

PS: Как дорожки прозванивал? Не встречались ли с повышенным сопротивлением?

surinm
14.02.2017, 19:03
Обычной диодной прозвонкой на мультиметре. Вроде везде 0 показывал... но звонил от 50контактного разъема (папа) шлейфа до ПЗУ и ВВ55... допускаю, что могут быть за***** контакты в разъеме на доске.

DemonId7
14.02.2017, 19:44
Дело было не в бобине, раздолбай сидел в кабине :D
Осцилограммы управляющих линий рабочего и глючного контроллеров оказались одинаковы. Из чего был сделан вывод, что данные портятся где-то между ВВ55 и разъемом IDE. Поскольку команды контроллеру проходили успешно (они идут по линиям DD0-DD7), следовательно глючили линии данных DD8-DD15. Это и выявила прозвонка. Проблема была в разности шага ножек импортных и наших микросхем (dip-панельки и ВВ55), к чему наверное добавляла проблем плохо смытая канифоль. Растопырил" ножки ВВ55, чтобы они получше совпали с панелькой, контакт улучшился и плата сразу заработала.

surinm, черкани в личку адрес, вышлю контроллер, как и обещал. Вот и выясним, где были проблемы :)

Завтра выложу новую прошивку с исходниками. И на этом наверное завязываю с их поддержкой. В руки попали дизассемблированные и кем-то причесанные сорсы CP/M. Посмотрю, можно ли их будет подружить с FAT16.

surinm
14.02.2017, 20:46
Так... у меня как раз в цанговой панели ВВ55 стоит... ножки вроде растопыривал))) надо еще попробовать)) в личку написал. Спасибо))

DemonId7
16.02.2017, 00:39
Выложил версию 1.3. От версии 1.2 отличается незначительно. Улучшена реакция на нажатие клавиши "ПРФ". Иправлен небольшой недочет с подвисанием во время выхода в бейсик. Немного улучшил сброс диска при старте программы. Ну и еще пара мелочей.

surinm
17.02.2017, 08:08
Прошивка 1.3 ведет себя с моими девайсами как и 1.2 - ДОМы не определяет, разделы не видит(((

DemonId7
17.02.2017, 12:08
Это нормально, работа с дисками у этих версий почти одинакова :)
Если не терпится, можно запустить прожку в аттаче. Надеюсь есть чем перевести CAS в WAV и загрузить на комп?
Интересуют снимки экрана при удачных и не очень удачных запусках, для сравнения. Сразу станет ясно - идут пропуски данных, или их исскажение. От этого уже можно прикинуть, где искать баг.

surinm
17.02.2017, 21:42
Надеюсь есть чем перевести CAS в WAV и загрузить на комп?
Есть, но не работает. Т.е. при конвертации cas2wav - результат Device I/O error
Из эмулятора не выгружается, потому что это бинарник похоже... какой формат-то во вложении?

DemonId7
18.02.2017, 09:37
Почему похоже? Это и есть бинарник. Я уже приводил результаты его работы здесь (http://zx-pk.ru/threads/23229-pk8000-zagruzka-s-vneshnikh-nositelej.html?p=900550&viewfull=1#post900550)

DemonId7
06.03.2017, 21:26
Нашел таки источник проблем. Проблема стара как мир - несоответствие документации и железа, а именно - в ПК сигнал RESET на разъемы не выведен, хотя во всех книжках он указан как существующий. Как итог, при работе плат в линию постоянно шли наводки. Причем на разных платах по разному. На моей основной импульсы достаточно скоротечные и ВВ55 просто не успевала на них среагировать. На другой в основном тоже, но пару раз удалось засечь более длительные импульсы, из-за которых ВВ55 произвела сброс и, как следствие, загрузчик не подключил часть дисков. Насколько я понял, величина и частота наводок зависят как от шлейфа, которым плата подключается к ПК, так и от самой платы (видимо микрухи фонят по разному). Это не считая того, что при старте в регистрах ВВ55 творится разброд и шатание, каждый порт сам за себя.
В принципе проблему можно решить несколькими путями:
1. Перерезать дорожку /RESET у ВВ55 (35-я ножка) и подпаять на нее проводок к земле. Это можно сделать внутри панельки, получится аккуратно и незаметно. Либо сделать похожую операцию у ЛА3, но там будет видно. Недостаток очевиден - полное отсутствие сброса микросхемы.
2. Похожая, но изменения нужно вносить внутри ПК. Пины 15 разъемов расширения свободны и на них можно завести +5В, благо шина прямо у разъемов. Вариант более предпочтителен, поскольку линия RESET используется не только в данном контроллере, но и к примеру в AY-контроллере. Так хоть гарантия, что не будет непредвиденных сбросов.
3. В самом ПК сигнал RESET присутствует и появляется на короткое время при включении и перезагрузке. Его генерирует ТМ2 (DD5), и обеспечивает сброс процессора и двух ВВ55, отвечающих за порты ввода/вывода. Только он нам не подойдет, поскольку на разъемы, по документации, должен поступать инвертированный сигнал (т.е. активный низкий уровень). Этот сигнал можно снять с ножек 9 и 1, все той же ТМ2. На фото стрелками отмечена сама ТМ2 и ножки RESET на разъемах (они были вообще пустыми):
http://savepic.ru/13142818m.jpg (http://savepic.ru/13142818.htm)
После переделок гонял нещадно несколько дней, в том числе с подключением двух винтов сразу. Глюков не замечено.

На всякий пожарный сделал новую прошивку - 1.4. В ней работа с портами HDD ведется строго по стандарту, точно так же как в писюках. В остальном отличий от 1.3 нет и если та работает нормально, то и заморачиваться не стоит.

surinm
07.03.2017, 19:11
ААААААА!!!! УРАААААА!!!! заработало в общем))))

- - - Добавлено - - -

Теперь вопрос: где взять нарезку рабочих COM-файлов? У меня сейчас работают только утилиты CP/M - их я скачал уже в формате ком. Игрушки и тесты конвертировал утилитой кас2ком - не запускаются(((( вводишь название, секундная пауза, опять промт.

DemonId7
08.03.2017, 09:03
В прошлом месяце столкнулся с проблемой, что ранее работавшие файлы больше не запускаются. Причем это касалось только HEX-файлов. В общем, исправил небольшой баг, просто на две команды раньше нужного прерывания разрешал и оно приходило куда не надо. На эмуляторе этого кстати не наблюдается, уж не знаю почему. Попробуй обновленную версию, она в утилитах.
На всякий случай выкладываю свою подборку, что еще сохранилась на винте. Некоторые дублируются, но это не страшно. Та же FIRE есть в двух вариантах, причем в одном (что у меня давно была на дискетах) покоцана заставка оренбуржцев.

PS: Точнее есть наметки, почему на эмуляторе нет этого глюка. Все дело в том, что он работает немного быстрее и успевает загрузить программу до прихода прерывания. Заметил это во время игры в PILOT, где скорость самолета и бомбочек различается на глаз. Может дойдут руки подобрать нужную частоту эмулятора, но пока некогда.

demetrius2003
08.03.2017, 09:30
Афигеть! В какие дебри вы все уже забрались! Да, отстал я намного!

surinm
08.03.2017, 10:59
Спасибо!!! Теперь все заработало))) Осталось разобраться с палитрой, почему-то после привинчивания адаптера изображения к скандаблеру у меня всего 8 цветов...

- - - Добавлено - - -

6000560004

Это выглядит как-то так... вместо красного, черный и наоборот...

DemonId7
08.03.2017, 13:05
Что и к каким входам скандаблера подключал?

marinovsoft
08.03.2017, 16:17
Выглядит так, будто перепутан сигнал интенсивности и красный.

surinm
08.03.2017, 18:18
Абсолютно верно))) уже разобрался - именно так и было, перепутал яркость с красным. Работы по реанимации и запуску ПК8000 с контроллером HDD можно считать завершенными)))

Vogul
13.08.2017, 02:35
Данный контроллер будет работать с ПК8010/8020?

surinm
13.08.2017, 07:20
Данный контроллер будет работать с ПК8010/8020?
Нет. На корветах работать не будет. Для них - ExtROM.

DemonId7
01.12.2017, 21:10
Выложил последние версии утилиток для работы с жесткиим дисками cp/m. Здесь (http://zx-pk.ru/threads/23229-pk8000-zagruzka-s-vneshnikh-nositelej.html?p=748692&viewfull=1#post748692).

Pyk
16.01.2019, 23:15
Успешно создал в linux образ CF для использования в эмуляторе. Последовательность действий на примере образа диска в 2 Мб из одного раздела:
dd if=/dev/zero of=./cf.img bs=512 count=4096
losetup /dev/loop0 ./cf.img
fdisk /dev/loop0

Затем заходим в расширенный режим (x), задаем количество цилиндров, головок и секторов (c, h, s), чтобы соответствовать емкости (например, 64, 8, 8) и с помощью n создаем разделы:
- расширенный раздел (тип 5)
- один или несколько логических томов, тип 6

После этого записываем MBR в образ (w) и остается только обработать полученный образ с помощью f8000.exe уже под Windows:
f8000.exe -f cf.img

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

DemonId7
17.01.2019, 09:13
Поздравляю! Надеюсь в скором времени увидеть образ в твоем эмуляторе.

Кстати, почему-то разделы обязательно должны быть логическими дисками.Естественно, мы ведь работаем с логическими дисками, а не разделами. Эта модель полностью срисована с DOS, на котором я в свое время собаку съел :) Собственно, она до сих пор популярна на PC.

F8000.exe игнорирует не только активный раздел, но и вообще все первичные разделы.Да, поскольку в нем предполагалось наличие какой-нибудь ОС, например DOS, которую можно было загрузить на пи-си, а дальше использовать записанные там же утилиты для работы с CP/M-дисками. Собственно первые варианты утилит были как раз под DOS :)

Arix
03.02.2019, 20:03
Купил плату, тоже хочу собрать данное устройство.
Надо искать или покупать программатор. Ещё микросхемы AT49F002 в нашем городе нет в продаже. Пока начну с малого.
У меня вопросы по кабелю, которым контроллер подключается к ПК8000.
Распайки кабеля нет, поэтому я нарисовал её сам. Слева - разъем на компьютере, все обозначения, как на родной схеме.
Я на своей схеме подписал все контакты, те, что обозначены прочерком, пустые (проверил по чертежам платы в этой темеl (https://zx-pk.ru/threads/20271-pk8000-pechatnye-platy.html)).
https://i.ibb.co/NF1JGVc/image.jpg (https://ibb.co/NF1JGVc)
Осталось непонятно, куда подключать 15, 33, 34, 37, 38.
SLTSL - это "Выбор" (42) в Суре?
RESET - в схеме Суры я этого не нашёл.
Непонятно, что такое ЗАХВВ и ПЗАХВ.

Не понял с перемычкой 16-20. Контакт 20 на плате никуда не подключен. Зачем их соединять?

cy6
04.02.2019, 00:36
SLTSL - это "Выбор" (42) в Суре
Да, это 42 контакт на разъеме расширения X1 или X2. В моей книжке от Суры он так и подписан.


RESET - в схеме Суры я этого не нашёл.
Это контакт 15 на разъемах X1, X2. но он не выведен.
Можно вывести проводком самостоятельно, с 9 ноги D-триггера формирователя сигнала "Сброс".


Непонятно, что такое ЗАХВВ и ПЗАХВ.
Сигналом ЗАХВВ, внешнее устройство просит процессор отключиться от ША и ШД, то есть режим ПДП (прямого доступа к памяти).
Сигнал ПЗАХВ, это "потдверждение" от процессора, что он отключился от ША и ШД (эти ноги процессора переходят в состояние Hi-Z).

DemonId7
04.02.2019, 11:47
Ещё микросхемы AT49F002 в нашем городе нет в продаже.Подойдет почти любая FLASH-ПЗУ от материнки. Можно даже УФ-ПЗУ применить, с меньшим количеством выводов. Напиши какие есть в наличии, я подскажу.

Осталось непонятно, куда подключать 15, 33, 34, 37, 38.
15 - Сигнал RESET, по нему я писал в этой же теме чуть ранее здесь (https://zx-pk.ru/threads/23229-pk8000-zagruzka-s-vneshnikh-nositelej.html?p=903561&viewfull=1#post903561).
33 - ответили
34,37,38 - не заняты.

Непонятно, что такое ЗАХВВ и ПЗАХВ.В ПК8000 не используются.

Не понял с перемычкой 16-20. Контакт 20 на плате никуда не подключен. Зачем их соединять?Шлейф первым сделал Mick, и он завел линию A3 на 20-й пин. Я IDE-разъемы брал со старых винтов и сидюков. На них 20-й пин отсутствовал как класс, поскольку являлся ключом против неправильного включения шлейфа. Поэтому, я перенес линию A3 на свободный 16-й пин. При проектировании IDE-контроллера я забыл об этой разнице и развел на 16-й. Перемычка устраняет эту несовместимость шлейфов.

Arix
04.02.2019, 20:18
Подойдет почти любая FLASH-ПЗУ от материнки. Можно даже УФ-ПЗУ применить, с меньшим количеством выводов. Напиши какие есть в наличии, я подскажу.
В наличии у меня ничего нет. :) Лишнего, ненужного. Есть две негодные видеокарты, но там 28-выводные "РФ-ки", а я не хочу плату курочить, подгоняя её под эту микросхему.
Это какой-то супер-мега-дефицит. Её нет ни на Мешке, ни даже в Яндекс-маркете. Однако, просто в Яндексе есть.
https://www.einfo.ru/store/AT49F002/?yclid=355606720254605688
Наяндексенный аналог - A29002, его тоже нет. Какие есть ещё аналоги? Просто взаимозаменяемые микросхемы, чтоб воткнуть без переделки платы.

DemonId7
05.02.2019, 21:50
В наличии у меня ничего нет. Лишнего, ненужного.Если возникнут проблемы, могу выделить со своих запасов. Из новых есть с эл. стиранием W27C512, а так же с УФ-стиранием AM27C256. Они вставляются без каких либо переделок контроллера. Сам пользуюсь W27C512.
Ну и полно всякого старья со старых материнок. Но там уже 32-х выводные и нужно смотреть за что отвечают выводы 1,2,31 и 32.


Есть две негодные видеокарты, но там 28-выводные "РФ-ки", а я не хочу плату курочитьПлата как раз и расчитана на 28-выводные. Если не ошибаюсь, то РФ-ки - это практически полный аналог забугорных серий 27XXX. Тогда их можно использовать, если конечно запишутся, очень уж они были ненадежные.
Поддержку 32-х выводных ПЗУ делал только для тех, у кого нет программатора, чтобы программировать через старую пентиумную материнку. Как я раньше и делал, пока программатор не собрал.


Какие есть ещё аналоги? Просто взаимозаменяемые микросхемы, чтоб воткнуть без переделки платы.
Подойдут почти все 28-выводные ПЗУ. Вот таблица для наглядности: 67978

Arix
06.02.2019, 22:33
Из этой таблицы в мoeм гopoде есть 28C64. Подойдёт?
Наверное, не подойдёт, она на 8 кб, а файл прошивки на 9 кб.

Если возникнут проблемы, могу выделить со своих запасов. Из новых есть с эл. стиранием W27C512
Не могли бы мне её прошить? И выслать прошитой. Программатора у меня нет, стал яндексить это дело, надо из Китая заказывать, долго ждать. Да и что-то я плохо понимаю, какой именно нужен мне, ещё куплю не то. Может, ещё какие детали у вас заодно куплю, это уже в личку.

DemonId7
08.02.2019, 17:19
Пишите в личку адрес.

Arix
13.02.2019, 23:10
Посылка с ПЗУ идёт, отправилась посылка и с разъемом РП15-50. Как оказалось, современные импортные вилки РП15-50 не лезут на старые советские розетки. Пока посылки идут, я разметил и отформатировал жесткий диск. Диск на 110 Мб. Я создал досовский раздел на 19 Мб и 8 разделов СР/М по 12 Мб. Даже для УКНЦ это офигенно много, а уж тут тем более. Но меньше винчестеров у меня нет. Вернее, есть, но он большой физически.
Где теперь взять софт для Суры в виде файлов для СР/М? Нужен так же Basic в виде программы, запускаемый с диска, чтобы в нём можно было загрузить программы с магнитофона и сохранить в BAS.
Будут ли работать программы с Корвета?

DemonId7
14.02.2019, 01:50
Я создал досовский раздел на 19 Мб и 8 разделов СР/М по 12 Мб.Это избыточно. Лучше разделить софт на категории и под каждую выделить свой диск. Соответственно размеры каждого диска подстраивать под необходимый минимум с небольшим запасом. Дело в том, что чем меньше диск и его оглавление, тем быстрее он инициализируется системой при первом обращении к нему. Диск "A" всегда инициализируется при старте системы, поэтому его лучше сделать в 1-2 мегабайта и хранить на нем только системный софт и утилиты.
Хотя, если время не критично, то можно и так оставить.


Где теперь взять софт для Суры в виде файлов для СР/М?В теме "Софт: старый и новый". Вот здесь попытка обобщить все что было: https://zx-pk.ru/threads/8378-pk8000-soft-staryj-i-novyj.html?p=992811&viewfull=1#post992811
Кидаете в нужную директорию утилиту cas2com и запускаете батник. На выходе получаете рабочие COM-программы.
Здесь плеер под AY: https://zx-pk.ru/threads/8378-pk8000-soft-staryj-i-novyj.html?p=938887&viewfull=1#post938887
С адаптацией под pk2 и pk3 возникли трудности, из-за слишком большой заточенности оригинала на команды z80 и различных "радиолюбительских" трюков, так что пока только музыка в формате stc.


Нужен так же Basic в виде программы, запускаемый с диска, чтобы в нём можно было загрузить программы с магнитофона и сохранить в BASТакого нет и не было. Можно либо использовать встроенный интерпритатор, сохраняя программы на диск или магнитофон. Либо использовать дисковую версию бейсика от микрософта, который умеет работать только с диском, который не знает особенностей ПК8000, в частности не умеет переключать видеорежимы. Последний есть в архиве (папка \system\basic).
Вроде был еще дисковый вариант развития встроенного бейсика, но похоже он утерян безвозвратно.


Будут ли работать программы с Корвета?Нет, нужна адаптация.

Arix
14.02.2019, 19:46
Это избыточно. Лучше разделить...
Спасибо, учту. Переразбить недолго. Я сначала прочитал про ALV, что надо рассчитывать количество блоков и т.д. Для простоты я сделал разделы одинакового размера. А запустил программу F8000D без параметров, она сама всё делает. Оставил всё по умолчанию. Файлы с помощью плагина для TC копируются.

Вот здесь попытка обобщить все что было:
Спасибо. Я нашёл у себя образы 18 дисков в формате TD0. Захожу внутрь, а там вложенные образы DSK, они не открываются. Вроде, они должны открываться этим же плагинов в ТС, но я не понял, как. Я добавляю в список эти образы, и что дальше? Сеть/СР/М HDD - там эти образы не появляются.
В архиве по вашей ссылке оказались эти же образы в формате FDD, они открываются. TD0 я пересохранил в ZXD Studio, там тоже самое. Диски 3, 6, 10, 16 битые, не открываются и не распаковываются.


встроенный интерпретатор, сохраняя программы на диск
Он может работать с диском?

DemonId7
14.02.2019, 22:35
Для открытия образов FDD используется другой плагин - odi.wcx, который открывает их как архивы. Мой не поддерживает их в принципе (не хотел дублировать то, что и так уже было).

Диски 3, 6, 10, 16 битые, не открываются и не распаковываются.Они действительно битые. Да и на других дисках много порченых данных. Собственно говоря, все что есть на дискетах, есть и в архивах CAS. Разница только в том, что кассеты почему-то лучше сохранились, что и побудило написать конвертер CAS в COM.

Он может работать с диском?Нет. Но написанные на нем программы можно сохранять на диск. А затем загружать обратно в интерпретатор.

Arix
23.02.2019, 23:21
Спаял. Включил. Гол!!!

Без жесткого диска:

IDE BIOS ПК8000 1.5
Test ROM ... ok.
Reset...

Где-то через полминуты грузится встроенный Бейсик.
Похоже, клавиша ПРФ сдохла. Эх, как я уже задолбался герконы менять!

J4 - это для светодиода?

Я купил программатор. Теперь надо учиться им пользоваться.


Выводы 6 и 9 ЛА3 разъединил
Я тоже так хотел. А дорожка находится под микросхемой! Микросхема практически лежит брюхом на плате, не подлезешь. При выпаивании, боюсь, сломаю её. А другой такой в наличии нет. Нашёл выход: вытянул из платы шестой вывод, теперь микросхема стоит в позе писающей собачки. :)

Итак, после доработки включаю. Ура! Жесткий диск обнаруживается, пишется его название и емкость, Mode C/H/S - 762/8/39. Потом список разделов. И - "System not presents!". Как его осистемить?
Разобрался. Система, ведь, есть в ПЗУ.

Всё, работает. Спасибо!

Arix
24.02.2019, 15:50
Теперь вопрос: как во встроенном Бейсике грузить программы с жесткого диска и сохранять на него?

Вопрос о загрузке системы непосредственно с HDD актуален. Как сделать раздел системным? Я посмотрел суровские дискеты в эмуляторе. Там есть файловые менеджеры, например, Zeep commander. Я хочу сделать так же и на своём HDD. Но эти коммандеры сделаны не в виде программных файлов, а интегрированы в систему. Из одного образа дискеты в другой систему перенести можно, скопировав файл UseThis_ToAccess_SystemTracks\System.bin. Но на разделах жесткого диска система не отображается в ТС.

Arix
28.02.2019, 21:23
На плате контроллера есть место под установку разъема питания жесткого диска. То есть, предусмотрено его питание тоже от компьютера? 12 В контроллером не используется, дорожка просто проходит насквозь. Мой винт по 12 В потребляет 100 мА, но при разгоне - 0,7 А. Как-то боязно, ведь в Суре 12 В идёт с КРЕНки, на которой установлено лишь подобие радиатора. В отличие от 5 В, 12 В идёт по одному проводку шлейфа IDE. А они тонкие, как у китайского кипятильника. Можно использовать оставшиеся пустыми провода 34, 37, 38.
Попробовал. С одним проводом в шлейфе. Работает, хотя, кажется, что винт разгоняется дольше. КРЕНка греется до 57 оС при открытом корпусе и до 62 при закрытом. Вроде бы, её можно греть до 85 оС. Но это без постоянного обращения к диску. Вроде, тут нет программ для дефрагментации, или типа NDD, которые надолго занимают диск. У меня есть ещё такой же блок питания от нерабочей Суры, в нём выход 12 В умощнён путем установки КРЕНки на хороший радиатор. В своё время длительно нагружал его на 1 А по 12 вольтам, полёт нормальный. Но на БП внутри компьютера для радиатора нет места.

DemonId7
08.03.2019, 21:07
Теперь вопрос: как во встроенном Бейсике грузить программы с жесткого диска и сохранять на него?
Когда бейсик программа уже в памяти, набираем и выполняем в интерпретаторе:
FOR I = 0 TO 16: Y= PEEK(&H7FF7+I): POKE (&HBF60+I),Y: NEXT
Затем перезагружаете комп и запускаете с диска программу DSAVE и сохраняете бейсик-программу на диск, в виде COM-файла.
При запуске этого COM-файла получим выход в интерпритатор с загруженной бейсик-прогой.


Вопрос о загрузке системы непосредственно с HDD актуален. Как сделать раздел системным?Пока в процессе доработки. Выложу попозже.


Там есть файловые менеджеры, например, Zeep commander. Я хочу сделать так же и на своём HDD.Не получится, поскольку эти менеджеры заточены исключительно под контроллер дисководов. Они даже списки файлов составляют посредством прямого считывания секторов дискет, обращаясь к напрямую к функции чтения сектора в ПЗУ контроллера.
Еще один минус этих менеджеров - они затирают область памяти &HBF60, так что сохранение бейсик-программ на диск в них не работает.

Я уже наполовину написал свой файл-менеджер. Только сейчас пришлось отвлечься на пару недель и еще недельку не смогу взяться. Но все равно допишу, основные проблемы уже решил и дело за малым.

- - - Добавлено - - -


На плате контроллера есть место под установку разъема питания жесткого диска. То есть, предусмотрено его питание тоже от компьютера?
Питать винт конечно можно, но лучше не нагружать старенькие блоки питания. Я вопросы запитки устройств от самой "Суры" решил просто - поставил в корпус маленькие импульсные БП от зарядников и +5В и +12В с них вывел непосредственно на разъемы расширения. Ничего сложного, зато теперь не боюсь подключать к ним все что душе угодно.

Arix
09.03.2019, 11:57
Я умощнил свой блок питания. Спереди от платы блока питания есть немного места. Там я закрепил радиатор размером примерно 50х40х5 мм, КРЕНку поставил на него. Она теперь просто тёплая. Хотя и родную конструкцию с "микро"радиатором гонял несколько часов, ничего не случилось, но всё же было боязно. Мой жесткий диск Conner Periferals CP30101 (121 Мб) потребляет примерно по 100 мА по 5 и 12 В. Но при разгоне пластин по 12 В идет 700 мА несколько секунд. Головки, я так понял, питаются от 5 В, т.к. при обращении к диску ток по 5 В посдкакивает до 300 мА, а по 12 В почти не меняется. Выход 5 В достаточно мощный, доработки не требует. Здесь может быть проблема в тонком и длинном проводе в шлейфе IDE, который используется для подключения. На нём может много упасть при запуске винчестера. Поэтому я допаял неиспользуемые провода. -12 В контроллером не используется, я его перекинул на +12 и соединил "соплёй" контакты 35 и 36. Оба провода припаял на вывод 48 разъема, подключаемого к "Суре". Так же усилил "землю", ведь по ней идёт суммарный ток, это не три фазы на переменке. Использовал пустые провода 37 и 38, припаяв их к соединив их к 49 выводу "Суры", а на плате контроллера соединив с 39, 40.
https://i.ibb.co/XxGQn3V/image.jpg (https://ibb.co/XxGQn3V)

Эх, в те далекие лихие 90-е я о таком даже и не мог мечтать! Мечтал только о дисководе. А жестких дисков в 1992-м году (когда купил "Суру") я и в глаза не видел, даже на картинках, хотя знал об их существовании. Купишь кассету с программами, ставишь её вo что-то вроде "Электроники-302", запускаешь загрузку, стоишь рядом на коленях и непрерывно молишься, чтобы не узреть любимейшую фразу "Device I/O error". Потом, когда я купил нормальный магнитофон, а именно Маяк М242, я стал атеистом. :) С него почти всё грузилось, а уж записанное мною - 100 %.

Я заметил, что некоторые игры, загруженные с жесткого диска, идут гораздо быстрее. Например, "Пожарный", где надо спасать мышек из горящего здания. Я тут где-то спрашивал, почему на "Корвете" эта игра идёт гораздо быстрее. А теперь и здесь она идёт так же. А в "Тяп-ляп" вообще тяжело играть, она идёт слишком быстро.

ivagor
09.03.2019, 12:19
Я заметил, что некоторые игры, загруженные с жесткого диска, идут гораздо быстрее. Например, "Пожарный", где надо спасать мышек из горящего здания. Я тут где-то спрашивал, почему на "Корвете" эта игра идёт гораздо быстрее. А теперь и здесь она идёт так же.
В игрушках HUDSON, адаптированных на советские компьютеры, есть набор относительных задержек, если их можно так назвать. Т.е. если игровой процесс в целом медленный и разогнать его не получается, то можно ускорить движение отдельно главного героя, и будет казаться, что игра работает быстро. В "классических" адаптациях на ПК8000, на вектор и другие компьютеры так делали. Не очень хорошо то, что игровой процесс при этом несколько меняется, т.к. главный герой становится заметно быстрее противников. Возможно и раньше для ПК8000 были варианты с разными наборами задержек, но теперь они точно есть. Мы с Tim0xой при адаптации старались или сохранить оригинальные задержки или менять их очень мало, при этом игровой процесс разгонялся по максимуму. Но т.к. 8080 медленнее z80, а у ПК8000 еще и частота меньше MSX и очень суровые тормоза, то создается впечталение, что наши адаптации "медленные", если сравнивать с хакнутой классикой.

Arix
10.03.2019, 17:43
Поделитесь пожалуйста программой cas2com. Нигде не могу найти.

Arix
10.03.2019, 22:24
Когда бейсик программа уже в памяти, набираем и выполняем в интерпретаторе:
FOR I = 0 TO 16: Y= PEEK(&H7FF7+I): POKE (&HBF60+I),Y: NEXT

Что-то оно сильно глючит. Небольшие программы нормально сохраняет, например, Минёр, Тест с родной кассеты. А большие программы получаются битые. Например, Клад с этой же кассеты. При выполнении этой команды в Бейсике компьютер может долго думать, либо вовсе зависнуть.
Я попробовал это в эмуляторе. Команда в Бейсике на больших программах нормально отрабатывает, но DSAVE пишет "Неверное имя диска". Я указываю А.

Похоже, дело не в размере программы. КЛАД получилось пересохранить. Без проблем пересохранилась программа FOOTBAL.COM (25 кб). А вот мои программы - никак.

DemonId7
13.03.2019, 06:29
Поделитесь пожалуйста программой cas2com. Нигде не могу найти.
Здесь (https://zx-pk.ru/threads/8377-pk8000-utility.html?p=825070&viewfull=1#post825070)


Что-то оно сильно глючит.Глюков быть не должно, проверял неоднократно на разных программах. Откуда брали DSAVE?

Arix
14.03.2019, 21:19
DSAVE брал из образов дисков, которые в "Софте старом и новом". Но я думаю, он тут не причем, т.к. ещё в Бейсике при вводе данной команды Бейсик надолго задумывается или вовсе зависает. Дсейву достается мусор. Однако, в эмуляторе эта команда проходит нормально, но там DSAVE пишет "Неправильное имя диска".

DemonId7
14.03.2019, 23:27
Но я думаю, он тут не причем, т.к. ещё в Бейсике при вводе данной команды Бейсик надолго задумывается или вовсе зависает.
Не должен тормозить, ведь это простая пересылка 17 байт с участка памяти, который при перезагрузке будет затёрт регистрами контроллера FDD.
Похоже с компом что-то не то. К нему только контроллер HDD подключен?

Arix
15.03.2019, 12:05
Только контроллер НДД. Если с компом было бы что-то не то, я думаю, я бы это уже заметил. Программы не глючат, а я их уже много позапускал. Я попробую отключить контроллер, загрузить с "магнитофона" эту же программу и запустить эту команду.


ведь это простая пересылка 17 байт с участка памяти, который при перезагрузке будет затёрт регистрами контроллера FDD.
Вот оно для чего! Значит, если бейсик-программа меньше 16 кб, эту команду можно и не запускать? Перенос происходит в область от 48992 байта. Если память глючит в этой области? Не всякая программа до неё доберётся, это же 32 кб её размера. Поэтому с работой программ я глюков не замечал. А можно сделать перенос в другую область? Но всё равно странно: если в переносимой области нет данных программы, то всё копируется нормально, а если она занята программой, то происходят глюки.

DemonId7
15.03.2019, 17:20
Я попробую отключить контроллер, загрузить с "магнитофона" эту же программу и запустить эту команду.Желательно попробовать.

это же 32 кб её размераНет. Программа располагается по адресам 4000h-BF00h. Значит до 7FF7 будет чуть менее 16Кб.

А можно сделать перенос в другую область?Да, конечно. В DSAVE.COM по смещению 4Dh (от начала файла) есть байты: 21h, 60h, BFh. Это как раз часть кода, отвечающая за восстановление области 7FF7h:

RAM:014D lxi h, 0BF60h
RAM:0150 lxi d, 7FF7h
RAM:0153 lxi b, 17
RAM:0156 call _memcpy ; copy from HL to DE, with BC length

Меняете BF60 на что-то другое и пробуйте. До C400h память в принципе свободна.

Arix
16.03.2019, 00:05
Нет. Программа располагается по адресам 4000h-BF00h. Значит до 7FF7 будет чуть менее 16Кб.
Нет, я имел в виду область, куда копируются данные - BF60, а это 48992. От 4000h (16384) до неё около 32 кб.
Кстати, я пишу десятичные значения:
FOR I = 0 TO 16: Y= PEEK(32759+I): POKE (48992+I),Y: NEXT
Так проще.

Итак, результаты эксперимента. Без HDD - то же самое.
Загружаю свою программу. Пищу просто FOR I = 0 TO 16:NEXT. Как-то долговато оно выполняется, где-то секунды две.
Сделал так: FOR I = 0 TO 16: Y= PEEK(32759+I): PRINT Y;:POKE (48992+I),Y: NEXT.
Выводится девять нулей, дальше идут 255. Но на вывод каждого числа уходит 4 секунды, на 15-м процесс стопорится. Дальше ничего не происходит, останавливаю через УПР+СТОП. Делаю FOR I = 0 TO 15 - так же медленно, но команда успешно завершается.
Загружаю небольшую программу, например, Минёр. Не пишу команду копирования, сразу жму reset, запускаю DSAVE, сохраняю. Выключаю и включаю комп, запускаю сохраненную копию программы - всё нормально. Вывожу листинг программы - никаких глюков и абракадабр. Ввожу FOR I =... Всё выполняется моментально.

Ещё меня смущает, что не работает оператор FRE. Я пишу FRE(0), а мне в ответ - 2 Error. Но раньше-то работало! Правда, это было очень давно.

А теперь я опять загрузил свою программу, без FOR I = 0 TO 16: и т.д. сразу перезагрузил, сохранил через DSAVE - программа работает нормально. Её cas-файл в формате CSAVE весит 13919 байт, не достает до этой области.

Я доделаю эту программу и дам её вам, проверите у себя. Последний раз я её запускал ещё в 90-х.

ivagor
16.03.2019, 06:54
Ещё меня смущает, что не работает оператор FRE. Я пишу FRE(0), а мне в ответ - 2 Error.
Или пзу частично "заросло" или озу сбоит. Начать наверно проще и лучше с проверки пзу (сохранить и сравнить на пк с имеющимися вариантами).

- - - Добавлено - - -

Первый раз не обратил внимание

не работает оператор FRE. Я пишу FRE(0), а мне в ответ - 2 Error.
Если именно так писать:
FRE(0)
то 2 Error в ответ нормальная реакция, т.к. FRE функция, не оператор. А вот если ругается на
PRINT FRE(0)
тогда стоит проверить пзу.

Arix
16.03.2019, 09:36
А вот если ругается на
PRINT FRE(0)
Работает. Но я так тоже писал, но, видимо, я писал FREE вместо FRE.
Интересно. При пустом Бейсике показывает -18651, а когда загружена программа, то больше. Например, -32761. И почему со знаком минус?

ivagor
16.03.2019, 10:37
-18651dec в дополнительном коде=0B725hex, если в прямом коде, то =46885dec.
Особенность преобразования в десятичное представление в данном (и не только в данном) бейсике, если старший бит слова =1, то число считается отрицательным. От 0 до 32767dec (7FFFhex) будет положительное число, от 32768 (8000hex) и больше будет -32768 и дальше.

ivagor
16.03.2019, 12:39
Оффтоп, чудеса математики ПК8000
Если при отсутствии программы сравнить
PRINT FRE(0)+65536
и
PRINT(FRE(0)+65536)
то окажется, что они дают разные результаты :)

ivagor
17.03.2019, 07:07
чудеса математики ПК8000
Справедливости ради надо написать, что так не только у ПК8000, но и у всех потомков микрософтовского бейсика, у которых есть функция FRE (попробовал вектор, корвет, львов, искру-1080, дальше поленился проверять). Каждая пара скобок задействует стек и свободное место уменьшается (можно еще скобок добавить и стек еще просядет). Кстати, вот другой курьезный вариант:
PRINT 0+FRE(0) (или PRINT 1*FRE(0), думаю тут идея тоже ясна)
Заканчиваю с оффтопом, но это было забавно.

Arix
19.03.2019, 19:18
Я заметил, что некоторые игры, загруженные с жесткого диска, идут гораздо быстрее. Например, "Пожарный", где надо спасать мышек из горящего здания.
Хм... Загрузил этого пожарника со своей кассеты. Он так же быстро бегает. А раньше он медленно ползал! Правда, у меня тогда была другая "Сура", купленная в 1992-м году. В 1998-м году она скоропостижно скончалась, когда я воткнул разъем клавиатуры, сместив его на один вывод. Показывала какие-то полосы, сейчас вообще ничего не показывает. Через год на барахолке я увидел такую же Суру в полном комплекте. Купил. Была какая-то мелкая неисправность, это я быстро починил. Именно она у меня сейчас и используется. Но на ней я в Пожарного не играл до нынешних дней. Интересно, что это было? Компьютеры-то одинаковые. Получается, первый тормозил.

Похоже, первый компьютер действительно работал медленнее. Я сейчас попробовал играть в Сталкера (STA3). Я уже не помню, сколько уровней я раньше проходил, больше десяти, вроде бы. Сейчас вообще нереально играть, меня моментально убивают. Я в эмуляторе сохраняю состояние, нашёл, где хранится число жизней, исправил на FF, получил 255 жизней. Дошёл до восьмого уровня и застрял.
68529
Пройти в правую часть совершенно не реально. Противники сыплются непрерывно, как только я туда бегу, они стаей набрасываются на меня, а сзади первый загоняет. А раньше я это место проходил без особого труда. Вот, замедлить бы эмулятор. Не понимаю, как сам разработчик проходил свою игру. Теперь буду пытаться с помощью НЕХ-редактора телепортировать себя в другой угол. Где-то же должны сохраняться координаты персонажа.

cy6
19.03.2019, 22:56
В 1998-м году она скоропостижно скончалась, когда я воткнул разъем клавиатуры, сместив его на один вывод. Показывала какие-то полосы, сейчас вообще ничего не показывает.
Убился пор ВВ55а. Если при этом, ничего не дымило, может и не сильно большой ремонт нужен.

Похоже, первый компьютер действительно работал медленнее.
Как такое может быть на промышленной модели, заведомо одинаковой? Может, у нас реакция уже не та. :)

Arix
19.03.2019, 23:26
На счет реакции - это да. Но не настолько же! На первом компьютере пожарный реально медленно ползал. Сейчас уже с трудом вспоминаю, но на нём были ещё какие-то глюки, которых нет на втором компьютере. Вроде, в конце некоторых бейсик-программ вылезала абракадабра. Чтобы её не было, я ставил в конце строку с номером 65535 или какой там максимальный номер.

Arix
25.03.2019, 00:01
На реале играть в игры легче. Это умилятор b2m слишком быстро работает. Да ещё клавиши в нём как-то нечетко срабатывают. Клавиатура на ПК (на котором эмулятор) нормальная. Я прочитИл Сталкера, уже саму программу. Сделал изначально 255 жизней. Уровень, который я привел на скрине, оказался последним. До него я дошёл бы и без чита, т.к. теряю меньше 23-х жизней. Но на этот последний уровень мне 23-х жизней точно не хватает. Однако на реале я с ним мучался не так долго, там противники бегают не так быстро, и клавиши четче работают.

Вчера чуть не спалил винчестер. А возможно, и сам комп. Цеплял его к IBM-PC-совместимому для заливки файлов. А потом, подключая его обратно к Суре, воткнул шлейф, идущий от Суры, вместо контроллера напрямую в жесткий диск. Как у меня всё засвистело! Блок питания в Суре издал отчаянные вопли, загорелись все индикаторы - питание, РУС, РГ. Я тут же его выключил. Сначала я не понял в чём дело. Потом понял и пришёл в ужас. Там же питание, в т.ч. 12 В! Подключаю правильно, включаю. Эти несколько секунд, пока жесткий диск разгонялся, мне показались часами. Вот, он затарахтел, распарковывая головки (или что он там делает при запуске), потом ещё секунда... Загрузка пошла! Слава богу! Всё-таки, сейчас жесткие диски малого объёма в ближайшем Ситилинке или DNS'e не купишь, не стоит их палить.
Однако, это опасно. Шлейфы-то и разъемы одинаковые.

Посмотрел распиновку IDE. 2 и 40 - земля. Получилось КЗ по 5 В. 12 В на в(ы)ход DA2 винчестера - это не очень хорошо. Но, видимо, блок питания Суры из-за перегрузки не выдал их в полном объеме.

ivagor
25.03.2019, 05:57
умилятор b2m слишком быстро работает
Emu80 (https://zx-pk.ru/threads/27488-emu80-v-4.html) в игрушках обеспечит скорость практически как у реала.

DemonId7
30.07.2019, 20:41
Добавил новую прошивку для контроллера IDE: здесь (https://zx-pk.ru/threads/23229-pk8000-zagruzka-s-vneshnikh-nositelej.html?p=748692&viewfull=1#post748692)
Файл прошивки: PK8000_HDD.BIN

Platonoff
09.08.2021, 17:25
Приветствую
А ни у кого платок чистых, или может собранного девайса на продажу нет,
Не хочется заказывать 5 плат... ну или может кому нужны чистые платы, тогда могу заказать и разобьём заказ?

P.S. Платы заказал, по приезду излишек выложу на барахолку

razer
16.08.2021, 12:09
У меня есть пк8000,тоже бы приобрел устройство для загрузки.

Arix
08.06.2023, 20:57
Ну вот, облагородил.

https://i.ibb.co/V2WCbzM/SAM-1925.jpg (https://ibb.co/9s94B1y)
https://i.ibb.co/0MFx2Dr/SAM-2101.jpg (https://ibb.co/cFCj3gQ)
https://i.ibb.co/bK7Pkh0/SAM-2102.jpg (https://ibb.co/0GQcxN7)

Корпус типа SCSI-box для размещения в нем двух жестких дисков SCSI. С блоком питания и вентилятором. Я поставил в него жесткий диск с платой контроллера, всё подошло идеально. Между "Центрониксами" внутри идёт 50-жильный шлейф с двумя разъемами IDC-50. Один из этих разъемов я воткнул набекрень в гнездо на плате контроллера. Оно 40-контактное, пришлось выломать в его корпусе одну стенку. Просто не хотелось делать переходник. И наколол "Центроникс" на шлейф, идущий от "Суры", сохранив при этом разъем IDC. Можно втыкать внешний шлейф в любой из двух разъемов. Долго я искал такой корпус!
Минус - если надо будет что-то закинуть на жёсткий диск, придется вскрывать корпус, чтобы подключить винт к современному компьютеру. Хорошо бы как-то организовать передачу файлов через порт LPT. Есть ли ещё какие варианты? Например, можно ли подключать к данному контроллеру два жестких диска? Один внутри, другой снаружи - его использовать для переноса файлов.

DemonId7
09.06.2023, 07:37
Прошивка контроллера изначально рассчитана на два жёстких диска. Только по дефолту Slave отключен, чтобы не тратить время на его поиск при загрузке. Правда есть пара нюансов.
1) Общее количество логических CP/M дисков на обоих винтах не должно превышать 12.
2) С двумя дисками прошивку никто не тестировал, максимум подключал два винта без CP/M, и оба вроде нормально определялись.

Чтобы создать прошивку для двух HDD, качаем https://github.com/MrDemonid/HDD-Controller-PK8000
В подкаталоге SRC открываем файл CONST.I80 и меняем:
SLAVE_ENABLE equ 0
на
SLAVE_ENABLE equ 1
Запускаем MAKE.BAT, и в подкаталоге ROM должна появиться новая прошивка.
Да, еще. Загрузчик при старте проверяет целостность прошивки ПЗУ, поэтому, чтобы не вычислять самому CRC (последний байт в прошивке), его можно просто отключить:
CHECK_MEM equ 1
меняем на
CHECK_MEM equ 0
Ну или не отключаем, а запускаем так и смотрим какой код выдаст сообщение "bad crc: XX". Тогда из 256 отнимаем это значение и в hex-редакторе записываем его в последний байт прошивки. Вроде так, хотя уже сам точно не помню.

Других способов как-то не создано. Начал было писать обмен файлами через разъём мафона, но не дописал, поскольку к тому времени появился переходник USB-CF, с помощью которого записать на диск так же легко, как на флешку.
Вообще же, я бы просто сделал на задней панели доп. разъем, через который находящийся внутри винт подключался бы к современному компьютеру. Там делов-то, денёк с паяльником посидеть, зато обслуживать диск можно без его извлечения.

Arix
21.06.2023, 22:05
Других способов как-то не создано.
Через порт принтера никак? Через порт магнитофона - это со скоростью порядка 1 кбит/с...


Вообще же, я бы просто сделал на задней панели доп. разъем, через который находящийся внутри винт подключался бы к современному компьютеру.
Доп. разъем, в принципе, уже есть. Они соединены между собой кабелем SCSI-50, можно с верхнего разъема этот кабель снять и наколоть на него кабель IDE, идущий от контроллера и жесткого диска. Только вот, не будет защиты от дурака, разъемы-то одинаковые. Я уже и так два раза путал разъемы на плате контроллера, втыкал кабель, идущий от "Суры" в разъем для винчестера. Один раз даже подпалил ПЗУ - прошивка слетела, и ПЗУ после этого не с первой попытки прошилось.
А в приниципе, можно же вместо второго "Центроникса" поставить IDC-вилку.


Там делов-то, денёк с паяльником посидеть
Да я тут даже без паяльника обхожусь, использую накалываемые разъемы.


качаем https://github.com/MrDemonid/HDD-Controller-PK8000
Простите, а как скачать всё одним архивом? Я всю страницу облазил и не нашёл. Только когда натравил на страницу Download Master и выбрал "закачать все ссылки", он выдал ссылку на ZIP. Значит, она где-то есть на странице, но я её не нахожу.

ivagor
22.06.2023, 07:06
Через порт магнитофона - это со скоростью порядка 1 кбит/с
Это не принципиальное ограничение железа, просто отсутствие ПО. На векторе получилось 11700 бит/секунду через магнитофонный интерфейс, думаю на ПК8000 6-8 кбит/с реально.

Pyk
22.06.2023, 11:48
Простите, а как скачать всё одним архивом? Я всю страницу облазил и не нашёл.
Справа вверху зеленая кнопка "Code" со стрелкой вниз. Нажать и выбрать "Download ZIP".