Главная Дока Микро-80 Радио-86РК ЮТ-88 Орион-128 Ссылки Новости Письмо

Описание компьютера Радио-86РК
Журнал РАДИО

PK + PC.

Мы уже рассказывали о том, как ввести в любой компьютер, снабженный стандартным интерфейсом, программы и данные, подготовленные на “Радио-86РК” и записанные им на магнитную ленту. Нередко возникает и обратная проблема — ввести в “Радио-86РК” данные, подготовленные на другом компьютере. Проблема легко разрешима, если “заставить” этот компьютер записать данные на магнитную ленту в формате “Радио-86РК”, причем никакой аппаратной доработки этого компьютера не требуется, необходимо только соответствующее программное обеспечение и имеющийся в любом компьютере параллельный (обычно к нему подключен принтер) или последовательный интерфейс. Программы, приведенные ниже, разработаны и испытаны на компьютере ЕС-1840, работающем под управлением операционной системы MS DOS версия 3.3 с компилятором TURBO-PASCAL V3.02.

Напомним, что в “Радио-86РК” каждый бит данных в процессе записи заменяется двумя битами, причем логическая 1 заменяется на 01, а логический 0 — на 10. Для записи одного байта требуется передать через интерфейс 16 бит. Для вывода байта данных в нужном формате через параллельный интерфейс ИРПР-М (“Centronics”) можно воспользоваться процедурой, приведенной в табл.1. На компьютере ЕС-1840 эта процедура при указанном в ней значении константы Т формирует сигнал записи со стандартной для “Радио-86РК” скоростью. Магнитофон подключают, как показано на схеме рис.1, к соединителю А04.4, предназначенному для подключения принтера.

Таблица 1.

(Вывод байта на магнитофон через параллельный интерфейс)
Procedure OUTMAG
(В:byte);
const PMAG:lnteger=$378; (
Адрес порта принтера.)
BMAG:byte=$01; (Вывод через младший разряд.)
Т:
lnteger=21; (Задает скорость вывода.)
var A, M:byte; I:Integer;
begin
M:=$80;
repeat If (B and M)<>0 then A:=0 else A:=BMAG;
PORT[PMAG]:=A;

for I:=0 to
Т do;
PORT[PMAG]:=A xor BMAG;

for I:=0 to
Т do;
M:=M Shr 1;
until M=0;
end;

На компьютерах другого типа возможно понадобится подобрать значение Т для получения заданной скорости. Адрес порта данных интерфейса, использованный в процедуре, как правило, одинаков во всех компьютерах, совместимых с IBM PC. Уточнить его можно, обратившись к техническому описанию конкретного компьютера.

Для вывода данных на магнитофон можно использовать и последовательный интерфейс С2 (RS-232C). В компьютерах он организуется, как правило, с помощью универсального синхронно-асинхронного приемопередатчика (УСАПП) — БИС КР580ВВ51А или ее аналогов. УСАПП несложно запрограммировать так, что его выходной сигнал будет иметь нужную форму. Запись байта на магнитофон через последовательный интерфейс выполняет процедура, приведенная в табл.2. Магнитофон подключают к соединителю А04.2 компьютера ЕС-1840 по схеме, показанной на рис.2. Размах сигнала на выходе данных интерфейса около 24В. До величины, необходимой для нормальной работы магнитофона, его уменьшают делителем напряжения. Сумма сопротивлений резисторов делителя не должны быть меньше 3кОм.

Таблица 2.

( Вывод байта на магнитофон через)
(
последовательный порт СОM1 ЕС-1840.)
Procedure OUTMAG(B:byte);

const
РНM: array[0. .15] of lnteger;
($55. $95. $65. $
А5, $59, $99, $69, $А9, $56, $96, $66, $А6, $5А, $9А, $, $АА) ;
procedure SEND(C:byte);

const CW51: integer=$3F9;
(регистр состояния УСАПП. )
DAT31:integer=$3F8; (
Регистр данных УСАПП.)
begin
repeat until(PORT[CW51] and 1)<>0; PORT[DAT51]:=C;
end;
beginSEND(PHM[B shr 4) and $0F]) ;
SEND(PHM[B and $0F])
end;

Таблица 3.

( Настройка таймера и усапп канала сом1 ес-1840}
procedure INIT(K:byte); (
К - константа вывода РК.)
const H1:real = 2.16; (
Константы для )
H2:real = 6.61; (
вычисления )
S9600:integer=8; (
коэффициента деления.)
(
Адреса портов компьютера)
CTRL:integer=$3FC; (
управление интерфейсом)
CW53:integer=$3FB; (pe
г. режима таймера)
CTR:integer=$3F6; (
счетчик таймера)
CW51:integer=$3F9; (pe
г. управл./сост. УСАПП)
DAT51:integer=$3F8; (pe
г. данных УСАПП.)
TMODE:byte=$
З0; var S:integer;
begin

PORT[CTRL]:=$88; (
Работаем с таймером.)
PORT[CW53]:=THODE; (
Уст. режим таймера.)
S:=ROUND(S9600*(K*N1+N2));

PORT[CTR]:=L0(S); (
Вычисляем и загружаем)
PORT[CTR]:=HI(S); (
коэФФ. деления.)
PORT[CTRL]:=$48; (
Сброс УСАПП.)
PORT[CTRL]:=8; (
Работаем с УСАПП.)
PORT[CW51]:=$
ОС; (Уст. синхрю режим.)
PORT[CV51]:=0; (
Загружаем байты)
PORT[CW51]:=0; (
синхронизации.)
PORT[CV51]:=$27; (
Разрешаем передачу)
end;

Операция записи выполняется в два приема. Из байта данных выделяются четыре старших разряда. Байт, соответствующий преобразованию этих разрядов в нужную для записи форму, берется из таблицы РHМ и передается процедуре SEND, которая загружает его в УСАПП. Затем те же действия повторяются с четырьмя младшими разрядами байта данных. Используется синхронный режим работы УСАПП. Не рассматривая всех его особенностей, отметим только, что в отличие от обычно используемого асинхронного режима передаваемые данные не сопровождаются стартовым и стоповым битами.

Таблица 4.

 

ЕС- 1840

Нейрон

 

COM1

COM2

COM1

COM2

CTRL

$3FC

$2FC

нет

нет

CW53

$3FB

$3FB

$3FB

$2FB

CTR

$3F8

$3F9

$3F9

$2F9

CW51

$3F9

$2F9

$3FD

$2FD

DAT51

$3F8

$2F8

$3FC

$2FC

THODE

$36

$76

$36

$76

S9600

8

8

16

16

Настраивает УСАПП и устанавливает скорость записи процедура INIT (табл.3), которую необходимо выполнить до первого обращения к процедуре OUTMAG.

Процедуры передачи байта через интерфейс SEND и настройки интерфейса INIT машинозависимы. Указанные в них физические адреса регистров УСАПП КР580ВВ51А и таймера, задающего скорость записи, относятся к интерфейсному каналу СОМ1 компьютера ЕС-1840.

Рассмотрим изменения, которые придется внести в эти процедуры при использовании другого канала последовательного интерфейса или другого компьютера (например “Нейрон” И9.66). Прежде всего необходимо изменить адреса портов и некоторые другие константы, перечисленные в табл.4. В компьютере “Нейрон”, например, отсутствует регистр управления интерфейсом, поэтому выполняемая часть процедуры INIT должна быть такой, как показано в табл.5.

Таблица 5.

begin
PORT[CW53]:=TMODE; (
Уст. режим таймера. )
S:=ROUND(S9600*(K*N1+N2));

PORT[CTR]:=LO(S); (
Вычисляем и загружаем)
PORT[CTR]:=HI(S); (
коэФФ. деления.)
PORT[CW51]
:=О; (Подготовка)
PORT[CW51]:=0; (
и сброс)
PORT[CW51]:=$40 (
УСАПП.)
PORT[CW51]:=$OC; (
Уст. синхр, режим.)
PORT[CW51]:=0; (
Загружаем байты)
PORT[CW51]:=0; (
синхронизадии)
PORT[CW51]:=$27; (
Разрешаем передачу)
End;

К сожалению, эти примеры не исчерпывают всех возможных вариантов. Поэтому перед адаптацией процедур, использующих последовательный интерфейс, к конкретному компьютеру необходимо внимательно изучить его техническое описание, выяснить тип УСАПП, адреса портов и другие подробности.

Проверить и отладить приведенные выше процедуры и установить нужную скорость записи позволяет программа, текст которой приведен в табл. 6. На указанные в ней места необходимо вставить описания одной из описанных выше процедур OUTMAG (в зависимости от используемого для записи интерфейса) и процедуры INIT (только для последовательного интерфейса). Программа выводит на магнитофон последовательность нулевых байтов длительностью 15с (при номинальной скорости), а затем последовательность байтов 55Н такой же длительности, после чего сообщает длительность сформированного сигнала и скорость записи.

Таблица 6.

Type REGSET=record;
АХ, ВХ
, СХ, DX, ВР, SI, DI, DS, ES, FL: integer;
var I, N:integer; M, S, F:byte; T,Y:real; REGS:REGSET;

(
Здесь вставить описание одной из процедур OUTMAG)
(
(см. табл.1 и 2 в тексте статьи), а для последовательного)
(
интерфейса также описание процедуры INIT (см. табл.3).)
begin
CLRSCR;
WRITELN('
Проверка процедуры вывода данных 'на магнитофон в Формате "Радио-8бРК". ');
N:=2085;
WRITELN; WRITELN('Идет тест-сигнал. . . ');
WRITELN;
(При использовании для записи на магнитофон)
(последовательного интерфейса здесь вставить)

(оператор
INIT($1D);)
with REGS do begin
AX:=$2COO;MSDOS(REGS);
M:=LO(CX);S:=HI(DX);F:=LO(DX);
( См. текст статьи )
for I:=1 to N do OUTMAG(0);
for I:=1 to N do OUTMAG($55);
( см. текст статьи )
AX:=$2COO;MSDOS(REGS);
T:=(LO(CX)-M)*60.0+(HI(DX)-S)+(LO(DX)-F)/100.0;
V:=2.0*H*8/(T+1E-6);

WRITELN('
Длительность сигнала ',Т:5:1, 'с. скорость вывода ',V:l:0,' бит/с.');
end;
end.

При работе с параллельным интерфейсом скорость устанавливают, изменяя значение константы Т в процедуре OUTMAG. Качество сформированного сигнала нужно обязательно проверить, наблюдая его на экране осциллографа. Не должно быть заметных различий в длительности положительных и отрицательных полупериодов сигнала, в противном случае испытываемая процедура непригодна для работы на данном компьютере. Как правило, наблюдаются периодические “вздрагивания” осциллограммы, связанные с тем, что операционная система компьютера прерывает работу программы вывода для выполнения различных служебных операций. Для устранения этого явления на время выполнения записи прерывания запрещают. В программе табл.6 прерывания можно запретить, вставив в нее перед первым оператором for I: = ... оператор INLINE($FA).

После окончания вывода, т. е. после второго оператора for I: = ..., прерывания необходимо разрешить оператором INLINE($FB).

Такое изменение программы приводит к прекращению счета времени компьютером, поэтому значения длительности и скорости сигнала на экран дисплея будут выведены неправильные. В этом случае скорость можно проконтролировать, измеряя длительность сигнала секундомером или его частоту частотомером. “Нулевым” байтам при этом должна соответствовать частота сигнала 1100 Гц, а байтам 55Н — в два раза меньше. Так как разрешение и запрет прерываний мало влияют на величину скорости, то ее установку можно проводить, не внося в программу операторов INLINE, а затем ввести их и убедиться в отсутствии “вздрагиваний”.

При работе с последовательным интерфейсом скорость задают параметром при вызове процедуры INIT. Он должен быть равен “константе вывода”, задающей ту же скорость в “Радио-86РК”. УСАПП выполняет все операции по передаче загруженного в него байта без участия процессора, у которого всегда имеется достаточно времени для подготовки очередных данных, обслуживания прерываний и других необходимых действий. По этой причине использование последовательного интерфейса для записи данных на магнитофон предпочтительнее. В запрещении прерываний на время вывода в данном случае нет необходимости.

Для проверки скорости и качества формируемого сигнала можно воспользоваться также программами для “Радио-86РК”, описанными в журнале “Радио” № 4 за 1987 г.

Итак, мы научились записывать отдельные биты данных на магнитную ленту в формате “Радио-86РК”. Однако блоки данных, хранящиеся на магнитных дискетах или в ОЗУ компьютера, перед записью необходимо преобразовать и снабдить необходимой служебной информацией, чтобы “Радио-86РК” мог принять их и поместить в нужное место своего ОЗУ. Такое преобразование и саму запись выполняет программа RSRK, текст которой приведен в табл.7. В зависимости от используемого интерфейса на указанное в программе место помещается одно из приведенных выше описаний процедуры OUTMAG. Для последовательного интерфейса необходима и процедура INIT. Если при проверке процедуры вывода оказалось необходимым запрещать прерывания, то в программу на места, указанные в комментариях, необходимо вставить соответствующие операторы INLINE.

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

Текстовые файлы. Данные, находящиеся в таких файлах, могут представлять собой тексты документов, статей и т. п., а также исходные тексты программ на различных языках программирования, например на языке ассемблера микропроцессора серии КР580. В “Радио-86РК” тесты обычно обрабатываются программой редактором ED.МИКРОН. Подготавливая текстовые файлы к записи, RSRK преобразует их в формат, принятый в ED.МИКРОН: удаляет символы перевода строк (код ОАН), преобразует символы табуляции (код 09Н) в нужное число пробелов. Символы псевдографики, отсутствующие в знакогенераторе “Радио-86РК”, заменяются символами подчеркивания (код 5FH).

Стандартный знакогенератор “Радио-86РК” содержит только прописные русские и прописные латинские буквы. Другой набор отображаемых символов, например, русские строчные и прописные буквы можно получить, переключая знакогенераторы. Одновременный вывод на экран символов из разных наборов имеющимся матобеспечением “Радио-86РК” не предусмотрен. Учитывая, что многие компьютеры позволяют готовить тексты, содержащие как русские, так и латинские прописные и строчные буквы, RSRK предлагает четыре варианта перекодировки символов перед записью:

Если в тексте встретится строка, в которой больше допустимых для ED.МИКРОН 62 символов, то все символы, начиная с 63-го, RSRK перенесет на новую строку.

Естественно, все преобразования происходят только в данных, записываемых на магнитофон. Никаких изменений в исходный файл на диске не вносится. Подготовленные данные снабжаются необходимой для ED.МИКРОН служебной информацией. Записи автоматически присваивается имя, совпадающее с именем исходного дискового файла. Если длина текста больше размера буфера редактора, RSRK запишет его по частям. Полученная запись ничем не отличается от выполненной самим редактором ED.МИКРОН и может быть прочитана по командам AP2-I или АР2-М.

Машинные коды. Программы в машинных кодах, обычно хранящиеся в файлах с расширениями СОМ и ЕХЕ, записывать на магнитофон не имеет смысла, так как в большинстве случаев они не могут быть выполнены на “Радио-86РК” из-за различий в системах команд и архитектуре компьютеров. Такие файлы RSRK не обрабатывает. Коды, предназначенные для записи, должны быть представлены в виде так называемого НЕХ - файла. Такой файл, например, является результатом работы стандартного ассемблера для микропроцессора серии КР580. Возможно представление данных в обычном текстовом файле в виде дампа, т. е. таблицы кодов, аналогичной публикуемым в журнале.

Программа RSRK преобразует НЕХ - файл или таблицу кодов в вид, необходимый для записи, определяет и выводит на экран дисплея начальный и конечный адреса блока, его контрольную сумму. Алгоритм подсчета контрольной суммы аналогичен принятому в “Радио-86РК”. Полученная запись идентична выполненной по директиве RSRK МОНИТОРа “Радио-86РК” и может быть введена по директиве I. Если адреса данных в исходном файле не образуют непрерывной последовательности, то запишет данные на магнитофон по частям, в каждой из которых адреса непрерывны.

А. ДОЛГИЙ

г. Москва

Отсканировано с журнала Радио №10, №11 1990 г.
Отредактировано Лесных Ю. 2001 г.

Описание компьютера Радио-86РК
Журнал РАДИО



(C) 2003-2010 www.danbigras.ru Наш адрес: info@danbigras.ru
Всё о старых компьютерах