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

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

Postby TS-Labs » Sun, 05.04.2015 20:59:00

UPDATE
Добавил маппинг регистров конфы на память (fmaps).
Можно делать так:
ld bc, #15AF
ld a, #10
out (c), a
ld a, GFX_MODE
ld (#400), a
ld a, VPAGE
ld (#401),a
...
xor a
out (c), a
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Tue, 01.09.2015 03:09:37

UPDATE
! Фиксед бага блиттера в режиме сумматора с насыщением.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sat, 05.09.2015 11:06:34

UPDATE
+ Добавлены биты на чтение в порту #00AF для контроля статуса RS-232:
- бит 3: можно забрать байт,
- бит 4: пожно положить байт.
+ По ресету сбрасывается режим бипера, гудящий входом Tape In.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Thu, 24.09.2015 17:58:34

FIXED
! В хдл последних ревизий была бага с кемпстон мышом.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sat, 10.06.2017 01:12:05

FIXED
! Пофиксена ужастная бага с режимом ДМА RAM-SPI: адрес памяти инкрементился до первого чтения, что вызывало сдвиг пересылаемых данных на 2 байта.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Sun, 11.11.2018 08:40:08

UPDATE
+ Добавлена ДМА для вейтовых портов (RS-232 и ZiFi).
* Scroll Lock теперь переключает синхру и на ВГА. В режиме ТВ ВГА монитор покажет сообщение "несовместимый режим" или чОрный экран вместо жирных пикселей.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Thu, 13.12.2018 10:45:11

UPDATE
* Убран сигнал DOS из дешифрации портов SPI в Zcontroller-е.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Tue, 05.03.2019 23:49:27

FIXED
! Отображение последнего спрайта в SFILE (thanks to Blade).
* Бит 5 в порту FE читается как 1.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Wed, 28.04.2021 21:35:31

FIX UPDATE

! Пофиксан анноящий уже полтора года всех баг с вейтовыми портами (не выходило из сетапа биоса, зифи клиент кричал про "обновите конфу").
* Оптимизирован протокол SPI интерфейса между атмегой и фпга.
* Оптимизирована прошивка атмеги на предмет более быстрого обслуживания вейтовых портов.

В данный момент RS232 Mounter невозбранно поддерживает работу на 230400 бит/сек. Правда, реальная скорость передачи данных все же меньше чем 230кбит за счет межсекторных задержек - атмега таки не успевает. Однако, прирост - 1.5х по сравнению с 115200.

Маунтер тоже обновился. Перекачайте, если еще не.

В аттаче - 2 версии плагина для WC со скоростями 115 и 230.

Технические детали реализации под катом.
Вейтовые порты - это эмуляция внешних устройств через бортовой МК (атмега).

К вейтовым портам относятся следующие устройства:
- COM-port (RS-232), сюда же входит и ZiFi,
- Глючасы и CMOS-память в них.

Поскольку атмеге требуется время на обработку запроса, з80 при обращении к вейт портам аппаратно вешается сигналом ~WAIT (отсюда название), пока требуемые данные не будут приняты/отправлены атмегой. В момент активации вейта на атмегу идет сигнал прерывания. Атмега вылетает на ISR, где устанавливается флаг "было прерывание от вейтовых портов". Ничего более не происходит, и обработка вейтового события произойдет в порядке очереди тасок.

Вопрос: почему нельзя обрабатывать вейтовые запросы сразу на ISR?
Ответ: потому что сами процедуры эмуляции этих устройств весьма объемны, поэтому иср обвешивается тонной push/pop и все становится очень плохо. К тому же, пришлось бы обеспечивать межтредовую коммуникацию между иср и основным циклом (хотя бы то же фифо пс/2).

Когда наконец доходит до обработки, атмега обменивается с фпга данными по SPI интерфейсу, в котором атмега выступает мастером, а фпга - слейвом. Стандартный протокол выглядел следующим образом:
- атмега принимает байт статуса, в котором указан тип устройства (ком/часы) и режим доступа (чтение/запись),
- посылает выбор регистра адреса (каждое устройство имеет внутри себя пул регистров),
- принимает адрес,
- посылает выбор регистра данных,
- посылает/принимает байт данных.
После этого вейт с з80 снимается и он продолжает работу.

Я оптимизировал протокол, добавив в байт статуса 5-битный адрес в упакованном формате. Теперь сокращенный протокол выглядит так:
- атмега принимает байт статуса с типом устройства, режимом доступа и упакованным адресом,
- посылает/принимает данные.

Не все адреса можно упаковать в 5 бит, но можно те, к которым требуется максимальная скорость доступа. В данный момент так:
- COM/ZiFi - полностью попадает в 5-битный адрес,
- GluClock, диапазон #F0..#FF - попадает в 5 бит, здесь живут фифо PS/2 клавиатуры и SPI Flash,
- GluClock, диапазон #00..#EF - работает по старому протоколу, тут скорость не критична.

Вторая и более важная новость - фикс генерации вейта/прерывания в фпга.

Оригинальный говнокод содержал трэшовый адъ баг, который приводил к нестабильной генерации сигнала вейта/прерывания, и самое плохое, что в силу своей специфики проявлялся в зависимости от сборки квартусом. При самом неудачном стечении обстоятельств, некоторые обращения к вейтовым портам не доходили до атмеги и нормальная работа с компортом и цмосом была невозможна.
Attachments
WC mounter.zip
(39.98 KiB) Downloaded 198 times
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Thu, 09.03.2023 01:43:30

FIXED (crytical!)
! Пофіксана бага псування тимчасового регу при записі в FMAPS область, що не відноситься до CRAM/SFILE. (Дякую Gogin за репорт.)
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Previous

Return to Hardware

Who is online

Users browsing this forum: No registered users and 1 guest

x