Pentagon 1024SL 1.4 - исправления, доработки...

Железо для спектрум-совместимых машин

Postby Northwood » Sun, 06.03.2016 21:53:58

Добрый день.

Решил создать новую тему посвящённую исправлениям и доработкам компьютера Pentagon-1024SL 1.4.
Здесь я хочу собрать воедино все материалы по данной теме. Возможно, что дело дойдёт до разработки новой платы.

На данный момент, кроме ряда исправлений в схеме, у меня уже имеется:

1) Турбирование ОЗУ и процессора, в результате чего имеется 2 турборежима:
7 МГц без WAIT и 14 МГц с WAIT.

2) Расширение ОЗУ до 4 Мб установкой соответствующего модуля, с возможностью джампером выбрать тип модуля SIMM - 4Mb/1Mb.
Возможность расширения ОЗУ до 2 Мб путём установки второго модуля SIMM скорей всего не будет, т.к. задержка сигнала CAS при дополнительной коммутации с помощью 1531КП11 приводит к неработоспособности компьютера. Хотя, надо попробовать скоммутировать с помощью 1531ЛА3.

3) 8 дополнительных видеорежимов:
3.1) Мультиколор - атрибут на байт;
3.2) 512х192 - монохромный, можно задать любой из 14 цветов текста на чёрном фоне;
3.3) 512х192 - цветной стандартный (атрибут на блок 8х8 точек);
3.4) 512х192 - цветной мультиколорный (атрибут на байт);
3.5) 16Colors - каждая точка своим цветом;
3.6) 384х304 -графическая область на весь экран;
3.7) Флешколор - с возможностью отключения;
3.8) Аппаратный гигаскрин - чередование экранов через строку с инверсией фазы от кадра к кадру, автоматический режим или выключено.

Управление видеорежимами осуществляется через порт #EFF7 и через дополнительный порт, адрес которого будет позже. Программам не нужно знать адрес второго порта, управлять им будет только BIOS.

Ни в одном из видеорежимов процессор не тормозится! За счёт турбированного ОЗУ.

4) Подключенные CMOS-часы по схеме Глюка, но с возможностью запрета записи в их регистры другим программам.

На данный момент разрабатываю мультипорт ОЗУ статическое ОЗУ на 64Кб для возможности подмены любой страницы ПЗУ, после чего перейду непосредственно к написанию BIOS-Setup.

Что ожидается в расширении мультипорт ОЗУ:

1) "Pentagon-1024" - порт #7FFD биты 6, 7, 5 - доступный объём до 1024 Кб;
2) "KAY-1024" - порт #1FFD биты 4, 7 и порт #7FFD бит 7 - доступный объём до 1024 Кб;
3) "Scorpion-1024" - порт #1FFD биты 4, 7, 6 - доступный объём до 1024 Кб;
4) "Profi-1024" - порт #DFFD биты 0, 1, 2 - доступный объём до 1024 Кб;
5) "ATM-1" - порт #FDFD биты 0, 1, 2 - доступный объём до 1024 Кб;
6) "Phoenix" - порт #1FFD биты 4, 7, порт #7FFD бит 7 и порт #1FFD бит 6 - доступный объём до 2048 Кб;
7) "KAY+Pentagon" - порт #1FFD биты 4, 7, порт #7FFD биты 6, 7, 5 - доступный объём до 4096 Кб;
8) "Scorpion+Pentagon" - порт #1FFD биты 4, 7, 6, порт #7FFD биты 6, 7 - доступный объём до 4096 Кб;
9) "Profi/ATM-1+Pentagon" - порт #DFFD/#FDFD биты 0, 1, 2 и порт #7FFD биты 6, 7 - доступный объём до 4096 Кб.

Можно будет задавать дополнительное ограничение доступного объёма ОЗУ:
128 Кб, 256 Кб, 512 Кб, 1024 Кб, 2048 Кб и 4096 Кб.

Так же планирую следующую возможность в BIOS:
Выбор, куда выходить по сбросу:
1) HDD boot - DNA-OS;
2) HDD boot - iS-DOS;
3) Gluk Reset Service;
4) Menu-128;
5) Basic-48;
6) TR-DOS.

Постепенно буду выкладывать материалы.
Last edited by Northwood on Sun, 06.03.2016 23:07:42, edited 3 times in total.
С уважением, Александр
Northwood
 
Posts: 19
Joined: Sun, 06.03.2016 12:28:59
ICQ: 52392561
LOCATION: г.Днепропетровск, Украина

Postby AndyD » Sun, 06.03.2016 22:37:22

Northwood wrote:3.7) Флешколор - с возможностью отключения;

Ни когда не видел и не слышал что это такое ,предполагаю что,что-то моргает ,может есть как показать или объяснить что это.Кроме мультиколора в стандартном спектруме нихрена не видел,а тут за 20 лет столько напридумывали.
User avatar
AndyD
 
Posts: 280
Joined: Thu, 21.05.2015 21:32:38

Postby Northwood » Sun, 06.03.2016 23:01:03

AndyD wrote:
Northwood wrote:3.7) Флешколор - с возможностью отключения;

Ни когда не видел и не слышал что это такое ,предполагаю что,что-то моргает ,может есть как показать или объяснить что это.Кроме мультиколора в стандартном спектруме нихрена не видел,а тут за 20 лет столько напридумывали.


В этом режиме вместо 1.5 Гц мигания используется частота 7 МГц со скважностью 75%. Это приводит к визуальному смешиванию цветов INK и Paper, им окрашиваются пиксели, фон же при этом выводится чёрным цветом. Если в цветном атрибуте поменять местами цвета INK и Paper, то получается новый оттенок.
Таким способом выводятся только те знакоместо, для которых используется 7-й бит флеша.

Я лично не видел ни одной программы, которая бы использовала флешколор, но его реализация очень простая, у меня вышло 2 микросхемы в корпусе DIP-14, при этом с возможностью отключения этого режима, поэтому я решил включить реализацию видеорежима, чтобы потом не жалеть.
С уважением, Александр
Northwood
 
Posts: 19
Joined: Sun, 06.03.2016 12:28:59
ICQ: 52392561
LOCATION: г.Днепропетровск, Украина

Postby AndyD » Sun, 06.03.2016 23:18:23

Northwood wrote:Я лично не видел ни одной программы, которая бы использовала флешколор,

Спасиб, жаль конечно ,что в живую нет картинок посмотреть,а так примерно принцип понял.
User avatar
AndyD
 
Posts: 280
Joined: Thu, 21.05.2015 21:32:38

Postby TS-Labs » Mon, 07.03.2016 03:28:14

User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby Mick » Mon, 07.03.2016 10:04:23

Нескромный вопрос, а с дешифрацией что. Она упрощенная как в пентагоне 128 или более вменяемая.
Я к тому, что если собираешься переделывать, то предусмотри возможность (джампер или еще как то) для работы для более гибкой дешифрации. Например чтобы не было потом кипения болота по поводу игры с портами xxFCh :)
User avatar
Mick
 
Posts: 1159
Joined: Thu, 19.06.2014 11:25:00

Postby Northwood » Mon, 07.03.2016 10:41:29

Mick wrote:Нескромный вопрос, а с дешифрацией что. Она упрощенная как в пентагоне 128 или более вменяемая.
Я к тому, что если собираешься переделывать, то предусмотри возможность (джампер или еще как то) для работы для более гибкой дешифрации. Например чтобы не было потом кипения болота по поводу игры с портами xxFCh :)


С дешифрацией будет вот что:

Порт #7FFD будет разделён на 2 части:
а) - первая часть, которая отвечает за основные 128Кб, скрин, выбор ПЗУ - у неё своя дешифрация:
Я уже давно применил схему, которая описана во многих изданиях, которая отслеживает короткие команды OUT (#FD),A и IN (#FD),A.
Как только на шине данных встречается код такой команды при активном сигнале М1, моментально блокируются все порты дополнительного расширения памяти, а первая часть порта #7FFD переводится на мягкую дешифрацию, с проверкой только A15 и A1. При повторной активизации сигнала М1, если на шине данных код любой другой команды, первая часть #7FFD снова переводится на более жёсткую дешифрацию с проверкой A14, A15 и A1, и разблокируются порты дополнительного расширения ОЗУ.

б) - вторая часть #7FFD, которая отвечает за расширение >128Кб, а так же все остальные порты - #1FFD, #DFFD, #FDFD - у них всегда только жёсткая дешифрация с проверкой A15, A14, A13, A9 и A1.

Данное решение у меня уже давно работает, в результате, не смотря на доступный порт #1FFD и полный порт #7FFD, с доступной памятью 4Мб, без проблем работают Insult Megademo и STS3.3.

Бит D5 блокировки порта #7FFD, скорей всего, будет на всегда похоронен. В нескольких режимах будет отвечать только за расширение памяти. Но я подумаю, может быть в тех режимах, где он не используется для расширения памяти, его использовать для блокировки #7FFD ?
В моём Пентагоне D5 на всегда утратил функцию блокировки #7FFD, и я не вижу чтобы это приводило к печальным результатам, поэтому смысла в нём я не вижу.
С уважением, Александр
Northwood
 
Posts: 19
Joined: Sun, 06.03.2016 12:28:59
ICQ: 52392561
LOCATION: г.Днепропетровск, Украина

Postby Northwood » Thu, 10.03.2016 12:12:09

Хочу спросить совета. Для начала введу в курс дела:

Готовы варианты схем мульти-порта ОЗУ, теневого ОЗУ на 64Кб и подключения ПЗУ BIOS. Так же предусмотрел порт для дополнительных графических режимов (флеш-колор, гигаскрин и варианты цветности для 512х192). BIOS будет размещён в отдельной ПЗУ 27C128.

Адреса портов для управления всем этим безобразием следующие:

#FC37 - конфигурация ОЗУ, раньше думал на него же повесить переключение ПЗУ BIOS/Spectrum;
#FD37 - конфигурация теневого ОЗУ;
#FE37 - дополнительные графические режимы.

Мультипорт ОЗУ я решил несколько упростить, чтобы уменьшить кол-во микросхем. Раскладка порта #FC37 следующая:

биты 0 ... 2 - выбор портов расширения ОЗУ (раскладка битов портов расширения в порядке их значимости от меньшего к большему)

000 - стандарт "Пентагон", порт #7FFD биты D6, D7, D5, доступно до 1Мб.
001 - стандарт "KAY" + "Пентагон", порт #1FFD биты D4, D7, порт #7FFD биты D7, D6, D5, доступно до 4 Мб.
010 - стандарт "Scorpion" + "Пентагон", порт #1FFD биты D4, D6, D7, порт #7FFD биты D6, D7, доступно до 4 Мб.
011 - стандарт "Phoenix", порт #1FFD биты D4, D7, порт #7FFD бит D7, порт #1FFD бит D6, доступно до 2 Мб.
1xx - стандарт "Profi/ATM1" + "Пентагон", порт #DFFD/#FDFD биты D0, D1, D2, порт #7FFD биты D6, D7, доступно до 4Мб.

бит 3 - включает доступный объём до 1Мб;
бит 4 - включает доступный объём до 4Мб.

Если биты 3 и 4 равны 0, то доступный объём будет 128 Кб не зависимо от состояния битов 0,1 и 2.
Если бит 3 равен 1, а бит 4 равен 0, до доступный объём не превысит 1Мб, не зависимо от состояния битов 0,1 и 2. Например, если выбран "KAY" + "Пентагон", расширение ОЗУ будет на самом деле "KAY-1024", т.е. порт #1FFD биты D4, D7 и порт #7FFD бит D7. Биты порта #7FFD D6 и D5 будут не доступны.
Если бит 4 равен 1, то будет доступен весь объём ОЗУ 1Мб, 2Мб или 4Мб, в зависимости от состояния битов 0,1 и 2.

Раньше переключение ПЗУ BIOS/Spectrum я думал повесить на этот же порт #FC37 на бит D5. Однако, понял, что лучше будет его повесить на отдельный порт, для того чтобы разместить в нём процедуры чтения и записи на HDD и сделать их доступными для пользовательского ПО, не рискуя переключить конфигурацию памяти.

Теневое статическое ОЗУ будет объёма 64 Кб и состоять из 4-х страниц. Назначение каждой страницы следующее:

Страница 0)
а) доступно через порт #FB/#7B, стандарт давно описан в Спектрофоне № 17 (IN A,(#FB) включает, IN A,(#7B) выключает его). В этом режиме, при включении оно доступно на чтение и запись по адресам #0000-#3FFF;
б) подменяет ПЗУ Gluk Reset Service, поэтому в этом режиме по адресам #0000-#3FFF оно доступно только на чтение.

Страница 1)
а) выключено;
б) подменяет ПЗУ TR-DOS.

Страница 2)
а) выключено;
б) подменяет ПЗУ Menu-128.

Страница 3)
а) выключено;
б) подменяет ПЗУ Basic-48.

Страницы 1,2 и 3 по нулевым адресам доступны только на чтение.

Раскладка порта #FD37 следующая:

бит 0 - если 0, то 0-я страница теневого ОЗУ доступна через порт #FB/7B, если 1, то подменяет ПЗУ Gluk;
бит 1 - если 0, то 1-я страница теневого ОЗУ выключена, если 1, то подменяет ПЗУ TR-DOS;
бит 2 - если 0, то 2-я страница теневого ОЗУ выключена, если 1, то подменяет ПЗУ Menu-128;
бит 3 - если 0, то 3-я страница теневого ОЗУ выключена, если 1, то подменяет ПЗУ Basic-48;
бит 4 - если 1, то теневое ОЗУ появляется в адресах #C000-#FFFF для возможности записи в него. В этом режиме выбор страницы теневого ОЗУ осуществляется через порт #7FFD биты D0 и D1.

Управление дополнительными видеорежимами - порт #FE37:
бит 0 - цвет текста 'B' для монохромного режима 512х192;
бит 1 - цвет текста 'R' для монохромного режима 512х192;
бит 2 - цвет текста 'G' для монохромного режима 512х192;
бит 3 - яркость для монохромного режима 512х192;
бит 4 - если 0, то будет монохромный режим 512х192, если 1, то будет цветной режим 512х192;
бит 5 - FlashColor, если 0, то выключено, если 1, то включено;
бит 6 - GigaScreen, если 0, то выключено, если 1, то автоматический режим.

Автоматический режим для аппаратного GigaScreen, это автоматическое включение и выключение в зависимости от переключения экранов программами.
Работает следующим образом: Как только программа переключила экраны, то GigaScreen тут же включается и работает до начала следующего кадра. С приходом кадрового синхроимпульса выключается. Таким образом, при просмотре картинок GigaScreen, если программа по прерываниям переключает экраны, то режим аппаратного GigaScreen будет постоянно включен, обеспечивая уменьшение мерцания изображения.

Режимы FlashColor и аппаратный GigaScreen блокируются, если через порт #EFF7 включен режим 16Colors из-за несовместимости с ним.
Более подробно про видеорежимы с принципиальной схемой, пост будет позже.

А теперь хочу услышать совет:

Как я уже сказал, переключение ПЗУ BIOS/Spectrum было решено вынести на отдельный порт, отделив от порта конфигурации памяти, для того чтобы в нём можно было бы разместить процедуры чтения и записи HDD, сделав их доступными из ПО. При этом чтобы не было опасности переключить конфигурацию ОЗУ из этого ПО.
Я думаю использовать для этого порт #3FFD. Этот адрес был выбран мной не случайно:
Во-первых, он уже присутствует в дешифраторе адресов портов расширения ОЗУ на микросхеме 1533ИД7.
Во-вторых, ни одна программа, написанная для Спектрума-128, никогда случайно не переключит порт #3FFD, даже если используется короткая адресация OUT (#FD),A. Потому что для того чтобы сработал порт #3FFD, надо в A занести бит D5, что приведёт к блокировке порта #7FFD на любом стандартном Спектруме. Т.е. бит D5 всегда замаскирован.
Однако, есть ПО, которое использует расширение ОЗУ до 1Мб по стандарту Пентагон-1024, где D5 вместо блокировки #7FFD расширяет память.

Поэтому вопрос: Стоит ли для переключения ПЗУ BIOS/Spectrum использовать порт #3FFD, или лучше всего будет придумать новый адрес порта ? Если что, есть запасной уже дешефрированный адрес порта #FF37.
С уважением, Александр
Northwood
 
Posts: 19
Joined: Sun, 06.03.2016 12:28:59
ICQ: 52392561
LOCATION: г.Днепропетровск, Украина

Postby Mick » Thu, 10.03.2016 12:37:15

Тут как бы вопрос с выбором порта.
Я в своих компах с расширенным ПЗУ тоже по аналогии заюзал порт xx37h.
Так что могут быть траблы. :)
User avatar
Mick
 
Posts: 1159
Joined: Thu, 19.06.2014 11:25:00

Postby Northwood » Thu, 10.03.2016 12:49:54

Mick wrote:Тут как бы вопрос с выбором порта.
xx37 как бы рулежка расширенным ПЗУ (512кб) в Эве. Я тоже в своих компах с расширенным ПЗУ тоже по аналогии заюзал этот порт.
Так что могут быть траблы.


Но обычно ПО, написанное специально для Эво, не работает на остальных Спектрумах. Например, Nedodemo-2. Поэтому оно и так не будет работать. В то же время, порты #FC37 и #FD37 будут переключаться только в BIOS-е. Пользовательскому ПО управлять этими портами не нужно. Возможно, что я предусмотрю блокировку этих двух портов при выходе из программы BIOS.

Исключение может быть только для порта #FE37, если понадобится из пользовательского ПО принудительно включить цвет для видеорежима 512х192. Однако в Эве другие свои расширенные видеорежимы.

И остаётся 2 варианта портов для переключения BIOS/Spectrum. Либо это будет порт #FF37, либо #3FFD.
Но здесь я забыл упомянуть, что идея размещения в пзу BIOS процедур чтения/записи HDD заключается в том, чтобы для поддержки DNA_OS убрать их из ПЗУ Basic-48. Мне не нравится, что для монтирования TRD-образов в системе DNA_OS нужно использовать модифицированную прошивку Basic-48. Поэтому я хочу перенести их в ПЗУ BIOS, т.е. придётся соответствующим образом модифицировать ПЗУ TR-DOS 5.30.
Пользовательскому ПО переключать ПЗУ BIOS/Spectrum не понадобится.
С уважением, Александр
Northwood
 
Posts: 19
Joined: Sun, 06.03.2016 12:28:59
ICQ: 52392561
LOCATION: г.Днепропетровск, Украина

Postby Mick » Thu, 10.03.2016 12:56:56

Про Эву я тут возможно ошибся. Просто не помню, что где то была рулежка доп страницами ПЗУ по 37 порту и я собственно тоже его прицепил.
Я лишь предупредил, что возможно могут возникнуть конфликты.
User avatar
Mick
 
Posts: 1159
Joined: Thu, 19.06.2014 11:25:00

Postby don » Thu, 10.03.2016 23:01:48

Northwood wrote:И остаётся 2 варианта портов для переключения BIOS/Spectrum. Либо это будет порт #FF37, либо #3FFD.



Лучше наверно порты 0FFD ,3FFD и 2FFD не трогать используется в контролере дисковода и принтера фирменной машины Spectrum +2A/+3.

Интересный справочный документ http://problemkaputt.de/zxdocs.htm
don
 
Posts: 35
Joined: Tue, 07.08.2012 19:34:21

Postby Northwood » Thu, 21.04.2016 18:09:47

И так, работа над BIOS-ом продолжается.

По поводу доработок, от мультипорта я решил пока отказаться, и ещё не решил, на всегда или может быть к нему вернусь.
Дело в том, что схема, конечно, у меня получилась, но потянуло теневое ОЗУ вместе с мультипортом на 25 микросхем логики плюс второе ПЗУ (BIOS) плюс статическое ОЗУ на 64 Кб. Убрав из схемы мультипорт, количество микросхем логики уменьшилось до 12. Правда, позавчера пришлось добавить 1 для возможности перехода в ПЗУ Gluk Service из BIOS. Пока что я не увидел, есть ли смысл лепить лишние 13 микросхем ради дополнительной поддержки портов #DFFD и #FDFD в комбинации с #7FFD.

На данный момент память до 4Мб у меня расширена следующие образом (в порядке значимости битов расширения)

#7FFD, bit 0 - 32Kb
#7FFD, bit 1 - 64Kb
#7FFD, bit 2 - 128Kb
#1FFD, bit 4 - 256Kb
#1FFD, bit 7 - 512Kb
#7FFD, bit 7 - 1024Kb
#7FFD, bit 6 - 2048Kb
#7FFD, bit 5 - 4096Kb.

Т.е. уже и без мультипорта параллельно доступна память до 1Мб сразу по двум стандартам - "Пентагон-1024" и "Кай-1024". А вместе доступно 4Мб.

На данный момент на макетной плате готовы и уже даже давно полностью проверены следующие узлы:

1) Дешифраторы портов #FC37, #FD37, #FE37 и #FF37.

Т.к. порт #FC37 я планировал использовать под мультипорт, то сам порт я пока не реализовывал.
#FD37 - управление функциями теневого ОЗУ.
#FE37 - дополнительные видеорежимы, которых нет в #EFF7.
#FF37 - переключение ПЗУ BIOS / Spectrum и блокировка триггера 0-й страницы ПЗУ "Gluk Service".

2) Схема управления теневым ОЗУ, включая порт #FD37. Использованы следующие биты:
0 - включение эмуляции 0-й страницы ПЗУ "Gluk Service"
1 - включение эмуляции 1-й страницы ПЗУ "TR-DOS"
2 - включение эмуляции 2-й страницы ПЗУ "Menu-128"
3 - включение эмуляции 3-й страницы ПЗУ "Basic-48"
4 - проецирование теневого ОЗУ в адрес #C000-#FFFF. При этом в данных адресах выбор страницы теневого ОЗУ сделан через порт #7FFD (при выборе страниц 4-7 теневое ОЗУ отключается из адресного пространства "#C000-#FFFF", сделал это для того чтобы можно было загрузить прошивку в него прямо из STS-а.
5 - выбор положения сигнала INT по-вертикали: "Пентагон" или на 16 строк ниже. Сделал это для того, чтобы на фирменных игрушках не мерцали спрайты.

3) Порт #FF37 и коммутация ПЗУ BIOS / Spectrum. BIOS - это отдельный чип ёмкостью 16 Кб. Spectrum - это родное ПЗУ на 64 Кб, в котором прошиты Gluk-Sevice, TR-DOS, Menu-128 и Basic-48. А так же бит блокировки триггера "Gluk Service" для возможности его старта с нулевого адреса после BIOS-а через ОЗУ.

4) Порт #FE37 - реализованы все 8 бит:
0, 1, 2 и 3 - цвет текста для монохромного режима 512х192, включая бит яркости;
4 - включает цветной режим для 512х192 (стандартный - атрибут на 8х8 или мультиколорный, задаётся через порт #EFF7)
5 - включает флеш-колор
6 - зарезервирован для видеорежима Bright+Color. Но сам видеорежим я не реализовывал.
7 - автоматический аппаратный GigaScreen.

Схема же расширения памяти до 4 Мб собрана отдельно ещё пару лет назад.

Теперь по BIOS-у:

В своём BIOSе я решил использовать некоторые наработки из моего старого BIOS-а, который я писал в 98 году для Пентагона-128, расширенного до 1Мб. Однако, т.к. исходники были потеряны и у меня оставалась лишь прошитая ПЗУ, то пришлось с нуля прошивку дизассемблировать, причём полностью вручную, на что потратил около 2 недель.

Хочу показать первые результаты работы над BIOS-ом. Сейчас уже полностью готов 1-й этап - тестирование памяти и оборудования.

Работа BIOS проходит по следующему алгоритму, на пунктах 1,2,3,4 и 6 BIOS не использует ОЗУ для своей работы, вся информация хранится исключительно в регистрах процессора. Таким образом, тест сможет выполнить свою работу и при полностью неисправном ОЗУ, выдав информацию о найденной ошибке на экран, параллельно в обоих экранах. Нажимая любую клавишу можно будет переключать между собой 5-й и 7-й экраны. В случае, если всё совсем плохо и вывод на экран не возможен вообще, то хотя бы изменённый цвет бордюра скажет, на каком этапе обнаружена ошибка: синий - неисправен порт #7FFD в пределах 128 Кб, пурпурный - нет пересечения 5-й и 7-й страниц со своими областями ОЗУ, красный - неисправно ОЗУ, но исправен сам порт #7FFD.

Единственный момент, когда во время теста ОЗУ, оно используется для работы - после того как протестирована самая 1-я страница ОЗУ (тест всегда начинается с 7-й страницы не зависимо от объёма памяти), для вычисления десятичных чисел счётчика Кб. Т.е. когда уже протестированы хотя бы 16 Кб памяти и этой страничке можно доверять.

1) Тестируется расширение ОЗУ до 128 Кб, это минимальная конфигурация, с которой BIOS будет давать старт ПК. Тестируется именно исправность порта и пересечение 2-й и 5-й страницы ОЗУ с областями #8000 и #4000. Перед записью новых данных, старые данные все 8 байт предварительно сохраняются в CMOS-е, а после теста - восстанавливаются обратно в ОЗУ. Таким образом, после теста все данные остаются полностью нетронутыми. В случае отсутствия микросхемы CMOS, 8 байт данных в ОЗУ будут потеряны. Но это адрес #FFFF.

2) Тестируется доступность битов расширения ОЗУ до 4Мб, без проверки на исправность. Все 5 данных предварительно сохраняются в CMOS-е, а после восстанавливаются. В случае отсутствия микросхемы CMOS, 5 байт данных ОЗУ будут потеряны, но это адрес #FFFE.

3) Проверяется наличие настроек BIOS в микросхеме CMOS. Проверяется постоянная сигнатура и контрольная сумма настроек, которая включает обязательную сигнатуру и данные настроек.
Наличие микросхемы CMOS перед этим пунктом не производится умышленно, т.к. у меня предусмотрена аппаратная блокировка записи в CMOS. Если её включить, то тест не найдёт CMOS, а настройки BIOS всё равно будут доступны и должны быть получены на этом этапе.

4) Если актуальные настройки BIOS в CMOS-е не обнаружены, тогда они ищутся в конце предпоследней страницы ОЗУ (занимают 24 байта включая сигнатуру). Предпоследняя страница ОЗУ, это максимальный доступный номер страницы ОЗУ -1. Т.е. если память расширена выше 128 Кб, то с большой долей вероятности, настройки BIOS не будут перетёрты другими программами, до тех пор пока не будет выключено питание ПК.

5) Если настройки BIOS будут обнаружены, тогда будет произведён старт ПК в соответствии с этими настройками:
5.1) - будет включена эмуляция выбранных страниц ПЗУ с помощью теневого ОЗУ
5.2) - будут установлены дополнительные видеорежимы (то что входит в порт #FE37)
5.3) - будет произведён запуск:
а) в Gluk Service
б) в TR-DOS без обнуления памяти
в) в TR-DOS со сбросом
г) в Menu-128
д) в Basic-48
е) Старт с выбранного HDD - DNA-OS
ж) Старт с выбранного HDD - iS-DOS

5-й пункт пока ещё не реализован.

6) Если актуальные настройки BIOSа отсутствуют и в CMOS-е и в ОЗУ, тогда запускается полный тест ОЗУ с полным его обнулением и тест оборудования:

6.1 - тестируется исправность всех бит портов расширений памяти в пределах обнаруженного во 2-м пункте;
6.2 - вся обнаруженная память заполняется значениями #FF (запись циклами PUSH DE, т.е. сразу по 2 байта);
6.3 - проверяется исправность памяти: Считывается пара байт #FFFF, проверяется, записывается пара байт #0000, считывается, опять проверяется. Таким образом, по окончании теста, вся память будет обнулена.

7) - Тестируется оборудование:

а) CMOS-чип, при этом определяется его тип: "MC146818" (Motorolla) или "DS12887" (Dallas). Однако, если включена аппаратная блокировка записи в CMOS, тогда тест просто проверяет наличие в нём актуальных настроек BIOS вместе с контрольной суммой. Если настройки есть, то в результатах будет строчка "Read Only", в противном случае "Отсутствует".
б) Порт атрибутов - "Имеется" или "Отсутствует".
в) Джойстик - "Имеется" или "Отсутствует" (тестирование ведётся по всему диапазону портов #xx1F.
г) Кэмпстон мышь - "Имеется" или "Отсутствует".
д) Муз.Процессор: Определяется наличие, исправность портов и тип - AY 3-8910/12, Yamaha YM-2149F, TurboSound или TurboSound-FM.
е) General Sound: Если обнаружен, то определяется реальный доступный объём памяти до 2048Кб.
ж) Жёсткий диск: Производится инициализация, затем чтение идентификационной информации для Master и Slave. Обнаруженные HDD появляются списком ниже - тип подключения "Master" или "Slave", название и размер в Мб.

8) - Тестируется теневое ОЗУ:
а) его наличие и размер до 64 Кб;
б) исправность теневого ОЗУ по тому же алгоритму, что и основное ОЗУ, в пределах обнаруженного объёма;
в) функциональные возможности теневого ОЗУ: какую страницу ПЗУ может эмулировать каждая страница ОЗУ и доступна ли страница через чтение из портов #FB и #7B.

9) - Производится циклическое измерение производительности процессора отдельно для ПЗУ и отдельно для ОЗУ, параллельно проверяется стабильность шины данных в IM2:
а) Измеряется количество тактов процессора за прерывание для ПЗУ, по ним вычисляется и выводится тактовая частота процессора в МГц, а так же производительность в % (за 100% взято 71680 тактов, т.е. Пентагон-3.5 МГц).
б) Измеряется количество тактов процессора за прерывание для ОЗУ и выводится производительность в %. Если для ОЗУ тактов меньше на 32 и более по сравнению с ПЗУ, тогда выводится дополнительная строчка "WAIT".

10) Далее будет переход в BIOS-Setup, который я ещё не сделал. BIOS-Setup будет использовать дополнительный видеорежим - 512х192, но цветной. Пока ещё не решил, какой вариант использовать - со стандартным цветом или с мультиколором.
Пока что вместо этого пункта я сделал переход в ПЗУ "Gluk Service".

А пока ссылка на видео, которое я снял чтобы показать, как работают тесты в BIOS-е.

Video from : youtube.com
С уважением, Александр
Northwood
 
Posts: 19
Joined: Sun, 06.03.2016 12:28:59
ICQ: 52392561
LOCATION: г.Днепропетровск, Украина

Postby Northwood » Wed, 25.05.2016 21:52:00

Ура! Наконец готов BIOS для ZX-Spectrum "Pentagon"!

И хотя я пока реализовал ещё не все идеи, но уже можно им полноценно пользоваться.

Из основных функций BIOS-Setup:
1. Ввод времени и даты. Сделал максимально приближенно как в ПЦ. Сделал двойной курсор - цветом фона подсвечивается выбранное поле ввода, и мигающей полоской - текущий вводимый символ.

2. Настройка дополнительных видеорежимов:
а) Цвет экрана для режима 512х192, любой из 14 цветов;
б) Включение и выключение полно-цветного режима для 512х192;
в) Включение или выключение FlashColor;
г) Включение или выключение Flash+Bright;
д) Автоматический режим или выключение аппаратного GigaScreen.

3. Настройки теневого ОЗУ (поддерживается 64 Кб). Здесь содержимое меню зависит от результатов тестирования теневого ОЗУ. Т.е. на экране отображаются только те пункты и опции, которые доступны аппаратно. В моём случае это:
а) Страница 0 - доступ через IN #7B/#FB банк 0 или эмуляция ПЗУ Gluk Reset Service;
б) Страница 1 - выключено или эмуляция ПЗУ TR-DOS;
в) Страница 2 - доступ через IN #7B/#FB банк 1 или эмуляция ПЗУ Menu-128;
г) Страница 4 - выключено или эмуляция ПЗУ BASIC-48.

4. Опции загрузки ZX-Spectrum по кнопке "Reset":
а) Старт в Gluk Reset Service;
б) Старт в TR-DOS с обнулением 48Кб памяти;
в) Старт в TR-DOS без обнуления памяти (быстрый старт);
г) Старт в Меню-128;
д) Старт в Basic-48;
е) Загрузка с HDD Master;
ж) Загрузка с HDD Slave.

Если выбрана загрузка с HDD, то следующим пунктом можно выбрать, какая ОС должна загрузиться:
а) DNA_OS - загружается #30 секторов начиная с LBA-блока № 2 с адреса #6000.
б) iS-DOS. Здесь я пока что не владею инфой, сколько и чего надо загружать, поэтому пока что загружается 0-й блок LBA, загружается 1 сектор в адрес #6000. Когда я уточню, какие блоки надо загружать и сколько, я внесу изменения в BIOS.
в) Номер блока LBA выбранный пользователем. Можно вручную ввести любой произвольный номер LBA блока от #00 до #FF. Загружается 1 сектор в адрес #6000.

Если при попытке произвести загрузку с HDD, происходит ошибка (HDD не обнаружен или неисправен), то вместо загрузки с HDD происходит старт Menu-128.

Дальше я планирую вплотную заняться DNA_OS. Я хочу перенести все процедуры HDD из ПЗУ Basic-48 в свою ПЗУ BIOS, для того чтобы можно было монтировать TRD-образы на жёстком диске, не меняя стандартную прошивку BASIC-48 и не отказываясь от Меню-128.

Сейчас я хочу разобраться с установкой iS-DOS на HDD. Причём у меня маниакальная идея её установки на один винчестер вместе с DNA_OS. Читал, что есть раздел MFS, на который можно установить iS-DOS, который работает с этим разделом как будто с отдельным винчестером. Но как я понял, это возможно если используется SMUC-контроллер и Prof-ROM. Но я хочу добиться того же, но используя контроллер Nemo-IDE.

По мере появления свободного времени, сниму видео того что уже есть.
С уважением, Александр
Northwood
 
Posts: 19
Joined: Sun, 06.03.2016 12:28:59
ICQ: 52392561
LOCATION: г.Днепропетровск, Украина

Postby VBI » Wed, 25.05.2016 22:04:09

МАНИАК!!! :o
:D :pank:
User avatar
VBI
 
Posts: 1965
Joined: Mon, 03.06.2013 09:20:29

Postby Northwood » Sun, 05.06.2016 17:59:25

И так, обещанное видео:

Video from : youtube.com


В этой версии BIOS-а я уже реализовал всё что планировал. Кроме того, что перечислено в предыдущих постах, по сбросу Спектрум теперь может не только выходить в любую из стандартных оболочек - Gluk Service, Menu-128, Basic-48, TR-DOS, а загружать с HDD выбранную ОС - DNA_OS, iS-DOS или с произвольно выбранного сектора HDD (из первых 256). Можно выбирать, с какого HDD должна происходить загрузка, с Master или Slave.

Процедуры HDD я сделал следующим образом:
1) По 3-м фиксированным адресам доступны общие процедуры:

а) RST #18 - сброс HDD и получение списка доступных HDD. На входе в регистре A нужно задать, какое максимальное время в секундах нужно ждать инициализацию первого (Master) HDD. A=0 - не больше 1сек, A=1 - до 10 сек. Имеет смысл, если питание компьютера только включили и HDD нужно больше времени на начальные тестовые процедуры. Результат возвращается в регистре C в первых двух битах. Бит-0 - обнаружен HDD Master, бит-1 - обнаружен HDD Slave. В случае ошибки возвращается флаг переноса.

б) RST #20 - чтение идентификационной информации по выбранному HDD. На входе в HL - стартовый адрес, куда нужно загрузить 512 байт идентификационной информации, а в регистре A - с какого HDD, A=0 - Master, A=1 - Slave. В случае ошибки возвращается флаг переноса.

в) RST #28 - запись или чтение любой произвольной инфомации в/из HDD. На входе в HL - стартовый адрес, откуда нужно брать данные для записи или куда надо прочитать данные из HDD, в регистровых парах DE и BC - стартовый номер блока LBA. При этом в регистре D так же задаётся и выбранный HDD - бит 4=0 - Master, бит 4=1 - Slave, в регистре A задаётся количество секторов, которые нужно прочитать или записать, старший бит A задаёт операцию - бит 7 = 0 - чтение из HDD, бит 7=1 - запись на HDD. В случае ошибки возвращается флаг переноса.

2) Для поддержки в DNA_OS функции монтирования TRD-дисков, все процедуры HDD из модифицированной ПЗУ BASIC-48 пользователем ZET-9 перенёс в свободное пространство в своей ПЗУ BIOS. Пока что просто перенёс всё как есть, и в ПЗУ TR-DOS 5.30 внёс соответствующие изменения. Позже попытаюсь часть этих процедур заменить на свои, чтобы убрать дублирование.
С уважением, Александр
Northwood
 
Posts: 19
Joined: Sun, 06.03.2016 12:28:59
ICQ: 52392561
LOCATION: г.Днепропетровск, Украина

Postby TS-Labs » Mon, 06.06.2016 13:36:44

201% CPU speed, ОК )
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby Northwood » Mon, 06.06.2016 18:26:05

TS-Labs wrote:201% CPU speed, ОК )

Так турбо без вейта, реальная скорость 200%. А один лишний процент - погрешность вычисления. Я могу сделать более точное вычисление, чтобы показывало ровно 200%, но не вижу смысла ради этого усложнять процедуру вычисления.
С уважением, Александр
Northwood
 
Posts: 19
Joined: Sun, 06.03.2016 12:28:59
ICQ: 52392561
LOCATION: г.Днепропетровск, Украина

Postby TS-Labs » Mon, 06.06.2016 18:45:53

Да не, не надо усложнять. И так норм.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby Northwood » Tue, 07.06.2016 20:56:48

Начинаю цикл статей по доработкам компьютера Пентагон-1024 1.4.

Сегодня я внёс одно небольшое изменение в схему управления теневым ОЗУ, устранив один недостаток - не возможность включения ПЗУ BIOS, если включена эмуляция ПЗУ теневым ОЗУ и включена эмулируемая страница ПЗУ. Благодаря этой доработке я смог отказаться от резидента в ОЗУ для возможности перехода из ПЗУ TR-DOS в ПЗУ BIOS и обратно для доступа к процедурам HDD, даже когда эмулируется ПЗУ TR-DOS. Сейчас используется только байт "#C9" (код команды RET) в адресе #5CC2 - стандартная переменная TR-DOS, и то только для разблокирования портов HDD. До этого резидент копировался в адрес #5B90 и занимал 17 (#11) байт. В большинстве случаев это не приносило проблем, но вызывало падение оболочки DNA_OS, когда я в ней открывал диск A или B со смонтированным на нём имиджем TRD, видимо, DNA_OS использует эту область ОЗУ для своих целей. Теперь этого падения уже нет.

Сегодня я хочу начать с двух доработок - один в счётчиках видеоконтроллера, второй касающийся формирования сигнала INT. Это две базовые доработки, которые позволят без проблем турбировать ОЗУ и сделать расширенные видеорежимы, в которых видеоконтроллеру потребуется в 2 раза чаще читать данные из ОЗУ.

1) Доработки счётчиков строчной развёртки видеоконтоллера:

Оригинальная схема:Доработанная схема:
ImageImage


Данная схема имеет один серьёзный недостаток - в конце каждой строки происходит смещение фазы адресных импульсов (сигналы "7", "8" и "9" по схеме) на целых 2 такта турбированного ОЗУ 7 МГц и выравнивание их фазы начиная со следующего периода сигнала "6". Из-за этого после турбирования ОЗУ, в случае если видеоконтроллер производит чтение данных в последнем 8-м такте доступа к ОЗУ, он получает данные не из своего адреса ОЗУ. Если планируется после турбирования ОЗУ делать видеорежимы "цветной 512х192" и "16-Color" без торможения процессора, а я сделал именно такой вариант, то за один цикл видеоконтроллеру потребуется доступ ко всем 8 тактам доступа к ОЗУ.

Для того чтобы было понятно с тактами ОЗУ, поясню:
В исходном виде, когда ОЗУ работает на частоте 3.5 МГц, за время вывода на экран 1 байта (8 пикселей) ОЗУ предоставляет 4 такта доступа. В стандартном видеорежиме видеоконтроллеру требуется 2 такта из 4 - один для чтения байта пикселей, второй для чтения байта атрибута. Остальные 2 такта отдаются процессору. Процессор же разделяет рабочий цикл доступа к ОЗУ и цикл регенерации ОЗУ, которые чередуются поочерёдно. В компьютерах стран постсоветского пространства цикл регенерации ОЗУ возложен на видеоконтроллер - когда видеоконтроллер читает байт из ОЗУ, происходит автоматическая регенерация данных сразу по всему полю RAS. Таким образом, процессору нужно только 2 рабочих такта доступа к ОЗУ, чтобы обеспечить безостановочную работу.

Когда ОЗУ турбировано и работает на частоте 7 МГц, за то же самое время вывода на экран 8 пикселей, ОЗУ предоставляет целых 8 тактов. Видеоконтроллеру по прежнему нужно только 2 такта, а если на процессор подать 7 МГц, то за это время ему потребуется уже 4 такта доступа к ОЗУ для работы без WAIT-а. Остаются 2 неиспользуемых такта доступа к ОЗУ, которые и нужны для расширенных видеорежимов.

Видеорежим "цветной 512х192" требует уже не 2 такта доступа к ОЗУ, а 4. Т.к. пиксели и атрибуты выводятся в 2 раза быстрее, то чтение из ОЗУ видеоконтроллер делает в 2 раза чаще. 4 такта видеоконтроллеру, 4 такта турбированному процессору, вот и потребовались все 8 тактов доступа к ОЗУ.

Аналогично и с видеорежимом "16-Colors", в оригинале которого автор AloneCoder. В данном видеорежиме цвет каждого пикселя определяют 4 бита, т.е. один байт = 2 пикселя. 8 пикселей на экране = 4 байта, поэтому видеоконтроллеру требуется доступ к 4 тактам ОЗУ.
Оригинальная схема видеорежима AloneCoder-а расчитана на не турбированное ОЗУ. Т.к. тактов доступа к ОЗУ не всех не хватает, то AloneCoder в своей схеме просто останавливает процессор сигналом BUSRQ на всё время вывода экранной области, процессор работает только во время вывода бордюра. В моей же схеме ОЗУ турбировано, 4 такта видеоконтроллеру, 4 такта процессору, поэтому необходимости останавливать процессор нет. Вот и нужен доступ ко всем 8 тактам.

Исправление простое:
а) Отрезаем 2-ю ногу DD5.1 (ЛП5) и соединяем её на +5в (соединение DD1.3 выв6 (ЛН1) с DD6 выв9 (ИЕ10) должно остаться).
б) Отрезаем 3-ю ногу DD6 (ИЕ10) от +5в и соединяем с землёй.
в) Отрезаем 4-ю ногу DD6 (ИЕ10) от земли и соединяем с +5в.

Всё! Коэффициент деления счётчика DD6 после этой доработки остаётся прежним = 14, последовательность сигналов "6", "7", "8", "9" и всех последующих за ними остаются прежними, но не нужный сдвиг фазы сигналов в конце строки экрана устранён.

Оригинальная схема:Доработанная схема:
ImageImage


2) Формирователь сигнала INT. В оригинальной схеме Пентагона-1024 1.4 длительность сигнала INT задаётся время-задающей RC-цепью и расчитана на тактовую частоту процессора 3.5 МГц. Если включить турбо-режим 7 МГц, то длительность сигнала INT получается слишком велика (N=2), если включить турбо 14 МГц, то N=4. Предлагаю схему, которая решает эту проблему. Дополнительно она позволяет переключать положение сигнала INT по вертикали - "Классический Пентагон" / "Пентагон-1024 1.4". С режимом классического Пентагона всё понятно, так же понятно, для чего он нужен. Режим Пентагона-1024 1.4 - сигнал INT на 16 строк ниже, нужен для того чтобы в фирменных играх, например в Arkanoid-е, не мерцали спрайты.

В данной схеме сигнал INT начинается как обычно, а завершается как только процессор подтвердил прерывание выставлением сигналов IORQ и M1. Если прерывания запрещены, INT завершается по фронту сигнала "12", таким образом INT всё-равно не будет вечным.

Image

Сигнал "INT_PLACE" - это входной сигнал выбора положения INT. При уровне "0" получаем Пентагоновский (по вертикали) INT, при уровне "1" INT становится ниже на 16 строк. Микросхема DD12.2 - с оригинальной схемы. Остальные микросхемы новые.
С уважением, Александр
Northwood
 
Posts: 19
Joined: Sun, 06.03.2016 12:28:59
ICQ: 52392561
LOCATION: г.Днепропетровск, Украина

Postby ZEK » Tue, 07.06.2016 23:24:41

Ждем TSU от Northwood на рассыпухе
KOE сказал заработает, значит заработает. Он кандидат наук, а не радиолюбитель. (c) alone
User avatar
ZEK
 
Posts: 174
Joined: Mon, 10.06.2013 13:51:07

Postby VBI » Wed, 08.06.2016 08:53:42

Northwood, очень круто
User avatar
VBI
 
Posts: 1965
Joined: Mon, 03.06.2013 09:20:29

Postby Northwood » Wed, 08.06.2016 16:17:06

Сегодня хочу привести ряд доработок Пентагона-1024 1.4, без которых его трудно назвать работоспособным. А последняя доработка касается положения сигнала INT по горизонтали, после которой Пентагон-1024 1.4 станет совместимым с классическим Пентагоном хотя бы по мультиколорным и бордюрным эффектам.

1) Сигнал "Blank". Исправление подробно описано в журнале "Инферно" № 9. Здесь мне добавить нечего. Скажу только, что сигнал "Blank" является гасящим импульсом вокруг синхроимпульсов. Если он формируется неправильно, то нормальную синхронизацию развёрток на TV мы не получим, а само изображение на экране может получаться затемнённым. На первой ревизии платы Pentagon-1024 SL1.4 нужно отрезать вых ЛА3 (DD27.2 выв.6) и в разрыв вставить инвертор ЛН1. В ревизии платы Pentagon-1024 SL1.41 эта доработка уже предусмотрена, нужно лишь соединить 2 перемычки проводом МГТФ, в качестве инвертора использован свободный элемент ЛН1 микросхемы DD76.2.

Image

2) Видеовыходы. В оригинальной схеме размахи сигналов R,G,B и Y фиг знает какие, сильно завышенные. В том же Инферно-9 предложена доработка от LVD, которая опробована другими и имеет положительные отзывы. Я сам её так и не собрал, ограничился только дополнительными гасящими резисторами на выходах, подобранными конкретно под мой телек. Другим советую всё-таки собрать нормальную схему из Инферно-9, которая гарантирует правильыне размахи сигналов не зависимо от того, какой у вас телек.

Image

3) Состояние триггера TR-DOS после включения питания не определено, после РЕСЕТа остаётся неизменным. В результате после включения питания компьютер не может нормально стартовать в Меню-128, через левое колено спустя 5-6 секунд всё-таки каким-то чудом выскакивает желанная менюшка. А если нажать сброс во время дисковой операции, то опять комп не может попасть в ПЗУ Меню-128. Исправление описано в журнале Инферно-9, нужно только допаять 1 лишний диод, анодом к ТМ2 DD55.2 к выв.10, а на катод надо подать сигнал RES, чтобы при сбросе компьютера, этот триггер принимал исходное состояние. Здесь могу добавить, что номинал подтягивающего резистора R90 нужно увеличить с 1 кОм до 10 кОм, т.к. иначе он слишком быстро разряжает конденсатор C1 в формирователе сброса, что приводит к нестабильному сбросу компьютера при включении питания. Ещё добавлю, что от конденсатора C5 ёмкостью аж 300 пф на этой схеме нет никакого толка. Можете его выпаять, можете оставить, ничего от этого не изменится.

Оригинальная схемаДоработанная схема
ImageImage


4) Сигнал NMI (не маскированные прерывания). Здесь в схеме ошибка - на процессор подаётся не инверсный сигнал NMI с постоянным уровнем "0" и при нажатии на кнопку "Magic" формируется положительный импульс с уровнем "1". Должно быть наоборот - всегда подаваться должна "1", а при нажатии на кнопку "Magic" должен формироваться отрицательный импульс "0". Исправление простое, - нужно просто взять сигнал NMI с формирователя не с прямого выхода микросхемы АГ3 с выв.5, а с инверсного выхода с выв.12:

Оригинальная схемаДоработанная схема
ImageImage


5) Исправление турбирования контроллера дисковода ВГ93. Не понимаю, почему KOE здесь так протупил. Подробно о проблеме правильного турбирования ВГ93 написано в журнале "Спектрофон" в номерах 10, 12 и 14.

В 10-м номере Спектрофона привели первую сырую схему турбирования, в которой тактовая частота ВГ-93 переключалась в соответствии со стробом записи. Её применение приводило к фатальным для дисков последствиям - запись диска на таком контроллере дисковода ведёт к искажению служебной информации, и если после этого на этот диск попытаться что-то записать, но на другом компьютере, где нет никакого турбирования ВГ93, запись моментально умирала, а в 95% случаях страдает каталог.

KOE был неосмотрителен, решив применить в Пентагоне-1024 1.4 именно этот сырой фатальный вариант турбирования ВГ-93.

В 12-м номере Спектрофона попытались исправить эту фатальную ошибку, привели доработанную (но не совсем исправленную) схему, с дополнительным триггером ТМ2, но и она не обеспечивает гарантии, что всё ОК - тактовая частота ВГ93 понижается до 1 МГц по первому стробу записи, и возвращается назад по сигналу перемещения головок STEP. Шанс искажения служебной информации всё-же остаётся.

В 14-м номере Спектрофона окончательно закрыли тему турбирования ВГ-93, приведя уже полностью исправленную схему турбирования, которая обеспечивает снижение частоты до 1 МГц не во время первого строба записи, а до него, благодаря сигналу DRQ, что даёт 100% гарантию целостности дисков, которыми теперь можно обмениваться между собой.

Я же привожу исправление турбирования ВГ93 относительно Пентагона-1024 1.4. Нужно допаять дополнительную микросхему 1533ТМ2, удобно её припаять на DD62 (ЛН2).

Оригинальная схемаДоработанная схема
ImageImage


Действия:

а) Для начала нужно отрезать сигнал WRG (с 30 ноги ВГ93) от микросхем DD50.4 (ЛЕ1) выв.12 и DD54.1 (ЛИ1) выв.1:

а.1) Режем дорожку с обратной стороны платы, непосредственно возле 1-й ноги DD54.1 (ЛИ1).

а.2) Вынимаем из панельки ВГ93, находим дорожку под панелькой, идущую от выв.30 ВГ93 и режем её - эта дорожка идёт только на DD50.4 выв.12, ВГ93 ставим на место.

а.3) С обратной стороны платы проводом МГТФ соединяем вместе DD50.4 выв.12 с DD54.1 выв.1.

б) Далее нужно напаять вторым этажом новую микросхему ТМ2. Как оказалось, удобней всего её напаять именно на DD62 (ЛН2).

в) Соединяем проводом МГТФ все остальные цепи:

в.1) На выв.3 ТМ2 подаём сигнал DRQ,
в.2) Выв.2 ТМ2 соединяем с землёй (с 7 ногой),
в.3) Выв.6 ТМ2 соединяем с DD54.1 с 1 ногой (от которой мы отрезали WRG),
в.4) Выв.1 ТМ2 соединяем с 33 ногой ВГ93 (сигнал WF/DE), пропуская провод МГТФ через одно из отверстий платы,
в.5) Выв.4 ТМ2 соединяем с 6 ногой DD62 (сигнал STEP).

А теперь ВНИМАНИЕ !!! самое главное:

После проделанной доработки ОБЯЗАТЕЛЬНО ОТРЕСТОРЬТЕ ВСЕ ДИСКЕТЫ, ЗАПИСАННЫЕ РАНЕЕ НА ПЕНТАГОНЕ-1024 1.4i, НИ В КОЕМ СЛУЧАЕ ДО РЕСТАВРАЦИИ НИЧЕГО НЕ ДЕЛАЙТЕ, ЧТО СВЯЗАННО С ЗАПИСЬЮ - НЕ ПЕРЕИМЕНОВЫВАЙТЕ, НЕ УДАЛЯЙТЕ И НЕ КОПИРУЙТЕ ФАЙЛЫ, НЕ ПЕРЕИМЕНОВЫВАЙТЕ ДИСКИ, ИНАЧЕ ДИСКИ БУДУТ МОМЕНТАЛЬНО УМИРАТЬ!!!

А уже после реставрации дискет, например в ADS 3.0, можете смело делать всё что угодно, а так же безбоязненно давать дискеты другим людям с нетурбированными или с правильно турбированными контроллерами FDD.

Кто не прочитал моё предупреждение, виноват сам.

P.s. После исправления турбирования ВГ93, вы так же получаете дополнительный бонус - дискеты отформатированные на Пентагоне-1024 1.4i теперь отлично читаются на ПЦ, например в ZX Disk Studio.

6) Сброс порта TR-DOS вместе с ВГ93.

Почему-то KOE посчитал не нужным заводить RESET на триггер ТМ9 порта TR-DOS. Это приводит к тому, что при включении питания или после сброса ВГ93 может активизировать дисковод - загорается индикатор, диск начинает вращаться, и продолжает вращаться до тех пор, пока мы не зайдём в TR-DOS. А в случае турбирования процессора, в тех случаях, когда сигнал активности дисковода блокирует турбирование, мы ещё имеем заблокированный турбо-режим тогда, когда это не нужно. Решение простое - нужно от микросхемы ТМ9 DD53 выв.1 отрезать +5в и завести туда сигнал RES.

Оригинальная схемаДоработанная схема
ImageImage


7) Чтение из порта #7FFD. Ошибка заключается в том, что не задействован бит D6. В Pentagon-е 1024 SL 1.4 память расширена до 1Мб по стандарту KAY-1024 - порт #1FFD использует биты D4 и D7, и порт #7FFD использует дополнительный бит D7. То что бит D6 #7FFD не участвует в расширении памяти не означает, что его не надо читать. При чтении из порта #7FFD незадействованный бит D6 должен читаться как "0".

Решение простое: Находим микросхему DD78 (ИР22), соединяем незадействованный выход Q6 (выв.16) с шиной данных D6. Вход микросхемы D6 (выв.17) отсоединяем от +5в, и далее действуем по ситуации: если с расширением памяти ничего делать не собираетесь, то выв.17 микросхемы DD78 надо соединить с землёй. Если решили расширить память больше чем 1Мб или просто модифицировать имеющееся расширение так, чтобы задействовать бит D6 порта #7FFD, то на выв.17 DD78 надо подать сигнал 7FD6 (вых. бита D6 порта #7FFD).

Оригинальная схемаДоработанная схема для 1МбДоработанная схема для 4Мб
ImageImageImage


8) Ну и последняя доработка на данный момент, - это положение сигнала INT по горизонтали. После неё, наконец, пойдут программный мультиколор и бордюрные эффекты, рассчитанные под классический Пентагон.

Описанный вариант доработки в журнале Инферно-9 мне не нравится тем, что надо напаивать дополнительную микросхему 1533ИР23 и заводить на неё 7 МГц. Я предлагаю вместо ИР23 допаять ТМ2 - 14 ног вместо 20 ног, - намного больше выбора, куда её допаивать, и длинный провод 7 МГц вести не надо.

Находим микросхему DD19 ТМ2. Отрезаем от тактового входа DD19.1 (выв.3) сигнал DSP, можете прямо на эту микросхему и допаять новую ТМ2.
На входы R и S (выв. 1 и 4) подаём +5в,
На вход C (выв.3) подаём сигнал "2" с выв.14 DD3 (ИЕ10),
На вход D (выв.2) подаём сигнал "SSI" с выв.8 DD17.2 (ТМ2),
Прямой выход ТМ2 (выв.5) подключаем к тактовому входу DD19.1 - к выв.3.

Оригинальная схемаДоработанная схема
ImageImage
С уважением, Александр
Northwood
 
Posts: 19
Joined: Sun, 06.03.2016 12:28:59
ICQ: 52392561
LOCATION: г.Днепропетровск, Украина

Postby Northwood » Wed, 08.06.2016 16:42:35

Правда, это ещё не все доработки, касающиеся статуса работоспособного компьютера. Чуть позже приведу доработки порта клавиатуры #FE, стабильности шины данных в IM-2 из TR-DOS-а и схемы контроллера джойстика.
С уважением, Александр
Northwood
 
Posts: 19
Joined: Sun, 06.03.2016 12:28:59
ICQ: 52392561
LOCATION: г.Днепропетровск, Украина

Postby TS-Labs » Wed, 08.06.2016 18:13:23

Отличный цикл статей!
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Next

Return to Hardware

Who is online

Users browsing this forum: No registered users and 1 guest

x