- Эмулятор БК на Java, о необходимости которого так много говорил Брухис ...
- [+] Старые сообщения (263)
-
? Alexander "Sandro" Tishin@ - 13.01.2021 02:54
И было спрошено, а зачем это, кроме как для написания нескольких демок. Вопрос, разумеется, грубый. Но справделивый. Поскольку, зачем?
¤
И вот возник у меня вопрос: а может, взять все осмысленные комбинации 3 цветов + чёрный, м забать их в таблицу, да и так и спользовать, поддердиая овместимость с 11М?
¤
Так вот по моим подсчётам, что выходит. Приходится пожертвовать фиолетовым, правда, но остальных интересных комбинаций цветов всего 20 штук. Причём этот набор сильно пресекается с набором палитр 11М, в 5 бит всё влазит, и ещё остаётся место для окрашенных 1-бит режимов.
¤
Вся модификация для БК-0011М -- другая прошивка для 556РТ4, пара корпусов мелочи, несколько порезов и проводков.
¤
Все старые игрушки перекрашиваются мелкой правкой кода. Без изменения размера.
¤
Но, для вкуса можно спрайты перецветить.
-
? gid - 13.01.2021 08:35
[6.1) SMK, етить. Кто-нибудь может XTCKJDTXTCRBV ZPSRJV объяснить, как же у него на самом деле работает отображение памяти?]
Именно так, как нарисовано в таблице в той, пресловутой документации.
Память делится на страницы по 32Кб, в единый момент времени подключена какая-нибудь одна из страниц. Но страница в свою очередь делится на сегменты по 4кб, которые тасуются между собой в зависимости от режима работы. Разные сегменты разных страниц между собой соответственно никак не пересекаются.
¤
[Официальная документация написана ретикулянцами.]
Ну, если над ней помедитировать, становится всё более менее понятно, особенно если заглядывать в схему контроллера СМК-64, а так же в схему А16М. Т.к. СМК - это просто А16М на стероидах.
А вот исходники альтпрошного Ром биоса и РАМ биоса - вот это точно инопланетянамм писалось.
¤
[Есть человеческое описание или хотя бы HDL модель?]
Человеческого описания нет, т.е. все попытки его сделать сводятся опять к той же таблице, что уже есть.
HDL есть, вон там https://forum.pk-fpga.ru/viewtopic.php?f=15&t=492
Но оно гораздо более непонятно. по крайней мере мне. Его тоже инопланетянин писал.
¤
Кстати насчёт мыши. Есть какой либо способ, чтобы согласовать скорость движения реальной ПКшной мыши и мышиного курсора в БКшной проге в эмуляторе, который эмулирует марсианку?
А то у меня фигня какая-то получается. В ксидосе курсор мгновенно летает от одного конца экрана к другому просто от малейшего касания к мыши. В других прогах, поддерживающих мышь - курсор еле ползает, а ПКшной мыши даже стола не хватает для движения.
Насколько я помню, на реальной БКшке с мышью марсианкой такой фигни не было.
-
? KUVO@ - 13.01.2021 09:03
[Будет сделано. на 40000 будет вешаться страница с кодом выбора 1, на 100000 страница с кодом выбора 2. Не номерам из руководства по бк, а по кодам.]
¤
Отличная новость. Спасибо. Не совсем понятно что есть код, я что номер. Если код 1, то это экранная страница 5 (буфер экрана 0). Такой расклад не совсем удобен. Я предлагал именно 1-ю и 2-ю страницы неэкранной памяти. У них коды 0 и 2 соотвественно. Т.е. для их подключения пишем: MOV #5000, @#177716. Именно такое расположение было бы предпочтительнее. Просто если будет подключена экранная страница, то загружаемый bin-файл будет виден, что не есть хорошо. Еще раз спасибо.
-
? Adam Bazaroff - 13.01.2021 12:45
Тогда вообще хорошо бы вынести максимальное кол-во настроек БК при старте во вне... в ini файл там, или в ключи.
И стартовые страницы, и стартовый буфер экрана, и даже палитру с рулоном...
Это не только для разработчиков полезно будет, это важно для распространения среди жильцов ЖЭКа, которые не умеют пользоваться эмулятором. Например — запуск 256 байтовых интр. Но СМК, конечно, важнее.
-
? Alexander "Sandro" Tishin@ - 24.01.2021 19:54
Спасибо, понятно. Ну, значит, пока что SMK будет работать так, как в документации. Кто не спрятался -- я не виноват. С мышью я сейчас экпериментирую -- да, есть странности разные с опросом в разных программах. Пока сделал так, чтобы ксидос работал, ну и всё остальное вроде бы понимает. Чтобы не летало, сделал множитель скорости 0,2 -- приемлемо, на мой вкус. Надо будет потом вынести в конфигурацию. А так, похоже, мало кто толком понимал, как опрашивать мышь.
¤
Ну пусть будет эквивалент MOV #5000, @#177716. Один фиг при штатном пуске это ни на что не влияет.
¤
Мне очень не хочется выносить в .ini настройки, потенциально ломающие эмуляцию (стартовый адрес и т.д.). Кто-нибудь обязательно запишет туда ерунду, всё поломается, и ура ;(
¤
Ключи -- это другое дело. Они же на виду.
¤
А рулон, например, в реале при загрузке может оказаться в любом положении. Я бы не стал на него полагаться. Лучше инициализировать ручками. То же самое касается страниц и т.д.
В общем случае, нам всё равно ничего не гарантируется. Такая вот печаль.
-
? Alexander "Sandro" Tishin@ - 26.01.2021 00:50
Чтобы не тянуть резину, выложил 0.6-alpha4
¤
Основное:
1) Джойстик теперь, как в JoyVox, но только один. Заодно переназначил гашетки на более анатомические позиции, теперь первая -- это 0/., вторая - +/Enter. Select, Start -> /, *.
2) Мышь. Пока отключить никак нельзя. В младшем байте, то есть поверх джойстика. Захват -- щелчок в окно эмулятора, отпустить -- Ctrl+щелчок. Поддерживаются две кнопки.
3) При использовании ключа -bin в режиме 11М размещение ОЗУ соответствует MOV #5000, @#177716
4) Теперь есть скриншот в Clipboard (Ctrl+F12).
¤
Ну и всякие мелочи.
¤
На очереди теперь полноэкранный режим, исправление синхронизации кадров, SMK, и запись видео. Уж не знаю, в каком порядке получится.
¤
http://sandro.pdp-11.ru/
-
? KUVO@ - 26.01.2021 06:53
Не знаю где тут ставятся лайки, но на словах скажу - это очень хорошая новость. Спасибо за поддержку такого нужного инструмента.
-
? Adam Bazaroff / Excess team@ - 28.01.2021 14:01
Супер! Большое спасибо за новую версию!!!
-
? KUVO@ - 29.01.2021 10:48
Alexander "Sandro" Tishin@ В документации не нашел упоминание о 34-м векторе перехвата команды TRAP для БК-0011. Существует ли такая возможность перехвата? И если нет, то планируется ли в новых версиях?
¤
P.S. Версия 0.6 alpha 4, мой код приблизительно такой:
¤
MOV #MYTRAP, @#34
MTPS #0
¤
...
¤
TRAP 0
.WORD PARAMETR
¤
...
¤
MYTRAP:
...
ADD (PC), (SP)
RTI
¤
При этом выходит в монитор. Хотя В gid-эмуляторе полет нормальный.
-
? Alexander "Sandro" Tishin@ - 30.01.2021 00:42
А зачем его как-то документировать? Это же стандартная инструкция PDP-11, от EMT отличается только опкодом и вектором.
¤
Вот соответствующие фрагменты кода эмулятора:
¤
//регистрация опкодов при инициализации декодера команд
// ...
register_opcode(0104000, MASK_BRANCH, OP_EMT);
register_opcode(0104400, MASK_BRANCH, OP_TRAP);
// ...
¤
// Интерпретация декодированных команд
// ...
case OP_BPT:
trap(014);
break;
case OP_IOT:
trap(020);
break;
case OP_EMT:
trap(030);
break;
case OP_TRAP:
trap(034);
break;
// ...
¤
Неясно, отчего бы ему не работать? Кстати, десяточный бейсик не работал бы, он же весь на TRAP сделан, если я правильно помню. (Или это бейсик от DEC так сделан? Подзабыл уже.)
¤
В общем, можно минимальный, 10..20 команд, тест?
-
? KUVO@ - 30.01.2021 01:35
Написал тест, можно забрать по ссылке: https://yadi.sk/d/03Jwvy-D0jXUnw Внутри исходный текст и bin-файл.
-
? KUVO@ - 30.01.2021 01:42
Запускал ^^^^ с ключом -bin, может в этом причина
-
? Alexander "Sandro" Tishin@ - 30.01.2021 06:32
Именно в этом и причина. Сейчас при загрузке через -bin машина не инициализирована никак. Соответственно SP = 0. Отчего любые попытки писать в стек приводят к Trap to 4.
¤
Если грузить из монитора командой L, то TRAPTST работает.
¤
Сделаю SP = 1000, пожалуй. Пусть будет.
¤
Выложу завтра, наверное. Сейчас мне через два часа на работу.
-
? Alexander "Sandro" Tishin@ - 30.01.2021 06:46
А нет, стек при опции -bin таки ставится куда надо. Сам же сделал и забыл уже. Буду смотреть более детально. Но не сейчас.
-
? Alexander "Sandro" Tishin@ - 30.01.2021 07:04
А, всё понял. Таймер-то при старте разрешён. MTPS #0 и поехали по таймерному прерыванию на рестарт.
-
? gid - 30.01.2021 09:01
А почему он разрешён? По схеме, по сигналу ACLO он (в том числе) запрещается инициализацией в 0 выходов триггера D35 К555Тм9
Т.е. после включения питания и после инициализационной последовательности DCLO-ACLO запрещается таймер, устанавливается отображение буфера экрана 0, и устанавливается палитра 0.
-
? Alexander "Sandro" Tishin@ - 30.01.2021 19:08
Потому, что косяк. :(
¤
Когда делал поддержку 11М, то схемы под рукой не было, так что писалось по официальной доке и по наитию. Потом перепроверить забыл.
¤
Завтра буду чинить всё.
¤
Эх, надо бы полный макет БК на Verilog собрать, и сомнительные места проверять на нём. Заодно и нормальную Э3 надо бы нарисовать и отконвертить в общечитаемый формат вроде svg. Мечты, мечты ...
-
? Alexander "Sandro" Tishin@ - 30.01.2021 19:25
Кстати, если кому интересна мышь, то просьба проверить корректность её работы. Сейчас она сделана несколько хакнутым образом, но если всех устраивает -- то так и останется на неограниченное сверху время.
-
? Alexander "Sandro" Tishin@ - 31.01.2021 15:45
gid, а это ничего, что у БК инверсная шина? Надо всё же смотреть схему. Потом посмотрю.
¤
В любом случае, выложил версию с мелкими правками:
¤
Добавлены ключи -nohud (не показывать оверлей эмулятора), -trace [address] (выводить трассу исполнения команд после срабатывания ловушки по адресу address, либо сразу), при загрузке с ключом -bin запрещены таймерные прерывания.
Если ничего из этого не нужно, то можно не обновляться.
http://sandro.pdp-11.ru/
¤
-nohud гасит оверлей только полсле получения первого отрендеренного кадра; это сделано на случай, если эмулятор зависнет при старте.
-trace пишет трассу в файл cputrace.log в текстовом виде, с дизассемблером. Параметр -- ловушка PC, после которой начинается вывод. Чтобы не дампить начальную инициализацию и т.д. Если не указано или ноль, то трасса выводится с самого начала.
Места на диске нужно МНОГО. На 11М загрузка ANDOS до появления вращающейся надписи занимает примерно 40МБ.
-
? gid - 31.01.2021 17:40
Ничего, значит я просто со всем этим ошибся, тогда выставляется палитра 15.
Для таймера всё верно.
"1" в порт 177662 ("0") на шине и выходе D35 - запретить таймер,
"0" в порт 177662 ("1") на шине и выходе D35 - разрешить таймер.
А буфер экрана значит устанавливается №1 - 6я страница
"0" в порт 177662, ("1") на шине и выходе D35, "0" на выходе D33.2 - буфер экрана 0
"1" в порт 177662, ("0") на шине и выходе D35, "1" на выходе D33.2 - буфер экрана 1
Мне не приходило в голову, что можно начинать использовать железо без его инициализации, поэтому у меня в эмуляторе всё по умолчанию устанавливается почти неправильно, так, как после инициализации.
-
? Alexander "Sandro" Tishin@ - 01.02.2021 22:06
Мне тоже не приходило. Поэтому при старте просто всё обнулялось, кроме PSW, куда писалось 340. Ну и начальный PC, само собой.
- << Форум