Это понятно, что вывод с консоли винды :)
Зачем оно в консоли редактора? :)
Вид для печати
Редактор с SjASM ассемблером через консоль общается :)Цитата:
Зачем оно в консоли редактора?
Можно конечно эту инфу стартовую затереть :)
У Emeditor задействован перехват вывода на консоль без всяких там мелкософт.
Ну там ребята обтачивали все.. а я за несколько вечеров накидал как смог :)Цитата:
У Emeditor задействован перехват вывода на консоль без всяких там мелкософт.
Дело поправимое. :)
понеслись ворчуны. этак вы всю инициативу загубите.
Все заметки поправил. Можно Скачать тут :)
Еще в планах есть желание чуть попозже сделать выравнивание новой строки по предыдущей по нажатию на Enter :) Чуть позже сделаю.
:v2_cheer:Цитата:
понеслись ворчуны. этак вы всю инициативу загубите.
-Добавил открытие файлов путем их перетаскивания на окно редактора.
-Добавил автоматическое выравнивание по началу предыдущей строки.
-Добавил Recent Files
+ еще немного доработок..
Скачать последнюю версию.
stepmotor, Очень даже неплохо. Цвето и шрифто-выделение понравилось.
Из хотелок :
1 - не особо актуальная - поддержка кодировки IBM866
2 - хотелось бы файл проекта с левой панелью типо как в кримсон едиторе, иначе crimson всёже удобнее. Правда в нём есть бяка - файл проекта использует абсолютные пути к файлам, скопировал папку на другой комп и надо все пути править ))
3 - это если 2-е когда-нибудь будет, то хотелось бы для проекта определение команд сборки/компиляции (например прописать запуск конкректного батника для конкретного проекта)
- - - Добавлено - - -
Кстати а в самом SjASMe кто-нибудь ещё копается ?
Вопрос - как в sjasmplus резульатат компиляции сохранить в tap с автозапуском?
SAVETAP есть, но не совсем с параметрами понятно...
в examples есть пример..
TapLib называется.
в версии SjASMPlus 1.10.3
Ну что ж.. 14 лет назад я зацепился за сабжевый компилятор, подумал "о, крутота какая, столько наворотов, макросы, макрооператоры, сохранялки всякие". Но потом сильно удивился не сумев в нём откомпилировать ни один свой код. Написал в этом же самом треде, пожаловался на то, что сабж не умеет в Forward reference. Вот такой простейший кусок не компилится:
length equ end-start
org 8000h
start
ld bc,length
ret
end
Сие преспокойно компилилось в TASM, в z80asm, и в свежем rasm тоже компилится. Почему сабж до сих пор не умеет такого простого действия, как переменные (equ) с отсылкой на метки ниже? Ведь в конце уже первого прохода все смещения уже известны, а тут их аж 3... И сабж остаётся более ущербным в этом плане, чем древний спектрумовский tasm, которым я пользовался 25 лет назад.
мне не мешает, хотя и выскакивает
Вообще не мешает, если бы остальные проблемы сижасма так же легко отлавливались и обходились.Цитата:
Forward reference
Нашел очередной прикол, sj.add_word работает криво, в нюансах разбираться не стал, обойти не сложно, но пару седых волос прибавил.
Согласен что отсутствие преописания в большинстве случаев без напряга обходится перетасовкой кода (что собственно и приходится делать), но в ряде случаев приходится ставить костыли, возвращать orgи на предыдущие позиции, в общем маразм, не соответствующий высокому званию отличного писишного ассемблера для z80 ))
По поводу остальных проблем. Думал как бы сделать локализацию программы, чтоб в случае чего по всему коду текст не выковыривать, вроде без проблем, создаёшь файлы с соответствующими DEFINEами текстовых строк, а в код подставляешь idшки. Грузи инклюд с нужной локализацией и в путь. А на практике получилась туфта )) Пока сообразил что в дифайнах перекодировка из cp1251 в cp866 работает неправильно... )) В конце концов перешёл на нормально работающие неуклюжие макросы ))
А кто-нибудь ещё занимается поддержкой SjASMPlus? Хочется новую фичу! А именно, чтобы по какому-нибудь ключу он компилировал код, написанный для процессора Intel 8080 (он это и сейчас прекрасно делает), но чтобы в процессе компиляции он бы ругался в консоль на специфичные для Z80 команды. А то иной раз, например, вместо JP LABEL напишешь JR LABEL, а потом не можешь понять почему ничего не работает, хотя визуально всё отлично и скомпилировалось без ошибок. А проблема всего лишь в одной букве, которую сразу и не заметишь.
удобнее Telemark Tasm с таблицей i8080. zasm - это лишь мечты.
CityAceE, чтоб в него новые фичи добавлять, неплохо бы сначала его существующий код привести к чему-то более менее удобоваримому. (там адок) Чем я время от времени по мере возможностей и занимаюсь. (см. репо: https://github.com/sjasmplus/sjasmplus )
Но данную конкретную фичу по идее реализовать несложно в любом случае. Постараюсь найти время в ближайшие дни и сделать.
mastermind, а ты в нем серьезно ковырятся будешь или так слегка?
там есть пара моментов просто.
jerri, На данный момент пока приоритет - "приведение в порядок" того что есть, далее видно будет. В любом случае, все "моменты" стоит записать в issues на гитхаб https://github.com/sjasmplus/sjasmplus/issues или хотя бы здесь в теме, чтобы не потерялись.
mastermind, спасибо! Буду ждать и надеяться :)
Проверил.
При "device zxspectrum48" - работает. (тестировал на примере отсюда: http://zxpress.ru/book_articles.php?id=1150 )
При "device zxspectrum128" - да, нужно поправить.
- - - Добавлено - - -
Самое интересное что он при этом генерирует правильный код:
На последнем проходе нет ошибки! (да, кривизна)Код:SjASMPlus Z80 Cross-Assembler v.20170908+dev
forw.asm(1): error: Forward reference
Pass 1 complete (1 errors)
Pass 2 complete (1 errors)
Pass 3 complete
Errors: 1, warnings: 0, compiled: 7 lines
Результат:
Эта проблема проявляется только при ссылке с одного EQU на другой. В остальных случаях (ссылка из операнда z80-директивы на EQU) ссылки вперед работают без ошибок.Код:01 04 00 C9
кстати, по 128. у .SNA по $C000 подключена не пойми какая страница - это норма или такой замудреный формат?
В этом плане, если не ошибаюсь, все как надо: по C000 подключена та страница которая была последней включена директивой PAGE (или дефолтная - 7) + соответственно выставляется "состояние порта 7FFD" в заголовке SNA, см. http://speccy.info/SNA
а page 0 в начале исподника не влияет, похоже.
Это в принципе готово, код на github. В ближайшее время немного потестирую и сделаю релиз.
О! Реквест. Есть такой ключик:и такая директива:Код:--exp=<filename> Save exports to <filename> (see EXPORT pseudo-op)
А как бы сделать так, чтобы экспорт работал не в один файл, а в разные. Ну например, убрать его имя из ключей, и добавить первым параметров в директиву.Код:EXPORT label
The named label will be written to the export-file, in the form 'label: EQU value'. This way the export-file can be included in other sources.
Сейчас так и есть: если не указывать --exp=... совсем, то экспорты пишутся в файл с тем же именем что и текущий исходник, но с расширением .exp. Так по крайней мере задумано, надо проверить как работает на практике.
- - - Добавлено - - -
--target=i8080
Подумаю над этим, как это лучше сделать. Встречный вопрос потенциальным пользователям этой фичи (i8080):
В каком формате предполагается сохранять результат?
Например, есть "DEVICE ZXSPECTRUM48" (+ в моей версии синоним "PLAIN") - режим "эмуляции памяти", а есть "DEVICE NONE" (по умолчанию) - тупо пишет весь код подряд в файл.
При наличии первой директивы работает сохранение в sna, tap и т.п. Иначе только в виде raw/out. (что вообще довольно странная фича/идея на мой взгляд)
В режиме i8080 надо "эмулировать память"?
на i8080 есть куча машин - тот же вектор и прочее
там свои форматы хранение и для них я снапшотов не видел
но для специалиста например я делаю так
в принципе можно и чтото вроде PLATFORM i8080/Z80Код:device zxspectrum48
org 0
file_start:
dw start_prog
dw end_prog
disp #0000
start_prog:
;здесь код
end_prog
dw 0
end_file:
savebin "eliteline.rks",file_start,4+end_file-file_start
Ясно, все вручную через savebin. ОК.
Еще вопрос: кто-нибудь пользуется директивой FPOS?:
Есть мысль ее выпилить нафиг, возможно вместе с OUTPUT. (см. поиск по "FPOS" по теме). Вместо этого сделать чтоб SAVEBIN, SAVETAP, SAVETRD без параметров сохраняли только те области памяти в которые ассемблер что-то реально писал.Цитата:
FPOS <position>
The FPOS directive makes it possible to set the file position to anywhere in the output file.
In combination with OUTPUT "<filename>",r it is possible to update existing files.
; This example will result in a file with a length of one byte:
BYTE 0
FPOS 0
BYTE 1
END
OUTPUT не надо выпиливать - я ею пользовался активно когда-то )
Ребят, что за ошибка стала появляться?
==
Over 20 defines nested
==
Что она означает?
Ругается в строке вызова макроса. Меняю на код, начинает ругаться на место вызова другого макроса...