да, для тебя лучше придуманная система плагинов.
Вид для печати
Ну ты ж не хочешь фиксить баги, потому что там всё переписывать надо, твои же слова. А ломать не строить, выкинуть - дело пяти минут. Причем от того, что ты выкинешь "всякую херню" - компилять лучше не станет и баги сами собой не исчезнут. Так зачем заниматься какой-то херней по выпиливанию нужных (для 90% асмокодеров, не кодящих на сях профессионально) вещей, вместо того, чтобы зафиксить действительно важные баги?
Насчет "все переписывать" согласен (уже понемногу в процессе). На тему "не хочешь" - пруф, пожалста.
Пока наблюдается обратная картина: вхерачить- не разбираться, дело одного часа (с каждым разом все дольше и дольше, но кто следит за такими мелочами, правда же?)
Не, ну а смысл? Это было года 2 назад :) Какие еще варианты, кроме "другие приоритеты/некогда/работаю" (они же "лень")?
WinCE мне пофигу. MAP/ENDMAP знаю, но ими не пользуюсь, по очевидным причинам что я не пользуюсь структурами в подобном ключе вообще. Но возможно кто-то привык и пользуется, зачем выпилил? Это продиктовано необходимостью для реализации чего-то еще?
Дак пользуются потому что нормальной альтернативы нет :)
Я вот тоже savebin юзаю, хоть это и неудобно, а что делать - на безрыбье и рак рыба :)
Пока вручную компиляцию вызываешь это сильно не мешает, а вот если нужно автоматом вызвать sjasm указав ему параметры компиляции и список входных/выходных файлов, тут уже прийдется задуматься, т.к. savebin будет только мешать
В принципе, решается весьма просто. Все savebin/savetrd выносятся в отдельные исходники, указываемые в качестве дополнительного источника сборки:
Код:;buildtrd.asm
savetrd game.trd,game.C,32768,32768
Код:;buildtap.asm
savetap "game.tap",32768
сборка в разных режимах:Код:;buildsna.asm
savesna "game.sna",32768
Код:trd:
sjasm game.asm buildtrd.asm
tap:
sjasm game.asm buildtap.asm
sna:
sjasm game.asm buildsna.asm
---------- Post added at 10:05 ---------- Previous post was at 10:03 ----------
Значит и тебе лень тоже. Чего тогда возмущаешься, а не баги фиксишь?
Это продиктовано здравым смыслом. Зачем нужны две похожие функциональности, практически полностью друг друга повторяющие?
---------- Post added at 10:08 ---------- Previous post was at 10:05 ----------
Что-то можно за пять минут выкинуть, а на что-то полдня может уйти.
"Сопровождамость? Не, не слышал"
Дык я в си++ как свинья в апельсинах. И даже если я его вдруг выучил бы, мои "фиксы" были бы на уровне тех же школьных поделок, то есть бесполезные. Тут опытный человек нужен, ты сам это понимаешь.
Ну в общем-то да.Цитата:
Это продиктовано здравым смыслом. Зачем нужны две похожие функциональности, практически полностью друг друга повторяющие?
Слышал. Но почему у тебя "сопровождаемость" упирается в savetrd и прочие такие команды - мне непонятно. Ты хочешь сказать, что это такие убер-команды, которые рушат на корню всё остальное? Или как они тебе так помешали сопровождать код? Баги что, в savetrd находятся?Цитата:
"Сопровождамость? Не, не слышал"
---------- Post added at 11:54 ---------- Previous post was at 11:51 ----------
Ну я это решаю при помощи внешнего скрипта, который собственно и делает на основе входного параметра инклуд с savebin/savesna/savetrd в виде текста. Витамин предложил то же самое, как я понимаю.
Прекрасно. Предполагаю, что ты разбираешься в разработке, поэтому расскажу свой взгляд на дела в компиляторе на программистском языке.
Куча старого кода. Неактуального, либо имеющего более удобные аналоги.
Полуметровый геморрой в виде поддержки старых систем (dos, wince). Возможно, из-за них практически не используется стандартная библиотека С++, а пишутся велосипеды и работа с ресурсами (памятью, файлами) врукопашную по-джедайски "для экономии", что приводит как раз к постоянным утечкам этих самых ресурсов и загадочным багам.
Использование глобальных переменных где надо и где не надо, из-за чего размазывается логика и возникают непредсказуемые побочные эффекты.
Новый функционал зачастую вхерачен абы как.
Это только то, что я смог слету вспомнить. Не говоря уже более тонких вещах.
Во-первых, находятся. Во-вторых, кто тебе сказал, что я буду вырезать функции save*?
Ну да, я уверен, что ты во всем этом прав. И я понимаю, что возможно кучу всего лучше переписать, нежели поддерживать в том самом адовом виде. Однако это потребует дофига времени и желания, а поскольку ты сам, как я понимаю, ассемблером этим практически не пользуешься, то мотивации у тебя маловато для такой глобальной работы. Всё так?
Видел призывы вынести их в отдельную тулзу. То есть два программы вместо одной. Не так?Цитата:
Во-первых, находятся. Во-вторых, кто тебе сказал, что я буду вырезать функции save*?
В голову пришло пока то, что:
1. Исчезнет обратная совместимость
2. Опять будет "один сломал, второй потерял, концов не нашли"
3. Нельзя будет скомпилировать просто sjasm 1.asm, придётся какие-то баш-скрипты/батники/етц изобретать, не все это умеют/хотят.
Наверняка есть и другие минусы.
1. Единственная проблема. Вполне решаемая.
2. Не понял
3. Если автор вхерачил в этот самый 1.asm сохранение в тап, то переделать это на трд/сна "не все умеют/хотят"
Вот странность-то какая. То, что используются отдельные программы для редактирования, компиляции и запуска- никого не смущает. А вот необходимость юзать отдельную программу для сжатия (что и так как бы есть) или засовывания файла в трдшник- "бида-бида, ниасиливаем батники и мейкфайлы!"
Ну хорош уже, ну. Спросили мое мнение - я сказал. Если для вас это "мелочи", то для многих - вообще не мелочи.
Я редактирую текст в FAR и им же запускаю. Поскольку FAR это по сути консоль, то можно сказать, что я не использую сторонних приложений (ну "типа" не использую), то есть мне не надо ничего там прописывать для компиляций, я просто запускаю .exe 1.asm и всё. С разделениями файлов на линкеры и прочее это будет нифига не так просто и удобно.
И вообще, 1 файл на всё - это круто. Тчк.
Да кто тебе такое сказал?
А кто-то просто запускает
и все. Где проще?Код:build_release.bat
Ага. Чтоб и редактировал и компилял и линковал иза пивом бегалэмулировал.
По моим наблюдениям, народ до конца не в курсе всех возможностей одного лишь компилятора (а они стоят кода и соответственно времени на сопровождение), чего уж говорить о супер-пупер навороченной-системе-для-всего-в-одном-экзешнике.
Кто мне сказал? Я сказал. Мне лично неудобно, пробовал в 90х асмить на всяких там тасмах/масмах. Лютая ересь эта ваша заливная рыба. Ты сам ничего на сжасме не пишешь, зато всё надо переделать нахрен, поделить и вынести, ага. Слава Алоне покоя не дает чтоли? Тот тоже очень любил всё переделать так, что никто не пользуется этим потом, кроме него.
Мнение такое, что не надо переделывать, зато надо зафиксить баги. И всё в одном файле. Вынеси в опцию компилирования себе линкер или еще как, раз тебе так удобнее сопровождать, главное чтобы в итоге оставался 1 бинарник для компиляции/линковки/етц. со всем командами, которые есть сейчас.
Вот посмотри, что сейчас творится в main.asm для проекта CLI2:
Скрытый текст
Код:; define buildLoader ; Сборка загрузчика системы (плагин для WC)
; define buildKernel ; Сборка всей системы
define buildRes ; Сборка файлов ресурсов (Pal, Cur, Fnt)
; define buildTest ; Сборка тестового приложения test
; define buildEcho ; Сборка команды echo
; define buildLoadPal ; Сборка утилиты loadpal
; define buildLoadFont ; Сборка утилиты loadfont
; define buildSleep ; Сборка команды sleep
; define buildType ; Сборка команды type
; define buildKeyScan ; Сборка утилиты keyscan
; define buildLoadMod ; Сборка утилиты loadmod
; define buildMiceTest ; Сборка утилиты micetest
; define buildGliTest ; Сборка утилиты glitest
; define buildLoadSxg ; Сборка утилиты loadsxg
; define buildNvram ; Сборка утилиты nvram
; define buildHello ; Сборка тестового приложения hello
; define buildBoing ; Сборка тестовой демки boing
; define buildMkdir ; Сборка команды mkdir
; define buildTestSave ; Сборка тестового приложения testsave
; define buildTestFile ; Сборка тестового приложения testfile
; define buildScreenFX ; Сборка приложения screenFX
; define buildDisk2trd ; Сборка приложения disk2trd
; define buildLoadres ; Сборка приложения loadres
; define buildResTest1 ; Сборка резидента restest1
;-------------------------------------------------------------------------
ifdef buildLoader
; CLi² Loader
DISPLAY "Start build: Loader..."
include "cliloader/main.asm"
endif
;-------------- загрузчик или ядро системы -------------------------------
ifdef buildKernel
DISPLAY "Start build: Kernel..."
;-------------------------------------------------------------------------
; Используется, если собирается только система (без приложения)
include "system/constants.asm"
;-------------------------------------------------------------------------
include "system/main.asm" ; CLi² Kernel
include "drivers/main.asm" ; CLi² Drivers
include "libs/gli.asm" ; CLi² Graphics Library
include "libs/res.asm" ; CLi² Programms residents
;-------------------------------------------------------------------------
; Используется, если собирается только система (без приложения)
include "system/errorcodes.asm"
include "system/api.h.asm"
include "drivers/drivers.h.asm"
include "libs/gli.h.asm"
include "libs/res.h.asm"
;-------------------------------------------------------------------------
endif
ifdef buildRes
DISPLAY "Start build: Resources..."
include "res/cli.pal.asm" ; CLi² 16 colors palette for text mode (CLi colors)
include "res/zx.pal.asm" ; CLi² 16 colors palette for text mode (ZX colors)
include "res/default.cur.asm" ; CLi² default cursor
include "res/default.fnt.asm" ; CLi² default fonts
endif
;-------------------------------------------------------------------------
ifndef buildKernel
ifdef buildTest
; CLi² test application
DISPLAY "Start build: Test..."
include "app/test.asm"
endif
[свернуть]
и далее ещё матрас на 5 экранов!! Что это всё делает в сорцах? Если это опции для сборки?
то берётся старая версия и не лохматиться бабушка.
Адовая ересь! Сжечь за это! Лучше бы уж ключи сделали.
Vitamin, оставь плиз ключ тупо выгрузки bin файла для страждущих.
ShM делает всякие там тырдос адаптации. Пользуясь как раз записью в трд, emptytrd и прочими командами. А некий Vitamin хочет продвигать какую-то систему с линкером, которая не нужна лично мне совсем.
---------- Post added at 18:10 ---------- Previous post was at 18:03 ----------
Так исправьте баги сначала в старой версии, потом пилите/выкидывайте/делайтедругуюветку! Сто раз уже говорили.
Ключами не отделаешься- в процессе сборки может родиться несколько бинарников в разных областях памяти.
Он уже есть, но некорректно работает при наличии более одного org в файле.
Еще раз повторю вопрос: кто тебе сказал, что я собираюсь выкинуть SAVEBIN/SAVETRD?
А я тебе в сто первый раз говорю: прежде чем вносить изменения, надо навести порядок.
Ей-богу, как херовый менеджер: "Поехали, потом заведешься".
Каждый раз народ наступает на одни и те же грабли проблем сопровождения софта, писанного в традициях "ересь все эти нововведения, наши деды всю жизнь так делали", но десять сантиметров лобовой брони и затылочная кость не воспринимают уроков.
А зачем так? Я бы охренел такое поддерживать. Я вот делал морозу смотрелку картинок под биперную музыку. Имен и количество картинок и музык я заранее не знал, картинки надо было жать, собирать tap и trd. Так вот, чтобы там не было такого лютого ада с комментированием дефайнов, я инклюдил в основной файл исходник params.a80, а в него из батника сборочного писал нужные дефайны, инклюды и константы. Использовался только SAVEBIN, разумеется, и линк-тулы для сборки tap и trd. И это было весьма оправдано потому что проект не на 5 минут.
Ага, после отладки упаковывается в архив, выкладывается как ответ новичку, снабжается URL'ами линк-тулов для скачки и пишется портянка, рассказывающая что там за оверхед к одной-единственной процедуре и как со всем этим взлететь.
Это есть гуд, дело.
Ну короче, если никто не хочет слышать чужое мнение, нахрена тогда спрашивать? Уперлись рогом и хоть об стенку...
Не будет работать как раньше - придётся класть на эту хз когда еще будущую версию болт и пользоваться старой. Я не понимаю, почему нельзя сделать 1 бинарь, и если так нужно - сделать внутри разделение, как ты хочешь.
Одепты линуха чтоли собрались?
Если всё будет в одном файле - это ок. Но я не хочу стотыщ разных программ, линкеры, записывальщики бинарников, создатели басиков... Хочу чтобы работало как сейчас, понимаете? Если вы прикрутите себе какие-то опции - да пожалуйста, не жалко же. Главное старые вариант чтобы работал как раньше и по дефолту.
Конечно западло. Не только лишь все умеют нормально оформлять свои проекты. Многие привыкли к кнопочке "сделать очень хорошо" под которую городится куча костылищ неподдерживаемых в принципе, ибо через неделю уже даже сам аффтар не помнит чего он там на*****кодил.
Смысл в том чтобы вынести все эти сажетрд в мэйкфайл есть 146%.
Vitamin, собрал sjasmplus-develop (она же последняя?)
error: Label not found: zzz_4testКод:var_4test db 0
macro test var
ld a,(var_4test)
endm
test zzz
Без _ работает.
NovaStorm, а в чем сокровенная суть параметра макроса?
Разница в поведении с подчеркиванием и без - подозреваю, последствия костыля http://zx-pk.ru/showpost.php?p=159487&postcount=264
Это ж рафинированный пример, просто у меня вот так совпали имя параметра и часть имени переменной.
Пока пользуюсь v1.07 RC7 (build 02-04-2008), вот, захотел обновиться =)
Костыль костылём, а лепить например имена меток из параметров хотелось бы.
Прочитал всю ветку. Весело тут у вас. :)
Так и не понял, планируется ли поддерживать проект (в любом виде, хоть с балканизацией линкера, хоть без).
На текущий момент последняя версия устраивает (т.к. использую минимум функционала), но пугает перспектива в будущем поисков альтернативы умершему.
Все вопросы к мистеру Витамину, он тут один остался, кто хоть что-то делает в направлении sjasm.
Поможите люди добрые ,здесь мы не местные
была в спековских АСМах такая фишка
LAMER DW #C000
LD H,LAMER[
Загрузка половинки в регистр,а как это сделать в ужасме?