Из газеты Born Dead #10, Самара, 03.07.2000 (c) Alone Coder/Invaders 8 Pentagon 1024 Первый раз пишу в редакцию :). Хочется посодействовать хорошей газете, а то больно много расплодилось плохих. Поскольку писать не о чем, расскажу о тайнах некоторых компьютеров и кое-каких девайсов. Схем буду избегать, так как читателя они пугают, а рисовать их влом. К удивлению многих, на свете существует такая машина, как Pentagon 1024. Что же отличает её от прочих клонов ZX Spectrum и почему о ней так мало слышно? Просто этот компьютер нигде не производится. Каждый его экземпляр собирают вручную, в основном на базе Pentagon 128. Естественно, при таком состоянии дел не существует единственной комплектации компьютера; восхищения достойно, что вообще сложился какой-то стандарт. Хочется помянуть хорошим словом товарищей, без которых бы этого стандарта (и компьютера тоже) не было: V.M.G., Ivan Mak, Mr.Gluk & Co. и другие, кого я не знаю. Управление ресурсами Pentagon 1024 происходит с помощью порта #eff7 (дешифрация minimum по A3, A12, IOWR, сброс по RES): bit 0 - "атрибут на байт" (a4b) - аппаратный мультиколор, атрибуты с адреса #6000. 1 - включено. bit 1 - 512x192. См. Deja Vu #6. 1 - включено. bit 2 - защёлка памяти выше 128k. 0 - есть память, 1 - нет. bit 3 - Hе используется. Предлагаю:read only cache. 0 - можно записывать, 1 - нельзя. bit 4 - GigaScreen (аппаратное наложение 0-го и 1-го экранов. Чередование строк:C35 = (bit4 & 8kHz) xor C35.) Hе используется. Точнее, в игре "Homer Simpson In Russia" вместо порта #eff7 прописано #fffc. bit 5, 6 - зарезервировано для Rom-Disk. Так как эта штука не распространена,предлагаю:bit 5 - включение Sound Blaster (см.ZX- Guide 2),bit 6 - включение 384x304 (там же). bit 7 - Gluk CMOS (часы реального времени).См.схему в Deja Vu #8 (правда,там вместо #eff7 тоже написано #fffc). 1 - порты CMOS активны. В каком порядке устройства захватывают A13V и C35? A13V - 13-й адрес в схеме коммутации видеоконтроллера (на сх. Pentagon первой версии 11/D17), изначально земля. У меня собрано так: a4b формирует, SB складывает, 512x192 коммутирует, 384x304 переключает. Если 384x304 собрать на мультиплексоре (КП11, можно КП12), то: по #eff7 bit 6 должен коммутироваться старый A13V (если bit 6=единица) либо земля (если bit 6=ноль), а полученный сигнал надо примешивать (OR) к C35. Тогда при установленном bit 1 это будет уже 768x304, хе-хе... C35 - 1-й бит номера странички в схеме коммутации видеоконтроллера (на Pentagon 13/D17), изначально #7ffd bit 3. У меня не перехватывается, но, по логике вещей, сначала 768x304 коммутирует и примешивает, а потом GIGASCREEN ксорит. На 384x304 тогда будут возможны X-Color'ы с пониженным мерцанием. ПЗУ TR-DOS v5.13Fm - обычный TR-DOS,имеется ускоренное позиционирование (из-за которого, к сожалению, глючит Monster Commander); диск D - RAM-disk, можно переписать на него программу, юзающую #3d13, и рулиться с высокой скоростью... Gluk Reset Service v5.3K - операционная система ;), прошивается в неиспользуемую страничку 27512 (обычно нулевую). Компьютер должен входить в туда по RESET. Сброс с горячими кнопками: RESET/1 - quit to STS, RESET/Space - TR-DOS. Полезно для выхода в ALASM или STS, когда при отладке программа повисает. Есть возможность просмотра экранов прерванной программы и записи их на диск (описываемая версия, правда, страдает глюком по отношению к 0-му экрану). Присутствует сохранялка и восстановилка каталога диска на 161-й дорожке. Имеется встороенный boot+Perfect Commander 1.52. Автор - Ренат Мамедов, 2:5026/5.46#fidonet Кэш (cache) 32k Микросхема статического ОЗУ, ставится по схеме LPrint III в адресах #0000-#3fff. Обычно используется буржуйская 11C256. В режиме Turbo программа в этой области памяти не подвергается WAIT'ам. IN (251) - включить кэш, IN (123) - выключить. Старший адрес переключается сигналом DOSEN (15-й адрес ПЗУ). Некоторые программы, использующие General Sound,конфликтуют с LPrint III. Советую авторам таких программ сначала определять наличие этого девайса (а он распространён, однако), а потом проверять GS. Мышка (Kempston mouse) Двух- или трехкнопочная мышь на портах (#fbdf)=координата X, (#ffDF)=координата Y (считается снизу вверх!), (#fadf)=кнопки (ноль - кнопка нажата, единица - отпущена). Стандартное расположение кнопок (по CREATE SOFT, а левую схему придумал Зонов): левая кнопка=D0, правая кнопка=D1, средняя кнопка=D2. Схема подключения и советы по переоборудованию мышек опубликованы в ZX Format #5. Как определить наличие мышки? Мышь считается подключенной к компьютеру, если шина данных его стабильна, а значения, считанные из всех 3 портов мышки, не равны между собой. Программа-определялка, вероятность отказа 1/65536: HALT IN A,(-1) CP -1 JR NZ,<нет мыши> LD BC,#FADF IN C,(C) ;(#fadf) = кнопки IN A,(#DF) ;(#ffdf) = Y CP C JR NZ,<есть мышь> LD A,#FB IN A,(#DF) ;(#fbdf) = X CP C JR NZ,<есть мышь> <нет мыши> .... Другие устройства Стандартные дополнительные устройства в основном звуковые: AY (of coz), COVOX (обязательно), SounDrive v1.51 (с эмуляцией COVOX, см.схему в приложении к Deja Vu #1). Теоретически обоснована возможность подключения General Sound. Вроде бы DMA UltraSound тоже должна работать, но данных об этом нет ;). Стандартный модем - Hayes по схеме Кондратьева (см.Oberon #4) на 14400-57600 бод. Дисковый интерфейс Beta Disk + TR-DOS, 5,25" и 3,5" флопы. По поводу вторых ничего хорошего сказать не могу, из первых рекомендую Robotron, в худшем случае Teac (из-за его заторможенности и недолговечности), а самые лучшие дисководы, которые я наблюдал - Mitsumi на 1,2M. Стандартного интерфейса винчестера пока нет. В сущности, не так важна, была бы совместимость винта со старыми программами. Ведь в случае необходимости пользователь всегда может скопировать образ дискеты на реальную дискету и грузить с неё. На Амиге, к примеру, так и делают. Неплохо было бы сочинить простую схему и Commander/Viewer под неё. Как программно отличить Pentagon 512 от Pentagon 1024? Стандартный порт расширения памяти в пентагоне - #7ffd. Определить реальный объём памяти по этому порту, не включив 48-й режим в случае 512k, было бы невозможно, если бы не следующая тонкость. Защёлка 48k/non 48k (#7ffd bit 5) срабатывает лишь в том случае, когда память выше 128k является выключенной, то есть когда 2-й бит порта #eff7 установлен (переключением этого бита управляет, среди всего прочего, операционка Gluk Reset Service). Поэтому, если компьютер реагирует на переворачивание этого бита, то можно сбросить бит и спокойно проверять объём памяти. Hа всякий случай дополнительные биты порта #7ffd (6,7,5) подключены параллельно битам порта #dffd (0,1,2), чтобы сохранить совместимость с софтом, писанным под Profi 1024. Hо следует иметь в виду, что работа с одним портом #7ffd происходит быстрее. Почему некоторые программы конфликтуют с портом #7ffd? В таких программах для быстрого переключения страничек памяти используется неполная адресация порта (#fd), но заполнение этих же страничек (загрузка, например) ведётся при помощи полной адресации. Как водится, при неполной адресации устанавливают 6-й бит данного (штоп работало на скорпионе), в результате чего на первом и на втором этапе мы получаем не соответствующие друг другу номера активизируемых страничек. Владельцам Pentagon 512-1024 приходится на время выполнения таких программ отключать верхнюю память.Избежать этого можно: если в одном месте вашей программы используется неполная адресация,то используйте её по всей программе! Дельное предложение Предлагаю использовать порт #eff7 на чтение. Из неподключенных битов (где не реализован соответствующий этому биту девайс) должна считываться единица, подключенные должны возвращать значения, записанные в порт. Собрать это несложно, зато все дополнительные устройства станет легко программно определить. А если порт #eff7 на чтение не реализован (то есть если из порта #eff7 считывается постоянное значение), то можно предусмотреть в программе возможность выбора конфигурации вручную (как оно и было до сих пор). Alone Coder / Invaders 8 отбивал кулаки об AC Edit v0.43