alex 292d42f8ea Move now-playing blink/autoplay out of the interrupt too
show_now_play_link (blinking highlight for the currently playing track
in the list, plus the end-of-track autoplay/parse_url check) still ran
inside int_text_off via pt_play, doing its own extra page switch
(set_Textpage_lite) and an 80-byte write - on top of the analyzer this
was the remaining source of the vertical stripe flicker, specifically
when the playing track is scrolled into view. Split it out of pt_play
and call it from the main loop alongside the analyzer; the player tick
itself is untouched.

Confirmed on hardware: no flicker left, including across autoplay to
the next track.
2026-08-31 23:29:25 +03:00
2026-08-31 21:04:48 +03:00
2026-08-31 21:04:48 +03:00
2026-08-31 21:04:48 +03:00
2026-08-31 21:04:48 +03:00
2026-08-31 21:04:48 +03:00
2026-08-31 21:04:48 +03:00
2026-08-31 21:04:48 +03:00
2026-08-31 21:04:48 +03:00
2026-08-31 21:04:48 +03:00
2026-08-31 21:04:48 +03:00
2026-08-31 21:04:48 +03:00
2026-08-31 21:04:48 +03:00

ZiFi

#ZiFi - Internet client for ZX Evolution with TS Conf

About project (ru): ZiFi homepage , ZiFi или интернет для Z80 , ZiFi v. 0.61 released!

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

ZiFi splash

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 начинает рисовать поверх той же области (была гонка записи).
S
Description
ZiFi client
Readme
64 MiB
Languages
Assembly 82%
C 13%
Python 4.2%
PHP 0.4%
Batchfile 0.3%
Other 0.1%