-
Готово субботнее обновление ZXAsm++. Исправил умножение в операциях (* не в начале строки тоже по ошибке считалась началом комментария в некоторых случаях), вообще подсчет выражений с более чем 1 операцией типа x+y*z. Добавил выборку из строки подстроки "stroka"[ n[,L] ], сравнение строк "s1" = "s2". Если есть желание можно качнуть весь EMuZWin 2.7 bld 2.6b - там я исправил расцветку строк, добавил в расцветку задний план.
Из запланированного осталось вроде только добавить более жесткий контроль хождения на втором и 3-ем (при наличии) проходе, чтобы компиляция шла по тем же веткам и использовались те же значения в DUP, FOR (а это я даже пока не знаю как сделать, чтобы подешевле вышло). Ну это на самом деле, не критично. Если код написан разумно, должно ходить по тем же веткам, никаких проблем. Зато двух-проходность полезна для подсчета ссылок вперед. (А трех-проходность позволяет оптимизировать переходы в дополнительных конструкциях типа IFcond)
-
Вот какую штуку вспомнил. Когда-то давно в своем асме и METAL'е делал макросы, которые формировали отнесенные на расстояние таблицы (обычно сразу по концу кода), и в эти таблицы заносили список адресов для модификации. Для создания перемещаемого кода. Т.е. пишется макрос типа
REF MACRO
@save_cur = .
.=next_free
DEFW @save_cur-2-start
.next_free=.
.=@save_cur
ENDM
(не точная копия, а идея - по памяти)
Далее, программа начинается с метки start,
а в конце кода пишется
next_free = .
И после каждого 2х-байтного адреса записывается обращение к REF, вроде:
JP @labelA : REF
В начале кода располагатся самомодификатор, котторый читает таблицу и настраивает код по месту выполнения.
Я к чему это все пишу. Добавил спец. форму присавивания . = #expr | $ = #expr (как было в моих прежних асмах), и сделал контроль определенности имен в ORG, .= expr, и в других местах _опциональным_ (в сегодняшнем обновлении будет). Чревато, но вообще-то программист должен быть как Господь Бог. Ограничения - это для юзеров (шутка, по умолчанию строгий контроль будет включен, отключается опцией).
-
Все, воскрсное обновление пошло. Экзешник тоже можно взять (окно меток улучшил, кнопка на настройках расцветки, чтобы все задние планы сделать одинаковыми. Да и там настройка для отмены жесткого контроля ссылок вперед есть). Надеюсь, основную массу багов повыловил в асме.
. = выражение работает, DEFS n[,...] тоже есть. Если что, пишите письма. Если есть желающие сделать оболочку для стандалонной версии компилятора - помогу (исходники все тоже выложил для асма), если есть желание встроить мой асм в другой эмуль - аналогично (можно его так в dll и оставить и юзать через точку входа, интерфейс простецкий).
-
Обновление http://bonanzas.rinet.ru/zx/ZXAsmPP.zip
Т.к. как я добавил 0-й проход для предварительного сканирования макросов (для возможности ссылаться на них независимо от того, выше они или ниже), то пришлось поправить работу с переменная=выражение и имя DEFINE строка: информация о таких именах тоже должна собираться на 0-м проходе. Немного улучшил диагностику в случае когда MACRO по ошибке закрыт например ENDP (пришлось лезть в код чтобы понять что случилось, добавил предупреждение на этот случай). Да, еще DEFG теперь можно несколько символов "в ряд" "рисовать", и числа тоже разрешаются (чтобы в шрифтах можно было задавать параметры, если они идут прямо вместе с символом.
-
В новом обновлении (вторник 7.02) только дополнения:директива ENCODE для кодирования символах в строках (можно русские буквы в любую 8-бит кодировку прямо комилировать), и связная директива CTEXT ... ENDTEXT для вставки произвольного текста (и правда, не всегда интересно текст держать и подготавливать отдельно, а эа директива еще и любимый спековский флажок в бите 7 ставит на последних символах строк).
-
Второе обновление за сегодня. Небольшие фиксы. И главное ORG в банк памяти заработал теперь.
-
Средовое обновление: исправлены IFM/IFP/IFPO/IFPE и добавлена директива DEFD (пакованные 16-ричные). Ну и по мелочи еще исправления (скорее улучшения, в условной компиляции, с '/' поборолся. Вот теперь думаю может зря я разрешил в идентификаторах '/' использовать, может все-таки запретить?).
-
Еще обновление ZXAsmPP: LOOP -> WHILE..EWHILE|EWHILEB , +EWHILEcond,
+LONGIFcond .. +LONGELSE +чуть более жесткий контроль зарезервированных слов чтобы не пытались превращаться в метку.
-
Народ! Скажите мне, кто эмулятором пользуется, по поводу кемпстон мыши в эмуляторе: кнопки левая и правая не перевернуты ? В унреале вроде ж наоборот по умолчанию ?
И нигде не нашел описания хоткеев в дебуггере :(
И вообще если кто работает в ZemuASMe - отзовитесь!
-
Все хоткеи в меню видны (Tools или контекстное на основной части окна). Я вообще стараюсь все сделать видимым, чтобы хотя бы про недокументированные фичи гору доков не делать). А, есть одна "скрытая" фича - хотя вроде и ее вносил в меню тулз: отключение всплывающих подсказок на тулбаре дебугера - клик по любой кнопке правой мышью. А то задалбливает, если мышкой работать. Всплывает, и всплывает все время. (Рисунки на кнопках и так вроде понятны, один раз всплывающее почитал - и отключить, чтобы не мешали. Правда в сеансе только запоминается. В реестре/ини принципиально не сохраняется эта настройка, а то получится примерно как Fast Tape. Если запоминать, потом народ будет в непонятках: "а где оно?").
-
Про мышь правда интересно и мне. Ведь нигде же нормального описания девайса нет. Одни только слухи. И софт для тестирования - кот наплакал. Я на чем-то тестировал, когда делал, а на чем именно - сейчас не помню. Вроде на Art-Studio (или это AY-мышь была, забыл).
-
То точно была AY мышь... Kempston мышь и в quick commander, BGE, и вообще везде где есть мышь - как правило кемпстон мышь... А в кемпстоне кнопки попутаны. Народ, ну подскажите!!!
-
Обновление ZXAsmPP (пока отдельно). Макросы: опциональные параметры можно передавать в любом порядке, порпускать, а не только отбраывать на хвосте. +по мелочам. (ENTRYPOINT #expr) будет работать как обновлю сам эмулятор (к вечеру).
-
Еще одно субботнее обновление ZXAsmPP. DISPLAY "text1",#expr1["text2",#expr2]...[,#passes] +небольшое исправление для сравнения строк в выражениях IF expr1 & ("abc" <> "def") например - теперь работает. Эмулятор пока не обновляю.
-
Идет обновление эмулятора: 2.6d. Там и новый асм (вчерашний), и F12 в асме вызывает дебагер, а в дебагере - асм. Исправил замеченный q_armando бфг с переключением в режим 256 - падало.
-
Так с кемпстон мышой может заодно разобраться ? Сделать ручную смену правой левой кнопок
-
Вложений: 1
Не надо сюда еще и кемпстон мешать. Будет возможность - гляну на неделе. Цикл отладки ZXAsm++ можно считать практически законченным. В связи и с чем пощу сюда между прочим сделанную демочку (в аттаче, с исходником на ZXAsm++). При следующем обновлении эмулятора автоматически будет работать ENTRYPOINT (сейчас все еще руками пока в смысле мышкой, но я про метр уже говорил). Осталось: проверить и может быть исправить BREAK/CONTINUE, добавить LONGWHILE, LONGBREAK, LONGCONTINUE. Сейчас положил на сайт обновление ZXAsmPP.dll - но там всего лишь поправки для CTEXT ... ENDTEXT.
-
build 2.6e: ENTRYPOINT в асме, обмен клавиш кемпстон-мыши в настройках (нашел доку: у меня сделано как написано d0 - левая, d1 - правая, d2 - средняя).
-
Вчера положил build 2.6f (исправление для загрузки палитры в 256-редакторе, больше ничего).
-
build 2.6g (исправлены проблемы билда: тулбар в асме, сплиттеры не ездили).
-
Версия 2.7 билд 2.7 - все, что обсуждалось в ветках про команду Bit n,(HL), + поправил мультиколор для скорпиона.
команда Bit n,(hl)
просьба реальщикам от эмуляторщиков
Возможно еще будут изменения, но на сей момент все тесты сходятся, и есть выбор из 2х процессоров. Спасибо!
-
Выложил финальный релиз версии 2.7 - билд 2.8, в преддверии версии 2.8. Просто исправляю напоследок пару багов в дебугере, чтобы пока 2.8 "варится" до кондиции, была альтернатива.
Трап управления скорости работает, но содержимое IX не проверяется (забыл, задумался над видеорежимами). Так что юзать можно, если хочется. Со следующей версии уже будет проверяться, так что лучше вписывать. (Это я по поводу треда "Управление эмултором из спектрум-программы", если кто удивляется, что за трапы такие еще).
Финал финалом, но если бага какая серьезная, то буду править - исходники все от версии оставил на пожарный случай.
-
EMUzWIN
а не трудно разместить все библиотеки,настройки,описа ния,дополнения в отдельных директориях. не хочется проводить параллель с амигой, но помоему так лучше - чем всё в одной куче.
-
А вам вообще зачем заглядывать в директорию эмулятора? Отсортируйте файлы по типам, и будет не в куче. ROM's можно и удобно хранить в отдельной папке. (А сейчас поворчу 8-EЭ ) Это мое дело, в куче мне размещать файлы или не в куче, а не пользователя. Кроме того, всегда найдется некоторое количество юзеров, которые будут активно возражать против того, чтобы я создавал множество поддиректорий. Не надо ссылаться на Амигу, я ее в глаза никогда не видел. Вы лучше посмотрите на другие эмуляторы, практически везде используется 1 директория. Наконец, простое соображение: в тексте программы, чтобы обратиться к файлу из директории запуска, я пишу GetStartDir + filename. И код короче. Видели бы вы у меня директорию эмулятора, там еще и все исходники валяются, и все мусорные файлы, которые компилятор создает: 2225 файлов, 147Мбайт, не считая еще 97 поддиректорий = 0,98Гигабайта 8-]]
-
спасибо за подробное объяснение.