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

Железо, связанное с TS-Conf

Postby TS-Labs » Sat, 03.11.2012 03:44:10

Сюда буду скидывать апдейты по сабжу.

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

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

На текущей версии конфига демка от р0бата пахает, но показывает только спрайтовые слои. Тем не менее, таки робит.
Last edited by TS-Labs on Wed, 23.10.2013 06:52:54, edited 8 times in total.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sun, 25.11.2012 05:54:20

ВНЕЗАПНО!!!

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

Работает р0батодемка.
Можно начинать писать сотни софта.
Last edited by TS-Labs on Wed, 23.10.2013 06:53:33, edited 1 time in total.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Mon, 26.11.2012 04:40:30

Пофиксил багу в части спрайтов.
Спасибо Sergey78 за наводку.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Tue, 27.11.2012 01:54:57

Сделал DMA для IDE
Скорость передачи даты ИДЕ/память - 7МБ/сек или 143кБ за фрейм.
Намекаю, можно смотреть кино 360х288@256с.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Wed, 28.11.2012 02:48:25

Сделал ДМА для SPI (SD-карта)
Сырая скорость передачи данных около 670кб/сек, 14кб/фрейм.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Fri, 30.11.2012 03:06:05

Пофиксил SPI ДМА, протестировал на чтении MBR сектора. Я ж забыл что долбаный зю-контроллер читает 1 байт наперед, поскоку зетник хочет дату сразу, она должна быть уже готова в датореге СПИ-контроллера.
Итого, в DMA я читал дату по концу цикла SPI, а надо было по началу, для сохранения совместимости с Z-софтами. Может выведу бит выбора режима для НОРМАЛЬНОЙ работы.
Запись НЕ тестировал. Могут быть сурпризы, проверьте плз.
Далее, привел в порядок сигналы в части VDOS, проверьте плз. Если теперь будет глюкать/виснуть, то это та же бага что и с висяками на Z80_LP в спрайтах. Она еще не пофиксана, но она пади осталась ОДНА.
Заодно проверил работу с дисководом - все работает отлично, от 3.5 до 14+.
Наблюлась проблема с засиранием индексной оптопары во флопе, из-за чего не видело диска.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Fri, 07.12.2012 08:14:47

Добавил 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
Last edited by TS-Labs on Fri, 07.12.2012 08:25:14, edited 2 times in total.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sun, 09.12.2012 07:47:44

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

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

Алсо, обновил БИОС. Добавил пункт про кеш.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sun, 09.12.2012 08:44:30

Потестировал на 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%

Имхо, полный ВИН!
Last edited by TS-Labs on Wed, 12.12.2012 17:21:22, edited 1 time in total.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sun, 16.12.2012 07:54:02

Фиксед логика обработки тайлового слоя. Была бага - не отображался тайл, следующий за пустым.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sat, 01.06.2013 21:29:39

Пофиксел багу с крайними правыми тайлами.
Убрал кеш с намлока.
Заблокировал Z80_LP до фикса.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sun, 16.06.2013 12:15:07

Добавил строб записи в SFILE к ДМА-реквесту (не работало дма для сфайл).
Сделал прямые синхры для ВГА. Надо сделать переключение режима, ибо у мну есть монитор, который не работает с прямыми синхрами, а у кого не показывает телевизор с инверсными.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sun, 23.06.2013 02:49:10

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

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

Фишка в том, что сама развертка отожрала только 7 элцэ, а вот муксы на режимы - около 80.
Last edited by TS-Labs on Wed, 23.10.2013 06:54:57, edited 1 time in total.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Wed, 26.06.2013 01:41:49

UPDATE
Пофиксил быдлокодец, из-за которого у Скрололофюрера на его слоупочных ДРАМ-ах глючил крайний пиксель на тайлах. Заняло 15 минут и 4ЛЕ. Теперь Одинокий Шифровальщик и его Властелин не смогут меня тролить, бугогааа.
Алсо, коммит с аццким номером три шестёрки :fear:
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Wed, 26.06.2013 02:24:40

Добавил переключение полярности синхроимпульсов ВГА по Ctrl + Scroll Lock.
Забрал бит 5 конфигурационного рега под это дело.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Fri, 28.06.2013 03:37:38

Добавил блиттер.

Включается битом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 ЛЕ.
Доку типа обновил.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Tue, 20.08.2013 17:46:00

Добавил засиралку памяти.

Адрес-источник читается только один раз, и приемник заполняется прочитанным словом. Экономит 50% тактов для случаев обнуления массивов. Скорость - 293кБ за фрейм.
Доку обновил.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Fri, 15.11.2013 23:26:30

Добавил поддержку 1МБ через многострадальный #7FFD.
http://speccy.info/TS-Config
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sat, 23.11.2013 12:34:12

Перевел ковокс на 2-периодный симметричный ШИМ. (Идея - DDp.)
Сравнение нового и старого варианта:
spectrum.RAR
(1.58 MiB) Downloaded 305 times
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Fri, 28.03.2014 07:59:21

Добавил NoTSU (бит 4) в регистр VConfig.
Бит предназначен для отключения пикселей TSU, но сам TSU при этом продолжает работать согласно битам в регистре TSConfig.
Зачем так сложно? Затем, что тайловые плоскости требуют предвыборок тайловой карты, которые начинаются за 16 строк до отображения. Если дергать за биты TSConfig, то получится ересь.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Wed, 16.04.2014 07:13:12

Переделал контроллер INT на фиксированные адреса в таблице векторов IM2 (как предлагал amixgris).
Адреса в таблице:
- кадровый #FF-#100
- строчный #FD-#FE
- окончание ДМА #FB-#FC
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Wed, 16.04.2014 07:52:26

Добавил разрешение кэша раздельно по четырем окнам адресного пространства 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 бита одинаковым значением.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Mon, 21.07.2014 22:51:50

Исправил багу с таймаутом кадрового инта.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Thu, 24.07.2014 13:14:10

UPDATE
Убрал снятие инта в течение 32 тактов, если он не распознан, при включенном ВДОСе. Благодаря этому демы с музыкой в дисковых лоадерах не тормозят.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Thu, 09.10.2014 10:49:26

UPDATE
Пофиксил баг с неработающей защитой записи на 14МГц.
Был довольно плотный говнокод в модуле формирования запросов от зетника к ОЗУ. Пофиксил и порефакторил. Заодно окончательно перестал работать бомбер, в котором тоже есть бага: он включает защиту записи для очка 0000 и оттого падает. Раньше не падал, ибо см.выше.
User avatar
TS-Labs
 
Posts: 5040
Joined: Thu, 26.07.2012 01:29:56

Next

Return to Hardware

Who is online

Users browsing this forum: Google [Bot] and 1 guest

cron

x