PDA

Просмотр полной версии : Z80 Asm plugin for Sublime Text 2



psb
26.08.2013, 11:29
Для всех фанатов Sublime Text 2/3 радостная новость: вышел плагин для асма Z80! Смотреть и качать здесь: https://github.com/psbhlw/sublime-text-z80asm

https://github.com/psbhlw/sublime-text-z80asm/raw/master/z80asm/readme.png

Что в нем есть:

* Установка простым копированием;
* Подсветка синтаксиса;
* Яркая цветовая тема;
* Запуск ассемблера и эмулятора из редактора;
* Навигация по ошибкам компилирования;
* Навигация по меткам (ST3 - по всем файлам проекта);
* Автодополнение по текстам всех открытых файлов;
* Набор заготовок кода (заготовка для кодового блока для sjasm, бейсик для монолоадера, настройка прерываний, загрузка секторов с диска, очистка экрана, ожидание нажатия клавиш и много чего еще), ускоряющих написание простых программ;
* Встроенная система хелпов (пока почти ничего в ней нет).

В дальнейшем планируется добавить несколько функций типа конвертирования синтаксиса, формата строки, разбивки/склейки строк (по правилам ассемблера).

Более подробное описание плагина в README. Пишите здесь свои отзывы и предложения, а если у кого есть вопросы типа "да что такого хорошего в этом вашем Sublime Text" - создайте, пожалуйста, отдельную тему для этого.

Спасибо всем помогавшим!

Alex Rider
26.08.2013, 21:10
Разбираюсь потихоньку, здоровская весчь. Пока хочется попросить такую щтуку:
В батник для билда и запуска отдавать не текущий файл, а <имя проекта>.a80 (если проект открыт) или <имя папки с текущим файлом>.a80. Компилировать и запускать текущий файл, как правило, не надо.

---------- Post added at 21:10 ---------- Previous post was at 20:57 ----------

upd: Еще хочется code completion с символами из всех файлов проекта.

psb
27.08.2013, 01:07
на счет билда проекта - хорошая идея, подумаю на досуге что можно сделать.

про code completion из всех файлов - не уверен, вроде не настраивается это в редакторе...

Alex Rider
27.08.2013, 03:40
на счет билда проекта - хорошая идея, подумаю на досуге что можно сделать.
Я тока что поковырялся - вроде бы с билдом несложно все. Надо в билд-конфиге передавать в батник не имя файла, а имя проекта (там есть соответствующая переменная). Все гораздо хуже с действием Run. Там надо в питоновском скрипте узнать путь к проекту, у меня не получилось это сделать. Фокусы с билдом и Run'ом становятся полезны когда сырцы лежат в разных папках.

А вот Code Completion - это важная штука. Может, ее питоновским скриптом сделать получится?

psb
27.08.2013, 07:28
Надо в билд-конфиге передавать в батник не имя файла, а имя проекта (там есть соответствующая переменная).
это да, просто надо унифицировать, чтобы всем было удобно. возможно, в скрипт передавать два параметра.

Все гораздо хуже с действием Run.
в билд-системе можно сделать Run так же как и билд, и в скрипте запускать Run так же как и билд. надо экспериментировать.

Code Completion курить надо... беглый гуглинг грит, что нельзя так сделать.

sq/skrju
27.08.2013, 08:11
Ради интереса решил поставить и посмотреть, что за Sublime Text 2 такой. Понравилось, скорее всего перейду на него с Ultraedit. Спасибо за плагин!

psb
27.08.2013, 08:39
или <имя папки с текущим файлом>.a80
имя папки, кстати, можно в самом батнике получить типа %~dp1.

ZEK
27.08.2013, 10:17
А что этот редактор платный? еще и 60$, да они с дуба рухнули

psb
27.08.2013, 10:32
А что этот редактор платный? еще и 60$, да они с дуба рухнули
редактор хороший, и у него безлимитный триал.

Hacker VBI
27.08.2013, 11:49
psb, по умолчанию build and run - ctrl+shift+b ?
из меню строит и запускает, по клавише вываливает
SjASMPlus Z80 Cross-Assembler v1.07 RC7 (build 02-04-2008)
Pass 1 complete (0 errors)
Не удается найти E:\speccy\sjasmplus\cube\cube.out
Pass 2 complete (0 errors)
Pass 3 complete
Errors: 0, warnings: 0, compiled: 324 lines, work time: 0.016 seconds
[Finished in 0.1s]

и не стартует.
с чем может быть связано?

psb
27.08.2013, 12:02
с чем может быть связано?
в Build Settings надо прописать кой-чего... см. Variants вот здесь: http://docs.sublimetext.info/en/latest/reference/build_systems.html#platform-specific-options

руки не дошли...

elf/2
27.08.2013, 12:22
кстати, если для кого-то Sublime Text это новый редактор, то лучше сразу бету 3 версии взять. там много вкусного

пара предложений:
1. в z80asm.tmLanguage переименовать entity.name.label.asm в entity.name.label.asm.def (строка 44)
2. положить файлик Symbol List.tmPreferences из аттача в папку плагина

теперь по ctrl+r можно быстро скакать по меткам в текущем файле.

а в случае Sublime Text 3 по ctrl+shift+r по меткам во всем проекте. и плюс к этому будет работать GoTo Definition

elf/2
27.08.2013, 13:21
и в продолжении темы SublimeText 3 и индексированных символов



import sublime, sublime_plugin

class IndexedSymbolsAutocomplete(sublime_plugin.EventLis tener):
def on_query_completions(self, view, prefix, locations):
symbols = set()
window = sublime.active_window()
for view in window.views():
symbols.update(el[1] for el in view.indexed_symbols())
symbols = sorted(symbols)
return [(el, ) for el in symbols]


если положить это в папку плагина, то в списке auto complete'а будут метки из всех открытых табов.

psb
27.08.2013, 14:17
фигасе!
elf/2, спасибо, попробую! вопрос только про entity.name.label.asm.def... почему обязательно .def? в tmPreferences нельзя без def вписать?

---------- Post added at 16:17 ---------- Previous post was at 16:15 ----------

в третьей версии вроде 3й питон, я в 3й не тестировал, если что...

elf/2
27.08.2013, 14:33
вопрос только про entity.name.label.asm.def... почему обязательно .def? в tmPreferences нельзя без def вписать?

у тебя entity.name.label.asm слишком много чего матчит. Чтобы отделить определение метки от использования я добавил суффикс. И в Symbol List.tmPreferences пишу что учитывать только определения меток.



в третьей версии вроде 3й питон, я в 3й не тестировал, если что...
ну и что :) я протестировал - работает.

автор похоже на второй Sublime забил, а новую версию вроде регулярно обновляет. основные плагины тоже потихоньку мигрируют.

psb
27.08.2013, 14:37
у тебя entity.name.label.asm слишком много чего матчит.
ага, я понял.


ну и что я протестировал - работает.
ок, со временем может тоже перейду/проверю. нужно еще билдскрипты (примеры) под линукс и мак... тоже со временем.

breeze
28.08.2013, 18:41
http://i.imgur.com/ldzGabq.png

Сделал темку с более спокойными (пастельными) цветами. Для смены в файле c:\Users\%UserName%\AppData\Roaming\Sublime Text 2\Packages\z80asm\z80asm.sublime-settings

Изменить строчку
"color_scheme": "Packages/z80asm/z80asm (breeze).tmTheme"

или закомментировать и выбрать в меню:

Preference->Color Scheme->z80asm->z80asm (breeze)

Так же в архиве файл sjasm-comments.tmPreferences который немного изменяет политику расстановки комментариев. В частности по «ctrl+/» комментарий «;» ставится с начала строки, а не рядом с текстом.

p.s. к вечеру думаю psb посмотрит и добавит в репозитарий :rolleyes:

TSL
29.08.2013, 00:10
А что этот редактор платный? еще и 60$, да они с дуба рухнули
Если надо, есть крякнутый ехе, я его поломал минут за 10.
Но и некрякнутый пока (!) без ограничений.

psb
29.08.2013, 22:08
Обновления:

* теперь поддерживается 3я версия редактора;
* улучшена система билда/запуска (первым делом ищутся make.bat и emul.bat в директории проекта, и если они есть - запускаются они, в этом случае никаких настроек путей в плагине делать не надо);
* комментирование кода теперь всегда происходит с начала строки (breeze);
* новая спокойная цветовая тема от breeze;
* навигация по меткам в файле (ST2) и в проекте (ST3) (elf/2);
* автодополнение из всех открытых вкладок (elf/2).

ZEK
29.08.2013, 22:13
есть крякнутый ехе
Не, спасибо, я верю что хороший редактор, но не зацепило

esl
29.08.2013, 23:16
Не, спасибо, я верю что хороший редактор, но не зацепило

наверное САМЫЙ достойный програмерский редактор за последнее время
для меня еще очень критично что он мультиплатформ
не надо привыкать к разному под Linux/Mac/Win

---------- Post added at 22:16 ---------- Previous post was at 21:49 ----------

под линуксом пришлось похачить



"linux":
{
"cmd": ["$packages/z80asm/build.sh","${file_name}","${project_path:${folder}}"]
},


$project_path был пустым ....


и простейший build.sh


#!/bin/sh
if [ -f $2/build.sh ]
then
cd $2
$2/build.sh
else
echo "build.sh in project folder Required !!!!!!"
fi

psb
29.08.2013, 23:38
$project_path был пустым ....
а проект был сохранен?


и простейший build.sh
если не влом, можно аналог build.bat? чтобы унифицированно всё... так-то я попозже и сам допилю, если что.


и еще просьба к All, если у кого есть удобная табличка с кодами команд, командами и их тактами, можете поделиться? спасибо.

elf/2
30.08.2013, 11:32
сли у кого есть удобная табличка с кодами команд, командами и их тактами, можете поделиться? спасибо.

http://z80.info/z80sean.txt


Opcode Mnemonic T M M1 Notes
-------------------------------------------------------------------------
00 NOP 4 1 1
01 n n LD BC,nn 10 3 1
02 LD (BC),A 7 2 1
03 INC BC 6 1 1
04 INC B 4 1 1
05 DEC B 4 1 1
06 n LD B,n 7 2 1


или еще чего-нибудь с этой (http://z80.info/#BASICS_INST) странички

кстати, а как ты его планируешь заиспользовать?

esl
30.08.2013, 14:17
имхо


"working_dir": "${project_path:${folder}}",

без нее у меня не работает f4 переход по меткам.




#!/bin/sh

sjasm=sjasmplus

#Run external script from project folder if exists
if [ -f $2/build.sh ]
then
cd $2
$2/build.sh $@
elif [[ -f $1 ]]
then
# Simple compile
$sjasm $1
else
echo "Source file not found!"
exit 1
fi


я понял почему у меня был пустой проджектфолдер ;)
проджекта не было, была просто открыта папка
и еще, не понравилось что проджект файл должен быть в той же папке что и проджект.

psb
30.08.2013, 15:33
кстати, а как ты его планируешь заиспользовать?
планирую положить в helps, чтобы через меню можно было открыть и посмотреть (найти опкод команды и кол-во тактов). просто как справка.

проджекта не было, была просто открыта папка
я так и подумал.

и еще, не понравилось что проджект файл должен быть в той же папке что и проджект.
а разве это не логично?

спасибо за скрипт.

esl
30.08.2013, 16:09
а разве это не логично?

ну до этого я складывал все Projectы в отдельную папку ;)

elf/2
30.08.2013, 17:36
планирую положить в helps, чтобы через меню можно было открыть и посмотреть (найти опкод команды и кол-во тактов). просто как справка.

а если инфу по текущей комманде в статус баре показывать?

psb
30.08.2013, 21:06
а если инфу по текущей комманде в статус баре показывать?
тут нужно писать парсер, как я понимаю, а синтаксис не такой простой бывает... может быть потом как-нить...

Дмитрий
31.08.2013, 00:45
Трабл этого редактора в том, что при вводе мнемоники, допустим "ld", он показывает подсказку, нажимаешь таб, чтоб отступить и писать операнды, а редактор только подсказку закрывает, но не делает табуляцию. С пробелом такой проблемы нет. Но с табуляцией и текст удобочитаемей и привык уже. Как можно это пофиксить, чтоб по табу и подсказка закрывалась и таб печатался?

---------- Post added at 23:45 ---------- Previous post was at 23:38 ----------

Да и в принципе подсказка очень назойливая, ложные срабатывания. как-то в VS по-спокойней, по-удобней. Чет тут недоработано.

psb
31.08.2013, 11:34
Трабл этого редактора в том, что при вводе мнемоники, допустим "ld", он показывает подсказку, нажимаешь таб, чтоб отступить и писать операнды, а редактор только подсказку закрывает, но не делает табуляцию. С пробелом такой проблемы нет. Но с табуляцией и текст удобочитаемей и привык уже. Как можно это пофиксить, чтоб по табу и подсказка закрывалась и таб печатался?
тут такая история... есть настройка cancelCompletion, у меня все команды там были перечислены, как раз чтобы когда написал типа ld, он не мешал своими подсказками. но из-за этого переставал работать другой автокомплит, если если в строке есть такое "запрещенное" слово. т.е. если написал jr, метка потом не дополняется. вот в угоду этому я убрал cancelCompletion... как это можно нормально решить - хз...

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

---------- Post added at 13:34 ---------- Previous post was at 12:32 ----------

Дмитрий, попробуй ветку dev-canc_completion, будет лучше или нет на практике... если будет - оставлю.

Дмитрий
31.08.2013, 16:03
Добавил в Preferenses, User:
"tab_completion": false
Но чет ничего не изменилось, все равно на таб реагирует не адекватно.
UPD: ага, оно и так в z80asm установлено.
Пока сделал так, добавил туда же:
"auto_complete_delay": 300
Теперь автокомплит появляется не сразу, а после 0,3сек размышления, а этого достаточно для набора асмовых команд.

---------- Post added at 14:09 ---------- Previous post was at 14:05 ----------

Но вот на счет ""default_encoding": "Cyrillic (Windows 1251)"," не уверен в спековых программах, там по старой традиции шрифты 2048 в 866 кодировке, не?

---------- Post added at 14:26 ---------- Previous post was at 14:09 ----------


Дмитрий, попробуй ветку dev-canc_completion, будет лучше или нет на практике... если будет - оставлю.
не понял где это искать...

---------- Post added at 15:03 ---------- Previous post was at 14:26 ----------

Еще какой-то прикол... в некоторых файлах ставит табуляцию =4, хотя в настройках юзера и з80асм прописано 8...

psb
31.08.2013, 16:59
Но вот на счет ""default_encoding": "Cyrillic (Windows 1251)"," не уверен в спековых программах, там по старой традиции шрифты 2048 в 866 кодировке, не?
тут я тоже хз... только практика покажет, у кого сколько каких исходников сейчас (в наш век кроссразработки).


не понял где это искать...
на гитхабе надо выбрать ветку branch: dev-canc_completion и скачать все заново. ну или взять из той ветки z80asm.tmPreferences и заменить у себя.


Еще какой-то прикол... в некоторых файлах ставит табуляцию =4, хотя в настройках юзера и з80асм прописано 8...
не видел такого... если только это не для файлов z80asm, ибо 8 только для них форсится.


esl, посмотри, пожалуйста в ветке dev-linux_build скрипты, если не сложно... спасибо.

Дмитрий
31.08.2013, 17:28
на гитхабе надо выбрать ветку branch: dev-canc_completion и скачать все заново. ну или взять из той ветки z80asm.tmPreferences и заменить у себя.
ок, попробую


не видел такого... если только это не для файлов z80asm, ибо 8 только для них форсится.
так в том-то и дело, что *.asm файл. Или там как-то иначе определяется? во всяком случае этот файл в папке, которую добавил в проект - все файлы нормально, а этот чего-то с 4мя пробелами в табуляции.
Даже в юзер-префах поставил 8 симв, но все равно этот файл с 4мя... хз.

elf/2
02.09.2013, 14:25
тут нужно писать парсер, как я понимаю, а синтаксис не такой простой бывает... может быть потом как-нить...
понятно, а если вот так на первое время сделать?


hlp = [
'Opcode Mnemonic T M M1',
'00 NOP 4t 1 1',
'01 n n LD BC,nn 10t 3 1',
'02 LD (BC),A 7t 2 1',
'03 INC BC 6t 1 1',
'04 INC B 4t 1 1',
'05 DEC B 4t 1 1',
'06 n LD B,n 7t 2 1',
'07 RLCA 4t 1 1',
]

self.window.show_quick_panel(hlp, None, sublime.MONOSPACE_FONT)


можно быстро по коду/мнемонике/тактам/регистрам нужное найти. я попробовал, вроде удобнее чем текстовый файл.

psb
02.09.2013, 16:53
а если вот так на первое время сделать?
идея интересная:) попробую как-нить... а есть мысли какие горячие клавиши можно заюзать? походу многое уже занято там...

elf/2
02.09.2013, 18:28
идея интересная попробую как-нить... а есть мысли какие горячие клавиши можно заюзать? походу многое уже занято там...
F1 - у меня не занята, и вроде вполне логично :)

psb
03.09.2013, 20:05
закинул пока фичу с хелпом по F1 в ветку dev-quick_help. спасибо!

elf/2
04.09.2013, 13:11
можно я чуть-чуть побурчу?

лучше бы f1 использовать только для наших файлов:


[
{
"keys": ["f1"], "command": "a80_quick_help", "context": [
{
"operand": "source.z80asm",
"operator": "equal",
"key": "selector"
}
]
}
]


я бы еще буковку t сразу после числа тактов вставил, можно будет быстро все 4х тактовые комманды найти.

это не очень по питонячьи


f=open(A80_DIR+'/'+THIS_PLUGIN_NAME+'.quickhelp','rt')
while 1:
s=f.readline()
if not s: break
self.help.append(s.strip())
f.close()


я бы как-нибудь так сделал


with open(A80_DIR+'/'+THIS_PLUGIN_NAME+'.quickhelp','rt') as help_file:
self.help = [line.strip() for line in help_file]

psb
04.09.2013, 15:26
лучше бы f1 использовать только для наших файлов:
добавил, спс.


я бы еще буковку t сразу после числа тактов вставил, можно будет быстро все 4х тактовые комманды найти.
сделал, находит все равно кучу хлама... как-то можно это побороть? сделать четкий поиск...


это не очень по питонячьи
как умею:) исправил, спс.

изменения в ветке dev-quick_help.

elf/2
04.09.2013, 18:51
сделал, находит все равно кучу хлама... как-то можно это побороть? сделать четкий поиск...
неа, будем продолжать есть кактус :) fuzzy search в sublime'е имеет не только достоинства

psb
10.09.2013, 19:54
замерджил dev-quick_help в master. теперь удобно искать опкоды и такты команд.
спасибо, elf/2!

newart
11.09.2013, 06:16
тут нужно писать парсер, как я понимаю, а синтаксис не такой простой бывает... может быть потом как-нить...
Для начала было неплохо сделать подсчет с учетом 1 оператор в строке.
Большинство ведь именно так и пишут.
Еще хорошо бы что бы автоматом в большой регистр все мненики преобразовывались после ввода.

Вообще автодополение больше бесит чем помогает. Ввводишь команду, в конце по привычке хочешь нажать ENTER что бы перети на след строку и продолжить, в место этого ENTER срабатывает как закрытие окна автозаполенения и его нужно жать еще раз.

---------- Post added at 06:16 ---------- Previous post was at 06:15 ----------

Почему то при автодополнении TAB=ENTER. Какой в этом тайный смысл?

Дмитрий
11.09.2013, 08:08
Еще хорошо бы что бы автоматом в большой регистр все мненики преобразовывались после ввода.
спорное мнение, мне в нижнем регистре более наглядно :)

---------- Post added at 07:08 ---------- Previous post was at 07:06 ----------


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

breeze
11.09.2013, 10:59
Еще хорошо бы что бы автоматом в большой регистр все мненики преобразовывались после ввода.

кнопочку «Caps Lock» религия нажать не позволяет? Не надо решать за всех. Я например пишу всё в нижнем регистре, и что?

psb
11.09.2013, 13:54
Для начала было неплохо сделать подсчет с учетом 1 оператор в строке.
запишу в todo, если не забуду. правда все еще не оч ясно, так ли это надо, когда есть F1.


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


Вообще автодополение больше бесит чем помогает.
есть чуть-чуть.. надо тюнинговать, а чаще пока что вломы... попробуй тоже паузу поставь для подсказки побольше... по кр мере меня пока что возмущало автодополнение для регистров, но это лечится. что кроме этого будет - хз...


Почему то при автодополнении TAB=ENTER. Какой в этом тайный смысл?
не понял как это. было, что без подсказок при нажатии таба делалось автодополнение - это отключено. а при подсказках что таб, что ентер - выбор варианта. а как должно быть? (и это вряд ли меняется).

elf/2
11.09.2013, 19:28
Вообще автодополение больше бесит чем помогает. Ввводишь команду, в конце по привычке хочешь нажать ENTER что бы перети на след строку и продолжить, в место этого ENTER срабатывает как закрытие окна автозаполенения и его нужно жать еще раз.
"auto_complete": false
в настройках плагина. не оно? по ctrl+space можно позвать список

psb
11.09.2013, 22:22
"auto_complete": false
добавлю я, наверное, эту настройку закомменченную в настройки самого плагина (чтобы в общих настройках не искать).

newart
12.09.2013, 11:58
Я например пишу всё в нижнем регистре, и что?
А разве не во всех спектрумовских ассемблерах они были с вклю капсом?
В шторме точно и в XAS'e вроде тоже остальные не помню.

Дмитрий
12.09.2013, 12:09
А разве не во всех спектрумовских ассемблерах они были с вклю капсом?
нет, в ZXASM там по желанию - хоть в вверхнем, хоть в нижнем.

psb
12.09.2013, 14:18
А разве не во всех спектрумовских ассемблерах они были с вклю капсом?
В шторме точно и в XAS'e вроде тоже остальные не помню.
на спектруме была привычка писать капсом, да (иногда просто не давали выбора). но сейчас мало тех, кто пишет исключительно на реале. мне редко попадаются старые исходники (тогда просто включил капс и дело с концом), чаше пишу новые без капса.

п.с. вот автодополнение на регистрах добивает... надо домутить.
п.п.с. обновил чуть-чуть файлик настроек плагина, теперь там можно раскомментировать выключение автодополнения или задать паузу перед автодополнением.

elf/2
12.09.2013, 16:32
жалкое подобие XAS'ного автоформата, парсер тупейший, автоформатируем по enter'у

пишем с начала строки, без таба и пробела. если первый кусок строки похож на название регистра, то считаем что это LD. если кусок похож на флаг и второго аргумента нет, то это ret. если второй аргумент есть - call

мнемоники, регистры и флаги переводим в верхний регистр.

стоит на это тратить время?



import re
from operator import methodcaller
unify = methodcaller('upper')

mnemonics = set('adc|add|and|bit|call|ccf|cp|cpl|cpd|cpdr|cpi| cpir|daa|dec|di|djnz|ei|ex|exx|halt|im|in|inc|ind| indr|inf|ini|inir|jp|jr|ld|ldd|lddr|ldi|ldir|neg|n op|exx|or|otdr|otir|out|outd|outi|pop|push|res|ret |reti|retn|rl|rla|rlc|rlca|rld|rr|rra|rrc|rrca|rrd |rst|sbc|scf|set|sla|sli|sll|sra|srl|sub|xor'.spli t('|'))
registers = set("a|b|c|d|e|h|l|i|r|xl|lx|xh|hx|ixl|ixh|yl|ly|yh|hy| iyl|iyh|af|bc|de|hl|sp|ix|iy|af'|(hl)|(de)|(bc)|(i x)|(iy)".split('|'))
flags = set('z|nz|c|nc|po|pe|p|m'.split('|'))

def format_args(args, extra):
r = []
if args:
r.append(' ')
if len(args) > 1:
r.append(','.join(args))
else:
r.append(args[0])

if extra:
r.append('\t')
r.append(extra)
return r

def parse_args(line, parts, split_base):
args = []
extra = None
for i, p in enumerate(parts[split_base:]):
if i > 1:
parts = re.split('\s+|,\s*', line, maxsplit=split_base + 2)
extra = parts[-1]
break
if p.startswith(';'):
parts = re.split('\s+|,\s*', line, maxsplit=split_base + i)
extra = parts[-1]
break
else:
if p.lower() in registers or p.lower() in flags:
args.append(unify(p))
else:
args.append(p)

return args, extra

class xasify(sublime_plugin.TextCommand):
def run(self, edit):
line = self.view.line(self.view.sel()[0])
l = self.view.substr(line)

if l.startswith((' ', '\t', ';')):
return
parts = re.split('\s+|,\s*', l)

tokens = []

if parts[0].lower() in mnemonics:
tokens.append('\t')
tokens.append(unify(parts[0]))
args, extra = parse_args(l, parts, 1)
elif len(parts) > 1 and parts[1].lower() in mnemonics:
tokens.append(parts[0])
tokens.append('\t')
tokens.append(unify(parts[1]))
args, extra = parse_args(l, parts, 2)
elif parts[0] in registers:
tokens.append('\t' + unify('LD'))
args, extra = parse_args(l, parts, 0)
elif parts[0] in flags:
args, extra = parse_args(l, parts, 0)
if len(args) == 1:
tokens.append('\t' + unify('RET'))
else:
tokens.append('\t' + unify('CALL'))

tokens.extend(format_args(args, extra))
new_line = ''.join(tokens)

self.view.replace(edit, line, new_line + '\n')




{
"keys": ["enter"], "command": "xasify",
"context": [
{
"operand": "source.z80asm",
"operator": "equal",
"key": "selector"
}
]
}

psb
12.09.2013, 18:01
стоит на это тратить время?
круто! была такая идея - сделать автодополнение, как в шторме:) но у меня руки не скоро дойдут... так что если есть желание - я только рад.

там сейчас тока ентером нельзя строки вставлять при этом...

elf/2
12.09.2013, 19:13
круто! была такая идея - сделать автодополнение, как в шторме
а где можно про штормовое автодополнение почитать? в смысле есть ли где-нибудь правила по которым оно работает?

там сейчас тока ентером нельзя строки вставлять при этом...
мой косяк :) как-то вот так надо написать


if l.startswith((' ', '\t', ';')) or line.empty():
self.view.insert(edit, self.view.sel()[0].begin(), '\n')
return

psb
12.09.2013, 21:21
а где можно про штормовое автодополнение почитать?
скорее всего нигде, только шторм загрузить и ставить эксперименты. но смысл там такой же, если написать a,b или a b (в любом месте строки), то он сделает ld a,b. и он убирает лишние пробелы. очень похоже на твое автодополнение.

Alex Rider
13.09.2013, 14:15
Поставил Sublime Text 3, положил содержимое скачанного архива в %UserProfile%\AppData\Roaming\Sublime Text 3\Packages\User\
Появился пункт меню "Z80ASM", в нем почти все менюайтемы задизейблены (сеттинги открывают путсые файлы). Code Completion в рамках проекта не показывает метки из других мдулей (только имена модулей). ЧЯДНТ?

psb
13.09.2013, 14:21
скорее всего надо было положить просто в Packages, без user.

Alex Rider
13.09.2013, 15:17
скорее всего надо было положить просто в Packages, без user.
Так еще хуже:
---------------------------
Sublime Text
---------------------------
Error loading syntax file "Packages/User/sublime-text-z80asm-master/z80asm/z80asm.tmLanguage": Unable to open Packages/User/sublime-text-z80asm-master/z80asm/z80asm.tmLanguage
---------------------------
OK
---------------------------

---------------------------
Sublime Text
---------------------------
Error loading colour scheme Packages/z80asm/z80asm.tmTheme: Unable to open Packages/z80asm/z80asm.tmTheme
---------------------------
OK
---------------------------

psb
13.09.2013, 15:54
Error loading syntax file "Packages/User/sublime-text-z80asm-master/z80asm/z80asm.tmLanguage"
а должно быть вот так: Packages/z80asm/z80asm.tmLanguage

breeze
13.09.2013, 16:09
а должно быть вот так: Packages/z80asm/z80asm.tmLanguage

Может он что с подпутями напутал? На всякий случай укажу полный путь:

c:\Users\%UserName%\AppData\Roaming\Sublime Text 2\Packages\z80asm\

Для третьего я так понимаю разница будет только в цифре?

c:\Users\%UserName%\AppData\Roaming\Sublime Text 3\Packages\z80asm\

psb
13.09.2013, 16:18
в плагине используется ${Packages}, т.е. путь до пэкэджей будет правильный, но вот папка z80asm должна лежать строго в Packages/, это описано в ридми.

newart
13.09.2013, 18:36
жалкое подобие XAS'ного автоформата, парсер тупейший, автоформатируем по enter'у
А какой отступ берется за базу?
На спектруме автоформат был актуале ввиду фиксированого размера меток.
А тут... лесенка же будет?

Alex Rider
13.09.2013, 20:18
а должно быть вот так: Packages/z80asm/z80asm.tmLanguage
Теперь оно так, но:
---------------------------
Sublime Text
---------------------------
Error loading syntax file "Packages/User/sublime-text-z80asm-master/z80asm/z80asm.tmLanguage": Unable to open Packages/User/sublime-text-z80asm-master/z80asm/z80asm.tmLanguage
---------------------------
OK
---------------------------

psb
13.09.2013, 20:33
Alex Rider, не надо ничего в User пихать. удали все это.

breeze
13.09.2013, 20:54
Error loading syntax file "Packages/User/sublime-text-z80asm-master/z80asm/z80asm.tmLanguage": Unable to open Packages/User/sublime-text-z80asm-master/z80asm/z80asm.tmLanguage


Alex Rider, не надо ничего в User пихать. удали все это.

О боги! до меня дошло! он вообще не ту папку, да и ещё не туда пихает!!!

:sleep:

Дмитрий
13.09.2013, 22:41
А какой отступ берется за базу?
На спектруме автоформат был актуале ввиду фиксированого размера меток.
А тут... лесенка же будет?
Можно сделать стандартно - табулятор на 8 симв, именно табулятор, а не 8 пробелов.
Если метка длиннее, то перенести оператор на новую строку

Alex Rider
14.09.2013, 00:16
О боги! до меня дошло! он вообще не ту папку, да и ещё не туда пихает!!!
В поседний раз правильно все положил. Sublime запомнил что-то внутри себя по поводу папки sublime-text-z80asm-master. Переустановка с чисткой папки c:\Users\%UserName%\AppData\Roaming\Sublime Text 3 помогла - теперь все отлично. Да, в первый раз я распаковал папку sublime-text-z80asm-master в папку User.

ZEK
14.09.2013, 01:13
Можно сделать стандартно - табулятор на 8 симв, именно табулятор, а не 8 пробелов.
это плохая идея, что станет с сырком если его открыть в другом редакторе? всегда табы надо на пробелы заменять

breeze
14.09.2013, 02:40
всегда табы надо на пробелы заменять

Я вам блин позаменяю! задолбали своими километровыми простынями из пробелов! Каждый как хочет так пусть себе и настраивает! Что за армейский тон? всё должно быть единообразно и безобразно? :mad:

ZEK
14.09.2013, 12:06
Они есть просят? А вот когда сырок колбасит после того как какой нить табоумелец поставил себе таб 8 символов, а то и хуже разные табы для первого в строе и остальных

Дмитрий
14.09.2013, 12:14
это плохая идея, что станет с сырком если его открыть в другом редакторе? всегда табы надо на пробелы заменять
не видел ни одного редактора, который бы не понимал табулыторы, даже на спектруме

---------- Post added at 11:14 ---------- Previous post was at 11:10 ----------


Они есть просят?
конечно просят... то ли один раз del нажать, то ли 8... потом после всяких редакторов-пробелоумельцев правишь исходник - задалбываешься... особенно это касается всяких там MS VS, которая то делает автовыравнивание, то нет. начинаешь подстраивать, а там и не по ширине табулыции и целая куча пробелов, так и хочется вспомнить мать БГ.

ZEK
14.09.2013, 12:29
не видел ни одного редактора, который бы не понимал табулыторы
а какова его стандартная длинна?

конечно просят... то ли один раз del нажать, то ли 8
Учим комбинации Ctrl+стрелка влево/вправо, Ctrl+Shift+стрелка влево/вправо :) а то пользуетесь клавиатурой как моя бабушка

---------- Post added at 11:29 ---------- Previous post was at 11:20 ----------


особенно это касается всяких там MS VS, которая то делает автовыравнивание, то нет. начинаешь подстраивать, а там и не по ширине табулыции и целая куча пробелов
И если идентификатор 12 символов или больше длинной? Мышку юзаем или 12 раз стрелку клоцаем?

Дмитрий
14.09.2013, 12:31
Учим комбинации Ctrl+стрелка влево/вправо, Ctrl+Shift+стрелка влево/вправо а то пользуетесь клавиатурой как моя бабушка
если бы эти комбинации всеми тектовыми редакторами одинаково отрабатывались, а то одни так, другие сяк...

---------- Post added at 11:31 ---------- Previous post was at 11:30 ----------


И если идентификатор 12 символов или больше длинной? Мышку юзаем или 12 раз стрелку клоцаем?
причем тут идентификатор и автовыравнивание?

ZEK
14.09.2013, 12:46
причем тут идентификатор и автовыравнивание?
при том что есть комбинации кнопомк что бы скакать по куче прелов и словам, и всеравно сколько там пробелов 1 или 50

а то одни так, другие сяк...
а в каких редакторах в которых можно код править они не поддерживаются? Даже notepad из виндокорбки умеет эти комбинации, правда чуть по кораличному

Дмитрий
14.09.2013, 12:58
не поддерживаются?
Дим, я не говорил, что они не поддерживаются, читай внимательнее!!!
Я писал, что не везде они одинаково работают. То перенесет на начало слова, то на конец, не всегда выходит то, что ожидаешь, из-за этого падает производительность.

ZEK
14.09.2013, 13:04
Когда сырок весь поведен от того что табы автора отличаются от тех что в редакторе вьювере это лечится гораздо сложнее, чем взять редактор который с табами работает нормально, я вот код Verilog пишу и дебажу в Active-HDL потом иногда в квартусе правлю смотрю, и очень бесит когда табы не совпадают

Дмитрий
14.09.2013, 13:22
Когда сырок весь поведен от того что табы автора отличаются от
когда один редактор по табу вставляет 8 пробелов, а кто-то когда-то написал исходник с 12 пробелами, это тоже бесит и попробуй потом "полечить"... но это не суть, мне в обще пофиг, как сделаете, так и будет. Тебе ж тоже было пофиг? ты ж не хотел на тыренном работать?!

---------- Post added at 12:19 ---------- Previous post was at 12:17 ----------


что табы автора отличаются от тех что в редакторе вьювере это лечится гораздо сложнее
руки отрывать авторам таких редакторов/вьюверов надо!


а какова его стандартная длинна?

Традиционно эти позиции располагаются каждые 8 знакомест
Источник - http://ru.wikipedia.org/wiki/Табуляция

---------- Post added at 12:22 ---------- Previous post was at 12:19 ----------


я вот код Verilog
И да, мы сейчас говорим об АСМе, а не верилоге, си, паскали и пр...

ZEK
14.09.2013, 14:50
редакторов/вьюверов надо!
нету стандарта на таб, поэтому не ясно кому руки оторвать

Источник - http://ru.wikipedia.org/wiki/Табуляция
и сколько редакторов видел где таб 8 символов? Самое частое это 4 символа

И да, мы сейчас говорим об АСМе
Т.е. надо продолжать метки ставить по убогому: PROC01, LAB65, а не по человечески? EnterPoin, SetCursorPosition итд

IanPo
14.09.2013, 15:10
TAB = 4 символа, 8 - перебор

Дмитрий
14.09.2013, 15:12
Самое частое это 4 символа
Не встречал ни разу ;)

Т.е. надо продолжать метки ставить по убогому: PROC01, LAB65, а не по человечески? EnterPoin, SetCursorPosition итд
Почему вдруг? Ставь метку "SetCursorPosition", а сами команды будут уже с новой строки...
а ты что предлагаешь? ты так и не озвучил величину отступа. или ты предлагаешь, написав "loop" сделав отступ в стандартные 8 символов, а потом, когда введешь "SetCursorPosition" материться и биться об стену, потому что лестница начнется в тексте?

Дмитрий
14.09.2013, 15:47
Ну и чем плох стиль-то? и длинные метки повсеместно юзаются и ничего лесенкой не колбасит!

psb
14.09.2013, 17:42
офигеть, вы че спорите? этот редактор умеет любые табы и одной левой конвертит их в пробелы и обратно. вы придумали проблему.

breeze
14.09.2013, 20:32
офигеть, вы че спорите?

Никто не спорит, просто не надо навязывать другим своё мнение, и требовать что бы по умолчанию сделали именно так, а не иначе, ибо то есть истинна, а все остальные есть невежи и давно должны посвятиться!

ZEK
14.09.2013, 21:02
их в пробелы и обратно
табы в пробелы это туго, в файле нет информации о длине таба, а вот пробелы в табы как бы можно

psb
14.09.2013, 21:56
табы в пробелы это туго, в файле нет информации о длине таба
и не надо, посчитал один раз, выставил в настройках и нажал "перевести в табы". проблема решена. 4 клика всего, 5 секунд времени.

elf/2
16.09.2013, 11:52
А какой отступ берется за базу?
На спектруме автоформат был актуале ввиду фиксированого размера меток.
А тут... лесенка же будет?
база - 1 tab

есть только один способ борьбы с лесенкой. если метка длиннее 6 символов, то комманда переноситься на новую строку.

Hacker VBI
18.09.2013, 18:14
Мужики, спасибо за редактор.
полностью перешёл на него. новый проект пишу уже полностью в нём.

Дмитрий
19.09.2013, 23:06
А можно ли свою хот-кею заюзать? мне вот в моем проекте периодически надо откомпилировать прогу для разных 4х платформ (ZX, ATM, Profi, Sprinter), у меня это выполняется запуском одного из 4х батников... Можно ли их повешать на какие-нить горячие кнопки?

---------- Post added at 22:06 ---------- Previous post was at 21:55 ----------

Еще идейка - можно ли по Shift-F1, допустим, вызвать окно подсказки по подпрограмме, на имени которой стоит курсор? Саму процедуру искать среди файлов проекта и выводить коментарии, которые находятся непосредственно перед ней... Просто чтоб самому по библиотеке не шариться и не искать какие регистры за что отвечают...

psb
19.09.2013, 23:58
А можно ли свою хот-кею заюзать?
наверняка. в файле Default.sublime-keymap надо добавить типа такого:


{
"keys": ["f1"], "command": "build", "args": {"variant": "Run"},
"context": [
{
"operand": "source.z80asm",
"operator": "equal",
"key": "selector"
}
]
}

а в билд-системе (Z80Asm>Settings>Build settings...) добавить свой вариант (Run уже существует, запускает эмуль).

подсказку, думаю, в принципе можно сделать, но надо думать и пробовать...

psb
20.09.2013, 20:09
А вот я только никак не могу в 3ей версии понять как фолдинг работает.
У меня раньше //[ и //] было а теперь не пашет. Где это настраивается?
не совсем понял... фолдинг - сворачивание кусков кода? на сколько я в курсе (по кр. мере во 2й версии), он работает только по отступам, поэтому про //[ и //] - не знаю. сейчас от метки до метки сворачивает искаропки.

так-то в описании раскраски можно задавать откуда докуда фолдить, но оно не поддерживается пока.


А еще не понял почему Snippets используют пробелы а не табуляцию.
а вот хз:) надо переделывать?

Eltaron
20.09.2013, 23:45
А Sublime Text, получается, совсем не умеет вертикальные блоки выделять (Alt+Shift)? Печалька. Так-то удобный редактор, в чём-то уделывает любимый Geany.

psb
21.09.2013, 01:45
вертикальные блоки средней кнопкой мыши. заодно и многокурсорность:)
или ctrl+alt+up/down.

SoftLight
21.09.2013, 11:46
не совсем понял... фолдинг - сворачивание кусков кода? на сколько я в курсе (по кр. мере во 2й версии), он работает только по отступам, поэтому про //[ и //] - не знаю. сейчас от метки до метки сворачивает искаропки.

так-то в описании раскраски можно задавать откуда докуда фолдить, но оно не поддерживается пока.


а вот хз:) надо переделывать?

Да, обратил внимание, что если метка на отдельной строке то редактор сам делает сворачивание по коду до следующей метки, но как быть с локальными метками. Ну или выход - локальные метки делать на одной строке с кодом. Вот пример:

http://i59.fastpic.ru/thumb/2013/0921/9d/1994b119dca7fcb12188137d3652af9d.jpeg (http://fastpic.ru/view/59/2013/0921/1994b119dca7fcb12188137d3652af9d.png.html)

Локальная метка l1 сворачиывается до l2 хотя никакого смысла в этом нет, а глобальная label1 наоборот вообще не сворачивает код. Хотелось бы как-то самому задавать области свертки кода при помощи каких-то комбинаций типа //* или //[, не вступающих в конфликт с sjasm.

Ну и табуляция - тут конечно дело вкуса, но лично я привык разделять колонки табуляцией и когда вставляю snippets сразу видно другое форматирование. Ну это как раз я могу и под себя подогнать.

psb
21.09.2013, 17:17
а глобальная label1 наоборот вообще не сворачивает код.
дело не в глобальности, это багофича. если между label1 и .l1 сделать побольше строк с командами - начнет сворачиваться.

просто не работает сворачивалка нормально вообще.

про табы подумаю...

elf/2
23.09.2013, 19:49
если добавить вот такое в z80asm.tmLanguage


<dict>
<key>begin</key>
<string>(?=//\[).*</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>comment.line.asm</string>
</dict>
</dict>
<key>end</key>
<string>//]</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>comment.line.asm</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>$self</string>
</dict>
</array>
<key>comment</key>
<string>Custom fold block</string>
<key>contentName</key>
<string>custom.fold.block.asm</string>
</dict>


то блоки между //[ и //] будут "помечены" как custom.fold.block.asm регионы.

регионы можно фолдить используя, что-то типа view.fold(view.find_by_selector('custom.fold.block .asm'))

к сожалению пока не знаю как это подружить с фолдингом искаропки :(

newart
28.09.2013, 13:04
Два вопроса:

1. Что это за мутированые команды в хелпе, вроде LD A,RES 5,(IX+d)* 23t
2. Можно ли сделать второй вариант таблички где команды были бы сгрупированы по типам, как в книге "Как написать игру"?

psb
28.09.2013, 13:28
1. Что это за мутированые команды в хелпе, вроде LD A,RES 5,(IX+d)* 23t
обычная такая недок. команда... сбрасывает бит в памяти и загружает результат в А, емнип.


2. Можно ли сделать второй вариант таблички где команды были бы сгрупированы по типам, как в книге "Как написать игру"?
можно сделать текстовый файл и положить в папку helps, он появится в меню Z80Asm > Help.

Hacker VBI
28.09.2013, 14:40
psb, да нет такой команды (http://clrhome.org/table/)... код покажи.
dd cb ** aa: RES 5,(IX+*) - 23t

psb
28.09.2013, 19:57
psb, да нет такой команды... код покажи.
DD CB xx AA - res 5,(ix+*),d или по-(не)нашему LD D,RES 5,(IX+xx).

Hacker VBI
29.09.2013, 10:20
протупил.

не, по нашему так:
res 5,(ix+xx)
ld d,(ix+xx)

;)

newart
30.09.2013, 23:18
Загрузил дизасеммблер игры, многие строки помечены красным, что это значит?

https://dl.dropboxusercontent.com/u/6439155/batman.png

psb
01.10.2013, 00:29
многие строки помечены красным, что это значит?
формат строки не верен. метка должна иметь определенный формат (это или число или что-то начинающееся с буквы, точки, подчерк. и @, но это не может быть число с буквами).

лучше в иде отдизасмить и загрузить нормальный текст:)

Hacker Grey
05.12.2013, 23:41
только по ссылке нету дистрибутива на скачивание.
Может кто выложит готовый архив со средой?

Hacker Grey
06.12.2013, 15:03
Подскажите
Sublime Text 2 полноценно работает без регистрации ?
Не могу заставить работать Build - появлется внизу белое окно для сообщений и ничего не происходит.
При этом sjasmz80 сам по себе компилет (примеры).

Может из за Триала не работает билд ?

psb
06.12.2013, 15:14
полноценно работает. есть один известный косяк: имя пользователя (в винде) не должно быть русским. в остальном все работает сразу искаропки.

попробуй вызвать консоль (ctrl+~) и посмотри, что там пишет при билде.

Hacker Grey
06.12.2013, 15:28
полноценно работает. есть один известный косяк: имя пользователя (в винде) не должно быть русским. в остальном все работает сразу искаропки.

попробуй вызвать консоль (ctrl+~) и посмотри, что там пишет при билде.

Имя русское. Подумаю как безболезненно исправить



Running C:\Users\Пользователь\AppData\Roaming\ Sublime Text 2\Packages/z80asm/build.bat proba1.asm
Traceback (most recent call last):
File ".\sublime_plugin.py", line 337, in run_
File ".\exec.py", line 154, in run
File ".\exec.py", line 45, in __init__
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcf in position 9: ordinal not in range(128)
('Z80 Asm:', 'Build started')

psb
06.12.2013, 15:33
ага, тут и падает. вылечить можно использованием portable версии, где не будет русских путей.

Hacker Grey
06.12.2013, 18:16
Перименовал пользователя в User, перименовал папку в User, в реестре тоже везде поменял.
Что изменилось

Running C:\Users\User\AppData\Roaming\Sublime Text 2\Packages/z80asm/build.bat proba1.a80
Traceback (most recent call last):
File ".\sublime_plugin.py", line 337, in run_
File ".\exec.py", line 154, in run
File ".\exec.py", line 45, in __init__
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcf in position 0: ordinal not in range(128)
('Z80 Asm:', 'Build started')
Было in position 9 - стало in position 0

---------- Post added at 18:16 ---------- Previous post was at 16:43 ----------

Пока решил проблему запуском от имени Admin - (который изначально был латинскими буквами)
Но непонятно, что ему сейчас не нравится

psb
06.12.2013, 18:24
даже не знаю, что посоветовать... это баг саблима...

elf/2
06.12.2013, 18:36
Попробуй THIS_PLUGIN_DEBUG = False в z80asm.py поставить

похоже или print или sublime.status_message(s) не может русскую букву напечатать

AER
08.01.2014, 07:16
Сублайн 2 установил, но при запуске пишет, хрен тебе, я старая версия.. Вот это и типа триал.

Дмитрий
08.01.2014, 09:41
Сублайн 2 установил
Ставь 3-ий

AER
08.01.2014, 12:49
Поставил третий, тоже пишет, поставте более новый билд. дали бы чего рабочее, может кряк надо? И куда кидать плугины? Можно ли портабля версию использовать? Хочу уже кодить!

---------- Post added at 12:49 ---------- Previous post was at 12:46 ----------

Чет мне кажется версия будет расти редактора, и плагины не будут поспевать.

dosikus
08.01.2014, 12:56
Сублайн 2 установил, но при запуске пишет, хрен тебе, я старая версия.. Вот это и типа триал.

Блин , напугал...
Все работает , это что то сугубо твое ...

AER
08.01.2014, 12:58
А то так настроишь всё а он бац.

dosikus
08.01.2014, 15:47
AER, держи http://rghost.ru/51485666
Только у мну win7 64 ...

AER
08.01.2014, 16:51
Там 64х ..? Жаль.

---------- Post added at 16:51 ---------- Previous post was at 15:58 ----------

Уфф скачал рабочую. Напомните куда кинуть папку плагинов

Hacker VBI
08.01.2014, 17:10
Preference глянь
C:\Users\***\AppData\Roaming\Sublime Text 2\Packages

AER
08.01.2014, 18:30
Ну а дальше чего. Как эмулятор запустить с кодом — image file not found! Где эмуль прописал, а снап лежит в документы. Может с русскими не ? Компилит нормально.

Alex Rider
08.01.2014, 18:45
Может с русскими не ?
Да, было где-то упоминание, что с русским беда у ST 2/3. Если надо, могу поделиться своими бат-никами и конфигами для компиляции и запуска.

Hacker VBI
08.01.2014, 19:09
AER,
z80asm/ settings/ emul script
set EMUL="E:\speccy\unrealfix_zxaaa\unrealfix\unreal.exe" - свой путь укажи

build and run!

AER
08.01.2014, 19:41
Так то указал где путь эмуля, но буилд анд рун незапускает его. Кстати ещё пишет не найден файл примерно — c:/documents формата .out , я искал изменить путь на русский но ненашел. компиляция работает, файл в сна из мои документы запускается эмулем вручную, работает.

---------- Post added at 19:38 ---------- Previous post was at 19:35 ----------

Файл .a80 и sna появляются в мои документах .

---------- Post added at 19:41 ---------- Previous post was at 19:38 ----------

Путь к эмулю я прописывал в батниках.

Alex Rider
08.01.2014, 23:34
Да, было где-то упоминание, что с русским беда у ST 2/3.
Конкретно - с русскими путями к профилю пользователя (там, где у тебя пакет сам лежит). Вроде как, не лечится :( Типа, он в консоль не может вывести неанглийские буквы пути, и на этом все падает.

psb
09.01.2014, 00:04
русские пути портабле-версией лечатся. файл .out - забейте на него (надо удалить его удаление). еще че может быть - возможно, надо сохранить проект (саблимовский) в папку с исходниками (а может и не обязательно, я уже забыл).

AER
09.01.2014, 07:10
Мое имя юзера — AER, как ещё же :)

dosikus
09.01.2014, 08:19
Мое имя юзера — AER, как ещё же :)

ну кроме юзер нэйм есть еще один путь с кириллицей + пробел .
Некоторые до сих пор на Рабочий стол валят что не поподя . :biggrin:

Hacker VBI
09.01.2014, 13:25
Шорткаты (http://habrahabr.ru/post/208514/)

AER
11.01.2014, 06:35
Короче,
Бросил я все это. Ну нафик.
Хотя и настроил на запуск эмуля.
Тут давай код неработать , то это то, то.
Вроде пзу не инициализируется? Прерывания какой режим? Короче, нервов не хватило.
И снес весь проект с картинкой и бипером.
Фух.

Дмитрий
11.01.2014, 09:25
Тут давай код неработать , то это то, то.
Вроде пзу не инициализируется? Прерывания какой режим?
А причем тут редактор-то? Имхо проблема в прокладке...

AER
11.01.2014, 10:58
Для меня эта была некая среда разработки игр и программ для зеикс спектром в целом.
Тасм самое моё

psb
11.01.2014, 16:28
Тут давай код неработать , то это то, то.
предполагается, что вообще всё это начинает работать искаропки. ну а если уж кто не разобрался... тока тасм или аласм. навсегда.

AER
12.01.2014, 03:03
Когда подрасту,
Может быть, когда нибудь,
Ещё пройдусь по данному способу коддинга.
Ну а пока.. Пока ..

Alex Rider
13.01.2014, 16:14
Вроде пзу не инициализируется? Прерывания какой режим? Короче, нервов не хватило.
Потому что делаешь по настройкам для ленивых. sna - это не для разработки демы целиком, это эффект отладить или процедуру одну. Сделал бы сохранение в образ диска, все бы у тебя инициализировалось как на реале.

Hacker VBI
13.01.2014, 16:37
при сна: пзу инициализируется. Прерывания им1
всё как обычно. что за проблемы?

device zxspectrum128
org #8000
start:
di
ld sp,#7fff
...тут впирёт херачить коды...

savesna "td.sna",start

Дмитрий
13.01.2014, 17:21
действительно - sna, как сказано выше, это так - чисто "эффект отладить". Для серьезных программ, особенно работающих с тырдосом оно не годится, т.к. как сказали - то "ПЗУ не инициализировано", то "руки мешают", то "ноги ...". Зато кросс-компиль позволяет сделать, как любит alone - однокнопочный генератор готовой программы, причем уже в TRD, со всеми нужными файлами помощи, плагинами, и пр-пр-пр, зазиплено и можно даже - отправлено в эмуль или в народ... И даже в четырех разных исполнениях под всякие платформы, как мой fdisk (хех, когда же руки до него доберутся?... ) :) Но не все это могут "поднять", потому до сих пор сидят на тасмах и генсах :)

psb
18.01.2014, 00:50
в ром сбрасывается потому, что сжасм не до конца инициализирует сист. переменные, а точнее потоки. нужны норм. сист. переменные для печати.

можно в эмуляторе, находясь в 48к бейсике, сохранить память #5c00-#5e00 и заинкбинить этот блок в асм для снапа. либо запускать код не через снап, а через образ. либо пнуть кого-нить, чтобы пофиксил сжасм.

dosikus
18.01.2014, 00:53
в ром сбрасывается потому, что сжасм не до конца инициализирует сист. переменные, а точнее потоки. нужны норм. сист. переменные для печати.

можно в эмуляторе, находясь в 48к бейсике, сохранить память #5c00-#5e00 и заинкбинить этот блок в асм для снапа. либо запускать код не через снап, а через образ. либо пнуть кого-нить, чтобы пофиксил сжасм.


Спасибо.
Сейчас прописал
device zxspectrum48
сбрасывать перестало . Почему и удалил пост .:biggrin:

alx
06.02.2014, 14:41
Для всех фанатов Sublime Text 2/3 радостная новость: вышел плагин для асма Z80! Смотреть и качать здесь: https://github.com/psbhlw/sublime-text-z80asm
Вы щас, наверное, будете ржать, но как мне скачать это с вашего гитхаба целиком? )))

breeze
06.02.2014, 14:44
Вы щас, наверное, будете ржать, но как мне скачать это с вашего гитхаба целиком? )))

Да уж куда ржать-то, если ты не видишь сбоку кнопку «Download ZIP (https://github.com/psbhlw/sublime-text-z80asm/archive/master.zip)»

alx
06.02.2014, 14:54
Это не я не вижу, это сайт сделан так.

Hacker VBI
08.06.2014, 10:56
Господа, а как подключить другое расширение (мне нужен асам-овский .az8 ) для подсветки
что-то не нахожу)

alone
08.06.2014, 19:18
https://github.com/psbhlw/sublime-text-z80asm/blob/master/z80asm/z80asm.tmLanguage

IanPo
08.06.2017, 18:37
Использую Sublime Text 3 (сборка 3126).
Установил плагин z80asm (качал с GitHub), настроил по инструкции.
При компиляции проги (Build) в окне вообще нет вывода компилятора (путь указан правильный),
но запускается эмулятор (Unreal), его вывод появляется в окне редактора.
Похоже, что компилятор не запускается. Что я делаю не так?
В проге есть инструкция EMPTYTRD; если удалить trd-образ, то выводится ошибка что-то типа Image file not found!

Внес исправления в z80asm.py - заработало. Вопрос закрыт

Serdjuk
05.08.2019, 18:06
я к линуху так и не прицепил с 2-х попыток.... там то пермиссио дэниед то но суч файл ор директори... :((((

Oreanor
29.07.2020, 22:46
Подскажите, плз, те, кто это всё заводил, как правильно использовать?
Сделал всё по инструкции:
- скопировал папку z80asm в Packages
- прописал в Settings -> Build script путь к sjasmplus
- сделал новый файл New -> Code, что-то там для примера написал, сохранил как .asm

https://i.imgur.com/si0qEGI.png

- Вызываю Build - такое сообщение:
https://i.imgur.com/UvnWSNY.png

На .out, я так понимаю, можно не обращать внимания, но вот в папке, где лежал этот файл, ничего не генерится. Или как это должно работать, куда оно что пишет?

Black Cat / Era CG
29.07.2020, 22:52
А у вас savesna, как и на скрине, закомментирован?

Oreanor
29.07.2020, 23:14
да, закомментирован.
Я вообще пока не особо разобрался какая здесь идеология сборки программ, в какой формат что надо сохранять.
В моем представлении должен получиться какой-то образ, например, trd, с кодовым файликом внутри, к которому я руками допишу загрузчик на бейсике, или как-то так.
Если нетрудно, ткните, где про это всё почитать, или так, в двух словах. На самом спектруме писал когда-то только бейсик, а ассемблерные процедурки набивал/сохранял сразу в машинных кодах.
А тут под виндой что-то сложна :)

намек, впрочем, понял, раскомментировал - стал генериться .sna
Правда, эмулиться теперь не хочет, No image file found пишет

zebest
29.07.2020, 23:21
Если нетрудно, ткните, где про это всё почитать, или так, в двух словах.
ну это ужо к Sublime Text 2 (https://zx-pk.ru/threads/21731-z80-asm-plugin-for-sublime-text-2/page4.html) вряд ли относиЦЦа, это в другую тему.
А если в двух словах - то можно и в SNA сохранять, работать должно в эмуулях, и в TAP сразу сохранять, ну и в кодовый блок, потом к немуу лоадер добавлять, или сразу, или потом, ручками.
Впрочем вот 3 строчки кода, для примера, с примерами записи


DEVICE ZXSPECTRUM128

.org 6000h


Start:
xor a
out (0feh),a
jp $


End:
savebin "my_test.bin",Start, End - Start
savetap "my_test.tap",Start
savesna "my_test.sna",Start

Oreanor
29.07.2020, 23:33
ага, savetap в tap сохраняет, нашел. И даже сразу с загрузчиком.
А чьи это все директивы, какую тему почитать? Sjasmplus?
https://z00m128.github.io/sjasmplus/documentation.html

zebest
29.07.2020, 23:34
Темы про SJAsm и читать. Можно и этюды еще, там примеры бывают


https://z00m128.github.io/sjasmplus/documentation.html
ну да, это крайняя версия.
А читать - тут
https://zx-pk.ru/forums/14-programmirovanie.html
Парочка тем по ужасм-у, и про этюды.

Oreanor
29.07.2020, 23:38
Большое спасибо, буду разбираться.

AlexBel
19.03.2022, 14:20
Всем привет.

Установил Sublime Text 3. Всё по-дефолту. В папку c:\Program Files\Sublime Text 3\Packages\ скопировал папку z80asm (склонировал с https://github.com/psbhlw/sublime-text-z80asm.git). Запускаю редактор - никаких изменений. Открываю в нём файл 3color.asm (из примеров) - никакой раскраски. Все файлы с расширением .sublime-package, по содержимому - ZIP. Папку z80asm упаковал зипом и переименовал в z80asm.sublime-package. После этого в редакторе появился ещё один пункт в меню, но при открытии файла происходит ругань:
https://i.ibb.co/PFRH4nF/st.jpg (https://ibb.co/7jHmV5j)
Содержимое файла по-прежнему не раскрашивается. В какую сторону копать? Вроде бы, по инструкции сделал, но не заработало.
Если кто-нибудь пришлёт уже настроенный редактор (или папку с настройками), буду очень благодарен!