- Пара вопросов по эмулятору ув. gid
- [+] Старые сообщения (1119)
-
? gid - 08.08.2023 14:29
Оказывается, я таки трогал код таймера. Я там добавил эмуляцию особенностей процессора 1801ВМ1Г и ситуацию, когда бит 7 устанавливается в регистре 177712 только после второго события таймера. Но не учёл каких-то непонятных нюансов.
Именно поэтому "при старте программы с использованием этого таймера программа просто висит, после повторного запуска все работает как положено".
Нифига не могу понять, почему при двойной инициализации таймера всё работает как положено, в коде верилога нет ничего такого, чтобы это срабатывало.
¤
А на процессоре 1801ВМ1Г, если разрешить прерывания, судя по всему бит 7 в 177712 вообще не будет никогда устанавливаться и все проги, работающие с таймером не должны работать.
-
? Shestipalov@ - 04.09.2023 12:16
Сергей, привет!
Не знаю, может, известный глюк, но тем не менее — перезадание битов джойстика не работает. Изменённые данные не сохраняются. Неработающие контролы на картинке: https://ibb.co/wCTf6tD
Изменить можно, только напрямую редактируя ini.
-
? gid - 04.09.2023 13:01
Нет, это не известный, это совершенно новый глюк. Причина - я банально забыл про сохранение переназначенных битов, клавиши сделал, а про биты забыл. А мне никто не напомнил, что там не всё работает.
-
? Alexander "Sandro" Tishin@ - 12.09.2023 10:11
> Экспериментальные изменения со сбросом бита готовности в 177660, он теперь сбрасывается через некоторое время после чтения регистра 177662.
¤
¤
А каков смысл этого? Реальное железо сбрасывает сразу.
-
? gid - 12.09.2023 11:02
Это нужно для игры Bolder Dash 3, у которой в заставке клавиатура в эмуляторе ведёт себя неадекватно из-за того, что разрешены и обрабатываются прерывания от клавиатуры, и делается опрос получения нового кода клавиши в цикле командами tstb @177660 bpl .-4
Чтобы бит 7 в 177660 не успел сброситься при чтении регистра 177662 в обработчике прерывания.
¤
Может причина в чём-то другом, может в не правильной обработке прерываний. Может вообще где-то глюк, из-за которого сбрасывается бит 7 в PSW. Но этот хак улучшает ситуацию.
-
? Alexander "Sandro" Tishin@ - 12.09.2023 23:09
Это какая их проблемных версий болдера? Я в них запутался уже, мне страшно чинить поддержку болдеров ;)
¤
На самом дела на реале в такой ситуации код должен глючить, но таки ловить нажатие примерно в 60% случаев. Так как проверка прерываний происходит при чтении очередного опкода, кто не успел -- ждёт следующей команды. А за время декодирования опкода битик в порту может и перекинуться ...
¤
Но так делать с флагом как бы некорректно. Я бы лично наоборот выставлял прерывание после битика с задержкой на команду. Или даже на две. ИМХО, так корректней.
-
? gid - 13.09.2023 03:01
В этой теме, начиная с этого поста.
https://zx-pk.ru/threads/9907-pomogite-vspomnit-igru-).html?p=1182523&viewfull=1#post1182523
Там дальше и ссылки будут и описание проблемы.
Как ведёт себя игра на реале, я так и не проверил. Но в эмуляторе, нажатие и ловится если быстро-быстро долбить клавишу.
Я не могу выставлять прерывания произвольно. у меня цикл - { проверка запросов на прерывание, и если есть - генерация, если нету - чтение и выполнение опкода }. Попытки как-то модифицировать цикл приводят к разного рода глюкам, так что я его не трогаю.
Запрос на прерывание от клавиатуры генерируется при нажатии на клавишу клавиатуры ПК асинхронно, а обработается тогда, когда в цикле время придёт.
-
? Shestipalov@ - 07.10.2023 17:11
Сергей, привет!
¤
В Руководстве пользователя эмулятора, в Приложении 2 — Описание ключей в файле «bk.ini», там, где приведены названия конфигураций эмулятора, у тебя адская подстава — в названии конфигурации «BK-0011М» М - русская. В результате, если скопировать название конфигурации из Руководства в cmd-файл, получится нехорошо, конфигурация не включится, и гражданин будет ломать голову, почему :-)
-
? gid - 09.10.2023 08:33
А писал бы гражданин собственными ручками, вместо копипастенья, то и проблем бы у него не возникало.
Русская буква попала туда из-за массовой автозамены. В тексте повсеместно упоминается БК-0011М, вот и получилось так, как получилось.
-
? Дмитрий - 24.10.2023 22:23
gid, я уже чет ваще подзабыл - в БК как ведут себя регистры состояния/ошибки при отсутствующем винте? Как определяем, что винта нет? Drive Ready отсутствует - это понятно, а Busy выставлен всегда? Или только регистр падает в бесконечный Busy после посылки любой команды? В сырцы глянул, но не нашел - видать к ночи башка плохо варит.
-
? gid - 25.10.2023 08:41
Регистры ведут себя как обычно, выдают какую-то информацию.
ПЗУ СМК например проверяет наличие винта так:
Ждёт когда пропадёт сигнал BSY в регистре состояния 1F7, и когда пропал, ждёт, когда появится сигнал DRDY, если появился, значит винт есть, если за достаточно долгое время не появился, значит винта нет или неисправен.
Если винта физически нет, то с шины читаются нули, но данные считаются инверсными, т.е. полагается что все биты установлены, т.е. считается что BSY всегда установлен, и до проверки DRDY не доходит, после довольно долгого ожидания, BSY так и не снимается и всё, считается что винта нету.
-
? Шестипалов@ - 06.12.2023 20:42
Сергей, привет.
.
В телеграммовском чате нашли неточность в эмуляторе:
.
На реальной БК11М в режиме БК10 (с загруженным монитором тобишь) комбинация СУ-АР2-Ж включает режим ЗАП.В эмуляторе — нет.
.
Простенькая программа позволяет понять, что реальной БК11М СУ-АР2-Ж вырабатывает код 226, а в эмуляторе код 266.
.LA 1000
1$: EMT 6
MOV R0,R2
CALL OCTOUT ;вывод восьм числа из R2
MOV #12,R0
EMT 16
BR 1$
Есть мнение, что надо исправить. БК0010-01 не проверяли, но очевидно, поведение такое же.
-
? gid - 07.12.2023 09:33
Там дело не в типе БК и не в загруженном мониторе.
Там опечатка, или старый не подчищенный хвост от переделки эмуляции клавиатуры. Ошибка в таблице раскладки виртуальной кнопочной клавиатуры, там сканкод кнопки V/Ж вместо 0126 стоит 0166, т.е. строчная буква, вот всё и не работает. В виртуальной плёночной клавиатуре такой ошибки нет. И если руками комбинации клавиш нажимать, тоже ошибки нету, единственное неудобство - надо смотреть на раскладку клавиатуры, в русской раскладке надо жать СУ-АР2-Ж, в латинской - СУ-АР2-V
¤
Т.е. СУ-АР2-Ж криво работает только в одном единственном случае из трёх возможных вариантов.
Вот неохота из-за такой мелочи новую версию делать.
¤
Тут вот меня на zx-pk на идею натолкнули - в окошке настроек, где монтируются образы дискет и hdd сделать кнопку для генерации новой чистой дискеты, и чтобы она в дисковод монтировалась. (и сразу предупрежу, с hdd это не прокатит, и не просите) Это сделать совсем не трудно, но вот надо ли? Я такие действия в файловом менеджере делаю, просто копирую первый попавшийся образ под новым именем и использую его как новую дискету. Делать такие вещи из-под эмулятора мне и в голову не приходило. Нужна вообще такая фича кому-нибудь?
-
? Shestipalov@ - 12.12.2023 09:12
>Нужна вообще такая фича кому-нибудь?
.
Лично я поступаю так же — копирую существующий образ, потому инициализирую как надо и так далее. Думаю, и остальные делают так же. Т.е., прям вот такой жёсткой необходимости в этом нет. С другой стороны, инструмент, позволяющий создать образ дискеты вообще с нуля — всё-таки наверно нужен. В общем, лично моё мнение — фишка не помешает, но от её отсутствия сильно страдать никто не будет. Есть более важные точки приложения сил в эмуляторе :-)
-
? Manwe - 12.12.2023 11:22
Чистые диски нужны – их плюс в том, что они забиты нулями и хорошо упаковываются. Я часто делаю образы дискет, на которых мало данных (например, записана одна демка), и мне хочется чтобы размер архива отражал реальный размер программы.
А если просто инициализировать каталог старого образа дискеты, она останется забита мусором и не упакуется.
-
? Shestipalov@ - 19.01.2024 07:02
Сергей, привет.
.
Ещё ошибку в эмуляторе нашли — на виртуальной клавиатуре невозможно ввести символ = (знак равенства).
И на плёночной, что кнопочной не получается.
-
? gid - 19.01.2024 08:57
Качайте новую версию. Там этой ошибки уже нету.
-
? Shestipalov@ - 21.01.2024 17:50
Спасибо за новую версию! На сей раз ошибку в документации нашли:
.
https://gid.pdp-11.ru/books/00001-01.32.03.html#_Toc381877523
.
В Приложении 3 (Таблица кодов символов Микро-ЭВМ) не указана клавиша ТАБ (код 200).
-
? gid - 21.01.2024 18:48
Не вижу никаких ошибок. Я просмотрел оба имеющихся у меня варианта бумажных изданий документа 00001-01.32.03. Нигде клавиша ТАБ (код 200) не указана. Значит её официально нет. Это недокументированная фича.
-
? Shestipalov@ - 21.01.2024 19:06
Вот те раз, клавиша есть, а описания — нету. Почти анекдот :-) Ну может имеет смысл в документации вставить строку с кодом ТАБ рядом с ПОВТ (адрес вектора прерывания — 274), и указать, что в оригинальной документации эта строка отсутствует. Это же явная ошибка.
-
? gid - 22.01.2024 08:32
Ну добавить то не трудно. Тем более что я в распознанных документах исправляю опечатки и замеченные ошибки без указаний, что в оригинальном документе тут ошибка или опечатка.
А как насчёт остальных кодов, которых нет в таблице? Мне вот честно говоря было лень перепроверять по исходникам монитора, что там и как.
- << Форум