IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> КМ1801ВМ3, консолидируем информацию
SuperMax
сообщение 4.3.2016, 13:46
Сообщение #1


Администратор
*****

Группа: Root Admin
Сообщений: 5 807
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



КМ1801ВМ3А, КМ1801ВМ3Б, КМ1801ВМ3В
Микросхема КМ1801ВМ3 — 16-разрядный однокристальный микропроцессор, включающий операционный блок, блок микропрограммного управления, блок прерываний, диспетчер памяти и блок управления системной магистрали. Содержит 200000 интегральных элементов. Корпус 2136.64-1.
Отличительной особенностью КМ1801ВМ3 являются большой объем адресуемой памяти, высокое быстродействие и возможность подключения сопроцессора арифметики чисел с плавающей запятой (СППЗ).

Основные параметры КМ1801ВМ3
Объем адресуемой памяти 4М байт
Принцип управления Микропрограммный
Число команд 72 с фиксированной запятой,
46 с плавающей запятой (при подключении СППЗ)
Число регистров общего назначения 8
Производительность операций «Регистр-регистр» Сложение в потоке 1,5 млн операций/с;
(для КМ1801ВМ3А) умножение 100 тыс. операций/с;
деление 50 тыс. операций/с
Число линий запросов на прерывание 4
Тактовая частота
КМ1801ВМ3А 6 МГц
КМ1801ВМ3Б 5 МГц
КМ1801ВМ3В 4 МГц
Напряжение питания 4,75…5,25 В
Выходное напряжение низкого уровня 0,5 В
Выходное напряжение высокого уровня 2,4 В
Входное напряжение низкого уровня 0,7 В
Входное напряжение высокого уровня 2,2 В
Ток утечки на входе 1 мкА
Ток утечки на выходе 10 мкА
Выходной ток низкого уровня 3,2 мА
Выходной ток высокого уровня -1,0 мА
Входная емкость 10 пФ
Выходная емкость 15 пФ
Емкость нагрузки < 100 пФ
Мощность потребления 1,5 Вт
Максимальное входное напряжение 5,25 В
Минимальное входное напряжение -0,5 В
Температура окружающей среды -10…+70°С
Срок сохраняемости 15 лет
Минимальная наработка 50 000 ч

Общая информация
Прикрепленный файл  km1801vm3_tu.pdf ( 380.59 килобайт ) Кол-во скачиваний: 324


Описание подробное
Прикрепленный файл  km1801vm3.pdf ( 313.73 килобайт ) Кол-во скачиваний: 365







--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 4.3.2016, 15:18
Сообщение #2


Администратор
*****

Группа: Root Admin
Сообщений: 5 807
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Сопутствующая документация

МикроЭВМ "Электроника МС 1203.03" "Электроника МС 1203.04"
Техническое описание часть 2
Описание системы команд
Процессора ВМ3
У10.305.301.T01
Прикрепленный файл  MC1203.pdf ( 41.37 мегабайт ) Кол-во скачиваний: 239



МикроЭВМ "Электроника МС 1203.04"
Техническое описание и инструкция по эксплуатации
У10.303.304 ТО
Прикрепленный файл  MS0507_03.djvu ( 2.55 мегабайт ) Кол-во скачиваний: 212








--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 21.2.2019, 9:37
Сообщение #3


Администратор
*****

Группа: Root Admin
Сообщений: 5 807
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



КМ1801ВМ3

16-разрядный микропроцессор.
Технология n-MOS. На кристалле около 200000 вентилей.
Корпус металлокерамический 2136.64-1
Адресное пространство 4Мбайт+32кбайт ПЗУ и ОЗУ пультового режима
Быстродействие выполнения операций типа регистровых сложений по разным
источникам до 1.5-2 млн. оп/с, реально, при оптимальной схеме включения,
вероятно, до 5 млн. оп/с и более. Стандарту соответствующего класса
процессоров фирмы DEC соответствует не полностью, поскольку значительная
часть аппаратуры вынесена в кристалл КМ1801ВМ4, в котором реализованы
сопроцессор плавающей запятой и примерно половина стандартного диспетчера
памяти. Имеет совместимые со стандартом особенности пультового режима.
Потребляемая мощность 1.5-2.0 Вт по разным источникам. Корпус с радиатором
способен отвести до 4-6 Вт, и, учитывая примерно линейный рост потребления с
ростом тактовой частоты на больших частотах, быстродействие процессора
ограничено по перегреву примерно 5-6 млн. регистровых сложений/с. Структура
процессора несколько отличается от описанных выше. Передача информации в
операционный блок происходит по двум шинам чтения и отдельной шине записи,
что позволило при наличии быстродействующего АЛУ сократить время цикла работы
блока. Команды умножения, деления, параметрических двигов выполняютя с
помощью регистра - счетчика тактов, что уменьшило время выполнения команд
расширенной арифметики по сравнению с чисто микропрограммным методом.
Увеличена глубина конвейера до 4 команд; цикл преобразования виртуального
адреса в физический не занимает тактов в цикле обращения к памяти.


Разводка выводов:

1 o DIN(L) ввод
2 o DOUT(L) вывод
3 oi SYNC(L) сиа
4 i SSYNC(L) адрес принят (логика отлична от ВМ2)
5 io RPLY(L) сип
6 o DMGO(L) разрешение прямого доступа
7 io SACK(L) подтверждение захвата шины
8 io DMR(L) запрос ПДП
9 - GND=42 земля
10 io AD0 шина адреса/данных
11 io AD1 шина адреса/данных
12 io AD2 шина адреса/данных
13 io AD3 шина адреса/данных
14 io AD4 шина адреса/данных
15 io AD5 шина адреса/данных
16 io AD6 шина адреса/данных
17 io AD7 шина адреса/данных
18 io AD8 шина адреса/данных
19 io AD9 шина адреса/данных
20 io AD10 шина адреса/данных
21 io AD11 шина адреса/данных
22 io AD12 шина адреса/данных
23 io AD13 шина адреса/данных
24 io AD14 шина адреса/данных
25 io AD15 шина адреса/данных
26 o A16 шина адреса
27 o A17 шина адреса
28 o A18 шина адреса
29 o A19 шина адреса
30 o A20 шина адреса
31 o A21/NS шина адреса/признак чтения команды/данных
32 - GND1=38 земля
33 io INIT(L) сброс
34 o BS(L) выбор старшего банка памяти (страницы ввода/вывода)
35 o SEL(L) признак безадресного чтения
36 o TA(L) выдача адреса в цикле чтения
37 o UMAP(L) разрешение преобразования адресов поля DATA.
38 - GND1=32 земля
39 - не подключены к кристаллу
40 - не подключены к кристаллу
41 - не подключены к кристаллу
42 - GND2=9 земля
43 + Ucc=64 +5В
44 i EVNT вход прерывания по таймеру
45 i ET(L) разрешение зависания магистрали
46 i ACLO(L) авария сетевого питания
47 i HLT(L) вход прерывания в моду HALT
48 i IRQ3(L) запрос векторного прерывания
49 i IRQ2(L) запрос векторного прерывания
50 i IRQ1(L) запрос векторного прерывания
51 i IRQ0(L) запрос векторного прерывания
52 i DCLO(L) авария постоянного питания
53 io FPPTRP(L) прерывание от сопроцессора(вход/выход)
54 i FPPRD(L) вход готовности сопроцессора

55 o HLTM(L) индикация пультового режима
56 i DRA(L) готовноть данных сопроцессора
57 i FL двойная точность
58 i FD длинное целое
59 i WO режим начального пуска
60 i CLC тактировка
61 o LIN(L) загрузка команды в сопроцессор
62 o IAKO(L) разрешение прерывания
63 o WTBT(L) запись/байт
64 + Ucc=43 +5В

32 GND земля | выводы корпуса
32.1 CRYSTALL подложка | выполнены метал-ние от сопроцессора(вход/выход)
54 i FPPRD(L) вход готовности сопроцессора

55 o HLTM(L) индикация пультового режима
56 i DRA(L) готовноть данных сопроцессора
57 i FL двойная точность
58 i FD длинное целое
59 i WO режим начального пуска
60 i CLC тактировка
61 o LIN(L) загрузка команды в сопроцессор
62 o IAKO(L) разрешение прерывания
63 o WTBT(L) запись/байт
64 + Ucc=43 +5В

32 GND земля | выводы корпуса
32.1 CRYSTALL подложка | выполнены метал- на 4 команды и скрытый цикл преобразования
адресов магистрали, не занимающий времени в цикле обмена по магистрали.
Операционный блок предназначен для приема данных и хранения их в
регистрах, приема и расшифровки микрокоманды, формирования виртуальных
адресов и операндов, выполнения арифметических операций между регистрами и
константами и между парами регистров, выдачи данных на системную магистраль,
формирования адресов векторов прерываний, формироавния состояния.
Операционный блок содержит 16 основных регистров, из них 8 - регистры общего
назначения, один регистр - счетчик команд, один-слово состояния процессора,
остальные шесть - служебные регистры процессора. Программно доступны все
регистры общего назначения и слово состояния процессора.
Блок микропрограммного управления преобразует команду в
последовательность микрокоманд. Он состоит из:
-ПЛМ предварительного разбора команд;
-основной ПЛМ;
-ПЛМ анализа состояния;
-блока синхронизации.
Блок вырабатывает последовательность 30 - разрядных микрокоманд и
управляет работой всех блоков. Быстродействующая ПЛМ предварительного разбора
команд параллельно с загрузкой кода команды формирует начальный адрес
микропрограммы в основной ПЛМ. Основная ПЛМ хранит алгоритмы выполнения всех
команд. ПЛМ анализа состояния формирует сигналы, приводящие к переходу к
новой последовательности команд. Блок синхронизации синхронизирует работу
всего блока синхронизации.
Блок прерываний предназначен для организации приоритетных прерываний
и вырабатывает соответствующие сигналы для блока микропрограммного управления
и операционного блока. Блок прерываний формирует адрес вектора прерываний,
сигнал HALT перехода к пультовому режиму, сохраняет информацию об источнике
прерывания до окончания обработки. Фатальные аппаратные ошибки магистрали и
диспетчера памяти вызывают немедленное прерывание на любой стадии выполнения

команды. Анализ других аппаратных прерываний (внешние сигналы HALT, EVNT,
VIRQ,переполнение стека в моде KERNEL...) производится после завершения
очередной команды в соответствии с приоритетом.

Приоритеты обслуживания:

HALT INSTRUCTION
нечетный адрес команды
ошибка диспетчера памяти
зависание магистрали
команды прерываний
Т-бит в PSW
переполнение стека
авария источника питания
внешний сигнал HALT
запрос прерывания от таймера (маскируется при приоритете процессора >5)
IRQ3 (маскируется при приоритете процессора >6)
IRQ2 (маскируется при приоритете процессора >5)
IRQ1 (маскируется при приоритете процессора >4)
IRQ0 (маскируется при приоритете процессора >3)
выполнение очередной команды.

Адреса векторов прерываний:

004 зависание магистрали, переполнение стека
010 резервная инструкция
014 BPT
020 IOT
024 выключение питания
030 EMT
034 TRAP
100 таймер
244 сопроцессор плавающей запятой
250 ошибка диспетчера памяти

При получении сигналов IRQ процессор считывает вектор прерывания из
магистрали. При возникновении фатальной ошибки (кроме диспетчера памяти) при
выполнении микропрограммы обработки прерывания, процессор переходит в моду
HALT. Для упрощения аппаратуры адрес микропрограммы обработки двойного
зависания совпадает с адресом микропрограммы начального пуска.

Процедура начального пуска выполняется различно в зависимости от
потенциала на входе WO. Если при включении процессора после выработки блоком
питания сигналов DCLO,ACLO на WO низкий уровень, в PSW загружается
восьмиричное 340, в PC адрес 173000 и начинается исполнение команд. Если при
включении на WO присутствовал высокий уровень, PSW загружается содержимым
ячейки 26, в PC заносится содержимое ячейки 24 и начинается выполнение
программы; последний режим позволяет выполнять процедуру восстановления
системы после сбоя питания. Если при включении процессора был установлен
сигнал HLT(L), то процессор выйдет в пультовый режим.
В режим HALT процессор выходит, если:
-выполнена команда HALT в моде KERNEL;
-возникла двойная ошибка шины;
-вншний сигнал HALT имеет низкий уровень и нет более приоритетных прерываний.
При входе в моду HALT процессор загружает в регистр R1Oq константу 100000,
используя его в качестве указателя стека; загружает в этот стек содержимое
слова состояния и счетчика команд, заносит в слово состояния константу 340,
обнуляет счетчик команд, включает диспетчер памяти на преобразование адресов

в 22-разрядные физические и начинает исполнять программу. В режиме HALT
блокируются прерывания от диспетчера памяти. При возникновении ошибки шины не
происходит прерывания, а в PC заносится виртуальное значение 4. При обращении
к программе HALT - моды процессор вырабатывает сигнал SEL , позволяющий не
занимать под пультовый режим обычное адресное пространство. Для поддержки
пультового режима в диспетчер памяти введены четыре дополнительных регистра,
три из них имеют постоянные значения, а один доступен по чтению и записи по
адресу 172512 (виртуальному, в HALT-моде). Если в режиме HALT процессор
обращается к младшей половине памяти, то виртуальный адрес транслируется в
изический без изменений, при этом одновременно с изическим адресом выдается
сигнал SEL. Если в этом режиме процессор обращается к четверти памяти,
начинающейся с виртуального адреса 100000, для получения физического адреса
виртуальный адрс складывается с содержимым программно доступного регистра
PARH2 с (виртуальным) адресом 172512, сдвинутым влево на 6 разрядов.
Адресация области регистров внешних устройств в физическом адресном
пространстве происходит аналогично через программно доступный регистр PARH3,
в который предварительно заносится (процессором) код 177600;
В пультовом режиме нельзя использовать прерывания и команды MUL, ASH,
ASHC, DIV, EMT, TRAP, IOT, BPT, MTPD, MTPI, MFPD, MFPI. Выход из пультового
режима происходит по командам RTI, RTT.
Команда MTPS выполняется процессором только в моде USER. Для доступа
к слову состояния в моде KERNEL используются непосредственные засылки в слово
состояния, которое откликается на магистрали по адресу 17777776; в слове
состояния биты соответствуют стандарту. Процессор не поддерживает режим
SUPERVISOR.



--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 21.2.2019, 10:09
Сообщение #4


Администратор
*****

Группа: Root Admin
Сообщений: 5 807
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



https://bk0010.org/forum/?id=4442&old
  • Вопросы по 1801ВМ3
  • Keeper@ - 29.07.2010 03:40
    Приветствую!
    Хотелось бы прояснить некоторые момент в работе ВМ3:
    1. В некоторых источниках указано что часть диспетчера памяти вынесли в ВМ4, но в доступной документации на 1836ВМ4 об этом ни слова, более того там указано что на ВМ4 из старших разрядов адреса заводиться только А21/NS. Понятно что верить стоит документации, но все же...
    2. Тут упоминалось о необходимости задержки выдачи SSYNC при BS = 0, а на сколько тактов нужно задерживать? Чем грозит подача лог. 0 на SSYNC постоянно?
    3. Где можно взять описание внутренних регистров ВМ3 (Диспетчер памяти и т.п.) Помню что у меня оно где-то было, но сейчас найти не смог...
    4. Сигнал UMAP (выв. 37) - для чего он нужен и что отображает? Вроде как в одном из регистров диспетчера памяти был аналогичный бит.
    5. Режим запуска при W0 = 0 - стартовый адрес 173000 попадает в область внешних устройств (BS = 0), для чего так сделано?
    6. При отключенном диспетчере памяти что присутствует на выходах А16 - А21?
  • anonymous - 29.07.2010 13:24
    1. Регистры для процессора плавающей запятой, 6 64-битовых и дополнительные регистры состояния, в родном DECовском исполнении находятся в ДП, о них и говорилось.
    2. При подаче постоянного низкого уровня на SSYNC процессор будет реализовывать циклы на полной скорости и некоторые внешние устройства могут не успевать за ним, полная скорость нужна при работе с памятью. Это имеет смысл при использовании устройств на БМК 1801ВП1, 1806ХМ1, 1806ВП1, использовавшихся в таких машинах, если же устройства будут разработаны на современной элементной базе с достаточной производительностью, то SSYNC можно положить на землю, при этом на максимальной тактовой частоте 1836ВМ3 будет делать 6 млн. обращений к памяти в секунду. 1801ВП1 часто не успевает в таком случае даже откликаться, а если "поймает" свой адрес и выдаст какую-либо информацию, то тем самым запортит данные следующего цикла, не успев убрать данные с шины к тому времени, когда из памяти будет выбрана следующая инструкция.
    3. Все регистры ВМ3, кроме MMSR3, полностью соответствуют регистрам процессора PDP11/34, MMSR3, отсутствующий в 34, однако имеет ошибку при чтении зарезервированных бит, они должны читаться как "0", а читаются "1", из-за этого на ВМ3 без пропатчивания не работают Ultrix, Unix v5-v7 и RSX11, они неверно определяют тип процессора и пытаются использовать моду супервизора, за включение которой отвечает установка в "1" трех младших бит MMSR3. Бит переключения MMU с 18 на 22-разрядную адресацию и бит включения UnibusMapping в MMSR3 ВМ3 функционируют, как им и положено. Потому возьмите фирменное описание, например, на pdp-11.org.ru
    4. Он включает отображение 18-разрядного адресного пространства процессора окнами по 256кб на физическое адресное пространство при помощи внешнего дополнительного набора PAR.
    5. Сделано по стандарту для всех PDP11, для загрузки с устройства DEC BDV11.
    6. При адресации нижних 56к на них, в фазе адреса, высокий уровень, при обращении к адресам 0160000..017777 - низкий уровень.
  • [/url]? Keeper@ - 29.07.2010 15:32
    Спасибо за ответы! Нашел описание регистров ДП, лежали под носом, взяты по ссылкам:
    [url="http://155la3.ru/datafiles/km1801vm3.pdf"]http://155la3.ru/datafiles/km1801vm3.pdf
    http://155la3.ru/datafiles/km1801vm3_tu.pdf
    И еще один вопрос, сигнал BS при включенном ДП генерируется по виртуальному адресу (A15-A13 = 1) или по физическому после ДП (А21-А13 = 1)?
  • anonymous - 29.07.2010 16:03
    Всегда по физическому.
  • anonymous - 29.07.2010 16:16
    Там ошибки,
    в строке "Регистр SR3 (адрес 1777757)" адрес следует читать 17772516
    в строке "При входе в пультовый режим процессор загружает в стек HSP константу 100000" - адрес начала стека 020000
  • Keeper@ - 29.07.2010 16:48
    Спасибо, буду потихоньку схему рисовать.
  • Keeper@ - 29.07.2010 17:27
    Еще вопрос smile.gif Минимальные значения длительности ACLO,DCLO? Для 1806ВМ2 указаны 4Т, а для ВМ3 какие? И можно ли устанавливать в 0 эти сигналы одновременно, а снимать в соответствии с требованиями (RESET)? Очень хочется сделать формирователь этих сигналов на одной АГ3 smile.gif
  • anonymous - 29.07.2010 18:49
    Это зависит от используемой ОС, по стандарту ACLO должен приходить раньше на время, достаточное для ContextSwitch примененного процессора, однако если машина не управляет атомной электростанцией, на это можно закрыть глаза и выставлять их одновременно.
  • [url=""]? anonymous - 29.07.2010 18:54
    Вообсще совет: не используйте АГ3 и прочую пакость с аналоговыми цепями, это только надежность машины занижает, все делается по общему тактовому сигналу, все задержки, все state-циклы.
  • Keeper@ - 31.07.2010 01:11
    Опять вопросы smile.gif
    1. ТА (выв. 36) "Сигнал выдачи адреса" - в чем практическая польза? В ДВК3М заводиться в ВП1-119 и что с ним дальше происходит не понятно...
    2. ЕТ (выв. 45) "Разрешение зависания" - тоже непонятно для чего нужен. В ДВК3М просто заземлен, т.е. зависание разрешено? Что за "зависание"?
  • anonymous - 01.08.2010 10:36
    Сигнал ТА нужен при использовании внешнего дополнительного ДП, вам на него не нужно обращать внимание, он выставляется в случае, если в следующем цикле ожидается чтение из памяти или выборка инструкции, определяемая А21 в фазе данных, ВП1-119 использует его для подготовки своих дел с динамической памятью.
    Сигнал ЕТ определяет реакцию на отсутствие адресуемой ячейки, если он на земле, то после 128 тактов при отсутствии RPLY возникает прерывание по 4-му вектору, если он на +5в, то процессор зависает в ожидании ответа на бесконечное время, пока ответ не будет выставлен. Нужен для работы с очень медленными устройствами, потому вам тоже пока не пригодится.
  • Keeper@ - 06.08.2010 17:51
    Не нашел внятного описания логики работы сигнала /WTBT, насколько я понимаю чтение всегда производиться словами, а запись словами или побайтово. Если запись байтовая то /WTBT устанавливается в лог "0", а запись в старший/младший байт определяется значением А0, это так? Какое тогда соответствие А0 и старший/младший байт?
    ¤
    Еще непонятна организация памяти в HALT моде, написано что в халт-моде верхние 32Кб отведены под доступ к адресному пространству в 4Мб, а нижние под ОЗУ+ПЗУ халт-моды, тогда получается что при /SEL = 0 разряд адреса А15 можно не учитывать?
  • Keeper@ - 06.08.2010 19:32
    >Какое тогда соответствие А0 и старший/младший байт?
    Вроде должно быть А0 = 0 D7-D0, A0 = 1 - D15-D8
  • Keeper@ - 06.08.2010 19:39
    >Какое тогда соответствие А0 и старший/младший байт?
    ¤
    Посмотрел схему ДОЗУ для БК, все правильно при А0 = 0 (на шине А0 = 1) адресуется младший байт.
  • anonymous - 07.08.2010 08:57
    WTBT выставляется два раза, в фазе адреса и в фазе данных, в фазе адреса он нужен для того же, для чего и TA, - уведомить заранее, что за цикл собирается делать процессор, в фазе данных при WTBT=+5v вырабатываются оба сигнала выборки на память, при WTBT=gnd - если A0=gnd, то на старший байт, если A0=+5v, то на младший.
    В HALT-моде 1801ВМ3 не учитываются А15,А14,А13, системное ОЗУ выбирается при A12=A11=gnd, по остальным адресам - пзу. Вопреки распостранившейся через статью в МПСС информации, реализована поддержка пультового режима у ВМ3 вся в младшем банке, однако у плат МС1201.03 и .04 старшие адреса игнорируются, таким образом адресация ячеек 077000..077777, к которым производится обращение в пультовом пзу, транслируется в адреса 017000..017777 - это сделано в расчете, что на плату могут устанавливаться процессоры и с пультовым стеком с адреса 0100000, и с адреса 020000, однако в серии 1801 стек с адреса 0100000 не был реализован. Возможно, это было "исправлено" в серии 1806, однако 1806ВМ3 мне ни разу не приходилось использовать ни в работе, ни в поделках для себя, он выпускался очень ограниченным тиражом, исчислявшимся единицами тысяч штук, под нужды ВПК, впрочем ВПК он не удовлетворил и была запущена разработка 1836ВМ3.
    В моих поделках распределение адресов пультовой моды такое:
    А15 А14 А13 А12 А11
    x 1 1 1 x srom 4кб пзу пультового режима
    x 1 1 0 1 srom 2кб пзу пультового режима
    x 1 1 0 0 sram 2кб рабочие ячейки пультового режима
    x 1 0 x x srom 8кб пзу пультового режима
    x 0 x x x sram 32кб озу для бэкапа видеопамяти 1801ВП1-037, чтоб спрятать экран при входе в пульт для последующего его восстановления
  • anonymous - 07.08.2010 09:02
    P.S. в таблице 0 и 1 - имеются в виду электрические уровни, а не логические в адресах со "стороны" софта
  • anonymous - 07.08.2010 09:04
    P.P.S. и, конечно же, 16кб под бэкап vdram 1801ВП1-037
  • Keeper@ - 10.08.2010 13:27
    С учетом выбранной элементной базы в HALT моде получается следующее распределение памяти:
    ПЗУ: 000000-007777 (4Кб)
    ОЗУ: 010000-017777 (4Кб)
    Не занято: 020000-027777 (4Кб)
    ПЗУ: 030000-037777 (4Кб)
    Не занято: 040000-077777 (16Кб)
    ¤
    На счет 1801ВМ4, они выпускались только в планарном корпусе а-ля QFP (КА1801 вроде) или были и в ДИП? Совместимы ли КА1801ВМ4 и КН1836ВМ4 повыводно? Я тут подумываю развести под него место на плате...
    ¤
    ¤
  • anonymous - 10.08.2010 15:30
    Выпускались в корпусах QFP (КА1801) и Н18.64-2 (КН1801), у КА* лучше теплоотвод, нумерация выводов идет в обратном направлении по отношению к КН*, т.е. он паяется маркировкой на плату и теплоотводом вверх. В исполнении КН* 1801 и 1836 по нумерации выводов одинаковы.
  • anonymous - 10.08.2010 16:51
    Вы пультовую программу уже продумали? Может стоит стандартное распределение памяти сделать, чтоб можно было обычный пульт туда прошить(6кб 0..013777)?
  • Keeper@ - 11.08.2010 03:56
    >Может стоит стандартное распределение памяти сделать, чтоб можно было обычный пульт туда прошить(6кб 0..013777)?
    ¤
    Можно и так, но тогда 2Кб ПЗУ и 2 Кб ОЗУ оставлю пустыми...
  • anonymous - 11.08.2010 09:09
    В каком смысле? и Озу и ПЗУ полностью использовать надо, в первом и втором банках - зеркально
    /CSROM = /sel*a14*a13*a12 + /sel*a14*a13*/a12*a11 + /sel*a14*/a13*/a12*/a11
    /CSRAM = /sel*a14*a13*/a12*/a11 + /sel*a14*/a13*a12 + /sel*a14*/a13*/a12*a11
    - и все!
  • anonymous - 11.08.2010 09:16
    Лучше, если поставить флешку и озушку, захватывающие все 32к, тогда хватит на что угодно, вот у меня пульт в младших 6кб флеша, затем 2кб системного озу, потом снова 8к флеша с драйвером графического дисплея и шрифтами, потом 16кб озу на случай использования в качестве системной консоли граф. дисплея БК... Поскольку флешки сейчас копеечные, разумно взять еще большего размера и старшие разряды сделать переключаемыми, очень удобно для отладки.
  • Keeper@ - 21.08.2010 23:36
    Посоветуйте неконфликтный адрес для порта конфигурации. Дешифрация по /BS, AD12-AD1
    (чтение/запись только словами, без учета /WTBT и AD0)
    Текущая раскладка битов:
    D1 FR0 |
    D2 FR1 | Выбор скорости COM2 (заведены на ВП1-065)
    D3 FR2 |
    D4 FR3 |
    D5 CPCLC_SEL Выбор частоты COM2 4608/9216 КГц
    D6 NB0 |
    D7 NP | Выбор режима работы COM2 (заведены на ВП1-065)
    D8 PEV |
    D9 ENVT_FRQ_SEL Выбор частоты сигнала EVNT 50/100 Гц
    D10 ENVT_EN Разрешение выдачи сигнала EVNT (1 - разрешено)
    ¤
    D11,D12 - по записи игнорируются, по чтению возвращают "10"
  • Keeper@ - 22.08.2010 14:14
    В ДВК3М одно ПЗУ организацией 4Кх16, как там реализованно распределение этого объема для "обычного" и HALT режимов? Где можно почитать про организацию прерываний в контексте ВМ3? Например если я хочу повесить СОМ порты на вход прерываний с найменьшим приоритетом, но СОМ порты будут первыми устройствами в цепочке (IAKO/IAKI) Как тогда быть с устройствами которые будут более приоритетными источниками прерываний?
    Я уже начинаю подумывать что два компорта с описаными выше режимами работы это слегка перебор, может быть оставлю один компорт в режиме 8 бит без контроля четности на скорости 19200 или 57600, т.к. нужен он будет в основном для отладки... (за одно сэкономлю ВП1-065 и EPM3064) Но тогда не будет возможности управлять частотой на входе EVNT ВМ3, от чего возникает вопрос - частота 50Гц это стандартоное значение? И чем грозит отсутствие этого сигнала, если я решу вынести источник EVNT на вторую плату?
  • anonymous - 22.08.2010 19:28
    D6 NB0 | D7 NP | D8 PEV | - Никому не нужны и никогда в реальном оборудовании не используются.
    D9 ENVT_FRQ_SEL - биты 1 и 2 регистра 017777546, 00=100khz, 01=10khz, 10=50hz, 11=100hz
    D10 ENVT_EN Разрешение выдачи сигнала EVNT (1 - разрешено) - бит 6 регистра 017777546
  • anonymous - 22.08.2010 19:39
    「D9 ENVT_FRQ_SEL - биты 1 и 2 регистра 017777546, 00=100khz, 01=10khz, 10=50hz, 11=100hz」 - регистра 017772540 * - на 017777546 перемычками переключается.
    В ДВК пзу в halt-моде только доступно.
    「Например если я хочу повесить СОМ порты на вход прерываний с найменьшим приоритетом, но СОМ порты будут первыми устройствами в цепочке (IAKO/IAKI) Как тогда быть с устройствами которые будут более приоритетными источниками прерываний?」 - надо тогда привести IAKO на них после всех других устройств. При запрещении прерывания с приоритетом 4, который имеют COM-порты, прерываний от них не будет, пока устройство с более высоким приоритетом не выдаст запрос, когда устройство с более высоким приоритетом выдаст запрос, обработается сперва запрос от COM-порта, если таковой есть, и будет поставлен в очередь во внутренней очереди драйвера, а затем будет введен обработчик драйвера вызвавшего приоритетного устройства, это решается на уровне ядра ОС.
    50Гц - стандартное значение, поддерживаемое драйвером часов всех ОС.
  • Keeper@ - 22.08.2010 20:24
    Благодарю! Эх, все, выкидываю второй СОМ порт с настройками, а ведь уже и прошивку для CPLD написал smile.gif Тогда сделаю так: 1. ПЗУ только для HALT моды 16Кб (минус 2Кб окно для ОЗУ) 2. Один СОМ порт без настройки режимов на прерывании с максимальным приоритетом. 3. Частота EVNT 50Гц с возможностью блокировки (аппаратно, через разъем расширение, что б можно было управлять этим со второй платы)
  • anonymous - 22.08.2010 21:10
    Так что мешает сделать переключения скоростей COM-порта стандартным образом, через регистр состояния передатчика?
    При подаче команды загрузки ОС в пультовом отладчике ДВК, код загрузчика переписывается из пультовой моды в моду системы в ОЗУ и на него передается управление - так обошли необходимость делать окно на пзу с bios, а после загрузки этим начальным загрузчиком первичного загрузчика ОС, вся дальнеишая загрузка осуществляется считанным с диска кодом.
    COM не может иметь максимальный приоритет, у него для этого ног нету, чтоб вызвать прерывание с приоритетом 7, надо дернуть одновременно ноги IRQ7,6,5,4 на землю.
  • anonymous - 22.08.2010 21:13
    Т.е. IRQ 4 и есть, собственно, VIRQ, а IRQ 5,6,7 - модификаторы приоритета.
  • anonymous - 22.08.2010 21:22
    Чтоб понятнее было, работает QBUS так -
    приоритет 4, IRQ 4=0
    приоритет 5, IRQ 4,5=0
    приоритет 6, IRQ 4,5,6=0
    приоритет 7, IRQ 4,5,6,7=0
  • Keeper@ - 23.08.2010 10:36
    В описании ВМ3 в МПСС есть такая фраза: "Если при включении питания установлен сигнал HLT, то процессор переходит в пультовй режим." Как это следует понимать относительно сигналов /ACLO, /DCLO?
  • anonymous - 23.08.2010 14:40
    Никак. HALT - сам по себе, ACLO/DCLO - сами по себе. Просто первая инструкция сразу трапнется в отладчик при штатной микропрограммной проверке состояния регистра прерываний.
  • Keeper@ - 25.08.2010 15:48
    Выложил схему и прошивку CPLD: http://rghost.ru/2438195 На схеме 4 корпуса ПЗУ, т.к. буду разводить под DIP32 и PLCC32. С разъемом расширения еще не определился, буду смотреть что подойдет по кол-ву выводов и доставаемости. Прошивку еще не отлаживал... Тут еще вопрос возник, стоит ли выводить на разъем расширения дополнительные сигналы для совместимости с QBUS/МПИ? Например чтоб можно было подключать стандартную периферию (а-ля КЦГД) сделав переходник.://http://rghost.ru/2438195 На схеме ...лав переходник.://http://rghost.ru/2438195 На схеме ...лав переходник.
  • ://http://rghost.ru/2438195 На схеме ...дник.
  • anonymous - 25.08.2010 17:01
    Что называется "дополнительными" сигналами? Вообще, пугает количество корпусов, почему бы не взять более многоногую cpld и не сделать все всего на 6 корпусах? Если есть желание подключать родные платы от PDP и ДВК/Э-60, то АП6 надо заменить на стандартные 48..96мА драйверы QBUS с открытым стоком/коллектором, например ABTE16246, 74F641-1N, 530АП2, 531АП2, у серии 1533 микроскопическая нагрузочная способность.
    А КЦГД надо подключать не в QBUS, а через rs232 - там на шине сидит только 1801вп1-065, накоротко связанная со второй вп1-065, сидящей на шине внутреннего процессора, просто режутся 4 дорожки их соединяющие и ставится max232.
  • Keeper@ - 27.08.2010 09:46
    >Что называется "дополнительными" сигналами?
    QBUS22:(смотрел в файле q22-bus-01-11.pdf)
    Не понятно куда подключаются сигналы BIAKI,BDMGI(на сколько я понял их нужно подтянуть к "1", т.к. "до" моей платы нет цепочки устройств генерирующих прерывания),BREF (регенерация у меня скрыта и не влияет на циклы шины)
    МПИ sad.gif смотрел ГОСТ 26765.51-86)
    РГН,ЗМД,РЗМД (что за дополнительные DMR, DMG?),ПРР4-ПРР7(зачем так извратились с IAKO?)
    >Вообще, пугает количество корпусов, почему бы не взять более многоногую cpld и не сделать все всего на 6 корпусах?
    Захотельсь сделать все на дипах smile.gif из CPLD в PLCC корпусе есть EPM7128 (PLCC84) но они сейчас стоят неприлично дорого и особо не поможет оно. Многоногую FPGA поставлю на вторую плату, т.к. делать, например, видеоконтроллер на рассыпухе мне что-то не хочеться.
    >Если есть желание подключать родные платы от PDP и ДВК/Э-60, то...
    Понятно, тогда возложим это на плечи тех кому это может понадобиться, а я сомневаюсь что эта плата кому-то кроме меня интересна smile.gif Кстати, когда я последний раз интересовался 531 серией на радиорынке продавцы, в основном, разводили руками, еле КР531ГГ1 нашел.
  • anonymous - 27.08.2010 11:38
    BREF/РГН вместе с BS/ВУ учавствуют в DMA-циклах в режиме блочного обмена, который используется дисками обычно.
    ППР4..ППР7 выведены для удобства как раз на случай, если построить в корзине цепочку по каким-либо причинам, например конструктивным-коммутационным, затруднительно - это 4 IAKO для каждого приоритета ЗПР4..ЗПР7. ЗМД/РЗМД и вход BDMGI используется на плате процессора только в многопроцессорной системе, например при построении на базе 1801ВМ1 с его встроенным арбитром SMP на 4 процессора, или при использовании механизма двухпортовой памяти в окнах 1806ВМ2/1801ВМ2. Дело в том, что 1801ВМ3 на шину вылезает монопольно, предполагая всегда, что он главный в системе, потому эти сигналы не нужны. BIAKI нужен, если цепочка предоставления прерывания обходит все платы и возвращается на плату процессора, где имеются устройства с более низким приоритетом, чем контроллеры на внешних платах - это актуально в СМ и из персоналок - в микро-ЭВМ КВАНТ.
    Странно, 531 - самая популярная серия, ее как раз у нас навалом, со всех заводов, последних годов выпуска - белорусского производства, она совместима по маркировке и ногам с 155/555, но в 5 раз шустрее, 133/155 работают на 10мгц, а 530/531 - на полтиннике.
  • anonymous - 27.08.2010 11:55
    В догонку: блочный обмен должен быть реализован в вашем контроллере памяти. А 530/531 - потому что QBUS-драйверы АП2 только в этих двух сериях реализовали из отечественных.
  • Дмитрий - 27.08.2010 19:39
    Ребят, где найти внятное подробное описание (желательно рус) по командам работы с числами с плавающей запятой ВМ3/4? И мот есть у кого код/алгоритм для перевода чисел в строку и обратно в плавающем формате? Код из бейсика я выдрал, а чет разобраться с ним не могу. А то с маленькими числами более менее разобрался, а вот с очень большими затык.
  • Keeper@ - 27.08.2010 19:50
    http://narod.ru/disk/21073880000/1801vm3.RAR.html, файл bm4.doc
  • Keeper@ - 05.09.2010 20:40
    Подскажите, сигнал /BS устанавливается до прихода /SYNC? Что-то я подумываю о переходе на статику, не в деньгах ведь счастье smile.gif Последние несколько дней боролся с кросс-средствами, компилил gcc 4.4.4, gcc 4.3.5 и pcc, пока безуспешно. BinUtils 2.19.1 собираются, но вроде есть проблема с ld...
  • anonymous - 06.09.2010 01:16
    gcc вполне исправно работает, как пользоваться см. тут http://www.diane-neisius.de/pdp11/index_E.html#xinu
    pcc вовсе не собирается даже http://pcc.ludd.ltu.se/jira/browse/PCC-166 - у меня на этом баге все и кончается, тут в одном из тредов я жаловался уже.
    ВУ/BS выставляется синхронно с адресом.
  • Keeper@ - 06.09.2010 04:16
    >gcc вполне исправно работает
    Буду пересобирать, я ставил target=pdp11-*-bsd, может из-за этого...
    >/BS выставляется синхронно с адресом.
    Вот и здорово, тогда есть целых 80ns на маневры с /SSYNC
    Пойду FreeBSD заводить smile.gif
  • anonymous - 07.09.2010 10:12
    Не забудьте пропатчить на предмет неверно читающихся битов 0..2 в MMSR3.
  • anonymous - 07.09.2010 10:20
    И, да, freebsd никакого отношения к 2bsd давно не имеет, лучше наш ДЕМОС заводите. Или BSD 2.9-2.10, они на ВМ3 идут, после патча, "из коробки", при условии наличия понятного им дискового контроллера, а 2.11 надо полностью пересобирать из исходников и соберется только минимум - там программы уже почти все расчитывают на split I/D 3-модовый процессор, им 1831 надо...
  • Keeper@ - 07.09.2010 14:09
    Не, я под FreeBSD собираю кросс-средства, уже нашел неприятнось, если собирать с --prefix=/usr/local/cross то gcc не может найти заголовочные файл... Сейчас пробую с /usr/local
  • Keeper@ - 07.09.2010 14:17
    Еще такой вопрос: где можно скачать прошивку стандартного пульта и есть ли для нее исходники? Надо мне еще написать какую нибудь утилитку br (BuildRom) чтоб инвертировала данные, переворачивала адреса и давала возможность работать со страницами ПЗУ, но это немного позже...
  • anonymous - 08.09.2010 06:18
    Я выкладывал и прошивки, и программы для переворачивания и разбивания на байты. Поищите по форуму.
  • Murzik@ - 20.09.2010 12:05
    Ну почему-же никому не неужен! С 2 портами RS232 и IDE интерфейсом я бы такую штуку купил бы...Помоему вполне достойная PDP машинка получилась-бы
  • Гриша@ - 08.11.2010 08:13
    Привет родные а чё реально есть этот процессор?
  • anonymous - 08.11.2010 13:15
    Реально этот процессор есть микросхема о 64 ногах.
  • gid@ - 08.11.2013 09:55
    Разбираясь с работой диспетчера памяти, возник такой вопрос.
    Область системных регистров тоже входит в последнюю страницу 160000-177777 или нет?
    Вот если мы запишем в PAR последнего регистра страниц нули, или смапим его куда-нибудь в середину памяти, потеряем доступ к регистрам ДП или нет?
    Работа ДП в kernel-mode и user-mode идентична или есть нюансы типа каких-нибудь ограничений в режиме пользователя?Работа с памятью в halt-mode как-то везде скупо освещена.
    Пультовая память это первые 32кб, а остальные это что? или оно вообще никак недоступно кроме области системных регистров?
    Ещё, якобы есть 4 спец регистра для работы с памятью именно в halt-mode, вероятно один из них PARH2, хоть как-то описанный, ещё упоминается PARH3 без описания зачем вообще он нужен, в ТО на МС1201.03 написано, что 3 из этих регистров доступны только по чтению, и один с полным доступом (вероятно, как раз PARH2). Где про это можно почитать? А то полистал некоторые PDP handbookи, чего-то не нашёл там ничего, может просто не те handbookи попадались.А ещё говорили, что в ВМ3 нету регистра ограничителя стека 177774, реализация не влезла в кристалл или просто посчитали, что он не сильно и нужен?
  • MM@ - 08.11.2013 13:12
    Область системных регистров - BS7 - это она и есть, при выборке виртуальных адресов 160000-177777 ( 8 ).
    Да, если регистр ДП сектора BS7 записать некорректно, он не будет доступен. Для возврата управления можно использовать команду 000005.
    В БК11М при использовании блока - 000000-077777 - пультовое СОЗУ, остальное - как в простом БК11М. Такая большая пультовая область
    сделана для размещения там копии экрана БК11 при переходе в сильно автоматизированный графический пульт - автор идеи тов.
    Anonymous. Теоритически, в этом СОЗУ должны были сидеть DESS V5.00 с эмулем вызовов RT-11 и сильная урезка монитора БК11М ( с поправками на особенности пультового режима ) - по грубым прикидкам, должно влезть, особенно если оставить только эмуль 15-ИЭ-0013.
    Поскольку написание такого пульта - это не меньше квартала трудодней кодера 1-й группы квалификации, по экономическим соображения указанный софт в комплект не входит ( стоимость написания - 10-30К$ ).
  • anonymous - 09.11.2013 11:20
    MM уже ответил по большей части вопросов. Да можно и без 10..30к$, финансовая мотивация - не самая надежная. Напишут, если кому будет интересно.
    PARH0,1,3 программно недоступны, в том числе и по чтению. PARH2 переадресует окно со 0100000 по всей памяти. При прерывании по ошибке шины, в пультовом стеке сохраняется только адрес возврата, но не psw, потому выход из прерывания в HALT-моде - по 0207, RTS PC aka RET/RETURN.
    Режим USER от режима KERNEL отличается исполнением команд работы со словом состояния процессора и команд управления машиной. В моде USER команда RESET исполняется как NOP, HALT в моде USER вызывает прерывание по 010му вектору в моду KERNEL, MTPS/MFPS на процессоре, который у меня в стенде сейчас, в моде USER работают с каким-то временным регистром, не имеющим отношения к PSW. Как на других версиях ВМ3 - сейчас не проверю.
    Регистр ограничения стека в ВМ3 не реализован, прерывание по переполнению стека происходит всегда, если стек моды KERNEL переходит через 0400.
  • MM@ - 10.11.2013 08:07
    Да я не сомневаюсь, что напишут. В самом лучшем случае - убогое подобие РЕ2-134-й.
    А вот что бы сразу среду разработки поместить в пульт - на основе DESS.SAV V5.00 - так здесь чрезвычайное к-во мероприятий по этому вопросу:
    1.Разработать сценарий пульта - около 1-2 недель.
    2.Дезасемблировать и откомментировать сам DESS - это не меньше 1 мес.
    3.Доработать сам DESS - что бы были функции размножения константы, копирования массива байтов, виртуализация адреса,
    устранение бага с ограничением 64-кбайт размера файла в DESS ( там хитрейший баг на эту тему, причем только по записи изменений ).
    Примерный срок - 1 мес.
    4.Еще какие-нибуть мелкие доработки DESS - что бы было удобно им пользоваться на БК ( букву мы вообще не будем учитывать - может,
    это какая-нибуть "М-Х.З.".) - примерно 2 недели.
    5.Написать типа эмуль дисплея 15-ИЭ-0013 ( можно скромное подобие этой модели ) с минимальной библиотекой системных команд -
    фактически прошивку для БК11М3 - еще 1 месяц минимум. Здесь можно ограничится только режимом 80 кодов в строке.
    6.Что-нибуть придумать с общением новодела с дисководом поверх RT-11 - этот вопрос довольно мутный, но крайне необходимый пользователю.
    *
    Т.к. все перечисленное требует от программера высшей квалификации - т.е. не уровня паскальщика-сишника, а именно машкодовца,
    то , соответственно, и оплата должна быть - что бы не только на конфеты хватило, но и на колбасу.
    *
    И, разумеется, надо работать плотно с железом - поскольку некотрые зажали ТО на ВМ3, то придется все проверять команда-за командой на реале.
  • SPY@ - 10.11.2013 08:36
    Вот для особо любопытных добыл краткое ТО на ИС типа "Квадрат-5", подходящее для описания работы ИС 1801ВМ3 и 1801ВМ4.
    30-суточный архивчик :
    http://rghost.ru/50065366
  • gid@ - 10.11.2013 10:28
    >>? MM @ - сегодня 08:07
    А без информации о принципе работы ВМ3 ничего лучше убогого подобия РЕ2-134-й и не получится, т.к. именно её и придётся брать за основу. Ну не писать же с нуля то, что уже давно написано.
    2. А почему нету исходников DESS в доступных исходниках RT-11? Помнится, DESS не дизассемблировался в IDA т.к. у него заголовок не стандартный. Про стандартные заголовки SAV почитать можно, а про нестандартные - негде, информация надёжно спрятана и тщательно забыта.
    Ибо опять же, без знания того, зачем пишутся и читаются непонятные ячейки памяти из диапазона 170000-177777, нормально откомментировать дизассемблированый код не получится.
    Вот я дизассемблировал 134 прошивку, нашёл там код, похожий на загрузчик (похоже, что что-то там синхронно загружается откуда-то), нашёл код, определяющий количество ОЗУ и вроде бы инициализирующий ДП. А всё остальное там - непонятная куча ассемблерных команд, много кода без точек входа, выполняется ли он когда либо вообще, непонятно. Есть места, которые очень похоже, что позже допиливались DESSом. Такое крайне трудно комментировать, особенно если понятия не имеешь, что этот код вообще должен делать.
    *
    И разумеется, плотно работая с железом, рано или поздно добьёшься нужного результата просто перебором всех возможных вариантов, либо, когда варианты кончатся, убедишься что то, что хочешь сделать - невозможно. Но на это времени уходит чуть больше чем на порядок больше, чем если бы просто почитать доки и сразу написать то, что нужно.И ещё вопросы. Теперь по прерываниям. Как работает система прерываний в user-mode?
    Если в user-mode сегмент 0 смаплен в свой участок памяти и все векторы прерываний перехвачены прогой, то какие из них буду обрабатываться, а какие нет?
    Как было написано ранее, HALT вызывает прерывание 10 из user-mode в kernel-mode, а опкоды 7000-7777 будут по-прежнему вызывать прер.10, но уже в user-mode?
    BPT и EMT вызывают свои прерывания в user-mode? Если да, то как прога вызывает системные EMT?
    Прерывание 250 может обрабатываться в user-mode или нет?
    ¤
  • gid@ - 10.11.2013 10:35
    А не, путаю, заголовок нестандартный был не у DESS, а у чего-то другого.
  • anonymous - 10.11.2013 13:56
    Все вектора всегда выбираются только в kernel-mode, на вектор из user-mode управление можно передать только обработчиком в kernel-mode. В векторе прописывать новый режим user смысла еще меньше - если прерывание прервало процесс в kernel, то вернуться из обработчика, сидящего в user, в прерванное место уже невозможно будет, т.к. биты режима из режима user изменить нельзя.
    DESS.SAV, который имеется у меня, запакован и распаковывается в памяти при запуске, потому самый простой способ - запустить его и им же по памяти просмотреть собственную тушку.
  • gid@ - 10.11.2013 14:13
    т.е. другими словами, область памяти 0-400 в user-mode совершенно свободна и может использоваться как душа пожелает?
  • anonymous - 10.11.2013 14:21
    В принципе -да, но она тоже под вектора и служебные ячейки задействована обычно. Например, если программа пользователя имеет свой EMT-диспетчер, расширяющий системные вызовы, при вызове EMT и анализе его в ОС, если ОС EMT с таким номером не обрабатывает, то диспетчер EMT может передать управление по вектору из user-mode, что очень удобно. Я так исполняющую систему БК делал - в RT-11 EMT имеют старшие коды, если БКшная программа не их вызывала, а свои БКшные, с младшими номерами, то управление передавал на обработчик в user.
  • gid@ - 10.11.2013 14:25
    Или чего-то не понимаю, а как тогда команда TRAP, которая как раз для пользовательских целей предназначена? прерывание 34 тоже сперва улетает в кернел и оттуда потом передаётся пользовательскому обработчику?
    А как тогда быть с перехватом векторов прерываний, для навешивания своих обработчиков? Или это не практикуется в RT-11?
  • anonymous - 10.11.2013 14:48
    С TRAP - тоже самое, а как в RT-11 реализовано, уже не помню, надо исходники смотреть. Позвонил программисту - он утверждает, что есть такой код в RTшке для TRAP.
  • MM@ - 10.11.2013 15:00
    Уже за давностью лет точно не помню, но дезасемблируют обычно в DES.SAV - дизассемблером в RT-11. Выходной код вроде как совместим с MACRO ( на вход ) при допиливании заголовка ручным "напильником".
    Если лень писать крутой пульт, можно просто ограничится отбойником размером до 200-400, эмулирующим 4 вектор для БК11.
    Кстати, припоминаю, что родное ТО на 1801ВМ3 было с кучей развесистой клюквы - по более, чем 20-летней информации.
    *
    Может быть я не писал, но ВМ3А упирается при переключении страниц ДОЗУ БК11М с клавы - кидается "?". Можно из ДОЗУ или СОЗУ делать
    это командами 104012 - ЕМТ 12.
  • gid@ - 11.11.2013 11:50
    А реальное адресное пространство с точки зрения ДП ВМ3 закольцовано?
    Т.е. когда у нас все 4Мб памяти, логически может получиться, что голова сегмента находится в конце адресного пространства, а хвост в начале.
    Когда при вычислении реального адреса из виртуального произойдёт переполнение при сложении содержимого PAR и поля BN виртуального адреса, диспетчер памяти посчитает это ошибкой?
    ¤
    Ещё, в ТО МС1201.03 на листе 45 есть таблица прерываний, там есть прерывание "ошибка нечетного адреса"
    Это особенность ВМ3 или конкретно МС1201.03? и если да, по какому вектору происходит прерывание, по 4? или 250?
  • anonymous - 11.11.2013 18:26
    Не очень понятно, что имеется в виду. Какое может быть переполнение, если размер страницы максимальный, который можно указать, равен размеру окна в виртуальном пространстве, а начало страницы может быть при расширении страницы прямо только в первом адресе окна с произвольным адресом конца отображаемого участка, а при обратном расширении адрес начала произволен, но адрес конца всегда равен последнему адресу окна.
    По нечетному адресу трапается вм3, как и все старпие модели pdp - по 4му вектору.
  • anonymous - 11.11.2013 18:43
    А, кажется понял, однако никогда не приходило в голову такое делать. Да, если, скажем в регистр адреса записать 0177700, то внутри окна по адресу 07776 будет PSW читаться, а по 010000 - физический адрес 0.
  • Patron - 20.01.2016 18:59
    Интересно, какими значениями инициализируются регистры PARH0 и PARH1, другими словами - какие физические адреса выставляет на шину в режиме HALT процессор 1801ВМ3 при обращении к адресам 000000 и 040000.
  • SPY - 20.01.2016 20:30
    По данным ЦРУ, советскийъ процессор 1801ВМ3 при входе в режим HALT устанавливает адрес 000000 на МПИ и начинает выполнять программу.
    При этом имеются ограничения режима HALT - отсуствие аппаратных и частично программных прерываний - см. ТО на МС1201.03.
    Содержание регистров при режиме пульта/мульта - обращайтесь в частное детективное агенство, т.к. таких данных в архивах нет.
    ( По непроверенным слухам, никак не удается обратиться к адресам в диапаносе 020002 - 157776 ).
  • Patron - 20.01.2016 21:30
    Когда выполняется код ПЗУ пульта - обращения к адресам 000000-037777 мапятся на шину через PARH0, а обращения к адресам 040000-077777 мапятся через PARH1. Даже в стандартном ПЗУ пульта с прошивкой -134 в самом начале есть обращения обоих типов:
    000000: JMP 005710
    005710: MOV SP, @#77114
    при этом происходит обращение к следующим виртуальным адресам:
    000000
    000002
    005710
    005712
    077114
    Первые четыре адреса мапятся через PARH0, а пятый - через PARH1.
    Всё, что надо - посмотреть в логическом анализаторе, в какие физические адреса на шине это превращается.
  • Patron - 24.01.2016 23:48
    Следующий вопрос - как процессор ВМ3 отрабатывает прерывание зависания ( TrapTo_4 ) в режиме HALT ?
    Прошивки 134 и 377 начинают тестирование с чтения заведомо отсутствующего адреса:
    MOV #177600, @#172512
    TST @#100000
    Что происходит дальше ?
  • MM - 25.01.2016 00:12
    На днях проверю на рабочем блоке.
    Вроде как обычно отрабатывает - т.е. , находясь в пульте и получив IRQ4, проходит по адресу из 4 слова пульта. Но вот что происходит со стеком и регистрами - Большой вопрос...
    В блоке организована СОЗУ Пульта 0-77777, более высокие адреса - как в обычном БК (сделано в расчете на очень хороший графический пультовый режим, где в скрытой области может храниться отдельный экран отладки пульта, например со встроенный пропатченным DESSoм и т.п. ништяками, вплоть до отдельной дисковой ОС.)
    *
    Сам код пульта, на 100% совместимый с БК0011М, до сих пор не написан - точнее, был на стадии отладки и не доделан, ввиду достаточной трудоемкости мероприятия. Размер - порядка 200 ( 8 ).
    *
    Голая платочка блока ВМ3А - 500 руб ( с разъемами СНП58-64 б/у ), есть БИС СОЗУ по 400 руб 55 нс ( для монтажа на блоке, от 2 шт. до 8 шт. ). Можно собрать готовый блок с зелеными КМ5 и натуральными советскими желтыми колодками - 5 т.р., 2 мбайт батарейного СОЗУ. По особому заказу можно организовать субмодули с 1801ВМ2А или 1806ВМ2 ( у них электрически схемы почти похожи ).
  • Patron - 25.01.2016 00:39
    Если в режиме HALT ( т.е. когда процессор выдаёт низкий уровень на ноге 55 ) прерывание зависания происходит по адресу из 4 слова пульта - прошивка 134 сообщает о неисправности процессора.
    Для чистоты эксперимента можно выходить в пульт через выполнение команды HALT, а не через подачу низкого уровня на ногу 47.
  • MM - 25.01.2016 00:49
    Для чистоты лучше вообще пускаться с пульта - тогда будет некотрая уверенность, что никакие обстоятельства не установили что-либо в регистрах ВМ3.
    *
    Если 134-я пишет о отказе процессора, то тогда каким образом отрабатываются ситуации на МПИ в режиме пульта ?
    *
    Для работы МС1201.03/04 постоянно с видимыми 134 ПЗУ и СОЗУ пульта следует ногу 35 ( SEL ) соединить проволочкой с общим. При этом, вероятно, будет возможность выполнить некотрый небольшой код в СОЗУ пульта.
  • Patron - 25.01.2016 13:26
    Процессоры ВМ1 и ВМ2 в режиме пульта отрабатывают прерывание зависания не через вектор 4, а как разновидность прерывания HALT ( ВМ1 делает HALT_TrapToRomOffset_02, а ВМ2 выполняет HALT_TrapToRomOffset_04 ) - логично предположить, что и ВМ3 поступает похожим образом. Запуститься с пульта в ВМ3 можно только двумя способами - выполнив первой командой HALT или имея в момент пуска низкий уровень на ноге 47. В любом другом случае код пульта будет выполняться не в режиме пульта. О наличии или отсутствии режима пульта можно узнать по состоянию ноги 55 ( 0в = пульт ; Z = программа ).
  • Patron - 25.01.2016 20:55
    Похоже, что ситуация с обработкой зависания в режиме HALT процессором 1801ВМ3 прояснилась - при возникновении зависания в режиме HALT в стек ничего не пишется, а из вектора 4 загружаются новые значения PC и PSW.
  • anonymous - 30.01.2016 18:58
    Vslav написал на zx-pk 「TST @# 40000/60000 отобразились на адрес 000000」
    Это очень интересно, когда я делал свою плату на вм3, у меня неправильно заработала 134я прошивка, пока я все обращения в ней к адресам 077ххх не заменил на 017ххх, что косвенно подтверждает существование процессора, который адресует пультовую память за пределами 0го банка.
  • Patron - 30.01.2016 20:28
    В справочнике Шахнова за 1988 год прямо сказано, что PARH0 инициализируется константой 170000, а PARH1 - константой 167600, выдумать такое невозможно.
  • anonymous - 30.01.2016 21:31
    Где бы найти контактную панельку под 64-ногий квадратный корпус ВМ2/ВМ3/ВМ4/ВМ5? Чтоб собрать тестовый стенд и проверить все имеющиеся процессоры, в продаже есть под импортный qfp-64, но там иной шаг контактов. Хотя можно развести плату с вырезом под корпус и золочёными дорожками, прижимая процессор к ней резинкой по периметру выводов, но это колхоз, за который браться не хочется. Есть кН1801ВМ3 и КА1801ВМ3, хотелось бы их проверить тоже.
    У ММ не сохранилось колодок подходящих, случаем?
  • anonymous - 31.01.2016 06:45
    ММ написал, что у него не сохранилось таких колодок. Я надеялся на него и его знакомых ветеранов, т.к. в Митино уже обходил скупщиков останков более цивилизованных времён...
    Надо ветеранов Зеленограда потрясти, но они тяжело выковыриваются из спячки. smile.gif


--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 23.3.2019, 4:15