Page 1 of 2

Новости конфигурации от TS-Labs

PostPosted: Sat, 03.11.2012 03:44:10
by TS-Labs
Сюда буду скидывать апдейты по сабжу.

Все линки и инструкции лежат здесь:
viewtopic.php?f=35&t=157

-----------------------------------------------------------------------------------------------------------------------------------------
Нормально так порефакторил спрайтовую часть ТС, спрайтовые слои пашут на заебись. Тайлы пока отключены ибо показывают ахинею.
Количество спрайтов на строку увеличено до 85 штук - не от щедрости, а от нехватки ЛЕ остались свободные штуки альтеропамяти, тысячи две их еще. Не пропадать же. Поэтому на спрайты отдал целую штуку (512 байт).
По мелочевке: пофиксил багу со скроллом графики, еще кое какие мелкие фиксы/рефакторинги.
Времянки провисают, но в не очень критичных местах. Есть мнение, что данный конфиг стабилен - например р0батодемка на 14МГц не виснет.

На текущей версии конфига демка от р0бата пахает, но показывает только спрайтовые слои. Тем не менее, таки робит.

Re: Конфигурация от TS-Labs

PostPosted: Sun, 25.11.2012 05:54:20
by TS-Labs
ВНЕЗАПНО!!!

Допилил ТС. Поддерживаются аппаратно:
- 3 слоя спрайтов (85 штук)
- 2 слоя тайлов
- 1 слой графики

Работает р0батодемка.
Можно начинать писать сотни софта.

Re: Конфигурация от TS-Labs

PostPosted: Mon, 26.11.2012 04:40:30
by TS-Labs
Пофиксил багу в части спрайтов.
Спасибо Sergey78 за наводку.

Re: Конфигурация от TS-Labs

PostPosted: Tue, 27.11.2012 01:54:57
by TS-Labs
Сделал DMA для IDE
Скорость передачи даты ИДЕ/память - 7МБ/сек или 143кБ за фрейм.
Намекаю, можно смотреть кино 360х288@256с.

Re: Конфигурация от TS-Labs

PostPosted: Wed, 28.11.2012 02:48:25
by TS-Labs
Сделал ДМА для SPI (SD-карта)
Сырая скорость передачи данных около 670кб/сек, 14кб/фрейм.

Re: Конфигурация от TS-Labs

PostPosted: Fri, 30.11.2012 03:06:05
by TS-Labs
Пофиксил SPI ДМА, протестировал на чтении MBR сектора. Я ж забыл что долбаный зю-контроллер читает 1 байт наперед, поскоку зетник хочет дату сразу, она должна быть уже готова в датореге СПИ-контроллера.
Итого, в DMA я читал дату по концу цикла SPI, а надо было по началу, для сохранения совместимости с Z-софтами. Может выведу бит выбора режима для НОРМАЛЬНОЙ работы.
Запись НЕ тестировал. Могут быть сурпризы, проверьте плз.
Далее, привел в порядок сигналы в части VDOS, проверьте плз. Если теперь будет глюкать/виснуть, то это та же бага что и с висяками на Z80_LP в спрайтах. Она еще не пофиксана, но она пади осталась ОДНА.
Заодно проверил работу с дисководом - все работает отлично, от 3.5 до 14+.
Наблюлась проблема с засиранием индексной оптопары во флопе, из-за чего не видело диска.

Re: Конфигурация от TS-Labs

PostPosted: Fri, 07.12.2012 08:14:47
by TS-Labs
Добавил 512 байт но-вейт рамы.
Зачем? - Затем чтоб запихивать туда код, который выполняется без тормозов на 14МГц, а также не жрет циклы ОЗУ (освобождая их для графики).
Еще затем, чтоб можно было юзать RST n вместо коллов а также IM 1 со своими процедурами, не заморачиваясь с включением ДРАМ вместо ПЗУ (хотя по сути один хек).
Почему так мало? - А сколько нужно?
РАМа впихивается В ЛЮБОЕ место адресного просранства зетника, независимо от того, что там находится (ПЗУ/ОЗУ).
Адрес задается в порту NWAddr (14AF):
биты 7:1 - выбор адреса, куда светить буфер (адресная шина зетника 15:9),
бит 0 - разрешение включения но-вейт.
Значение порта - адреса окна:
#01 - #0000-01FF
#03 - #0200-03FF
...
#81 - #8000-81FF
...
#FF - #FE00-FFFF

Re: Конфигурация от TS-Labs

PostPosted: Sun, 09.12.2012 07:47:44
by TS-Labs
Ха!
(Тут некоторые матёрые хдльных дел троли задрачивают на этот форум, потому пишу для них: сидели вчятике, да?, думали как же запилить кэш, ай-ай, такой слющяй умный, а не придумаль!)
Итак.
Размер: 512 байт. Покрывает все 4МБ ОЗУ. Включается битом 2 того же порта, где частота проца. При полном попадании дает 286720 тактов на фрейм на частоте 14МГц (как если бы не было торможения в ОЗУ).
В текущей реализации НЕ взаимодействует с ДМА, поэтому при использовании ДМА требуется делать принудительную инвалидацию. В двух словах так: если в кеше лежит слово и оно валидно, и данное слово по его адресу в ОЗУ будет переписано ДМой, изменения НЕ отразятся в кеше и при чтении оного слова процессором. Проц прочитает старые данные, которые были до ДМА. Опасно тем, что можно нарваться на неожиданный (хоть и просчитываемый) глюк.
Процедура инвалидации кеша:
Code: Select all
LD HL, #4000
LD DE, #4000
LD BC, #200
LDIR

Должна использоваться ДО вызова ДМА, если не хотим словить глюк. Алсо, если в ту часть, куда срет ДМА проц лазить не будет (например там тайловый битмап, и лазить туда будет только ТС), то можно ничё не инвалидировать. В дальнейшем я чото придумаю, пока так.

Алсо, обновил БИОС. Добавил пункт про кеш.

Re: Конфигурация от TS-Labs

PostPosted: Sun, 09.12.2012 08:44:30
by TS-Labs
Потестировал на ZXZIP на каких то сферических файлах - анонимус может сам сделать тоже самое.
Частота 14+. Без кеша: 431с
Частота 14+. С кешем: 319с
Частота 14+. С кешем (128 байт): 344с
Частота 7: 600с.
Частота 14. С кешем слова (алгоритм lvd, сейчас так в недоконфе): 387с

Итого имеем на реально прикладном алгоритме (а не на сферическом тесте, меряющем непонятные такты):
14+ no cache vs. 7МГц: 139%
14+ cache vs. 7МГц: 188%
14 (недоконфа) vs. 7МГц: 155%
14+ cache vs. 14 (недоконфа): 121%

Имхо, полный ВИН!

Re: Конфигурация от TS-Labs

PostPosted: Sun, 16.12.2012 07:54:02
by TS-Labs
Фиксед логика обработки тайлового слоя. Была бага - не отображался тайл, следующий за пустым.

Re: Конфигурация от TS-Labs

PostPosted: Sat, 01.06.2013 21:29:39
by TS-Labs
Пофиксел багу с крайними правыми тайлами.
Убрал кеш с намлока.
Заблокировал Z80_LP до фикса.

Re: Конфигурация от TS-Labs

PostPosted: Sun, 16.06.2013 12:15:07
by TS-Labs
Добавил строб записи в SFILE к ДМА-реквесту (не работало дма для сфайл).
Сделал прямые синхры для ВГА. Надо сделать переключение режима, ибо у мну есть монитор, который не работает с прямыми синхрами, а у кого не показывает телевизор с инверсными.

Re: Конфигурация от TS-Labs

PostPosted: Sun, 23.06.2013 02:49:10
by TS-Labs
UPDATE
Добавил:
- бейзконфу с 60Гц (автор - DDp),
- переключение 50/60Гц в АВР по Shift + Scroll Lock,
- 60Гц в ТСконфу, но они там заблокированы, ибо выжрали весь чип.

Для желающих попробовать 60Гц на ТСконфе:
https://github.com/tslabs/zx-evo/tree/m ... o/avr/60hz
ВНИМАНИЕ: данная версия конфы поддерживаться не будет!

Фишка в том, что сама развертка отожрала только 7 элцэ, а вот муксы на режимы - около 80.

Re: Конфигурация от TS-Labs

PostPosted: Wed, 26.06.2013 01:41:49
by TS-Labs
UPDATE
Пофиксил быдлокодец, из-за которого у Скрололофюрера на его слоупочных ДРАМ-ах глючил крайний пиксель на тайлах. Заняло 15 минут и 4ЛЕ. Теперь Одинокий Шифровальщик и его Властелин не смогут меня тролить, бугогааа.
Алсо, коммит с аццким номером три шестёрки :fear:

Re: Новости конфигурации от TS-Labs

PostPosted: Wed, 26.06.2013 02:24:40
by TS-Labs
Добавил переключение полярности синхроимпульсов ВГА по Ctrl + Scroll Lock.
Забрал бит 5 конфигурационного рега под это дело.

Re: Новости конфигурации от TS-Labs

PostPosted: Fri, 28.06.2013 03:37:38
by TS-Labs
Добавил блиттер.

Включается битом7 DMACtrl в режиме RAM-RAM.
Как работает:
1. Читается источник (DMASAddr)
2. Читается приемник (DMADAddr)
3. Если цвет пикселя источника != 0, то пиксель в приемнике заменяется на пиксель источника.
Работает для 16с (4 бит) и 256с (8 бит), выбирается A_SZ (0 = 4 бит / 1 = 8 бит).

Зачем это нужно:
- рисовать фоны накладыванием графики по маске,
- придумайте сами.

Тиритищески лёхким движением руки можно добавить операции типа XOR, OR, AND, ADD, но пока не вижу в этом необходимости.

Заняло час работы и 18 ЛЕ.
Доку типа обновил.

Re: Новости конфигурации от TS-Labs

PostPosted: Tue, 20.08.2013 17:46:00
by TS-Labs
Добавил засиралку памяти.

Адрес-источник читается только один раз, и приемник заполняется прочитанным словом. Экономит 50% тактов для случаев обнуления массивов. Скорость - 293кБ за фрейм.
Доку обновил.

Re: Новости конфигурации от TS-Labs

PostPosted: Fri, 15.11.2013 23:26:30
by TS-Labs
Добавил поддержку 1МБ через многострадальный #7FFD.
http://speccy.info/TS-Config

Re: Новости конфигурации от TS-Labs

PostPosted: Sat, 23.11.2013 12:34:12
by TS-Labs
Перевел ковокс на 2-периодный симметричный ШИМ. (Идея - DDp.)
Сравнение нового и старого варианта:
spectrum.RAR
(1.58 MiB) Downloaded 1393 times

Re: Новости конфигурации от TS-Labs

PostPosted: Fri, 28.03.2014 07:59:21
by TS-Labs
Добавил NoTSU (бит 4) в регистр VConfig.
Бит предназначен для отключения пикселей TSU, но сам TSU при этом продолжает работать согласно битам в регистре TSConfig.
Зачем так сложно? Затем, что тайловые плоскости требуют предвыборок тайловой карты, которые начинаются за 16 строк до отображения. Если дергать за биты TSConfig, то получится ересь.

Re: Новости конфигурации от TS-Labs

PostPosted: Wed, 16.04.2014 07:13:12
by TS-Labs
Переделал контроллер INT на фиксированные адреса в таблице векторов IM2 (как предлагал amixgris).
Адреса в таблице:
- кадровый #FF-#100
- строчный #FD-#FE
- окончание ДМА #FB-#FC

Re: Новости конфигурации от TS-Labs

PostPosted: Wed, 16.04.2014 07:52:26
by TS-Labs
Добавил разрешение кэша раздельно по четырем окнам адресного пространства Z80.
Индивидуальные биты в регистре CacheConfig включают (1) и выключают (0) кеширование в соответствующем 16кБ окне.
bit 0 - #0000-#3FFF
bit 1 - #4000-#7FFF
bit 2 - #8000-#BFFF
bit 3 - #C000-#FFFF
При записи в регистр SysConfig бит CACHE_EN переписывает все 4 бита одинаковым значением.

Re: Новости конфигурации от TS-Labs

PostPosted: Mon, 21.07.2014 22:51:50
by TS-Labs
Исправил багу с таймаутом кадрового инта.

Re: Новости конфигурации от TS-Labs

PostPosted: Thu, 24.07.2014 13:14:10
by TS-Labs
UPDATE
Убрал снятие инта в течение 32 тактов, если он не распознан, при включенном ВДОСе. Благодаря этому демы с музыкой в дисковых лоадерах не тормозят.

Re: Новости конфигурации от TS-Labs

PostPosted: Thu, 09.10.2014 10:49:26
by TS-Labs
UPDATE
Пофиксил баг с неработающей защитой записи на 14МГц.
Был довольно плотный говнокод в модуле формирования запросов от зетника к ОЗУ. Пофиксил и порефакторил. Заодно окончательно перестал работать бомбер, в котором тоже есть бага: он включает защиту записи для очка 0000 и оттого падает. Раньше не падал, ибо см.выше.