Электроника Д3-28
![]() | В статье не хватает ссылок на источники (см. рекомендации по поиску). |
Электро́ника Д3-28 — специализированное настольное управляющее и вычислительное устройство, занимающее промежуточное положение между персональными компьютерами и программируемыми калькуляторами.
Создана на основе машины Электроника С50 (15ВСМ-5), у которой прототипом являлся программируемый калькулятор Wang 700[1][нет в источнике]. Имеет встроенную клавиатуру (цифровые и функциональные клавиши), двухстрочный дисплей на семисегментных индикаторах (12 цифр мантиссы, две цифры степени и два индикатора знака в каждой строке) и накопитель на магнитной ленте (НМЛ) в стандартных аудиокассетах.
Также оснащается интерфейсами ИРПР и ИРПС (в виде согласующего устройства ПЭЛ2.240.001), к которым обычно подключался принтер и алфавитно-цифровой терминал (как правило, модели 15ИЭ-00-013).
Варианты исполнения
[править | править код]Первые серии Д3-28 имели микропрограммное обеспечение, находящееся в постоянных запоминающих устройствах (ПЗУ) на вручную прошиваемой тонким проводом матрице из ферритовых разборных П-образных сердечниках из магнитомягкого феррита). В последующих сериях ПЗУ выполнялось на интегральных микросхемах.
В некоторых тестовых экземплярах машин ПЗУ с микропрограммами устанавливались в панельки; существовали специальные прошивки этих ПЗУ для использования устройств в составе специализированных вычислительных комплексов.
В процессе производства Д3-28 внутренняя архитектура и программное обеспечение совершенствовалось с добавлением новых команд. Поколения Д3-28 (в соответствии с инструкцией по эксплуатации) делятся на «выпущенные до октября 1979 года», после этой даты и «после 1983 года».
Д3-28 16К (15ВМ16)
[править | править код]16 килобайт ОЗУ (микросхемы в первых выпусках — К565РУ1, в последующих — К565РУ3 и К565РУ6).
Внешне отличалась также красным цветом свечения индикаторов и цветом закрывающей их пластины из оргстекла. Последующие модели имели оранжевый цвет цифр под зелёным светофильтром.
Д3-28 32К (15ВМ32)
[править | править код]Оснащена 32 килобайтами ОЗУ, выполненного на микросхемах 565РУ6.
Д3-28 128К (15ВМ128)
[править | править код]Оснащена 128 килобайтами ОЗУ, выполненного на микросхемах 565РУ5.
В зависимости от исполнения (кодировались цифрами ххх в обозначении 15ВМ128-xxx) Д3-28 имела возможность подключения к фотосчитывающим устройствам (СП-3 и FS-1501), ленточным перфораторам (ПЛ-150М), печатающим устройствам (например, Consul 256, Consul 260), специальные блоки для подключения мониторов типа 15ИЭ-00-013, а также возможность подключения удаленных устройств дистанционного управления Д3-28. Подключение печатающего устройства машинок Consul и монитора превращала Д3-28 в персональный компьютер.
Имелась возможность загрузки и автоматического запуска программы через интерфейс при включении машины.
Архитектура и система команд
[править | править код]Система команд
[править | править код]У Электроники Д3-28 с объёмом ОЗУ 32 К, команды машинно-ориентированного языка Д3-28 кодируются двумя или четырьмя шестнадцатеричными цифрами.
Набор команд на основе КОИ-7 (набор 2) в виде русскоязычных команд и машинного 4-значного шестнадцатеричного кода для электроники ЭВМ ДЗ-28 приведён в таблице. Строки в таблице — старшие 4 бита кода, столбцы — младшие биты.
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0. |
ПУС 00 00 |
НЗ 00 01 |
НТ 00 02 |
КТ 00 03 |
КП 00 04 |
КТМ 00 05 |
ДА 00 06 |
ЗВ 00 07 |
ВШ 00 08 |
ГТ 00 09 |
ПС 00 10 |
ВТ 00 11 |
ПФ 00 12 |
ВК 00 13 |
ВЫХ 00 14 |
ВХ 00 15 |
1. |
АР1 01 00 |
(СУ1) 01 01 |
(СУ2) 01 02 |
(СУ3) 01 03 |
СТП 01 04 |
НЕТ 01 05 |
СИН 01 06 |
КБ 01 07 |
АН 01 08 |
КН 01 09 |
ЗМ 01 10 |
АР2 01 11 |
РФ 01 12 |
РГ 01 13 |
РЗ 01 14 |
РЭ 01 15 |
2. |
ПРОБЕЛ 02 00 |
! 02 01 |
” 02 02 |
# 02 03 |
¤ 02 04 |
% 02 05 |
& 02 06 |
′ 02 07 |
( 02 08 |
) 02 09 |
* 02 10 |
+ 02 11 |
’ 02 12 |
- 02 13 |
. 02 14 |
/ 02 15 |
3. |
0 03 00 |
1 03 01 |
2 03 02 |
3 03 03 |
4 03 04 |
5 03 05 |
6 03 06 |
7 03 07 |
8 03 08 |
9 03 09 |
: 03 10 |
; 03 11 |
< 03 12 |
{{{2}}} 03 13 |
> 03 14 |
? 03 15 |
4. |
@ 04 00 |
A 04 01 |
B 04 02 |
C 04 03 |
D 04 04 |
E 04 05 |
F 04 06 |
G 04 07 |
H 04 08 |
I 04 09 |
J 04 10 |
K 04 11 |
L 04 12 |
M 04 13 |
N 04 14 |
O 04 15 |
5. |
P 05 00 |
Q 05 01 |
R 05 02 |
S 05 03 |
T 05 04 |
U 05 05 |
V 05 06 |
W 05 07 |
X 05 08 |
Y 05 09 |
Z 05 10 |
[ 05 11 |
\ 05 12 |
] 05 13 |
¬ 05 14 |
_ 05 15 |
6. |
Ю 06 00 |
А 06 01 |
Б 06 02 |
Ц 06 03 |
Д 06 04 |
Е 06 05 |
Ф 06 06 |
Г 06 07 |
Х 06 08 |
И 06 09 |
Й 06 10 |
К 06 11 |
Л 06 12 |
М 06 13 |
Н 06 14 |
О 06 15 |
7. |
П 07 00 |
Я 07 01 |
Р 07 02 |
С 07 03 |
Т 07 04 |
У 07 05 |
Ж 07 06 |
В 07 07 |
Ь 07 08 |
Ы 07 09 |
З 07 10 |
Ш 07 11 |
Э 07 12 |
Щ 07 13 |
Ч 07 14 |
ЗБ 07 15 |
Пояснения к таблице
- ПУС (NUL) — пусто; НЗ (SON) — начало заголовка; НТ (STX) — начало текста; КТ (ETX) — конец текста; КП (EOT) — конец передачи; КТМ (ENQ) — кто там?; НЕТ (NAK) — отрицание, отрицательный ответ; СИН (SIN) — синхронизация; КБ (ETB) — конец блока данных; ЗБ (DEL) — забой; АН (CAN) — аннулирование; КН (EM) — конец магнитного носителя; ЗМ (SUB) — замена, позволяет заменить символ; ВХ (S1) — вход, работа с одной половиной таблицы; ВЫХ (S0) — выход, работа с символами.
Для облегчения восприятия команд используется мнемокоды в ассемблерном виде, приведённые в таблице:
Ассемблерный вид | Описание | Ассемблерный вид | Описание |
---|---|---|---|
ABGE | прибавление единицы и ветвление, если больше или равно | BEQ | переход, если равно |
ADD | сложение | E | экспонента, (показатель степени) |
AND | логическое умножение | BLT | переход, если меньше чем |
ANS | анализ | OR | логическое сложение |
GO | пуск | BKEY | переход, если нажата клавиша |
LOAD | загрузка | BGE | переход, если больше или равно |
LOADP | считывание с МЛ | BHIS | переход, если больше или тождественно |
DIV | деление | MOV | пересылка |
SUB | вычитание | CAP | преобразование декартовых координат в полярные координаты |
RTSI | псевдовозврат из подпрограммы | вывод на печать | |
INP | ввод | POC | преобразование полярных координат в декартовы координаты |
SOB | вычитание единицы и условный переход | SAVE | запись |
MARK | метка | OUT | вывод |
MUL | умножение | ATOI | преобразование в целочисленное |
BBIS | переход, если бит установлен (=1) | POINT | точка |
WAIT | ожидание | CMD | команда |
SWA | обмен | DEG | градус |
CLR | очистка регистра (обнуление) | COM | инвертирование знака |
NEG | отрицание | BR | безусловный переход |
INT | целое | RTII | псевдовозврат из прерывания |
VER | контроль | BSA | ветвление или тождество |
DIG | цифра (десятичная) | RTS | возврат из подпрограммы |
SQR | квадратный корень | RES | остаток |
INV | обратная величина | QRT | квадрат |
JMM | передача управления на метку | BPER | переход, если программная ошибка |
XOR | исключающее или | BNE | переход, если не равно |
BMER | переход, если машинная ошибка | BPL | переход, если плюс |
BEV | переход, если чётно | BMI | переход, если минус |
BBIC | переход, если бит очищен (=0) | END | конец |
Работа с клавиатуры Д3-28
[править | править код]Возможна работа в одном из 4-х режимов: Включение режимов 'Р', 'В', 'ПВ', 'П' производится нажатием клавиши и индицируется свечением расположенного рядом с ней индикатора.
Символ на клавише |
Название команды |
Мнемокод | Код команды |
---|---|---|---|
М | Метка | MARK | 04 08 |
СЛ | Считывание с МЛ | LOADP | 05 13 |
S | Пуск | GO | 05 14 |
ВП | Вызов из памяти |
MOV C,X | 04 05 |
ЗП | Запись в память |
MOV X,C | 04 04 |
- 'Р' является основным, производится выполнение всех программ и команд записанных в ОЗУ вводимых с клавиатуры Д3-28, с НМЛ.
- 'В' Ввод программ в ОЗУ проверка и изменение текстов программ, команда не выполняется, а только записывается в ОЗУ в шестнадцатеричном виде по адресу, индицируемому в регистре Y.
- 'ПВ' Печать и ввод.
- 'П' Печать.
Организация памяти
[править | править код]- В Д3-28 ОЗУ условно разделено на две зоны: рабочая и служебная. Ячейки служебной зоны именуются регистрами.
- Рабочая зона машин с 32-килобайтами ОЗУ занимает адреса с 0.00.00.00 (00000 дес.) по 7.14.15.15 (в 16-ричном виде 0x7EFF или 32511 десятичном виде), в этой зоне размещаются данные и программы пользователя.
- Служебная зона занимает последние 256 байтов ОЗУ с 7.15.00.00 (32512 дес.) по 7.15.15.15 (32767 дес). В некоторых регистрах хранится информация для нормальной работы Д3-28, часть свободных ячеек может быть использована для хранения команд.
- Структура служебной зоны ОЗУ: с адреса 7.15.00.00 по 7.15.01.15 расположены шестнадцать двухбайтовых регистров R00, R01…R15, каждый R-регистр состоит из двух байтов ОЗУ с соседними адресами, байт с меньшим адресом является старшим. Регистры R08…R15 состоят из шестнадцати однобайтных регистров S00…S15.
- Четыре регистра R04, R05, R06, R07 образуют восьмибайтный регистр RR, который используется в командах с кодами 12 06 (MOV X,RR) и 12 07 (MOV RR,X).
Вся память адресуется независимо двумя основными способами:
- Для команд работы с числами с плавающей запятой память представляет собой набор последовательно расположенных 16-байтовых чисел (12 байт — десятичная мантисса, 2 бита — знак числа и знак порядка, три тетрады — три десятичных цифры показателя степени). Адресом ячейки служит условный номер такого числа от 0 до (размер памяти /16).
- Плавающие числа хранятся в двух разных форматах. В одном, когда адресом был номер ячейки, число занимает или старшие, или младшие полубайты в 16 байтах, расположенных подряд и выровненных на адрес, кратный 16. В другом число занимает целиком 8 байтов в памяти подряд. При этом разрядность и прочие характеристики чисел совпадают. Первая форма была унаследована от калькулятора и допускала только команды с прямой адресацией (0-255, поскольку адрес был байтовый), вторая — только команды с косвенной адресацией, но при этом адресуется вся память.
- Для команд целочисленной арифметики и логических операций с байтами, 16-ти и 32-битными словами адресом служит физический адрес первого, самого старшего байта слова.
- Порядок следования байтов в словах — от старшего к младшему.
- Структура переходов — эклектичная[прояснить]. Для безусловного перехода или перехода к подпрограмме используется не менее 4 способов: по поиску «метки» в теле программы (последовательности байт 04 08 + <метка>), последовательным просмотром (прослеживается явное наследие калькулятора), с относительной адресацией — в пределах 256 байт от команды перехода, и по адресу в регистре — по таблице переходов.
В 128-килобайтной версии машины применяется страничная организация памяти с мгновенно переключаемыми (по изменению состояния управляющих ячеек памяти) страницами размером по 16 килобайт каждая. Адресное пространство без применения механизма переключений страниц составляет 32 килобайта.
Регистры и индикаторы
[править | править код]Регистры адресовались как ячейки памяти по некоторым фиксированным адресам. При этом регистры X и Y арифметики с плавающей запятой непрерывно отображаются на 2 индикаторах.
В режиме останова основной программы большинство клавиш на клавиатуре предназначалось для арифметических и функциональных действий с числами в регистрах X и Y.
При работе основной программы на индикаторах отображались состояния регистров X и Y, однако существовало несколько команд, позволявших изменить способ отображения соответствующей им области памяти на один из нескольких служебных регистров.
При отладке и запуске пошагового исполнения отлаживаемой программы на индикаторах отображались адрес исполняемой команды, код операции и три следующих в памяти байта команд.
Регистры работы с байтами, 16-разрядными словами было по 16, при этом 16 байтовых регистров физически совпадали с первыми восемью 16-битовыми регистрами.
Сообщения об ошибках ЭВМ Д3-28
[править | править код]Эти сообщения об ошибках выводились интерпретатором языка Бейсик, а не самой "прошивкой" Д3-28. Д3-28 могли использоваться и без интерпретатора языка Бейсик.
Код | Тип ошибки | Код | Тип ошибки |
---|---|---|---|
0 | Переполнение памяти, отведённой пользователю | 26 | Недопустимый оператор DATA |
1 | Недопустимый оператор | 27 | Неправильный формат команд CMD |
2 | Переполнение строки ввода | 30 | Неправильный формат в операторе FOR…NEXT |
3 | Недопустимый ограничитель в строке | 31 | Отсутствие NEXT |
4 | Недопустимый номер строки | 32 | Отсутствие FOR |
5 | Несоответствие кавычек в предложении | 33 | Переполнение стека FOR…NEXT |
6 | Отсутствие открывающей скобки перед аргументом функции | 34 | Нулевой шаг FOR |
7 | Недопустимый оператор LET | 35 | Неверный формат оператора PRINT |
10 | Неправильная запись индексов | 36 | Неверно задан формат печати |
11 | Неправильная размерность индекса | 37 | Недопустимое выражение в операторе TAB |
12 | Несоответствие скобок в выражении | 38 | Отсутствие открывающей записи в магнитной ленте (МЛ) |
13 | Недопустимый элемент выражения | 43 | Нет строки для перехода по операторам GOSUB или GOTO |
14 | Функция пользователя не определена | 44 | Нет внешней подпрограммы с указанным именем |
15 | Неправильное имя переменной | 50 | Неправильное предложение с оператором обслуживания МЛ |
20 | Неправильная операция отношения | 52 | Сбой структуры файла |
21 | Недопустимый оператор IF | 53 | Отсутствие в запоминающем устройстве массива при приёме с МЛ |
22 | Недопустимый оператор COM или DIM | 54 | Не считан очередной блок данных с МЛ в ОЗУ |
23 | Недостаточно места для массива DIM | 55 | Считанный блок не помещается в ОЗУ |
24 | Неправильный оператор DEF | 123 | Несуществующая переменная |
25 | Нет данных для оператора READ | 128 | Некорректная операция в процессе вычисления |
Порты ввода-вывода
[править | править код]Машина стандартно имела устройство чтения/записи на магнитной ленте компактной кассеты, применяемой в бытовых магнитофонах.
Интерфейс ввода-вывода позволял подключать перфоратор и считыватель с перфоленты, а также дисковод гибких восьмидюймовых дисков.
Сетевая структура
[править | править код]Была разработана и реализована спецификация локальной сети размером до 255 устройств (машин или внешних устройств, например, принтеров) построенная на параллельном интерфейсе ИРПР. Топология сети — общая шина. Число соединительных проводников в кабеле — 34. Например, в компьютерном зале МФТИ соединялось от 5 до 18 машин.
Программное обеспечение
[править | править код]Бейсик
[править | править код]На ЭВМ Электроника Д3-28 реализован интерпретатор языка Бейсик (вариант 3А). Примечателен тем, что позволял сразу после загрузки интерпретатора, загрузить расширения интерпретатора в машинном коде с НМЛ. Расширения вызывались через оператор CALL по номеру пакета расширений. Данные расширения позволяли компенсировать ограниченность языка, существовали расширения для работы со строками, для плотной упаковки целочисленных данных, многочисленные расширения для работы с периферийным оборудованием. Исходно, язык Бейсик 3А поддерживал только вещественные числа.
Также существовали версии интерпретатора вар. 3П, Бейсик-4, Бейсик-Т (всё это из официальных заводских поставок).
«Тужилкинский Бейсик»
[править | править код]Назван по фамилии автора — Владимира Алексеевича Тужилкина, распространён был, главным образом, в МФТИ, где и был написан интерпретатор. Достоинства — бо́льшая функциональность и меньший объём занимаемой памяти, чем у «официальной» версии (8 кбайт против 10,5 кбайт). Недостаток — интерпретатор был рассчитан на нестандартное подключение дисплея 15ИЭ-00-013, что ограничивало его более широкое распространение. Использовал формат хранения программ и данных, также несовместимый с исходной версией, однако, благодаря доступу большого количества студентов МФТИ к этим машинам, объём «софта», написанного под этот диалект, далеко превышает объём других программ для Д3-28.
FORTRAN-5M
[править | править код]Самоназвание, выводилось после успешного запуска комплекса. Работал только на системах с 128 кБ памяти. Компилятор диалекта Фортрана, редко применяемый на подобных машинах, давал быстродействие, сопоставимое с программой, изначально написанной в машинных кодах. Скопмпилированную программу можно было записать на кассету и использовать независимо от загруженного компилятора. Во время компиляции этот компилятор иногда уничтожал исходный код программы (вероятно, в случае большого её объёма), но позволял корректно сохранить исполняемый модуль. Позволял вставлять фрагменты в машинных кодах. Возможно, он был основой или ранней версией ОС ВТ-МХТИ.
ОС ВТ-МХТИ
[править | править код]В Московском химико-технологическом институте им. Д. И. Менделеева была создана операционная система, называвшаяся по названию института — ОС ВТ-МХТИ. Разработчиком этой системы был Владимир Калинкин. В систему входил интерпретатор-компилятор собственного языка программирования ВТ-МХТИ, работавший на порядок быстрее штатного «Бейсика» и ряд системных утилит. Генерация системы производилась с кассеты-генератора (по аналогии с ЕС-1022), сгенерированная система записывалась на вторую кассету.
Особенностью языка программирования ВТ-МХТИ являлось использование как англоязычного, так и русскоязычного набора операторов и наличие интерактивного ввода (что-то типа Т9 на современных смартфонах). Сейчас в сети сложно найти описание ОС ВТ-МХТИ, но существует много пользователей, вспоминающих про эту систему: 1, 2, 3.
См. также
[править | править код]- Электроника С50 (15ВСМ-5) — устройство, внешне и по основным органам управления, устройствам и логической организации памяти очень похожее на Д3-28, но имевшее только 1 килобайт ОЗУ на ферритовых кольцах, 256 слов ПЗУ микропрограмм, исполненном в виде ферритового ПЗУ.
Примечания
[править | править код]- ↑ Rick Bensene. Wang 720C Advanced Programming Calculator (англ.). The Old Calculator Web Museum (3 сентября 2008). Дата обращения: 12 сентября 2010. Архивировано из оригинала 3 августа 2010 года.
Ссылки
[править | править код]- Устройство специализированное управляющее вычислительное «Электроника Д3-28».
- Фотогалерея: Сергей Фролов. Электроника Д3-28 15ВМ128-019 . Коллекция советской цифровой электроники Сергея Фролова (28 августа 2010). Дата обращения: 12 сентября 2010. Архивировано из оригинала 18 августа 2011 года.
- Архив программ, документации, симулятор для Д3-28
- Онлайн-эмулятор Электроника Д3-28 (15ВМ128-018)