И снова «голос» домашнего компьютера
Прежде чем передать слово С. Ивашинникову, который предлагает простейшую, но довольно эффективную говорящую программу для БК, вернёмся к статье «Здравствуйте, говорит «Электроника БК-0010» А. Чистякова (см.: Информатика и образование. 1988. № 4). В тексте статьи допущена опечатка - вместо 1026А2000G должно быть 1026А2000И. Благодарим читателей, указавших на это.
Программу вводят в память БК с адреса 1000. Прежде чем запускать её, обнулите ячейки: 1110А36000Д0Р. Только теперь включите в режим записи магнитофон, подключённый к БК, и отрегулируйте уровень записи так, чтобы магнитофон хорошо работал с микрофоном. Запустив программу командой 1000G, продиктуйте как можно более чётко короткую фразу, например: «работает программа речевого синтезатора БК». Сразу же вслед за этим остановите исполнение программы, нажав клавишу СТОП. Всё готово, и командой 1044G можно запустить синтезатор. Фраза, которую мы только что начитали, начнёт повторяться до тех пор, пока вновь не будет нажата клавиша СТОП. Звук будет слышен и через пьезодинамик БК, но лучшего качества нетрудно добиться, подключив к БК тот же магнитофон. Память БК способна вместить и более длинные фразы, если разблокировать её клавишами НР/РП. Впрочем, есть возможность обменять время работы синтезатора на качество звучания. Для этого нужно исправить всего четыре команды: 1026А110420, 1040А110420, 1060АИ151004, 1070АИ152004.
12703 | 177716 | 12700 | 70 | 60700 | 12702 | 40 | 5004 |
5204 | 30213 | 1775 | 10420 | 5004 | 5204 | 30213 | 1375 |
10420 | 765 | 12700 | 30 | 60700 | 12737 | 100 | 177716 |
11004 | 77401 | 5037 | 177716 | 12004 | 77401 | 5710 | 1365 |
761 | 0 | 0 | 0 |
Как же работает программа? Информация, считываемая с магнитофона, записывается в память БК словами (или байтами) с 1102 адреса, а затем последовательно за байтом воспроизводится.
С. ИВАШИННИКОВ,
г. Арсеньев, Приморский край
Радуга на экране БК
Счастливцы, которым удалось подключить свой компьютер к цветному телевизору, знают, что Бейсик позволяет распорядиться всего четырьмя различными цветами - красным, зелёным, синим и чёрным. Оператор PAINT Бейсика-МСХ позволяет окрасить в заданный цвет любую область экрана, ограниченную замкнутым контуром. В черно-белом варианте красный цвет выглядит белым, синий и зелёный - серым. Можно ли увеличить число цветов на экране, если архитектурой БК предопределено, что на задание цвета отводится два бита памяти? Если речь идёт о цвете окраски, то выход есть. Кировчанин С. Зильберштейн, автор известной программы X Фокал, предлагает получать на экране БК 16 различных цветовых оттенков программным способом.
«Электроника БК-0010.01» действительно «знает» всего четыре цвета, но раскраска и цвет совсем не одно и то же. Раскраска вовсе не обязательно должна быть однородной. Вспомните телеэкран: три расположенные рядом точки - красная, синяя и зелёная - воспринимаются как белый цвет, а различные их комбинации - как множество оттенков. Так и на экране БК в качестве цвета можно вообразить, например, чередующиеся в шахматном порядке красные и синие точки, какую-либо штриховку или периодический рисунок. В качестве минимального элемента раскраски можно выбрать квадратик размером 4X4 точки экрана. Изменяя его кодировку, можно будет в итоге определять цвет раскраски большого фрагмента экрана. Чтобы пояснить сказанное, приведу лишь один пример - матрица, изображённая на рисунке, соответствует диагональ ной штриховке синим цветом по красному полю.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Если записать матрицу в цифровом виде (каждому цвету соответствует цифра от 1 до 4), то получится строчка - (4443, 4434, 4344, 3444). В развитых версиях Бейсика оператор PAINT позволяет указывать и матрицу раскрашивания. В Бейсике-БК такой возможности нет, но её можно ввести. Для этого служит программа PAINTM. Запустив её, вы модифицируете Бейсик так, что оператор PAINT будет воспринимать не только цвета от 1 до 4, но и от 5 до 16. При этом определения псевдоцветов 5-16, т.е. соответствующие матрицы раскраски, программист вводит с помощью операторов DEF. Формат оператора легко запомнить: DEF CN=(ЦЦЦЦ, ЦЦЦЦ, ЦЦЦЦ, ЦЦЦЦ). Здесь N - номер цвета раскраски (от 5 до 16), Ц - цвет отдельной точки (от 1 до 4).
10 ' ПРОГРАММА PAINTM SZ/08-88 20 ' (16-ЦВЕТНАЯ РАСКРАСКА) 30 ' 100 DATA 5599,16222,28,9111,-21324,516 110 DATA 5623,-30696,60,265,9111,-21304 120 DATA 1017,9111,-21296,539,5623,-30694 130 DATA 40,6118,140,3039,192,783 140 DATA 4262,8599,304,-32252,5599,-1 150 DATA 140,-30457,17858,-4,26562,192 160 DATA -28001,140,5506,-30696,5535,140 170 DATA 2,95,-32694,95,-13052,11671 180 DATA 4,-13672,518,5585,16236,503 190 DATA 2591,192,92,9111,-21894,523 200 DATA 9622,-6720,5,3264,3264,26048 210 DATA 256,4127,192,2574,92,9111 220 DATA -13450,739,9622,-23337,67,513 230 DATA -30392,-30462,-23337,61,764,-30377 240 DATA -6715,5,3269,3269,26053,256 250 DATA 5606,3,2551,18,-30378,2766 260 DATA 7636,3030,2551,6,-30376,-30394 270 DATA 135,2598,5570,4,3214,3214 280 DATA -27452,-6716,52,2820,8471,3 290 DATA -32036,196,3204,3204,20750,32398 300 DATA 5508,-28395,135,0,0,0 400 CLEAR ,&O37400 410 FOR K=0 TO 250 STEP 2 420 READ CODE 430 POKE &O37400+K,CODE 440 NEXT 450 POKE &O30,&O37400
100 ' CIRCLE - СЕКТОРНАЯ ДИАГРАММА ДЛЯ В ВЕЛИЧИН 120 DEF C5=(3333,4444,3333,4444) 130 DEF C6=(3434,4343,3434,4343) 140 DEF C7=(3444,4444,4434,4444) 150 DEF C8=(4443,4434,4344,3444) 160 CLS 170 SUM=0 180 PRINT "ЗНАЧЕНИЯ:" 190 FOR K=1 TO 8 200 PRINT "V";MID$(STR$(K),2,2); 210 INPUT V(K) 220 SUM=SUM+V(K) 230 NEXT 240 R=100 250 A2=0.00001 260 FOR K=1 TO 8 270 A1=A2 280 A2=A2+2*PI*V(K)/SUM 290 CIRCLE (140,120),R,1,-A1,-A2,4/3 300 XP=R/2*COS((A1+A2)/2) 310 YP=-R/2*SIN((A1+A2)/2) 320 PAINT @(XP,YP),K,1 330 NEXT
Достаточно один раз запустить эту программу, чтобы модифицировать Бейсик до следующего включения питания. Программу, разумеется, можно стереть командой NEW. Сказанного вполне достаточно, чтобы самостоятельно проделать первые эксперименты с добавочными цветами, но всё же приведу ещё один пример. Программа CIRCLE определяет четыре дополнительных цвета и строит после ввода с клавиатуры восьми числовых значений раскрашенную в восемь цветов секторную диаграмму. Кстати, попробовать могут и владельцы черно-белого варианта - цветам с 5 по 8 соответствуют горизонтальная штриховка, мелкая сетка, отдельные точки и диагональная штриховка.
С. ЗИЛЬБЕРШТЕЙН, г. Киров
Программный способ, предложенный С. Зильберштейном, весьма интересен, но есть и иной вариант. Владельцы БК, знакомые не только с программированием, но и с радиотехникой, могут выбрать другой путь - усовершенствовать не Бейсик, а саму «Электронику БК». Доработка компьютера позволяет вместо четырёх фиксированных цветов - чёрного, красного, синего и зелёного - выбирать одну из 63 различных палитр. Каждая палитра - это набор из четырёх различных цветов, причём один из этих цветов обязательно чёрный, а три остальных - любые из семи цветов: белого, жёлтого, голубого, зелёного, фиолетового, красного и синего. Прежде чем взяться за паяльник, взвесьте свои силы - переделка достаточно сложная, кроме того, доработанный компьютер (и телевизор) уже не удастся сдать в ремонт. Тем, кто отважится на модернизацию своего БК, киевлянин В. Кондрашев предлагает опробованный им на практике способ.
Проще всего, «Электронику БК-0010» подготовить к работе с четырьмя основными цветами. Для этого на печатную плату устанавливают недостающие элементы - четыре транзистора КТ315, двенадцать резисторов и разъём ХТ11 - точно такой же, как ХТ9. Отверстия в плате под все элементы уже имеются, остаётся только правильно разместить детали и аккуратно припаять их выводы. Рисунок принципиальной схемы и фрагмент платы БК помогут избежать ошибки. Зелёным цветом на рисунке выделены новые элементы схемы. Чтобы получить цветное изображение на телевизоре, достаточно соединить кабелем разъём ХТ11 и входы видеоусилителей красного, синего и зелёного лучей.
Переделка достаточно проста, но так можно получить лишь четыре основных цвета. Для того чтобы расширить цветовую гамму, я разработал другой способ. Если запрограммировать постоянное запоминающее устройство - ПЗУ так, как показано в табл. 1, то вместо трёх цветов мы получим уже восемь. Цифра 0 в коде означает, что на усилитель подаётся сигнал, т.е. комбинация 001 соответствует тому, что сигнал подан на «зелёный» и «красный» входы - такое сочетание даст на экране жёлтый цвет. Таким образом, всё адресное пространство ПЗУ необходимо разделить на «палитры» (табл. 2). Требуемый цвет в палитре кодируется соответствующей цифрой - для этого используют 001, но последним кодом в каждой палитре должна быть цифра 7, соответствующая чёрному цвету. Когда составление табл. 2 будет завершено, информацию переносят в ПЗУ, как говорят радиолюбители, ПЗУ прошивают. Описание процесса прошивки достаточно известно, его нетрудно найти в радиолюбительской литературе, поэтому подробности я опускаю. Поясню работу схемы в целом. Для выбора палитры используются старшие шесть разрядов адреса. Эти разряды записываются в регистр управления - микросхема К555ТМ9 (рис. 3). Чтобы защитить регистр от случайных срабатываний, на микросхему К155ЛЕ1 поступает сигнал с 15 разряда магистрали процессора адрес/данные. Входы регистра управления подключены к 9-14 разрядам магистрали. Поскольку в регистр управления информация поступает прямо из магистрали, то записывается она инвертированной, а значит, и код палитры необходимо записывать в инверсном виде, например: код 177000(8) установит нулевую палитру, код 176000(8) - первую, а 175000(8) - вторую палитру. Код требуемой палитры записывают по адресу 177716(8). При включении питания автоматически происходит установка режима 0-палитры.
8-ричное число |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Вход видеоусилителя |
|
Код на выходе ПЗУ К556РТ4 Номер выхода |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
синий |
2 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
красный |
|
3 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
зелёный |
|
4 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
не нужен |
|
Цвет на экране |
белый |
жёлтый |
голубой |
зелёный |
фиолетовый |
красный |
синий |
чёрный |
|
Палитра |
Адрес |
Код |
Цвет |
---|---|---|---|
1 |
0 |
5 |
красный |
1 |
3 |
зелёный |
|
2 |
6 |
синий |
|
3 |
7 |
чёрный |
|
2 |
4 |
0 |
белый |
5 |
0 |
белый |
|
6 |
0 |
белый |
|
7 |
7 |
чёрный |
|
3 |
8 |
1 |
жёлтый |
9 |
2 |
голубой |
|
10 |
4 |
фиолетовый |
|
11 |
7 |
чёрный |
|
и т.д. |
Несколько советов по практической части переделки. С основной печатной платы аккуратно удалите микросхему D20 К155ЛЕ1, обрежьте дорожки, ведущие к её выводам. На освободившееся место установите панельку для ПЗУ К556РТ4. От D20 осталось только 14 отверстий, поэтому два «лишних» вывода панельки осторожно отогните в стороны. Микросхему К555ТМ9 установите на свободное место, а микросхему К155ЛЕ1 рядом с ней, например так, как я сделал в своём компьютере. Три транзистора, резисторы и потенциометры, необходимые для регулировки яркости, устанавливают на свободные места. Соединения производите точно по схеме, обрезая все ненужные связи. На разъёме, к которому подключается телевизор, есть перемычка между контактами 3 и 5 - её удаляют и, отсоединив контакты 1, 3 и 5 от схемы, подключают их к выходам транзисторных формирователей. Перемычку R55-R56, которая находилась на разъёме, установите на плате. Для синхронизации можно воспользоваться сигналом черно-белого изображения, т.е. к телевизору подключаем 1, 3, 5 и 4 контакты разъёма ХТ9. Переделка достаточно сложная, но и результат не обманет ваших ожиданий!