Электро́ника Д3-28 — специализированное настольное управляющее и вычислительное устройство, занимающее промежуточное положение между персональными компьютерами и программируемыми калькуляторами.

Создана на основе микроЭВМ «Электроника С50» (15ВСМ-5), прототипом для которой, в свою очередь, послужил программируемый калькулятор Wang 700. Имеет встроенную клавиатуру (цифровые и функциональные клавиши), двухстрочный дисплей на семисегментных индикаторах (при отображении чисел с плавающей запятой 12 цифр мантиссы, 2 цифры степени и 2 индикатора знака в каждой строке) и накопитель на магнитной ленте (НМЛ) в стандартных аудиокассетах.

Оснащена оперативным запоминающим устройством (ОЗУ) ёмкостью около и имеет быстродействие до в секунду.

Также оснащается интерфейсами ИРПР и ИРПС (в виде согласующего устройства ПЭЛ2.240.001), к которым обычно подключался принтер и алфавитно-цифровой терминал (как правило, модели 15ИЭ-00-013). Для представления алфавитно-цифровой информации (строк символов) используется кодировка КОИ-7 Н2 по ; коды символов дополняются до 8-битных байтов (октетов) добавлением нулевого бита в качестве старшего.

Варианты исполнения Первые серии Д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 в персональный компьютер.

Имелась возможность загрузки и автоматического запуска программы через интерфейс при включении машины.

Архитектура и система команд В документации к Электронике Д3-28 значения байтов представлены особым образом — в виде двух тетрад, каждая из которых выражена двузначным десятичным числом. Это обусловлено возможностью побайтового ввода информации (команд и данных) непосредственно с клавиатуры. Так, например, буква Э имеет код символа в кодировке КОИ-7 Н2, используемой Д3-28, и может быть введена как .

Система команд Команды машинно-ориентированного языка Электроники Д3-28 кодируются одним или двумя байтами. Для облегчения восприятия человеком используются ассемблерные мнемокоды команд, приведённые в таблице:

Ассемблерный видОписаниеАссемблерный видОписание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 Символ наклавише Названиекоманды Мнемокод КодкомандыММеткаMARK04 08СЛСчитываниес МЛLOADP05 13SПускGO05 14ВПВызовиз памятиMOV C,X04 05ЗПЗаписьв памятьMOV X,C04 04

Выбор режима осуществляется нажатием соответствующей клавиши и индицируется свечением расположенного рядом с ней индикатора. Возможна работа в одном из четырёх режимов: Работа (). Основной режим. Производится выполнение всех программ и команд, записанных в ОЗУ, а также вводимых с клавиатуры Д3-28 или с НМЛ. Ввод (). Запись в ОЗУ, проверка и изменение программ. Команда не выполняется, а только записывается по адресу, индицируемому в регистре Y. Печать и ввод (). Печать ().

Организация памяти В Д3-28 ОЗУ условно разделено на две зоны: рабочую и служебную. Ячейки служебной зоны именуются регистрами. Рабочая зона машин с 32 килобайтами ОЗУ занимает адреса —, в этой зоне размещаются данные и программы пользователя. Служебная зона занимает последние 256 байтов ОЗУ с адресами —. В некоторых регистрах хранится информация, требуемая для нормальной работы Д3-28, часть свободных ячеек может быть использована для хранения команд. Структура служебной зоны ОЗУ: с адреса по расположены шестнадцать двухбайтных регистров R00—R15, каждый R-регистр состоит из двух байтов ОЗУ с соседними адресами, байт с меньшим адресом является старшим. Регистры R08—R15 состоят из шестнадцати однобайтных регистров S00—S15. Четыре регистра R04—R07 образуют восьмибайтный регистр RR, который используется в командах с кодами (MOV X,RR) и (MOV RR,X).

Вся память адресуется независимо двумя основными способами: Для команд работы с числами с плавающей запятой память представляет собой набор последовательно расположенных 16-байтовых чисел (12 байт — десятичная мантисса, 2 бита — знак числа и знак порядка, три тетрады — три десятичных цифры показателя степени). Адресом ячейки служит условный номер такого числа от 0 до (объём памяти / 16). Плавающие числа хранятся в двух разных форматах. В одном, когда адресом был номер ячейки, число занимает или старшие, или младшие тетрады в 16 байтах, расположенных подряд и выровненных на адрес, кратный 16. В другом число занимает целиком 8 байтов в памяти подряд. При этом разрядность и прочие характеристики чисел совпадают. Первая форма была унаследована от калькулятора и допускала только команды с прямой адресацией (0—255, поскольку адрес был однобайтный), вторая — только команды с косвенной адресацией, но при этом адресуется вся память. Для команд целочисленной арифметики и логических операций с байтами, 16- и 32-битными словами адресом служит физический адрес первого, самого старшего байта слова. Порядок следования байтов в словах — от старшего к младшему. Структура переходов — эклектичная - переходы производятся несколькими способами. Для безусловного перехода или перехода к подпрограмме используется не менее четырёх способов: по поиску «метки» в теле программы (последовательности байтов + <метка>), последовательным просмотром (прослеживается явное наследие калькулятора), с относительной адресацией — в пределах 256 байтов от команды перехода, и по адресу в регистре — по таблице переходов.

В 128-килобайтной версии машины применяется страничная организация памяти с мгновенно переключаемыми (по изменению состояния управляющих ячеек памяти) страницами размером по 16 килобайт каждая. Адресное пространство без применения механизма переключений страниц составляет 32 килобайта.

Регистры и индикаторы Регистры адресовались как ячейки памяти по некоторым фиксированным адресам. При этом регистры X и Y арифметики с плавающей запятой непрерывно отображаются на 2 индикаторах.

В режиме останова основной программы большинство клавиш на клавиатуре предназначалось для арифметических и функциональных действий с числами в регистрах X и Y.

При работе основной программы на индикаторах отображались состояния регистров X и Y, однако существовало несколько команд, позволявших изменить способ отображения соответствующей им области памяти на один из нескольких служебных регистров.

При отладке и запуске пошагового исполнения отлаживаемой программы на индикаторах отображались адрес исполняемой команды, код операции и три следующих в памяти байта команд.

Имелось по 16 регистров для работы с байтами и 16-битными словами, при этом 16 однобайтных регистров физически совпадали с первыми восемью 16-битными регистрами.

Сообщения об ошибках ЭВМ Д3-28 Эти сообщения об ошибках выводились интерпретатором языка Бейсик, а не самой «прошивкой» Д3-28. Д3-28 могли использоваться и без интерпретатора языка Бейсик. КодТип ошибкиКодТип ошибки0Переполнение памяти, отведённой пользователю26Недопустимый оператор DATA1Недопустимый оператор27Неправильный формат команд CMD2Переполнение строки ввода30Неправильный формат в операторе FOR…NEXT3Недопустимый ограничитель в строке31Отсутствие NEXT4Недопустимый номер строки32Отсутствие FOR5Несоответствие кавычек в предложении33Переполнение стека FOR…NEXT6Отсутствие открывающей скобки перед аргументом функции34Нулевой шаг FOR7Недопустимый оператор LET35Неверный формат оператора PRINT10Неправильная запись индексов36Неверно задан формат печати11Неправильная размерность индекса37Недопустимое выражение в операторе TAB12Несоответствие скобок в выражении38Отсутствие открывающей записи в магнитной ленте (МЛ)13Недопустимый элемент выражения43Нет строки для перехода по операторам GOSUB или GOTO14Функция пользователя не определена44Нет внешней подпрограммы с указанным именем15Неправильное имя переменной50Неправильное предложение с оператором обслуживания МЛ20Неправильная операция отношения52Сбой структуры файла21Недопустимый оператор IF53Отсутствие в запоминающем устройстве массива при приёме с МЛ22Недопустимый оператор COM или DIM54Не считан очередной блок данных с МЛ в ОЗУ23Недостаточно места для массива DIM55Считанный блок не помещается в ОЗУ24Неправильный оператор DEF123Несуществующая переменная25Нет данных для оператора READ128Некорректная операция в процессе вычисления

Порты ввода-вывода Машина стандартно имела устройство чтения/записи на магнитной ленте компактной кассеты, применяемой в бытовых магнитофонах.

Интерфейс ввода-вывода позволял подключать перфоратор и считыватель с перфоленты, а также дисковод гибких восьмидюймовых дисков.

Сетевая структура Была разработана и реализована спецификация локальной сети размером до 255 устройств (машин или внешних устройств, например, принтеров) построенная на параллельном интерфейсе ИРПР. Топология сети — общая шина. Число соединительных проводников в кабеле — 34. Например, в компьютерном зале МФТИ соединялось от 5 до 18 машин.

Программное обеспечение

Бейсик