![]() |
Quote:
У процессора 1801ВМ1 работа и с аппаратными, и с программными прерываниями в HALT-моде полностью исключена. Наверное, это и не ошибка - ведь ВМ1 при переходе в HALT-моду не переключает младшие страницы памяти, из-за чего находящиеся там вектора не годятся для использования в HALT-моде. Тогда как у ВМ2 (насколько я понимаю) - работа с аппаратными и программными прерываниями в HALT-моде вполне возможна. |
Quote:
Quote:
|
Quote:
Это единственное (если не ошибаюсь) отличие поведения процессора 1801ВМ1 в HALT-режиме от поведения в USER-режиме. Команду EMT можно выполнить в HALT-режиме, но её нельзя использовать в коде, который должен РАБОТАТЬ в HALT-режиме, поскольку запуск блока прерываний, вызванный командой EMT, немедленно переключит процессор в USER-режим. Вот почему работа и с аппаратными, и с программными прерываниями в HALT-режиме процессора 1801ВМ1 полностью исключена. |
Quote:
Quote:
Начнем. 1. Процессор работает в HALT-режиме (бит 8 PSW установлен). Разрешим прерывания сбросом бита 7 для того, чтобы изменялись CPC и CPSW. Насколько я понимаю HALT-режим у ВМ1 устанавливается установкой бита 10 в PSW, он же вроде запрещает одновременно и аппаратные прерывания. Наш процесс будет выполняться в адресах старше 160000. 2. Выполняем команду EMT. Так как у ВМ2 это прерывание USER-режима, то процессор вываливается в режим USER, сохраняет в стеке CPC и CPSW, читает в PC и PSW значение вектора 30(так как это вектор USER-режима, то в PSW записывается только младший байт) и запускает процесс на исполнение. Соответственно сохраненный в стеке CPSW содержит установленный бит 8 (режим HALT). Вопрос:Как у ВМ1 в стеке сохраняется PSW - только младший байт или целиком весь? 3. Процесс по EMT выполнился, выходим по RTI. Так как точка возврата больше 160000, то в PSW копируются все 9 битов и мы снова в режиме HALT. Вопрос:Как у ВМ1 по командам RTI/RTT происходит установка PSW - всего целиком или только младшего байта? Вся соль ситуации еще состоит в том, что у ВМ2 всего один регистр R6, он общий, независимо от режима. Т.е. не так как у ВМ3. Соответственно в архитектуре должно быть предусмотрено общее пространство ОЗУ для USER/HALT или при работе в HALT не надо трогать R6. Либо если тронули, то возвратить обратно, если возможна ситуация переключения в USER. |
Quote:
Quote:
|
+4 игрушки на сборник для эмулятора
1 Attachment(s)
Добавилось четыре игры из архива Арсения, описания и картинки из игрушек тут.
|
2 Attachment(s)
Подправил в эмуляторе:
1. Теперь при отжатии клавиша дает скэн-код того алфавита, при котором была нажата. Должны прекратиться зависания клавиатуры в текстовых играх, которые активно переключают алфавит с помощью управляющих кодов РУС(14) и ЛАТ(15). 2. Реализована поддержка ловушки адреса. Вроде бы работает. Можно опробовать на диске GD.DSK, который выкладывал Vamos. Надеюсь он будет очень рад. На диске GD.DSK стоит посмотреть две демонстрашки - очень красиво. Грузимся с диска GD.DSK. Там есть два логических диска TST1.DSK и TST2.DSK. Автоматом при загрузке они не монтируются. Поэтому введем две команды: MOUNT LD0 TST1 MOUNT LD1 TST2 После загрузим драйвер GD командой: SET GD ON. Для первой демонстрашки введем: ASS LD0 DK RU TST1 В пакете научной графики запускаем демонстрацию командой: @DEM1 После демонстрашки выход в RT-11 команда: EXIT. Соответственно для второй демонстрашки: ASS LD1 DK RU TST2 @DEM2 EXIT |
1 Attachment(s)
Quote:
---------- Post added at 22:43 ---------- Previous post was at 22:34 ---------- (!!!) Нет, если в Патруле быстрого залипания я не дождался, то в "Косынке" (пасьянс) пробел залип прямо сразу !!! Там постоянно идёт РУС\ЛАТ - видно по системной надписи !!! В любом случае погоняю подробнее игрушки в сегодняшней сборке (там где на русский регистр идёт переключение) и если из всех игр останется только Пасьянс - может быть дело уже в самой игре. Посмотрим. (!!!) Хэлп! У меня диск после загрузки просто вешает эмулятор, потом отлипает, как-будто настоящий дисковод подвисает, вот скрин |
Quote:
|
3 Attachment(s)
Quote:
Quote:
Образ GD.DSK переткнул в дисковод 1 и вроде заработало. Так и должно быть? Почему в 0 дисководе не читается, или только у меня так? (*Первая картинка когда дискета в 0 дисководе, вторая и третья - запустился при загрузке в дисководе 1) Красиво, да! Надо-бы видео сделать :wink: |
| All times are GMT +4. The time now is 02:54. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.