- Вопрос про эксплуатацию СМК-512
-
? maxstudios - 02.11.2019 02:40
Всем привет! :) Приобрел СМК-512, ура! :)
Закинул предлагаемый на pk-fpga образ через USB Image Tool, всё работает на БК.
Но сразу возник вопрос - через какие программы на РС работать с этой нестандартной БК-шной флешкой CF (или её образом)?
Как просматривать/добавлять/удалять диски, или файлы на этих дисках, работая на РС?
То есть, если написать программу в эмуляторе, то как её засунуть на флешку CF от БК?
И наоборот - если написать программу на БК, как её перенести/сохранить с CF на РС?
Поделитесь опытом, пожалуйста. :)
-
? gid - 02.11.2019 09:43
Никак. Программу для работы с образом винчестера БК так никто и не написал.
Дмитрий (ник на этом форуме) говорил, что пишет, но до сих пор никак не напишет.
У меня тож не выходит каменный цветок, Вроде, чего там думать, взять и скрестить BKHDDTool и BKDE, а вот фиг, не получается конечный результат.
-
? maxstudios - 02.11.2019 09:50
gid, получается что связи БК и РС через СМК-512 нет?
Остаётся только через дисковод и дискеты, по старинке?
-
? Дмитрий - 02.11.2019 12:38
Пока только один вариант: дербанить образ винта на образы дисков и с помощью BKDE копировать файлы. Потом собирать обратно и заливать на флэш.
¤
Программу я писал, первый вариант был пробой пера (обкатка работы с форматами), потом переписывал. Сейчас то, что есть (примитивный аналог 2-х панельного файлового менеджера), работает, бродит по образу винта и дисков, по папкам, но нет никаких файловых операций. В свое время затык был в том, что не придумал - как определить, что в обоих панелях открыт один и тот же образ диска для выполнения операций.
¤
>> взять и скрестить
gid, а если чуток переделать BKDE и научить ее работать с образом диска в памяти? Тогда можно было бы выбрать образ диска в образе винта, загрузить его целиком в память (до 32 мб не такой уж и огромный объем) и далее в памяти производить манипуляции с файлами, а потом выгрузить обратно образ диска в образ винта.
-
? maxstudios@ - 02.11.2019 12:50
Дмитрий, а чем и как "дербанить образ винта на образы дисков.."?
-
? maxstudios@ - 02.11.2019 13:07
Дмитрий, уточню вопрос - на БК или на РС дербанить образ винта на образы дисков?
Что за программа BKDE - для РС или БК, что она может, где её взять/скачать?
-
? gid - 02.11.2019 13:22
BKHDDTool и BKDE - утилиты, которые идут в комплекте с моим эмулятором, находятся в директории Tools.
¤
Дмитрий, там всё проще. BKDE умеет заходить внутрь логических дисков в образе диска, достаочно указать функции обработки образа смещение относительно начала файла, т.е. там вообще не надо ничего придумывать, вся проблема заключается в создании удобного пользовательского интерфейса, с помощью которого можно выбирать нужный логический диск в образе винчестера.
Так же я не знаю как написать UI для визуального редактирования таблицы разделов, чтобы можно было мышкой изменить размеры лог.диска, переместить лог диск, удалить, создать.
И главное - написать одну прогу с трансформным интерфейсом, для образа дискеты - одним, а для образа HDD - другим, чтобы не писать две почти одинаковые проги.
-
? maxstudios@ - 02.11.2019 13:42
gid, вопрос к Вам насчет программы BKHDDTool - как она работает, что может, чего не может?
-
? maxstudios@ - 02.11.2019 13:51
gid, ещё вопрос - я взял образ HDD в формате .img с сайта pk-fpga (под названием 1gb_test5-3, который на CF заливается), перевел его программой BKHDDTool в формат .hdi, и что дальше делать с этим созданным образом?
-
? Дмитрий - 02.11.2019 14:03
>> а чем и как "дербанить образ винта на образы дисков.."?
Кто-то выкладывал программу, которая раскладывает образ винта на образы дисков. Две программы под DOS (.com) - разложения и сборки. Есть еще одна под винду, если мне склероз не изменяет, сборки образа. Terra выкладывал.
¤
>> Так же я не знаю как написать UI для визуального редактирования таблицы разделов, чтобы можно было мышкой изменить размеры лог.диска, переместить лог диск, удалить, создать.
Та же проблема и у меня была. Самое простое, что придумал, панель как в файловом менеджере. Работа с разделом под курсором, создание раздела как создание папки, единый интерфейс для всего.
-
? maxstudios@ - 02.11.2019 14:10
gid, ещё вопрос - эмулятор в конфигурации с СМК-512 также не поддерживает образы HDD?
-
? maxstudios@ - 02.11.2019 14:19
Дмитрий, попробую поискать по сообщениям Terra.
У меня ещё вопрос насчет расширений этих образов HDD - уже столкнулся с .img, который заливается на CF через USB Image Tool, затем с .img, который является образом дискет, и понимается эмулятором, и теперь ещё появился .hdi, который является "виртуальным жестким диском БК".
Всё какие-то разные форматы, которые никак между собой не дружат вообще, ни через одну программу.
Какой бардак! :)
-
? Дмитрий - 02.11.2019 16:13
.hdi - это образ винта img с прикрученным заголовком, который получается от винта по АТА-команде 0xEC.
¤
https://dropmefiles.com/MCP4J - bkhdd
-
? maxstudios@ - 02.11.2019 16:54
gid, по ссылке gid.pdp-11.ru версия BK_v3.10_x86.rar почему-то выдаёт ошибку - рисует 2 окна и тут-же вылезает окно винды с ошибкой. Тут скрин экрана: https://imgsrc.ru/maxstudios/a2194981.html
У меня WIN7х86 установлена. Буду пробовать версию для WIN ХР.
-
? gid - 02.11.2019 19:00
[BKHDDTool - как она работает, что может, чего не может]
Консольная утилита. BKHDDTool /h - справка параметрах командной строки.
может разобрать образ винчестера на разделы (лог.диски) и может обратно собрать.
не может сохранить содержимое резидентных модулей в мбр альтпро при разборке и обратной сборке
¤
[и что дальше делать с этим созданным образом?]
теперь его можно подключить как виртуальный hdd к эмулятору в диалоге "Настройки эмулятора", подключить можно в любой конфигурации, но работать с ним можно только в конфигурациях с контроллерами СМК и Самара, в остальных - просто бессмысленные строчки в ини файле будут.
¤
[эмулятор в конфигурации с СМК-512 также не поддерживает образы HDD]
эмулятор в конфигурации с СМК-512 как раз таки поддерживает образы HDD, в собственном формате
¤
[Какой бардак!]
Писать один универсальный контейнер, в котором будут храниться все возможные форматы образов уже поздно. Уже понаписано горы софта, работающего со своими форматами.
¤
[почему-то выдаёт ошибку - рисует 2 окна и тут-же вылезает окно винды с ошибкой]
У меня, к сожалению, работает.
[Тут скрин экрана]
Скрин посмотреть нельзя, ибо там написано, что сперва кто-то там должен посмотреть и одобрить фотоальбом пользователя.
-
? maxstudios@ - 02.11.2019 21:25
gid, скрин-фото уже доступно, не знаю что у них за глюк произошел на сайте.
Вот что выдало в окне:
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: BK.exe
Версия приложения: 3.10.1910.7716
Отметка времени приложения: 5db68966
Имя модуля с ошибкой: ig4icd32.dll
Версия модуля с ошибкой: 8.14.10.2117
Отметка времени модуля с ошибкой: 4bcc7e52
Код исключения: c0000005
Смещение исключения: 0006605e
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
-
? maxstudios@ - 02.11.2019 21:29
gid, ещё вопрос - утилита BKHDDTool с какими образами HDD работает? С каким расширением?
-
? Дмитрий - 02.11.2019 22:12
>> ig4icd32.dll
OpenGL для встройки Интел - видимо ему не понравилась инициализация GL-контекста. Поменять рендер в bk.ini в разделе Main.
-
? maxstudios@ - 02.11.2019 23:43
Дмитрий, на что поменять? :)
-
? Дмитрий - 02.11.2019 23:47
На другой рендер - там написаны поддерживаемые.
-
? maxstudios@ - 02.11.2019 23:54
Нашел старую версию Эмулятора у себя на нетбуке, которая работает - 3.8.1410.4183 х86.
Почему новые не работают - так и не понял.
Попробую новые версии запустить дома со стационарного РС. Может, заработают на WIN XP.
-
? maxstudios@ - 02.11.2019 23:57
Дмитрий, все варианты перепробовал, ошибка уже другая, в файле BK.EXE.
Вот такое выдает теперь:
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: BK.exe
Версия приложения: 3.10.1910.7716
Отметка времени приложения: 5db68966
Имя модуля с ошибкой: BK.exe
Версия модуля с ошибкой: 3.10.1910.7716
Отметка времени модуля с ошибкой: 5db68966
Код исключения: c0000005
Смещение исключения: 00059b8f
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
-
? maxstudios@ - 03.11.2019 00:00
У меня поддерживает только OpenGL - интегрированное видео intel GMA 3150.
-
? gid - 03.11.2019 09:42
[утилита BKHDDTool с какими образами HDD работает?]
С любыми, как с посекторным дампом HDD .img, так и с .hdi, ей без разницы
¤
про ig4icd32.dll APPCRASH в интернете пишут, что из-за косячности драйверов, кому-то помогает установка свежей версии дров.
¤
[У меня поддерживает только OpenGL]
В вин7 ещё можно включить Direct2D (для этого нужно установить DirectX redistributable), и самый дубовый рендер VFW (DrawDib) который работает в любом виндовсе.
¤
Подозреваю, что падает из-за того, что VS2017 компилирует прогу с использованием каких-то инструкций, не поддерживаемых старыми процессорами.
версия 3.8.1410.4183 - это было в 2014 году, и собиралось в VS2010 или VS2012 там всё попроще было.
-
? maxstudios@ - 03.11.2019 10:30
gid, утилита BKHDDTool работает только из командной строки? Или из эмулятора?
При запуске напрямую я c помощью кнопки Pause только смог инструкцию немного прочитать.
:)
-
? gid - 03.11.2019 15:17
очевидно, что BKHDDTool консольная прога, и она не может работать из эмулятора, т.к. в эмуляторе нет GUI для работы с утилитой.
[При запуске напрямую я c помощью кнопки Pause только смог инструкцию немного прочитать.]
Это пагубное воздействие всяких тоталкомандеров и проводников. Используйте нормальный файловый менеджер FAR.
-
? Дмитрий - 03.11.2019 20:15
>> Это пагубное воздействие
gid, это не воздействие, а незнание DOS'a :) Есть перенаправление вывода: bkhddtool >1.txt и в текстовом файле будет все, что выведет на консоль программа.
-
? Manwe - 19.09.2020 23:26
Вопрос про страницы памяти. В документации написано:
«При включении режима "All" из режимов Hlt10, Hlt11 в ОЗУ режима "All" по адресу 177130 вписывается 20+КодСтраницы».
То есть в режиме All можно подключать разные страницы. А в режиме Halt нельзя таким же образом, добавляя код страницы? Halt-режим всегда только с нулевой страницей памяти работает? Если так, то это печально.
-
? gid - 20.09.2020 13:59
там написано, что при включении режима "All" из режимов Hlt10, Hlt11, портится ОЗУ по адресу 177130. Потому что оно налагается на область регистров. Т.е. при записи в 177130 кода режима "All", этот код одновременно записывается и в ОЗУ.
В режимах Hlt10, Hlt11 по адресам 177000-177777 подключен сегмент 7 заданной страницы, и если там находился исполняемый код - то он будет испорчен, если какие-либо данные - то они будут повреждены. Поэтому это - дополнительное уточнение, что конкретно данным видом переключения нужно пользоваться очень осторожно.
Режим работы и код страницы - вещи между собой не пересекающиеся и складываются по OR, поэтому с любым режимом можно использовать любой код страницы. Halt-режим - самый обычный режим, не отличающийся от остальных режимов работы с аппаратной точки зрения.
-
? Manwe - 21.09.2020 15:04
Хм, я вот чего не понял: почему когда я устанавливаю режим Hlt11 с нулевой страницей, всё работает, а когда с кодом страницы 2015 - происходит прерывание по 4-му вектору в момент попытки установить режим? Программа переключения режима находится в нижней памяти, не в страницах СМК.
-
? gid - 21.09.2020 16:53
т.е. команда mov #6,@#177130 выполняется, а mov #2015,@#177130 уже вызывает trap to 4?
-
? Manwe - 21.09.2020 17:31
> mov #2015,@#177130 уже вызывает trap to 4?
На следующей команде. Похоже, проблема в обращении к 177130 командой CLR (R4). Если заменить на MOV #0,(R4) - не вылетает.
Пытаюсь понять логику: выходит, установка Halt-режима происходит ещё на команде MOV #2015,@#177130, до того как послан 0, "закрывающий" регистр. В этом случае понятно: CLR сначала читает содержимое 177130, а он уже в области памяти write only, как и должно быть в Halt-режиме.
Но разве так должно работать на реальном железе? Я думал, что пока не послан 0, режим контроллера не переключается.
-
? Manwe - 21.09.2020 17:54
Но самое удивительное, что на эмуляторе MOV #0 и потом CLR работает, не вываливается. А MOV #2015 и потом CLR вываливается. На реальном железе пока не проверял.
-
? gid - 21.09.2020 18:55
ну в документации же написано, что нужно использовать mov #0,@#177130 и нельзя использовать clr @#177130, как раз потому, что регистр 177130 в некоторые моменты по чтению не доступен.
[выходит, установка Halt-режима происходит ещё на команде MOV #2015,@#177130]
да, последняя команда - очистка регистра 177130 вообще не нужна, если нету физических дисководов. Она нужна только для того, чтобы остановить двигатель и погасить лампочки дисководов, после второй команды - которая как раз и устанавливает режим, попутно выдавая мусор в дисководы.
[Но разве так должно работать на реальном железе?]
именно так и работает реальное железо. См его схему.
[Но самое удивительное, что на эмуляторе MOV #0 и потом CLR работает]
потому что эмулятор не может досконально точно сэмулировать устройство. Потому-то он эмулятор, а не симулятор. Там есть допущения, когда регистр 177130 доступен по чтению, когда он не должен быть доступен в реальности.
-
? Manwe - 22.09.2020 22:16
А где почитать документацию? На pk-fpga есть "ПОДРОБНОЕ техническое описание контроллеров АльтПро", но я не на все вопросы нашёл там ответы.
¤
Сейчас у меня засада дисководом в Halt-режиме. По адресу 162364 находится процедура чтения дисковода, она обращается к 177130 и обламывается на третьей по счёту инструкции TST (R5)+
в R5 лежит 177130. Инструкция вызывает прерывание по 4-му вектору - сразу, минуя обработчик Halt-режима. А 4-ый вектор указывает на TST (R5), которая также вызывает прерывание на саму себя и рекурсивно загаживает стек.
Halt-режим включен, но никак в этом карнавале не участвует.
Это всё в эмуляторе я проверяю.
-
? Manwe - 22.09.2020 22:35
Может быть TST (R5) делает read-modify-write и контроллер как-то сходит с ума от этого? Вообще не очень понятна схема "Режимы работы и распределения памяти" - что за "170(177000hdd)-0" и "HDD :170-177000"? Есть где-нибудь человеческая схема?
-
? Manwe - 22.09.2020 23:51
Ivanq помог разобраться: недокументированная функция СМК: не все страницы работают одинаково. Нужно использовать только те, в кодах которых сброшен бит №2. Дикость, конечно.
-
? gid - 23.09.2020 08:43
[На pk-fpga есть "ПОДРОБНОЕ техническое описание контроллеров АльтПро"]
Это и есть документация, + есть ещё схема электрическая принципиальная, из которой можно узнать нюансы работы.
¤
[недокументированная функция СМК: не все страницы работают одинаково.]
Это не недокументированная функция, это наследственная фича. Я всё время про это забываю, У СМК осталось ещё от контроллеров А16 такая штука: установленный бит 2 в 177130 отключает регистры 177130, 177132 по чтению, до тех пор, пока бит 2 не будет сброшен. Это было нужно для работы Бейсика на БК10, и так оно и осталось.
Причём, где-то, в какой-то документации это упоминается, так же как и бит 3, который на БК10 подключает ПЗУ Бейсика, Причём на старых оригинальных СМК-64 этот бит 3 работает, а на старом прототипе СМК-256 и репликах СМК-512 этот функционал уже не реализован.
¤
так что когда я говорил что "последняя команда - очистка регистра 177130 вообще не нужна", я как обычно ошибался, она нужна, и в том числе и для того, чтобы очистить этот бит 2, если он будет установлен каким-то кодом страницы. Правда я через два дня снова забуду про этот бит 2 и снова стану говорить, что регистр можно не обнулять, пока снова не наткнусь на незапланированное поведение, тогда снова вспомню, и так бесконечно.
¤
Так что, использовать можно ВСЕ страницы, просто нужно при установках режимов для записи в 177130 использовать ТОЛЬКО команду MOV и больше никаких других команд. И если жалко двух слов, то для обнуления можно использовать какое-нибудь подходящее значение регистра, где младшие 11 битов равны нулю, а остальные - не имеют значения
-
? Manwe - 23.09.2020 11:13
Проверил на реальном железе, всё так же как на эмуляторе.
_
> репликах СМК-512 этот функционал уже не реализован
Вроде, недавно правили прошивку СМК ради этого. Обнаружили, что не работает Бейсик.
_
> она нужна, и в том числе и для того, чтобы очистить этот бит 2, если он будет установлен каким-то кодом страницы
Вот оно что... Спасибо за разъяснение! Добавил MOV #0 после всех операций со страницами - теперь дисковод заработал независимо от номера страницы. И в эмуляторе, и на реальном железе.
-
? gid - 23.09.2020 20:00
[Вроде, недавно правили прошивку СМК ради этого. Обнаружили, что не работает Бейсик.]
Правили, как раз добавили функционал с отключением регистров 177130, 177132 по чтению битом 2, а то они вообще не отключались и бейсик не работал. Я и правил, получилось как в оригинальном СМК-64, во всех случаях, а не только в режиме 20, как написано там https://forum.pk-fpga.ru/viewtopic.php?f=15&t=492
Серьёзные правки в прошивку внести невозможно, т.к. плата уже разведена и ноги ФПГА уже жёстко заданы. Поэтому когда не хватало то ячеек, то маршрутов, квартус всё советовал перераспределить назначения ног, чтобы нужные ресурсы высвободить, а вот фиг. Пришлось ограничиться самым минимумом.
-
? Manwe - 24.09.2020 17:51
Можно, наверное, ПЗУ СМК поправить, чтобы оно перед вызовом процедуры ENGIN сбрасывало второй бит.
-
? gid - 24.09.2020 19:12
Не надо ничего править, В ПЗУ все операции делаются корректно по алгоритму - mov #6... mov #code... mov #0...
Т.е. после себя оно оставляет всё в целости и работоспособности.
И всем остальным писателям, тоже следует придерживаться этого метода. Тогда ничего не будет глючить. Кстати, в числе 6 тоже есть бит 2 и после записи строба в регистр, он тоже отключается по чтению, но потом туда записывается код режима+страницы, и никто ничего не замечает, а потом, если вдруг забыли сбросить бит 2, начинаются сюрпризы.
- << Форум