А как монитор узнает сколько памяти установлено?
И еще вопрос. Включаются области ПЗУ установкой или сбросом битов в 0177716 Ф1,Ф2?
161012 000167 JMP 160306
160306 005037 CLR @#177644
160312 052737 BIS #14,@#177716
160320 000114 JMP (R4)
Вот после этого куска где установлены оба бита эмулятор правильно выбрал следующую команду или должен был уйти на обработку ошибки обращения к каналу? Это кусок теста процессора на который выход по Т3 с пультового режима.
Сейчас после команды 160320 000114 JMP (R4) происходит прерывание, т.е эта команда выполняется.
Последний раз редактировалось Impartial; 15.11.2011 в 16:43.
При начальной загрузке выполняется чтение/запись ячеек памяти с некоторым шагом (возможно = 1К) и при возникновении TrapTo_04 - предыдущий успешно считанный и записанный адрес принимается за вершину памяти.
1. Код ПЗУ, содержащий загрузчик с DX, всегда виден в диапазоне 0173000..0174000.
2. При появлении на шине сигнала DCLO плата МС1201 устанавливает в 0177716 (SEL1) бит 2, подключая в адресное пространство код ПЗУ в диапазоне 0160000..0163777.
3. При обработке HALT_Trap процессор 1801ВМ1 устанавливает в SEL1 бит 3, подключая в адресное пространство код ПЗУ в диапазоне 0160000..0172777.
4. При выполнении команд START и STEP процессор 1801ВМ1 сбрасывает в SEL1 бит 3, пытаясь полностью отключить ПЗУ пульта из адресного пространства, но если бит 2 SEL1 не был до того сброшен - при сбросе бита 3 SEL1 код ПЗУ отключается только в диапазоне 0164000..0172777.
Зависит от значения R4. Если в R4 находится адрес программы обработки команды T3 в ПЗУ пульта - то установка битов 2 и 3 SEL1 гарантирует присутствие кода ПЗУ пульта в адресном пространстве.161012 000167 JMP 160306
160306 005037 CLR @#177644
160312 052737 BIS #14,@#177716
160320 000114 JMP (R4)
Вот после этого куска где установлены оба бита эмулятор правильно выбрал следующую команду или должен был уйти на обработку ошибки обращения к каналу? Это кусок теста процессора на который выход по Т3 с пультового режима.
Сейчас после команды 160320 000114 JMP (R4) происходит прерывание, т.е эта команда выполняется.
Я не корректно задал вопрос.
В коде начального старта сразу идет установка бита 3 и сброс бита 2 в 0177716
160000 000406 BR .+16
160016 052737 BIS #10,@#177716
160024 042737 BIC #4,@#177716
160032 012706 MOV #177614,SP
Если бы запись "0" в бит 2 закрывала ПЗУ с адреса 160000, то все дальнейшее не имело бы смысла.
Похоже, что "0" открывает скрытое ПЗУ с адреса 160000.
Хотя исходя из логики работы шины "0" это "1" ведь шина инверсная.
Я не внимательно прочитал Ваш пост, извиняюсь.
Что однозначно указывает, что процессор работает в HALT моде, установка бита 3 в 0177716 или установка бита 10 в PSW?
Последний раз редактировалось Impartial; 16.11.2011 в 12:16.
Бит 2 сбрасывается для того, чтобы после выполнения команды START код ПЗУ пульта полностью отключился из адресного пространства. Если бит 2 останется установленным, что сброс бита 3, выполняемый командой START, приведёт к отключению кода ПЗУ из адресного пространства только в диапазоне адресов 0164000..0172777.
Если установлен бит 3 в SEL1, то значение бита 2 не играет роли. Бит 2 в SEL1 влияет на подключение/отключение кода ПЗУ только тогда, когда бит 3 в SEL1 сброшен.Если бы запись "0" в бит 2 закрывала ПЗУ с адреса 160000, то все дальнейшее не имело бы смысла.
Установка бита 10 в PSW. Единственное отличие HALT-моды процессора 1801ВМ1 от USER-моды в том, что прерывание зависания, вызывающее в USER-моде TrapTo_04, в HALT-моде обрабатывается как HALT_TrapTo_SEL1+02.Что однозначно указывает, что процессор работает в HALT моде, установка бита 3 в 0177716 или установка бита 10 в PSW?
Patron, Извиняюсь за навязчивость.
Скажите назначение адреса 0177776 и если можно список всех ячеек памяти важных для платы МС1201. Я имею в виду системных без периферии.
Если запись по адресу 0177776 не приводит к TrapTo_04, то тест процессора сообщает об обнаружении дефекта 12 - "Ошибка при отработке прерывания по несуществующему адресу".
У процессора 1801ВМ1 есть регистры, которые отсутствуют у процессора LSI-11 ( "Электороника 60" ). Вряд ли есть смысл заниматься их эмуляцией при условии совместимости с LSI-11.
Для работы ПЗУ пульта платы МС1201 и команд START и STEP процессора 1801ВМ1 - требуется наличие ячеек ОЗУ в диапазоне адресов 0177600..0177677.
Patron, Огромное Вам спасибо за консультации и поддержку!
Прошли тесты 1,2,3 и 4, т.е правильно сделана эмуляция терминала.
Будем работать дальше по периферии. Ну и сделаем (на досуге) поддержку дисковода, чтобы поиграть в XONIX
Предлагаю первым делом реализовать поддержку псевдоустройства HD, позволяющего подключать к эмулятору образы любых размеров.
В приложении - исходник драйвера HD.SYS для RT-11 и образ загрузочного диска HD с тестами TMOS для платы МС1201.
Для поддержки устройства HD эмулятор должен обслуживать его регистры HDCSR = 0177720 и HDDATA = 0177722.
Драйвер HD передаёт в HDCSR следующие команды:
Если после получения команды эмулятор установит старший бит HDCSR - это будет признак ошибки.Код:SetUni = 1 ; Set HD unit number SetBlk = 2 ; Set HD block number SetBuf = 3 ; Set memory buffer address SetWCn = 4 ; Set operation word count CmdRea = 5 ; Execute READ on HD CmdWri = 6 ; Execute WRITE on HD GetSiz = 7 ; Get HD size in blocks.
"memory buffer address", записываемый драйвером HD в регистр HDDATA перед выдачей в HDCSR команды 3 ( Задать адрес в памяти ) - это адрес эмулируемой памяти ДВК, начиная с которого эмулятор должен читать или писать данные, при получении в HDCSR команды 5 (Читать образ диска в память) или 6 (Писать память в образ диска).
Смещение от начала образа диска для команд чтения и записи (в блоках по 512 байт) задаётся содержимым HDDATA при получении эмулятором в HDCSR команды 2 ( Задать номер блока ).
При получении в HDCSR команды 7 ( Сообщить размер образа ) эмулятор должен записать в HDDATA размер файла образа (в блоках по 512 байт), подключенного к приводу, заданному до того командой 1 ( Задать номер привода ), или 0, если к этому приводу образ диска в эмуляторе не подключен. При выполнении команды 7 признак ошибки не устанавливается.
Устройство HD должно выполнять команды "мгновенно" для обслуживаемого процессора, поэтому на время выполнения команд HD - процессор надо останавливать.
Последний раз редактировалось Patron; 09.12.2015 в 15:57.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)