Несколько устройств для "Спекки"
© Кунгуров А.Н., п. Нижний Архыз, (КЧР), 1994.
Часто встречаются программы, рассчитанные на мастеров спорта по настольному теннису или на граждан своей страны, владеющих скорочтением. Не во всех программах предусмотрен режим ПАУЗА. Преодолеть эти трудности можно с помощью замедлителя темпа, позволяющего плавно регулировать скорость работы процессора вплоть до полной остановки. Схема, представлена на рис.1. Обозначение на этой и остальных схемах соответствует компьютеру "Балтик". Кроме того, для "Балтика" не требуется устанавливать VD2' и R4' и разрывать цепь "WAIT".
На схеме (рис.1) на D1.1' собран внешний генератор, так как использовать какую-либо частоту с платы компьютера нельзя из-за её синхронности с сигналом INT. Номинал R2' подбирается таким, что бы при положении R6' в состоянии максимального сопротивления, процессор останавливался полностью.
Настройку замедлителя темпа можно выполнить с помощью программы: 10 FOR а=1 ТО 2 2 0 PRINT AT 10,0; 30 FOR b=0 TO 32 40 PRINT PAPER a;" "; 50 NEXT b 60 NEXT a 7 0 GO TO 10
Конечно, могут возникнуть сом нения в этичности пропагандирования такого устройства, поэтому, для тех, кто задается этим вопросом, предусмотрен выключатель S1.
Теперь относительно реализации порта #FF. Вообще говоря, информация, извлекаемая из этого порта -бессмысленна. Поэтому, не всё ли равно, откуда её брать? И вовсе не обязательно вводить в компьютер "мохнатого паука" и перегружать бедную шину данных. В схеме на рис.2 роль порта #FF выполняет порт #31 (KEMPSTON-джойстика).
Необходимо разорвать цепи, идущие к выводам 5, 8 и 9 внешнего интерфейса на К580ВВ55А и включить в разрывы эту схему. В качестве Fстроб. можно использовать кадровый синхроимпульс КСИ, либо частоту, взятую из замедлителя темпа. (Dl':13). При отсутствии сигнала "IN#FF", можно использовать простейший дешифратор, например, изображенный на рис.3.
Хотя этот порт #FF и "неправильный", программы RENEGADE и SHORT CIRCUIT им вполне удовлетворяются. Кроме того, его можно использовать как генератор случайных чисел, если игнорировать нулевые значения переменной а (см. подпрограмму RND ниже).
Подпрограмма случайных чисел для порта #FF. Результат - в переменной а. Нулевые значения стоит игнорировать, поскольку, из-за ширины Fстроб. вероятность их по явления выше, чем других значений. 9910 REM Subroutine RND 9920 LET A=0
9930 LET b=IN 255: IF b=255 THEN LET a=a+l: GO TO 9930 9940 RETURN
Теперь о музыкальном процессоре. Во всех встреченных мной публикациях о подключении музыкального процессора AY-3-8910(12) вопрос о тактовой частоте либо обходится, либо утверждается, что она должна быть 1,75 МГц. Наконец, в книге Стивена Виккерса "Дополнение к книге Программирование на языке Бейсик", под редакцией Робина Бредбира . The Leagrave Press LTD, Luton and London, Great Britain Third Edition 1986, перевод 1989 г., удалось обнаружить, что в стандартной Spectrum частота тактирования AY-3-8910(12) равна 1,7734 МГц. Точность при этом 0,01%. Очевидно, что при тактовой частоте 1,75 МГц, точность составит 1,32%. В компьютерах с кварцем 16МГц делением на 9 можно получить частоту 1,778МГц с точностью тактирования 0,25%. В ZX-FORUM на стр. 146 А. Гармаисанов пишет: "... и звук хороший.". Выходит, бывает и плохой? Действительно, бывает. И еще, какой плохой! Дело в том, что AY-3-8910(12) сбивается, если во время обращения к нему компьютера приходят тактовые импульсы. Поэтому тактовая частота должна быть либо синхронизирована с обращениями компьютера, либо запрещена во время них. Последнее и реализовано на рис. 4.
Вместо делителя D2 ''', D3 ''' можно подключить любой внешний генератор. На качестве музыки та кое обращение с тактовой частотой практически не сказывается, поскольку AY-3-8910 (12) работает по фронту тактовой частоты и ему все равно, что приходит на вход CLK -меандр или "иголка".
К155АГЗ (К555АГЗ)
D1.1'
"1" 3,
13
14 ||С2' 2.0
15
+5В -
D1"
СГ =)=0,15
026:1-
—кн
VD2" VD3"
-м—
IIС411.0
R2 24k
VT1 КТ3102Е
R1"
430
R3" 20k
VD4"
КД522
Рис. 3
JL
Рис. 1
Рис. 2
Рис. 4