Электроника Д3-28

Электроника Д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 псевдовозврат из подпрограммы PRINT вывод на печать
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.

Самоназвание, выводилось после успешного запуска комплекса. Работал только на системах с 128 кБ памяти. Компилятор диалекта Фортрана, редко применяемый на подобных машинах, давал быстродействие, сопоставимое с программой, изначально написанной в машинных кодах. Скопмпилированную программу можно было записать на кассету и использовать независимо от загруженного компилятора. Во время компиляции этот компилятор иногда уничтожал исходный код программы (вероятно, в случае большого её объёма), но позволял корректно сохранить исполняемый модуль. Позволял вставлять фрагменты в машинных кодах. Возможно, он был основой или ранней версией ОС ВТ-МХТИ.

В Московском химико-технологическом институте им. Д. И. Менделеева была создана операционная система, называвшаяся по названию института — ОС ВТ-МХТИ. Разработчиком этой системы был Владимир Калинкин. В систему входил интерпретатор-компилятор собственного языка программирования ВТ-МХТИ, работавший на порядок быстрее штатного «Бейсика» и ряд системных утилит. Генерация системы производилась с кассеты-генератора (по аналогии с ЕС-1022), сгенерированная система записывалась на вторую кассету.

Особенностью языка программирования ВТ-МХТИ являлось использование как англоязычного, так и русскоязычного набора операторов и наличие интерактивного ввода (что-то типа Т9 на современных смартфонах). Сейчас в сети сложно найти описание ОС ВТ-МХТИ, но существует много пользователей, вспоминающих про эту систему: 1, 2, 3.

  • Электроника С50 (15ВСМ-5) — устройство, внешне и по основным органам управления, устройствам и логической организации памяти очень похожее на Д3-28, но имевшее только 1 килобайт ОЗУ на ферритовых кольцах, 256 слов ПЗУ микропрограмм, исполненном в виде ферритового ПЗУ.

Примечания

[править | править код]
  1. Rick Bensene. Wang 720C Advanced Programming Calculator (англ.). The Old Calculator Web Museum (3 сентября 2008). Дата обращения: 12 сентября 2010. Архивировано из оригинала 3 августа 2010 года.