Короче говоря, я хотел сказать и тебе и ньюарту ХВАТИТ ОФФТОПИТЬ в теме про асм на СПЕКЕ всякой фигней про среду на ПЦ... :) :) :) Видимо фигово у меня намекать получается :)
Вид для печати
Короче говоря, я хотел сказать и тебе и ньюарту ХВАТИТ ОФФТОПИТЬ в теме про асм на СПЕКЕ всякой фигней про среду на ПЦ... :) :) :) Видимо фигово у меня намекать получается :)
Я так понял, ты обращаешся к breeze и newart'у ? если так, то точно! Я создал этот топик для ZX асма, а не для эмуляторов асма под ZX (прямо язык поломаешь! ;) )Цитата:
Сообщение от Shadow Maker
Скажи ASMAN, ты серьезно пологаешь, что народ (кодеры) побросают свои любимые/привычные асмы и пересядут на твой?Цитата:
Сообщение от ASMAN
сделать всемогутор это не техническое задание, а несбыточная идея :)Цитата:
Сообщение от ASMAN
1. подожди, разве Alasm поддерживает только 128K? а зачем тогда ему драйверы разных типов памяти?Цитата:
Сообщение от ASMAN
2. зачем нужны "хорошо кодированные исходники"? что-бы было больше памяти под них же?
3. что такое гибкость компилятора?
т.е. нового это двухпроходность и поддержка "SET 5,B.(IX+5)", imho недостаточно для ассемблера нового поколенияЦитата:
Сообщение от ASMAN
редактор действительно на скриншотах выглядит красиво... хотя большая часть вышеизложенного была/есть (кроме мыши наверное) в других асмахЦитата:
Сообщение от ASMAN
молодцы, делаете еще один ассемблер. Когда я "ломал" элиту, у меня тоже был свой "ассемблер". Дело было так. Я как раз поимел за некоторое время до того C-- Sphinx на PC (тогда еще 386 была хорошей машиной, а 486 ваще круть). И загорелось мне сделать себе что-нибудь такое же компактненькое. Назвал я это дело METAL (это была аббревиатура, в исходниках кросс-компилера для PC, который я потом тоже сделал, и от которого в отличие от METAL для спека, даже исходники дожили до сего дня, можно наверное найти расшифровку - что-то вроде Meta-Assembler-Langiage). В общем были зарезервированные слова типа A, B, C, BC и т.п., (HL) называлось M для краткости и вящей невразумительности :), были символы-стрелки (что-то вроде <- и -> ), и были СКОБКИ. Дальше все просто:
INC HL == HL+
CALL P12 == /P12
CALL NZ,PR == NZ?/PR
RET PO == \PO
ADD A,B == A+B или даже +B разрешалось
CMP A,10 == ~10
JR C,L1 ... L1: == C?->( ... ) или даже так C?( ... )
L2: ... DJNZ L2 == [ ... ]<-B? или даже [ ... ]B? или [ ... ]?B
PUSH AF == (мда, а как же мне вертикальну стрелку вниз изобразить? В DOS и то проблем было с этим меньше ... Ладно, пусть здесь будет !) !A
PUSH AF:PUSH BC:PUSH HL == !ABH
(или примерно так, годы стирают детали).
Коротко, правда? В памяти лишнего практически ничего не надо было хранить. Текст если и превышал размер откомпилированного кода, то совсем на маленько. Примерно, в 1.3 раза.
Да, СКОБКИ. Я пишу это слово ТАК, потому что в отличие от C-подобных языков, скобки здесь для каждой своей формы () [] {} <> образовывали свою собственную иерархию например: ( { ) } [ < < > ( ] ) >, можно было вообще без меток обойтись. Кроме меток процедур. Вот примерчик (правда, это уже из кросс-версии скриншот, совсем недавно делал, когда удалось прочитать сидюк с этим добром): http://bonanzas.rinet.ru/zx/metal.png Кому еще стало интересно, все это кросс-добро лежит там же: http://bonanzas.rinet.ru/zx/metal.zip (жаль, не сохранилась не-кросс-версия). И напоследок, могу сказать, что наличие такого инструмента облегчило мне мою жистю намного по сравнению с асмом, который у меня тоже был (и тоже свой, и на нем же и был сделан компилер с метала... ну не юзал я никогда чужих велосипедов, а первую версию своего асма я сделал в бэйсике, а потом в нем же откомпилил первую версию своего же асма, на что ушло в сумме 3 дня... да, молодость, сил немеряно, эх-хе-хе, где она теперь). А облегчило почему - а вы скриншот гляньте - сколько я процедур мог одновременно обозревать на экранчике спека, вместо того, чтобы видеть только махонький кусманчик от асм-листинга (хотя мой асм тоже понимал ':' и несколько команд в одной строке, все равно реально больше 3х и не всовывалось).
Да не, я ничего, хочется асм - делайте асм. Каждый делает то, что он хочет, и сделает то, что он сможет. А все-таки.
эх, ребятки, вроде уже и взрослые, а мечтать не перестали!
поглядел скриншот и улыбнулся- два шрифта разных, менюшки, стрелочки и т.д. интересно, у многих на компах стоит больше 512кб?? а я уверен на процентов 90, что это будет больше версия для работы под эмулем!
Асман, а относительно того, что НИОДИН асм не поддержевает больше 128к ты напиши АЛКО, он тебе расскажет!
а если хотите идеальную среду на спеке, так напишите отдельно редактор поддерживающий кучу фич(подсветку синтаксиса и т.д.), компилятор и придумайте максимально выгодный формат хранения исходников... а так, почита-почитал, получится очередной клон-недоделок со своими какими-то маленькими плюсиками...
все... если че, еще допишу ченить :)
2Vladimir Kladov: 5 баллов! хотя чуть-чуть напоминает исходники написанные на brainf*ck...
пошел читать доки...
эээ все-таки просьба, не относиться слишком серьезно. Молодой был, глупый, про ООП только краем уха слышал. Сейчас то я с object-pacsal фигушки слезу. Но подумать о реализации чего-то более похожего на "C-- для speccy" не мешало бы. Все, что я имел в виду. Хотя бы в асм встроить какие-то конструкции. Возьмите пример с масма. его invoke, работа со структурами - и "он уже не тот, что был вначале. Чужие судьбы, став его судьбой, его уводят за собой..." (С) Рильке.
Сделать clipboard.library раз и навсегда, потом всем прогам ее юзать - вот вам решение ;)Цитата:
Сообщение от breeze
Незнаю... но конкурента я делать буду хорошего! :)Цитата:
Сообщение от newart
1. за аласм согласен с памятью он не просчитался!Цитата:
Сообщение от elf/2
2. Для того чтобы эти же исходники были побольше и влазили в одну страницу.
3. Гибкость компилятора - это когда можно сделать INCL в INCL'e, компиляция в любой адрес без ограничений, создание библиотек типа WINDOWS, использование только адресов меток исходника, не вся его компиляция и другие фиговины, которые не позволяют делать многие асмы. Поверь мне, при этих возможностях программирование сильно возрастает! :)
Вот именно это и многое похожее я постараюсь впихнуть в асм! :)Цитата:
Сообщение от Vladimir Kladov
я примерно это и хотел услышать :) но только в несколько более структурированном виде...Цитата:
Сообщение от ASMAN
может быть все же сядешь и сформулируешь почему DEB будет носить гордое звание "асемблер нового поколения"? вполне возможно что кто-то из читателей форума своих идей набросает, да и разработчикам других асмов/кросс-асмов должно быть интересно...
просто когда разработка асма начинается с публикации скриншотов, возникает много непоняток что же именно ты собрался писать...
кстати, а нет желания в качестве альтернативного синтаксиса использовать разработки Владимира Кладова (Metal z80)?
2Vladimir Kladov: читал доку, много думал... очень интересная идея, хотя немного пугает то что одно и тоже можно записать 10 разными способами
Ты попал прямо в точку!! :) Именно это я и буду делать в асме! Будут всякие такие сокращения, но они будут не альтернативными, а дополняющими его со стандартным!Цитата:
Сообщение от elf/2
почему из тебя клещами информацию приходится тащить :)Цитата:
Сообщение от ASMAN
ну очень интересно что такое объектно-ориентированный асм с синтаксисом похожим на metal...
блин, а вдруг забудешь что хотел сделать? а если здесь опубликуешь, то зашел на форум и вспомнил :)
ASMAN, и сделай пожалста то, чего уж точно нет ни у одного конкурента. Возможность алиасов любых команд. Например мне не нравится что подгрузка идет командой "INCLUDE" к примеру, хочу "ZAGRUZ". Взял, в файле алиасов поправил - и порядок! Или так INC меня не устраивает, хочу PLUS. Та же ботва. Будет очень удобно. Но надо обязательно тогда предусмотреть функцию по обратной конвертации исходников в нормальный неалисированный вид (чтобы можно было другим людям тоже сорцы читать).
Вот читаю все (весь тред) это и думаю, а нафига вам вообще нужны эти сокращения и весь этот выпендреж? На спектруме ничего не меняется, как делалось куча подобных и наполовину бесполезных прог, так и делается. Хотя, наверное, ни одна другая платформа не может похвастаться таким количеством асмов. =)Цитата:
Сообщение от Shadow Maker
Cut, copy paste; ползунок (местоположение) - это единственные вещи, которые могут быть полезными. Вы сами себе усложняете жизнь, заставляя себя и других переучиваться с каждым выпуском компилятора. Правильно тут отмечалось, сделайте модульный асм - т.е. компилятор отдельно, редактор отдельно. Не выдумывайте никаких других (заменителей или как у вас модно алиасы) фич. С таким багажом ЗНАНИЙ , как на спеки уже давным-давно пора клепать более серьезные вещи. А то только и встречаю, что мол у него такой иходник, что без поллитры не обойтись =). Это глупо, вы не думали, почему линукс так быстро развивается? Потому что у них есть стандарт, который любой им заинтресованный знает.
Поверьте, если я снова вернусь кодить на спек, то не буду искать альтернативы моему некогда любимому xas'у. =)
XAS я тоже люблю. в нем всегда работал.
но то что обширные макросы и встроенные в АСМ удобства очень важны, это без сомнения. давно надо от АСМа двигаться к языкам высокого уровня на самом спеке. кросс компилятор Сишного кода уже есть, правда я не знаю как там с оптимизацией.
что ты имеешь в виду под "у них есть стандарт"?Цитата:
Сообщение от acidrain
а развивается он потому что:
1. в него вкладывают большие деньги, и не говорите мне что там все GPL и бесплатно
2. есть большая армия разработчиков (многие из них конечно работают безвозмездно, то есть даром)
странно, а если к этому моменту появяться более удобные инструменты? например, правильный компилятор си...Цитата:
Сообщение от acidrain
Вот такой я! Это мой недостаток... :(Цитата:
Сообщение от elf/2
Идея СУПЕР! Подумаю как можно классно и удобно енто организовать! Спасибо! ;)Цитата:
Сообщение от Shadow Maker
Вот так люди! Берите пример с Shadow Maker'а ! Чем больше идей, тем круче будет редактор! :cool:
Вот именно, что серьезные вещи толком и не наклипаешь без хорошего асма! :( А на счет альтернативы я не спорю, но все таки надо делать лучшее! ;)Цитата:
Сообщение от acidrain
если ты хочешь чтобы люди были заинтересованы в твоем проекте, то надо их чем то привлечь... описание возможностей асма может быть такой наживкой.Цитата:
Сообщение от ASMAN
пока есть только скриншот и обещания :( обидно.
а свои недостатки надо стараться исправлять :)
ОК! На днях напишу все возможности DEB... При появлении (придумывании) новых идей эти возможности буду обновлять... :)Цитата:
Сообщение от elf/2
Низкий поклон, Всем !
Давно читаю эту рубрику и не очень понимаю что значит "нового поколения" ? Это асм занимающий в памяти НОЛЬ байт ???
Сколько помню себя, для меня в асме были главные два пункта 1.Качество компиляции, 2.Скорость компиляции ! Поэтому я давно колебался между TASM'омо и ALASM'ом, но когда узнал, что в аласме из-за однопроходности получается множество проблем, так и остался в TASM'е ... А вообще-то, всё, что мы делали с ребятами, так это просто переделывали TASM на 512 и компилировали любых размеров файлы ... Мне кажется, что стоит на этом поставить акцент ... Поскольку каждый из нас пишет под 128, и если у него отобрать хотя бы одну страничку, то будет много расстройств. А фреймовый скрол, конечно, велеколепная вещь, но только не в ущерб памяти.
Когда-то я писал музыкальный редактор MASON, который работал под SonDrive. И ради лишних килобайт занимался извращениями, например подгружал кусок кода для загрузки инструментов, после выгружал его, загружая на его место редактор. Может и тут стоет так сделать, например на место меток раздекранчить фреймовый скрол, да и сам редактор, а после на него компилировать таблицу меток ?
Извеняюсь а свои пять копеек ... Но всё же память на Speccy, это драгоценная вещь, а особенно когда ебе 70 =) шутка ...
В Шторм-асме приблизительно так и делается. Оболочка каждый раз передекрюнчивается.Цитата:
Сообщение от Robus
2Asman
По поводу макрокоманд посмотри исходники второго шторма - там у них все идеи более-менее задокументированы. А идей, я тебе скажу, туева хуча.
Товарищи!!!!!!
Какой на фиг раздельный редактор/компилятор!
Мы же с вами не на ПЦ!
Дело в том, что если хотите хорошую (хотя бы) скорость компиляции, то ни о каких исходниках в виде текста даже речи не идет! Нужен токенизированый вид, и чем жестче, тем лучше. А соответсвенно и редактор/вьювер злобно закодированных данных нужен исключительно индивидуальный!
p.s. если кто-то хочет написать отдельный компилятор - вперед. У вас есть ACEdit и система плугинов к нему :)
гггг, класс!!! плагин-компилятор для АСЕ :))))
ну наконец-то :)Цитата:
Сообщение от ASMAN
тогда по мотивам поста breeze'а на тему проектов:
1. файл проекта это обычный текстовый файл (а почему нет) который содержит:
a. список всех исходников использующихся при сборке с указанием в какую страницу чего грузить + текущая строка/символ
b. настройки оболочки специфичные для данного продукта, например: сколько памяти отдать под метки, клавиатурные макросы, etc
2. при загрузке этого файла в асм, файл парсится и все файлы из 1.a загружаются куда надо + оболочка/асм настраиваются в соответствии с 1.b
3. ясен пень что в любой момент можно сохранить текущее состояние оболочки/асма в виде того самого файла проекта.
4. в принципе там же можно хранить всякие текстовые файлы типи readme, what's new, todo (при условии что редактор достаточно универсальный)
1. суровый токенизированный формат плох тем, что в случае сбоя на диске легко потерять большую часть исходника. у меня была пара стормовых исходников с ошибкой в одном байте, при просмотре которых сторм падал, а bestView/xLook показывали достаточно большой кусок мусора...Цитата:
Сообщение от Looker
2. а почему AlCo собирает достаточно большие проекты (Wolf2004) и не наступает на грабли с недостатком памяти? у alasm'а формат совсем не сурово-токенизированный...
3. еще есть большие сомнения что формат используемый в сторме положительно влияет на скорость компиляции
если есть правильные функи: decode_line/encode_line то редактор может быть достаточно универсальный
полностью поддерживаю! именно вот это я и имел ввиду! :eek:Цитата:
Сообщение от elf/2
Круто! Я не догодался! Вот вам и КЛАССНЫЕ советчики! Сделаем так! Завтраже займусь прогой генерации скрола вверх/вниз! Спасибо! побольше бы таких! :DЦитата:
Сообщение от Robus
Правда будет проблемка! А если ты захочешь узнать по какому адресу находится та или иная метка ? :o А тут ее уже после компиляции забила прога скрола ? :mad: Подумаем как можно выкрутится... :eek:
Непонятки:Цитата:
Сообщение от elf/2
1.а. "+ текущая строка/символ" что имеется ввиду ?
b. как именно будут выглядеть эти настройки?
Все остальное понятненько...
Наталкивайте и реализуем... :rolleyes:
Вот тут я ж потихоньку делаю асм...
Сделана загрузка конфига и настройка шрифта.
Нарисованы 9 FONT'ов: FONT64, FONT64E, FONT64A, FONT42, FONT42EB, FONTXX, FONTXXE, FONTXXA и FONTXXEB
Как и обещал вот ВАМ возможности... это еще не все! :D Все сразу вспомнить не могу... :o
т.е. то место где стоял курсор при последнем редактировании этого файлаЦитата:
Сообщение от ASMAN
а я откуда знаю :) твои настройки, тебе и выбирать формат храненияЦитата:
Сообщение от ASMAN
Понятненько! Подумаем...Цитата:
Сообщение от elf/2
Снова низкий поклон !!!
Вообще-то, если уж смотреть совсем в корень проблемы, то можно пойти очень неординарным путём ... Может это натолкнёт тебя на новые мысли ...Цитата:
Сообщение от ASMAN
Попробуй сделать моментальную компиляцию ... То есть, если кто-то пишет JP Start, то так и сохраняешь 195,lo,hi ... Только Lo/Hi, будет указывать на таблицу меток, от которой никак не уйти. Конечно тогда возникают трудности с ремарками ... Но и тут можно обойти проблему, просто сделай ещё один буфер, где будут лежать ремарки а заодно и DB, с указанием на строку, где её набивали ... Я понимаю, что редактирование такого извращённого текста будет сложным, но экономным. На встречу этой идеи могу предложить другой метод редактирования текста, что ускорит обработку редактирования в тысячи раз, а если быть точным, то по сути в бесконечность ... Представь себе, что у тебя есть кусок памяти в 40000 байт, куда загружен текст в конец этого блока. При нажатии вниз, ты всего-то переносишь в начало блока строку. Ежели кто-то набивает текст, то ты просто в конец текущей строки добавляешь байты (текст). Просто человек при редактировании всё равно пользуется переходом вверх/вниз, а тебе всего-то нужно перенести пару байт соответствующей строки.
00000 ... ORG 16384
00002 ... LD HL,16384
00005 ... LD DE,16385
00008<--- Тут курсор
39992 ... LD BC,6911
39995 ... LD (HL),L
39996 ... LDIR
39998 ... DI
39999 ... HALT
Ежели кто-то нажал вниз будет:
00000 ... ORG 16384
00002 ... LD HL,16384
00005 ... LD DE,16385
00008 ... LD BC,6911
00011<--- Тут курсор
39995 ... LD (HL),L
39996 ... LDIR
39998 ... DI
39999 ... HALT
То есть, по-сути, всё, что остаётся это просто высветить текст, или перенести его скроллом, и высветить только одну строчку, которую редактируем !
Конечно я утрировал, поскольку там есть и ORG, его то же нужно как-то закодировать, но это дело техники ... Если тебя это заинтересовало, то могу дать уже готовый текстовый редактор, который я делал в 94-ом году. Там, кстати, сделан совершенно любой шрифт по X и Y, только нарисовать и всё. Причём, каждая буква может быть своего размера. В турбо, при условии, что высота шрифат 2 пиксела, получается один фрейм, при скроллировании. Если взять фонт высостой в 6 пикселей, то получается один фрейм и без турбо. Там применён этот метод редктирования, но я совсем не помню, сколько он при этом жрёт памяти, но один фрейм гарантирую. Я всегда свои тексты набивал в нём, поскольку очень люблю один фрейм !!!
похоже не формат текста в сторме. только там авторы пошли дальше: они в таком случае даже 195 не хранят :)Цитата:
Сообщение от Robus
хотя метки в тексте хранятся как текст (правда сильно перекодированный). а вот числа именно так, плюс 1 байт с указанием системы счисления (hex, dec, bin, char)
Супер! Прибей файлик! Я посмотрю! ;) Мне какраз нужен сейчас отличный скролл... :eek:Цитата:
Сообщение от Robus
Так у меня почти все команды занимают 3 байта! :eek: Так что проблемы с кодом не будет! :cool:Цитата:
Сообщение от elf/2
по-моему не упомянуты (а должны бы быть) следующие вещи:
1. IFcond ... [ELSE ...] ENDIF -> автоматически должно превращаться в jp/jr Ncond,@1 ... jp/jr @2 : @1: ... @2: или без ветки ELSE -> jp/jr Ncond, @1 ... @1:
(При этом с оптимизацией перехода - не только jp->jr, но и defb 0feh, чтобы обойти 1 байт, или если обойти надо call addr, то просто использовался бы call cond,addr)
2. директивы условной компиляции IF(выражение0) ... [ ELSEIF(выражение1) ... ]... [ ELSE ... ] ENDIF
3. циклы условной компиляции FOR переменная=список ... ENDFOR и FOR переменная=выражение1 TO выражение2 [STEP выражение3] ... ENDFOR
4. (не знаю точно, что есть DUP / EDUP, я использовал конструкцию REP[EAT] выражение ... ENDREP - возможно это то же самое)
5. Макросы (я наверное просто пропустил?) должны иметь параметры передаваемые по списку и по имени. Например DoSomth A,Cold,Beta,Reg2=BC
6. Структуры (или это подразумевалось?). Конечно, ясно, что можно задать константы Field1 EQU 0: Field2 EQU 2:... Но гораздо цивилизованней будет MyStruct STRUCT:Field1 DEFW ?:Field2 DEFB ?:... ENDS и заставить программиста писать не просто (IX+Field1), а (IX+MyStruct.Field1) или LD HL,MyStruct.Field2 (хотя строгость можно понизить и опционально разрешать писать LD HL,Field2 - не все программеры любят строгости).
7. Возможность задать набор констант перенумерацией начиная с некоторого значений (аналог enum). (Нет, я понимаю, можно написать A1 EQU 1:A2 EQU A1+1 :A3 EQU A1+2... потом просто меняем A1 и вуаля, но не проще ли написать ENUM A1=1,A2,A3,...
Свой встроенный в EmuZWin асм буду доводить до ума, все это конечно сделаю (а может и еще что-нибудь).