Software (finale) - Developing Calm Commander, a file manager for ZX Spectrum Next

Calm Commander (ZX Spectrum Next)

Поскольку на ZX Spectrum Next, который сейчас у меня самый загруженный компьютер, довольно много нативного софта (графическая и музыкальная программа, включая отличный ассемблер Odin), но не хватало программы для управления диском, я решил такой программу попробовать сотворить.

У Next в базе есть так называемый Browser, который базовые вещи умеет (копировать, просматривать файлы, удалять, ходить по каталогам и запускать программы), но сильно ограничен: копировать может только один файл и довольно муторно (что-то вроде clipboard), не умеет удалить каталог, который не пуст, и т.д. Изначально при разработке Calm Commander речь шла главным образом о том, чтобы пощупать железо Next — которое, хотя и совместимо с классическим ZX Spectrum, имеет кучу speccyфик. К счастью, я на связи с Ped/7Gods, который для Next программирует и, на мой взгляд, нет более компетентного человека по этому компьютеру — так что разработка шла довольно быстро.

Первая версия Calm Commander была готова примерно за неделю. Эта версия после семи дней разработки умела следующее:

  • Просмотр каталога ;)
  • Копирование файлов
  • Перемещение файлов
  • Удаление файлов
  • Удаление каталогов, содержащих какие-то файлы
  • Переименование файлов/каталогов
  • Выделение нескольких файлов клавишей SPACE
  • Массовое выделение файлов по маске
  • Массовое снятие выделения файлов по маске
  • Меню — которое, правда, работает, но пункты неактивны
  • Создание каталога
  • Показать информацию о Calm Commander
  • Показать справку по управлению

Работа шла довольно быстро ещё и потому, что у меня был опыт с MB Commander, так что многое не пришлось выдумывать — лишь применял решения на next-овское железо. Плюс благодаря текстовому режиму, которым Next располагает, не нужно было возиться с вещами вроде шрифта, сложной отрисовки рамок — сам был удивлён, как быстро работа над Calm Commander спорится, но что важно — мне это нравилось.

Первая версия, которую я выпустил, разумеется, не обошлась без проблем и таких незначительных мелких багов, как, например: если вы были на пункте, ведущем в надкаталог (пункт: ..) и нажимали клавишу 8 (удаление), вам удалялся весь текущий каталог, включая надкаталог. Было весело чинить ошибки, и я понемногу начал прогрызаться через HW Next — и нравится это кому-то или нет, многое у Next придумано очень хорошо.

Calm Commander я начал разрабатывать в то время, когда для Next не было нормального нативного ассемблера (Odin был в пелёнках, а другого пригодного не было), и так я начал разрабатывать его в sjasmplus на PC. У sjasmplus есть поддержка новых next-овских инструкций (mul d,e; nextreg и т.д.), умеет генерировать файл NEX (исполняемый файл для Next), так что работа в нём была очень удобной.

Это примерно два года, с небольшими перерывами, как я работаю над Calm Commander, и за это время удалось добавить кучу новых функций, отловить кучу ошибок — и на удивление это по-прежнему приятное развлечение. Знаю, что многие порядок на SD-карте предпочитают наводить на PC, но иметь возможность прибраться на SD-карте прямо на ZX — то, что я просто предпочитаю. Много программ, которые делаю, я, собственно, делаю прежде всего для себя (см. например Next Player — музыкальный плеер для Next: возник, чтобы я мог на работе слушать AY-музыку), а то, что кто-то иногда мои творения запускает и использует — для меня бонус.

Сейчас работаю над поддержкой K-Mouse (готово уже на 75 %), а затем последует просмотр файлов. Но просмотр файлов хочу сделать чуть иначе: через модули. Хотите посмотреть файл TXT? Подтянется модуль txt.module — и всё устроит. А как насчёт запустить музыку PT3, SQT или посмотреть BMP? Всегда подтянется соответствующий модуль — и всё устроит. Этого очень жду, потому что ничего такого ещё не делал, и надеюсь, отпадут проблемы с памятью, которой будет не хватать с прибывающими функциями, и одновременно разработка Calm Commander станет чуть быстрее. Если кого-то интересует исходный код Calm Commander — найдёте его на GitHub, откуда можно скачать и актуальную версию. Разработочную пришлю по запросу, но использование — на свой риск.

Сейчас позволю себе на минутку отклониться, хотя это связано. Знаю, что многим ZX Spectrum Next не по душе, и честно говоря, плохо это понимаю. Когда впервые читал о Next, у меня тоже были странные ощущения — аппаратные возможности были переразмерены, и я не знал, зачем они там. Ждал, что как у кучи других клонов с разными графическими режимами или иными наворотами — кроме пары первых утилит от авторов поддержки не будет. К счастью, сообщество вокруг Next очень большое, очень живое, и создаются не только игры (как многие очень любят представлять и называют Next игровой консолью), но возникает куча прикладного софта. Так что этим ZX действительно можно пользоваться, не нуждаясь обязательно в PC.

Например, существует загрузчик софта из интернета, чат-программа, музыкальные и графические редакторы, ассемблер; NextBasic умеет абсолютно удивительные вещи (за ним тоже стоит Gary Lancaster) плюс куча прочего. Могу представить взять Next с собой в отпуск без ноутбука — и знаю, что не заскучаю, и главное — не буду никак ограничен и смогу творить сколько угодно. Знаю, что с таким подходом я в меньшинстве, но у меня так просто устроено: компьютер у меня затем, чтобы на нём делать, и не хочу низводить его лишь до «запускалки» TAP’ов.

Но при всём этом на этом компьютере запускаете классические демо, игры — как на старом добром ZX Spectrum. В итоге, если хотите использовать Next только как ZX Spectrum — можете настроить его так, что вся машина будет вести себя как ZX Spectrum 128k с DivMMC; лично я, однако, думаю, что это было бы жаль. Извиняюсь за отступление, но нужно было немного излить душу — особенно когда везде на Next ругают, а до небес возносят клоны, которым Next и до щиколотки не достаёт. Для меня Next — лучший клон; но это моё мнение, никому его не навязываю и чужое отличное мнение опровергать не буду. Тем не менее за этим мнением стою.

Но вернёмся к Calm Commander — сейчас Calm Commander умеет почти всё, чего вы ждали бы от файлового менеджера: копировать, перемещать, удалять, переименовывать файлы, ходить по каталогам, показывать информацию о файлах/каталогах, ставить атрибуты у файлов/каталогов, запускать файлы (TAP, NEX, SNA, SNX, Z80, BAS), сравнивать каталоги, показывать системную информацию, массовые операции. Как база этого хватает, но планов у меня куча — посмотрим, сколько времени выделю Calm Commander: проектов для ZX у меня начато много, и когда занимаюсь одним, отодвигаю другие. Но так или иначе, Calm Commander цель выполняет — это первая программа, которую на Next запускаю после каждого включения компьютера.

Shrek

Share your thoughts about the article