О системе синхронизации компьютеров "ПРОФИ".
© К. Громов, г. Москва.
СВЕРШИЛОСЬ! Как я писал уже раньше, я вел работы по изменению работы синхрогенератора компьютера "ПРОФИ". Так вот спешу порадовать - работа увенчалась успехом! Теперь подробнее.
Изначально имелся синхрогенератор для версий плат 3.XX. Это, пожалуй, самое мрачное творение, и заострять на нём внимание я не буду. Скажу лишь, что распознать данную версию можно по черной рамке вокруг SPECTRUM-растра, и в программе QARX буквы бегут не по верхней части бордюра, а где-то в середине экрана. Потом специалистами фирмы "КОНДОР" была написана версия "SAMX6", в которой был реализован полноценный SPECTRUM-растр плюс правильное формирование сигнала INT. И хотя вроде все было нормально, меня не устроило положение верхних бордюрных эффектов. Мысль о том, что здесь "виноват" INT оказалась неверной. Дело было в системе пересчёта строк.
Как известно, необходимо правильно "разворачивать" 312 строк SPECTRUM-растра (экран + бордюр). Во многих схемах, например в "ПЕНТАГОН 128", просчитывается 320 строк, что приводит к явному нарушению синхронизации. Это наиболее заметно, если из BASICa отдать команду "SAVE" - вместо хорошо различимых поднимающихся по бордюру полос будет видна хаотическая мешанина. В "ПРОФИ" дело обстояло почти как надо, только подсчёт восьми тактов (16*19+8=312) происходил за кадровым импульсом, а не перед ним. Это приводило к тому, что формирование экрана начиналось на 8 строк раньше и выглядело как будто изображение на бордюре "спущено" на одно знакоместо. Хотя "SHOCK MEGADEMO" шел достаточно прилично, спрайты не пропадали. Так что первым проблемным моментом стало положение пересчета. Вот этот первый момент я и устранил.
И тут получилась забавная вещь, картинки на экране/бордюре стали вылитые как на "ПЕНТАГОНЕ 128" с доработанным ЮТом, что навело меня на мысль: "ПРОФИ" версий 3.XX -4.XX не что иное как улучшенный и навороченный "ПЕНТАГОН"! Правда только по шине и времянке. Забегая вперед скажу, что здесь играет важную роль сигнал WAIT. В "ПЕНТАГОНЕ" и старом "ПРОФИ" он попросту не использовался. Так получилась версия "SAMX6M". Хорошо идущим SHOCKом, к сожалению, пришлось пожертвовать. Зато наконец-то встали на свои места верхние бордюрные эффекты, и пошли "мультиколоры" в фирменных программах.
Вторым моментом, который меня удручал, являлось то, что в QARXe был заметен ход луча, формирующий бордюр в правом верхнем углу. Практика показала, что здесь ключевую роль играла длительность сигнала INT. Причём длительность, подобранная точно как в фирменном SPECCY здесь оказалась неоптимальной. Видимо за счёт многих параметров схемы компьютера,
более короткий INT обрабатывается точно так же, как и строго фиксированный INT в фирменном SPECCY. Кстати, то, что INT формируется в начале кадра (то есть по заднему фронту инверсного кадрового синхроимпульса) не совсем верно. На самом деле он формируется чуть-чуть раньше. Этот вывод я сделал исходя из того, что схемы, реализующие принцип, описанный выше, дают в программе ACADEMY следующий эффект - бордюрное изображение сдвинуто относительно экранного в левом верхнем углу ровно на один пиксель. Этот момент я не стал убирать, хотя теоретически это проделать можно. А вот видимый ход луча в QARXе я почти устранил, подбирая экспериментально длительность ЮТа. Сейчас длительность ЮТа где-то в районе 8-8.6 мс. Хотя по теории "это не есть совсем хорошо", на практике никаких проблем с "критическими" программами не было.
На данный момент две исправленные и доработанное версии синхрогенератора носят названия "SAM7CS" - для версий плат 3.XX-4.XX, и "SAM14CS" - для версий плат 5.XX. Обе прошивки прошли все замеры на частоты и длительности синхроимпульсов, кадровые врезки и т.д. Результаты оказались хорошими, и теперь все платы будут комплектоваться данным синхрогенератором.
"Пятая" версия платы принесла мне очень приятный сюрприз. За счёт того, что в схеме процессора формируются сигналы WAIT от видеоконтроллера, получилась идеальная синхронизация. Такого я ещё не видел! Во всех "критичных" программах ПОЛНОСТЬЮ совпадают ВСЕ бордюрные эффекты, работают ВСЕ "MULTICOLOR", а пресловутый SHOCK MEGADEMO работает настолько идеально, что я сидел заворожено минут пять, не веря в происходящее. Видимо тут сыграла роль асинхронная схемотехника, примененная в последней версии. Её введение позволило полностью проэмулировать "непрозрачную" шину фирменного ZX SPECTRUM. A времянка была доработана мной. Естественно, владельцы уже приобретённых плат всех версий могут обращаться, ко мне для доработок своего компьютера.
В принципе, в старых "ПРОФЯХ" можно попытаться скоммутировать WAIT как в "пятой" версии. Это, я полагаю, даст несомненно положительный результат, но в связи с большим количеством новых соединений, будет являться весьма затруднительным делом. Хотя энтузиасты могут заняться этим, заодно перенеся опыт на "ПЕНТАГОН", осчастливив владельцев этого самого распространенного 128Кб компьютера у нас в стране.
Основное техническое резюме всего вышесказанного таково: длительность INT в SPECTRUM - совместимых компьютерах не фиксирована однозначно и подбирается экспериментально по устойчивой работе "критичных" программ. Несомненно также, что второй по значимости сигнал, ответственный за совместимость - это сигнал WAIT, и имеет место желание подумать, как его правильно скоммутировать.
Второй же вывод гласит, что невозможно добиться 100% совместимости, а фирменную микросхему ULA можно проэмулировать максимум на 90%, и то с большой затратой времени и технических средств, что вряд ли основной массе пользователей и производителей покажется нужным.
PS. Для ещё большей совместимости на верхней плате проделайте следующее:
Все версии: найдите на схеме подключения музыкального процессора микросхему где смешиваются A13 и A15, отсоедините ногу микросхемы от A13, о соедините её с A15. У вас пойдут оцифрованные мелодии (например BLAVA 128). Можно, также, найти свободный элемент "И" (ЛИ1) и вместо A14 подать на инвертор смесь A14 и M1. Это подстраховка для исключения засорения шины данных музыкальным процессором.
Для версий 5.03: Выпаяйте резистор R15 на верхней плате, соедините 2 и 3 выводы микросхемы DD45 с сигналом CSAP6 (3 нога микросхемы DD39). После этого резко улучшится синхронизация.
В заключение хочется сказать, что все, кому не безразличны вопросы железа, и у кого есть собственные находки, могут написать мне по адресу ZX РЕВЮ (для CHUNG Software (FFC)).