The AY volume-bar indicator (music_analizator) ran inside int_text_off, the same precisely-timed interrupt chain that switches between text and graphics video modes. Its DMA clear + page switching + drawing could overrun that timing budget on dynamic tracks, causing visible vertical stripe flicker. Moved it to the main loop (once per frame, after wait_frame) instead, leaving the player tick (pt_play) and its tempo timing untouched inside the interrupt. Also waits for the DMA clear to finish before drawing bars into the same memory (previously a write race).
52 lines
6.2 KiB
Markdown
52 lines
6.2 KiB
Markdown

|
|
|
|
**#ZiFi - Internet client for ZX Evolution with TS Conf**
|
|
|
|
About project (ru): [ZiFi homepage ](http://zifi.vtrd.in), [ZiFi или интернет для Z80 ](http://hype.retroscene.org/blog/dev/363.html),
|
|
[ZiFi v. 0.61 released! ](http://hype.retroscene.org/blog/dev/391.html)
|
|
|
|
**Work with sites:** vtrdos, zxart, prods.tslabs, hype, pouet, irclogs;
|
|
|
|
**Download:** games, system progs, demopack disk's, diskmag's;
|
|
|
|
**See:** zx spectrum screens;
|
|
|
|
**Listen:** Ay8910 chip music
|
|
|
|

|
|
|
|
_Work with cable socket driver by PSB and Wifi module ESP8266, driver by DDp / Hacker VBI_
|
|
> For Z80 CPU
|
|
|
|
## Доработки в этой сборке (2026)
|
|
|
|
Оригинальный проект давно не поддерживается автором, поэтому часть функций пришлось переделать под текущее состояние сети и сервисов.
|
|
|
|
**Убрана проверка обновлений по HTTP.** Раньше при загрузке клиент ходил на `zifi_ver.php`, проверял версию, при необходимости скачивал новую прошивку и сверял CRC16. Сервер обновлений больше не обновляется — вся эта ветка (`autoupdate`, CRC16, скачивание `.spg`) убрана из `zifi.asm`.
|
|
|
|
**Синхронизация времени переведена на стандартные AT-команды SNTP.** Используется штатный протокол ESP-AT — он есть в том числе в обычной прошивке для ESP-01/ESP8266:
|
|
```
|
|
AT+CIPSNTPCFG=1,0,"pool.ntp.org" — включить SNTP, UTC, публичный сервер
|
|
AT+CIPSNTPTIME? — получить текущее время
|
|
```
|
|
Ответ (`+CIPSNTPTIME:Www Mmm dd hh:mm:ss yyyy`) разбирается прямо на Z80 — с учётом того, что синхронизация происходит в фоне и первые секунды может отдавать заглушку 1970 года (в этом случае клиент подождёт и переспросит, с ограничением по числу попыток, чтобы не подвесить загрузку насовсем).
|
|
|
|
Часовой пояс по-прежнему берётся из `zifi.ini` (`time: +N` / `time: -N` / `time: none`) и применяется на стороне Z80 поверх времени UTC от SNTP.
|
|
|
|
Заодно в RTC (DS1685) теперь пишутся **секунды** и **день недели** (`0` = воскресенье) — раньше эти два поля не заполнялись вообще.
|
|
|
|
**Папка загрузок снова работает как раньше** (`downloads/<дата>`, а не корень SD-карты) — при каждой загрузке дата читается напрямую из микросхемы часов, независимо от того, включена ли синхронизация времени в `zifi.ini`.
|
|
|
|
**Добавлена поддержка HTTPS.** Часть сайтов в списках загрузок (`prods.tslabs.info`, `bbb.retroscene.org`) перестала пускать по обычному http и принудительно перенаправляет на https. Клиент теперь сам определяет схему ссылки и выбирает `AT+CIPSTART="TCP",...,80` или `AT+CIPSTART="SSL",...,443` — это касается и ссылок из меню, и ссылок, которые сервер присылает внутри списков файлов.
|
|
|
|
**Сообщение о готовности.** После завершения всех этапов загрузки (подключение к Wi-Fi, синхронизация времени, папка загрузок) на экране появляется `"ZiFi is ready."` — раньше было не всегда понятно, можно ли уже пользоваться меню.
|
|
|
|
**Убрано мигание вертикальных полос при воспроизведении музыки.** (Ну почти убрана =))) Индикатор громкости AY-каналов (`music_analizator`) раньше рисовался прямо внутри прерывания, которое отвечает за точное по строкам переключение видеорежима текст/графика — и делал это вместе с DMA-очисткой экрана и переключением страниц памяти. На динамичных треках (больше эффектов — дольше выполняется код) это сбивало тайминг прерывания и давало заметные мигающие полосы на экране. Отрисовку индикатора вынесли из прерывания в обычный код главного цикла (раз в кадр, синхронно с `wait_frame`, но уже не в раст-критичной цепочке) — сам плеер и его тайминг (темп, высота нот) не тронуты.
|
|
|
|
**Мелкие исправления:**
|
|
- обращение к порту `#EFF7` (общий системный регистр — управляет не только доступом к часам, но и видеорежимом/turbo/кэшем) переведено на read-modify-write вместо прямой перезаписи всего байта, чтобы не сбивать остальные настройки;
|
|
- исправлен баг в разборе двузначного GMT-смещения из `zifi.ini` (например `+10`) — были перепутаны местами разряды;
|
|
- DMA-очистка под индикатор громкости теперь дожидается завершения перед тем, как CPU начинает рисовать поверх той же области (была гонка записи).
|
|
|
|
|