21Sep/10Off

sjasm|mac os x

posted by pulsar

Мое знакомство с sjasm началось где-то год-полтора назад, но об этом позже.

По теме, обозначенной в заголовке. Все началось примерно год назад, когда на zx.pk.ru увидел пост siril|4d, тогда тема показалась интересной, но абсолютно не актуальной. Вопрос был забыт на год.

Столкнувшись с необходимостью подобрать нормальный текстовый редактор под Mac OS X спустя какое-то время, вспомнил тему и оценил наработки. Как оказалось при ближайшем рассмотрении, siril прикрутил (miror on speccy-live) лишь синтаксическую подсветку к Xcode. О том, как это выглядит и что мне в этом плане необходимо, нужно писать отдельно, сейчас цель иная. К этому моменту уже пересмотрел все или почти все достойные текстовые редакторы и нашел более-менее приемлемое решение на базе Editra.

Editra0.5.72Editra - такой себе неплохой, молодой программистский текстовый редактор. Молодой, но вместе с тем уже не плохой. Первоначально стремился по аналогии с виндой найти какое-нибудь кроссплатформенное решение. В этом отношении Editra подходит идеально - практически единственное оптимальное решение для трех платформ: Linux, Mac OS X, Microsoft Windows. А вообще жалко, что на Mac OS X  не портировали SciTE - лучшее на мой взгляд решение для sjasm под Linux, Windows.

SciTEПосмотрел также CodeLite, CodeBlocks, Komodo Edit... - возможные решения на этом пути, но либо «толстые», либо корявые, либо все это вместе.

Для текстового редактора, под sjasm в течение последнего года-полутора, впрочем и ранее, исходя из предоставляемых возможностей хотя бы все того же Alasm'a, сложился определенный минимум требований:

  • подсветка синтаксиса (далеко не самый важный критерий - такая маленькая приятная мелочь, но если возможно, то почему бы и нет; за год сложились определенные предпочтения - в результате от подсветки осталось 3-4 цвета, ограничивающих и выделяющих только самое основное);
  • build (пожалуй, самое главное в редакторе, особенно важно иметь возможность повесить build на «горячую клавишу», ведь порой необходимо за короткий промежуток времени многократно собрать, порой одновременно в tap, trd, sna форматы и проверить написанный кусок кода, поэтому все варианты с bat&ko не подходят поопределению);
  • автодополнение/завершение (пожалуй, нужнее даже чем подсветка синтаксиса - неслабое ускорение и удобство);
  • операции над строками (в том числе быстрое де-/комментирование - не самое необходимое, но желательное);
  • run(s) (возможность назначения hotkey'ев для быстрого запуска собранной программы в одном, а лучше нескольких эмуляторах - в SciTE у меня было «подключено на горячую» три эмуля - важно не меньше, чем build);
  • разбор лога сборки/output с возможностью быстро перейти к строке с ошибкой (не менее важно, чем build/run);
  • автоматические закладки на определенным образом оформленные метки в исходном коде (аналог реализованной функции в Alasm by alco, доступной по «Ext+L», реализовывал в SciTE);
  • folding (сворачивание блоков кода, помню, bugsy'n'breeze ратовали за это дело - реализовывал в SciTE, долго возился, сделал как хотел, а в результате оказалось ни разу не нужно);
  • project;
  • удобная строка поиска вместо окна (ненавижу «висящие окна поиска» - для меня критично, ведь даже в Alasm'е сто лет назад был нормальный поиск).

Итак, возвращаюсь к Editra.  Опишу, что и как реализовано, а конфиги положу в конце статьи, чтобы их удобно было найти и забрать, если необходимо. Из рассмотренных требований так или иначе удалось вытянуть: build, разбор output, автодополнение, подсветка синтаксиса, операции над строками, удобная строка поиска. По поводу разбора output пришлось связываться с автором редактора, впрочем конечное решение нашел сам. Build реализовывал на базе sjasm 1.07 rc8 - виндовой сборки запускаемой под wine найдено по наводке Aprisobal'а нативное решение (miror on speccy-live: sjasm v1.07 rc8), правда пока не протестированное. Все остальное сложно реализуемо. Казалось бы все не плохо, но при реальной эксплуатации видны проблемные моменты, заставляющие искать лучшие варианты.

Помучившись, вспомнил про изыскания siril'а и решил с ним связаться - вдруг он продвинулся в перед и в Xcode уже удалось реализовать еще хотя бы build и разбор output. Но все оказалось много печальнее - за больше, чем год «воз с мертвой точки не сдвинулся». Однако siril предложил мне поделиться со всеми моими наработками, что собственно и решил сделать в такой форме.

Еще раз проанализировав хорошие нативные (под Mac OS X) редакторы (TextMate, BBEdit, Xcode) согласно озвученных требований, понял, что лучшим вариантом будет именно Xcode. Взялся снова пытаться прицепить его к sjasm'у. По большому счету нужно минимально и достаточно «прицепить» лишь build и разбор output.

XcodeСперва помыкавшись ничего не получилось - решил собрать sjasm под Mac OS X из исходников, для простоты дальнейшей работы, что и сделал - правда это был rc7, а мне в дальнейшем по-любому будет нужен rc8, который видимо потом снова буду цеплять на базе wine. В общем build в тестовом варианте прицепить получилось, с разбором output все много сложнее, ничего хорошего пока ни придумать, ни нагуглить не получается - лучшее что нашел - статья Richard Dingwall. По контексту понимаю, что это именно то что нужно, но знаний Mac OS X, Xcode и английского мне оказывается пока не достаточно, чтобы суметь повторить описанную операцию. Был бы рад любой посильной помощи в этом направлении!

Ну, а теперь небольшое отвлечение с ответом на вопрос: «А зачем тебе это (sjasm) надо? Ты ведь весь такой true реальщик...». Все началось с мультиколора, мультигиги и иже с ним. На реале что-либо делать инспирейшену явно больше, но пытаться фиксить мультиколор, скажем под те же классические модели спека, казалось и оказалось проще с использованием связки sjasm+кучка эмуляторов. А у sjasm'a нет достойного кроссплатформенного текстового редактора (хотя бы уровня Alasm' а). Вот из этих пары предложений и родилась эта статья и вся заморочка на тему.

Теперь самое время для конфигов:

  1. Готовая сборка SciTE для винды в том виде, в котором ее использую. Конфиг с подсветкой синтаксиса. Как и что было реализовано в остальном при желании можно понять, скачав оригинальную сборку SciTE - все доработки базируются на правке конфигов и lua script'ов. Что и где за прошедший год уже под забылось, хотя при большой нужде всегда можно вновь разобраться.
  2. Конфиги для Editra. После установки редактора (v0.5.72) скопировать всю папку в ~/library/aplication support (для винды в папку юзера\Application Data\; для линукса в ~/ и папка должна быть скрытой - начинаться с точки). Что к чему при необходимости и желании можно разобраться.
  3. Build в Xcode (тестовый вариант):
    • New project> Mac OS X Other>Empty Project
    • New file (асмовский файл с именем как у проэкта)
    • Project>New target>Mac OS X Othet>Shell Script target
    • edit run script>«cd $SRCROOT
      (директория до sjasm'а)/sjasm $PROJECT_NAME.a80»
  • По-идее можно было бы оформить вариант в виде готового пользовательского проекта, но разбора output пока нет, а поэтому на мой взгляд толку от использования Xcode маловато. Да и конечный вариант может измениться в положительную сторону и будет оформлен иначе.

Leave a comment


Comments (7) Trackbacks (0)
  1. Ваш сйасм – глюкодром. ДЛя серьёзных проектов (а их есть таки на спеке) непригоден. Аффтар баги оперативно не фиксит.

  2. ejkot

    Спасибо, потестим. Хотя и сделал для себя уже конфиг для Notepad++, но тут похоже гораздо удобнее будет

    смотришь в сторону scite на винде?! если да то мне кажется стоит повнимательнее потестить, надеюсь понравится. на линуксе тоже не плохо бы до такой степени scite до точить – благо scite там есть.

    по поводу mac os в общих чертах уже получилось (за время прошедшее с последнего моего комментария еще кое-что доработал) то что хотел, теперь с опытом до точатся острые углы и со временем оформится в удобный инструмент, который можно будет советовать другим. сейчас остро необходим мне только sjasm rc8!!

  3. Спасибо, потестим. Хотя и сделал для себя уже конфиг для Notepad++, но тут похоже гораздо удобнее будет

  4. Есть определенные положительные подвижки в плане прикручивания sjasm‘а к xcode – удалось завести разбор output!

    Все началось в самом конце рабочего дня – бросил siril‘у фразу с вопросом: «как успехи, и не смотрел ли как прикрутить разбор output», а сам ушел, вернулся уже чтобы выключить рабочий компьютер – увидел что он (siril) мне что-то очень развернуто ответил с кусками кода… Успел пробежать глазами полтора слова, не поняв толком что к чему – вобщем прочитаю ответ только завтра, и побежал на автобус.

    Но вместе с тем что-то видимо в его ответе подсознательно меня зацепило, вернувшись домой сразу вновь решил грызть статью Richard’а Dingwall’а – в ответе siril‘а точно была ссылка на нее. сложив ребус из скриншотов, кусков кода, отрывочно переведенного текста, материалов по перекрестным ссылкам – решил проанализировать в какой форме Xcode по дефолту распарсивает логи сишного компилера. Оказалось все давольно просто – формат строки с ошибкой в xcode: <путь\файл>:<строка с ошибкой>:< error>: <описание ошибки>, в дефолте e sjasm’а: <путь\файл>(<строка с ошибкой>):< error>: <описание ошибки>. Т.е. практически одно и тоже. Решил зайти с другого конца править не что-либо в Xcode, а исходники sjasm’а, благо исходники v1.07 rc7 были. Сказано, сделано – поиском нашел файлы содержащие «: error:» ими оказались sjio.cpp и directives.cpp в строках 145 и 1901 соответственно, файлы лежат в папке sjasm. Строки имеют такой формат: «…%s(%lu): error: [LUA]%s…», не долго думая исправляю на необходимую: «%s:%lu: error: [LUA]%s», собираю (правленная версия sjasm v1.07 rc7 в бинарнике под Mac OS X)… И, о чудо, кто бы мог подумать, Xcode разбирает лог с ошибками, правда, сначала не совсем правильно, снова обратился к логу сишного билдера и исправил строку shell script’а build’а с:

    • cd $SRCROOT
      (директория до sjasm’а)/sjasm $PROJECT_NAME.a80

    на:

    • (директория до sjasm’а)/sjasmplus $SRCROOT/$PROJECT_NAME.a80

    Теперь вполне полноценно работает вся инфраструкрура Xcode по сигнализации об ошибках:
    xcode_error

    Теперь мне нужен ответ от aprisobal‘а о правомерности правок и не могут ли они гипотетически отрецательно сказаться на работе sjasm‘а, но поидее не должны, если конечно что-то где-то ненужно еще поправить. Нужно что бы он аналогичным образом поправил исходники rc8 и собрал бинарник или предоставил исходники которые можно так же легко поправить и собрать, т.к. мне так и так нужен rc8!

    В ближайшее время возьмусь окончательно настраивать Xcode под нормальную работу с sjasm’ом и свои потребности. Попытаюсь «дороботки» Xcode оформить в удобоваримой форме – не исключено, что мне потребуется помошь. О результатах разумеется отпишусь.

    Сейчас мне в первую очередь нужа нормальная версия sjasm’а rc8!

  5. отлично оформил! спасибо за наработки! =)

    чем смогу – помогу.

  6. еще немного причесал такстовик, разбавил скриншотами. со временем быть может еще немного подкорректирую.

    по поводу же sjasm’а на маке мне кажется самое гравное так и прикрутить xcode – реально хороший редактор/ide и на удивление «легкий» и шустрый так, что не кажется, что стреляешь из пушки по воробьям. за все время на винде, линуксе приходилось работать в нескольких ide и всегда оставалось ощущение перегруженности и не поворотливости здесь такого ощущения нет.

  7. пока оставлю в таком виде, завтра причешу, скриншотов наделаю возможно.

Trackbacks are disabled.