alex afaab68ac1 Fix bottom panel vertical offset, enable TSU sprites in text mode
Bottom control panel sat a couple pixels too low relative to the top
panel (pre-existing, not a session regression) - nudged GYOFFSL in
int_text_off from 47+240-1 to 47+240. Confirmed correct on hardware.

Also uncommented the TSU_SEN write in int_text_on so hardware sprites
(mouse cursor) are enabled during text mode too, not just graphics
mode. Doesn't fix the known cursor clip right above the bottom panel
(that appears tied to a fixed screen row, independent of panel
position or this bit - left as a known issue, documented in README).
2026-09-01 10:05:43 +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, но уже не в раст-критичной цепочке) — сам плеер и его тайминг (темп, высота нот) не тронуты.

Поправлена позиция нижней панели управления. Она была смещена на пару пикселей вниз относительно верхней панели с самого начала (не наша регрессия) — поправлено смещение GYOFFSL в int_text_off.

Мелкие исправления:

  • обращение к порту #EFF7 (общий системный регистр — управляет не только доступом к часам, но и видеорежимом/turbo/кэшем) переведено на read-modify-write вместо прямой перезаписи всего байта, чтобы не сбивать остальные настройки;
  • исправлен баг в разборе двузначного GMT-смещения из zifi.ini (например +10) — были перепутаны местами разряды;
  • DMA-очистка под индикатор громкости теперь дожидается завершения перед тем, как CPU начинает рисовать поверх той же области (была гонка записи);
  • в текстовом режиме (int_text_on) включён бит TSU_SEN (аппаратные спрайты TSU), который раньше был закомментирован — на всякий случай, чтобы курсор мыши мог отображаться и поверх текстовой области тоже.

Известная нерешённая мелочь: курсор мыши (аппаратный спрайт TSU) обрывается по фиксированной строке экрана прямо над нижней панелью управления — похоже на границу, завязанную на тайминг переключения видеорежима или на аппаратный бордюр, а не на что-то, что двигается вместе с содержимым панели. Не нашли способ поправить это без риска сломать что-то ещё, оставили как есть.

S
Description
ZiFi client
Readme
64 MiB
Languages
Assembly 82%
C 13%
Python 4.2%
PHP 0.4%
Batchfile 0.3%
Other 0.1%