════════════════════════════════════════════════════════════════
IRON MADE IN
════════════════════════════════════════════════════════════════
(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)it 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 BCFADF
IN CC) ;(#fadf) = кнопки
IN A#DF) ;(#ffdf) = Y
CP C
JR NZесть мышь>
LD AFB
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, 55" и 3" флопы. По
поводу вторых ничего хорошего сказать не могу, из первых
рекомендую Robotron, в худшем случае Teac (из-за его
заторможенности и недолговечности), а самые лучшие дисководы,
которые я наблюдал - Mitsumi на 1M.
Стандартного интерфейса винчестера пока нет. В сущности, не
так важна, была бы совместимость винта со старыми программами.
Ведь в случае необходимости пользователь всегда может
скопировать образ дискеты на реальную дискету и грузить с неё.
На Амиге, к примеру, так и делают. Неплохо было бы сочинить
простую схему и Commander/Viewer под неё.
Как программно отличить Pentagon 512 от Pentagon 1024?
Стандартный порт расширения памяти в пентагоне - #7ffd.
Определить реальный объём памяти по этому порту, не включив 48-й
режим в случае 512k, было бы невозможно, если бы не следующая
тонкость.
Защёлка 48k/non 48k (#7ffd bit 5) срабатывает лишь в том
случае, когда память выше 128k является выключенной, то есть
когда 2-й бит порта #eff7 установлен (переключением этого бита
управляет, среди всего прочего, операционка Gluk Reset Service).
Поэтому, если компьютер реагирует на переворачивание этого бита,
то можно сбросить бит и спокойно проверять объём памяти.
Hа всякий случай дополнительные биты порта #7ffd (6)
подключены параллельно битам порта #dffd (0), чтобы
сохранить совместимость с софтом, писанным под Profi 1024. Hо
следует иметь в виду, что работа с одним портом #7ffd происходит
быстрее.
Почему некоторые программы конфликтуют с портом #7ffd?
В таких программах для быстрого переключения страничек
памяти используется неполная адресация порта (#fd), но
заполнение этих же страничек (загрузка, например) ведётся при
помощи полной адресации. Как водится, при неполной адресации
устанавливают 6-й бит данного (штоп работало на скорпионе), в
результате чего на первом и на втором этапе мы получаем не
соответствующие друг другу номера активизируемых страничек.
Владельцам Pentagon 512-1024 приходится на время выполнения
таких программ отключать верхнюю память.Избежать этого можно:
если в одном месте вашей программы используется неполная
адресацияо используйте её по всей программе!
Дельное предложение
Предлагаю использовать порт #eff7 на чтение. Из
неподключенных битов (где не реализован соответствующий этому
биту девайс) должна считываться единица, подключенные должны
возвращать значения, записанные в порт. Собрать это несложно,
зато все дополнительные устройства станет легко программно
определить. А если порт #eff7 на чтение не реализован (то есть
если из порта #eff7 считывается постоянное значение), то можно
предусмотреть в программе возможность выбора конфигурации
вручную (как оно и было до сих пор).
Alone Coder / Invaders 8 отбивал кулаки об AC Edit v0.43