Multi-Edit - Старые версии 1.x-3.x

Найти и скачать программы и игры всех времен

Re: Multi-Edit - Старые версии 1.x-3.x

Сообщение Nika » 08 июл 2014, 22:20

SergeCpp,
проверил, всё скачивается/распаковывается нормально.
Спасибо.
Последний раз редактировалось Nika 08 июл 2014, 22:21, всего редактировалось 1 раз.
Nika
Мастер Даунгрейда
 
Сообщения: 587
Зарегистрирован: 17 окт 2013, 00:21

Multi-Edit

Сообщение SergeCpp » 08 июл 2014, 22:34

Да, я тоже скачал, разархивировал и двоично сравнил с разархивированным вашим.

Пока углядел только добавление двух цветовых схем (зачем?) в файле FONT.REG, поосторожнее.

Смотрю дальше...

Пока вижу, что структуры каталогов почти нет, только SRC. Было бы логично сделать для каждого вида файлов свой каталог, и самому легче. Ага, в TNK в каталоге SRC какие-то DAT. Эх, и почему так всё будто намеренно запутанно часто бывает.

Макро исходники глянул немного, пожалуй я промолчу. Не понимаю, как сам автор в них разбирается. У меня это такая проблема, я и в 7 версии, прежде, чем что-то менять, всегда исходники (а они там в жутком виде) привожу к аккуратному виду. Судя по исходникам perl (где такой же ужас), это какая-то особенность программистов, которой я не обладаю -- писать плотно-плотно (без пробелов, пустых строк) и без пояснений и (на мой взгляд) неаккуратно.

Макро даже пустой сторкой не разделены (я смотрю ASM.SRC, но и в других, как погляжу, так же -- DOSUTIL.SRC самый новый по модификации). Чтоб никто не разобрался, будто.

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

Дам два скриншота двух концепций написания текстов программ.
Вложения
conception_2.png
conception_2.png (31.16 Кб) Просмотров: 3803
conception_1.png
conception_1.png (58.06 Кб) Просмотров: 3677
Последний раз редактировалось SergeCpp 09 июл 2014, 00:10, всего редактировалось 1 раз.
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 418
Зарегистрирован: 11 апр 2011, 13:49
Откуда: At Home

Re: Multi-Edit - Старые версии 1.x-3.x

Сообщение Nika » 08 июл 2014, 23:04

Да то парень сделал себе фонты для использования в Windows'ном окне.
А схему добавил в стиле своей расцветки ME.
Мне эта фича не понадобится скорей всего.
Последний раз редактировалось Nika 08 июл 2014, 23:04, всего редактировалось 1 раз.
Nika
Мастер Даунгрейда
 
Сообщения: 587
Зарегистрирован: 17 окт 2013, 00:21

Re: Multi-Edit

Сообщение SergeCpp » 09 июл 2014, 00:37

SergeCpp писал(а):Пока вижу, что структуры каталогов почти нет, только SRC. Было бы логично сделать для каждого вида файлов свой каталог, и самому легче.


Вот на скринах наглядно то, о чём я говорю (сортировка по типу, конечно, облегчает, но это паллиатив).
Вложения
filing_2.png
filing_2.png (24.72 Кб) Просмотров: 3752
filing_1.png
filing_1.png (54.28 Кб) Просмотров: 3609
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 418
Зарегистрирован: 11 апр 2011, 13:49
Откуда: At Home

Re: Multi-Edit - Старые версии 1.x-3.x

Сообщение Nika » 09 июл 2014, 06:12

SergeCpp,
это всё так, но ME до 5-й версии включительно стандартно все файлы в одном каталоге, без под-каталогов.
Так что тут уж ничего не поделаешь.

А о стиле исходных текстов - да, я сам пришёл к выводу, что при неотформатированном тексте
сильно устаёшь, а значит, раньше выдохнешься.
Последний раз редактировалось Nika 09 июл 2014, 06:12, всего редактировалось 1 раз.
Nika
Мастер Даунгрейда
 
Сообщения: 587
Зарегистрирован: 17 окт 2013, 00:21

Multi-Edit

Сообщение SergeCpp » 09 июл 2014, 14:51

Nika писал(а):SergeCpp,
это всё так, но ME до 5-й версии включительно стандартно все файлы в одном каталоге, без под-каталогов.
Так что тут уж ничего не поделаешь.

Почему же? Если этим заниматься, то можно и распределить по вложенным каталогам — всем будет удобнее, и, в первую очередь, тому, кто занимается модификацией редактора. Это то же самое, что и неформатированный текст программы.

Они и в 7 версии много оставили в основном каталоге: DB, DIC, ещё CONV_700.DAT (не первой необходимости файл).
Последний раз редактировалось SergeCpp 09 июл 2014, 14:58, всего редактировалось 1 раз.
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 418
Зарегистрирован: 11 апр 2011, 13:49
Откуда: At Home

Re: Multi-Edit - Старые версии 1.x-3.x

Сообщение Nika » 09 июл 2014, 18:34

Согласен.
Но то был период времени, когда люди ещё не свыклись с идеей использования подкаталогов
и программы в большинстве своём хранили свои файлы навалом, чтобы проще было задать к ним путь
в переменной окружения, например, "SET ME_PATH=C:\EDITOR\ME".

Такая же ситуация и с AutoCAD'ом версий до 11'й.
Я с самого начала возни с версией 10 стал стараться раскладывать файлы по подкаталогам.
Чтобы не было в директории тучи всяких разных файлов да ещё и чертежей вдобавок.
Можно ненароком удалить что-нибудь лишнее.
Последний раз редактировалось Nika 09 июл 2014, 18:35, всего редактировалось 2 раз(а).
Nika
Мастер Даунгрейда
 
Сообщения: 587
Зарегистрирован: 17 окт 2013, 00:21

Multi-Edit: macro_addr и debug_ptrs

Сообщение SergeCpp » 11 июл 2014, 17:22

(Это ответ на удалённое сообщение от Nika.)

Я уже деталей (и вообще) совсем почти не помню, но, насколько припоминаю, эти параметры просто так названы, по сути же -- это адреса самого загруженного макро (я не помню, адрес "чего именно" в макро, вроде (?), не самого начала, а со смещением -- судя по bp_set, всё же, самого начала (macro body в doc\mac), хотя я не уверен) и его блока параметров.

Посмотрите в моих базах Ida, там в ME.IDB эти функции (1d 03 = debug_macro(), 1d 04 = macro_addr, 1d 05 = debug_ptrs, ff = DEBUG_BREAK). Также кое-что есть в моём файле doc\mac.

Структура debug_ptrs для 7 детально расписана в моём medebug.s начиная со строки 405.

Но в 6 (MEL) версии всё может быть и по-другому. Тут нужно дизасм.

А строчка debug_ptrs встречается (у меня) и в stddef.sh и в setsave.sh и в init.s. Только я уже затрудняюсь пояснить... Вроде бы так у меня DSEG вычисляется: debug_ptrs & 0xFFFF0000 -- ага, в stddef так и написано.
Последний раз редактировалось SergeCpp 11 июл 2014, 17:27, всего редактировалось 1 раз.
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 418
Зарегистрирован: 11 апр 2011, 13:49
Откуда: At Home

Re: Multi-Edit - Старые версии 1.x-3.x

Сообщение Nika » 11 июл 2014, 22:29

SergeCpp,
спасибо, что ответили.
Сообщение удалил, устыдившись, что свои прымхи пытаюсь "сбросить с больной головы да на здоровую".
Кроме того, пока формулировал послание, кое-какие собственные мысли возникли касательно отлова этой штуки.
Спасибо, что откликнулись. Так я примерно себе и представляю всё это (файл mac видел. Полезная штука).
Я начал было сам составлять подобный файлик, но после ~пятой функции вспомнил, что где-то я уже это видел, - полез искать и нашёл.
В общем, ясно, что процедурка пролога для окошка ERROR#11 лежит в seg_013:18E8h (MEL.mz.8098h).
Причём их там рядом две абсолютно одинаковые процедуры-заглушки. Как раз (?) для этих самых процедур macro_addr и debug_ptrs.
Ссылок на них явных нет. То-есть, нужно потрассировать парсинг байт-кода и посмотреть, как они вызываются.
Кроме того, есть и третья такая же процедурка-переходник для функции ERROR#11 - seg_013:16DC (MEL.mz.7E8Ch).
Она штатная - на неё есть прыжок <JNZ 16DC>.
Ну, буду смотреть, что можно сделать.
Спасибо.
Последний раз редактировалось Nika 12 июл 2014, 00:15, всего редактировалось 12 раз(а).
Nika
Мастер Даунгрейда
 
Сообщения: 587
Зарегистрирован: 17 окт 2013, 00:21

Multi-Edit

Сообщение SergeCpp » 12 июл 2014, 00:33

Nika писал(а):
SergeCpp писал(а):А строчка debug_ptrs встречается (у меня) и в stddef.sh и в setsave.sh и в init.s. Только я уже затрудняюсь пояснить... Вроде бы так у меня DSEG вычисляется: debug_ptrs & 0xFFFF0000 -- ага, в stddef так и написано.


О. А вот это, похоже, и есть ответ на мой вопрос. (memw( ( debug_ptrs & 0xFFFF0000 ) | 0x52F, 65535 );)
В моём init.mac (аналоге его) этот указатель видимо не проинициализирован как следует, вот и выходит ERROR#11..
Спасибо, буду разбираться.


Нет-нет. Это не инициализация указателя, это я там применяю значение debug_ptrs для собственных целей. 0x52F -- это смещение на max_undo_count. В "оригинальных ME" оно читается и устанавливается функцией max_undo (описанной в оригинальной документации: cmac.hlp/z), у меня же имя max_undo занято другим, более мне нужным -- call_far (вызов ассемблерной функции, комментированные вызовы есть в mesys.s на 92 строке, в meutil.s на 2763 и 2788 строках и в _test.s на 529 строке). Поэтому я все (считанные, в основном в setup.s строки 1105 и 1186) вызовы max_undo заменил на конструкции с memw. В stddef.sh есть секция для этого: строки 250-254.

Вообще, опасно запускать мои макро в оригинальных и v.v.

Ваши вопросы -- хорошо, задавайте! Я потихоньку вспоминаю, где и что там, тем более мне всё же легче вспомнить, чем кому-то -- разобраться "с нуля" :)
Последний раз редактировалось SergeCpp 12 июл 2014, 00:38, всего редактировалось 1 раз.
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 418
Зарегистрирован: 11 апр 2011, 13:49
Откуда: At Home

Re: Multi-Edit

Сообщение Nika » 12 июл 2014, 01:03

SergeCpp писал(а):Нет-нет. [...]
Да, уже понял, потому и удалил ту заметку..
SergeCpp писал(а):Вообще, опасно запускать мои макро в оригинальных и v.v.
Это я уже тоже понял.. Достаточно, что я попытался запустить стандартный medebug.mac, а мне сказали "Incompatible version." Впечатлило.
SergeCpp писал(а):Ваши вопросы -- хорошо, задавайте! Я потихоньку вспоминаю, где и что там, тем более мне всё же легче вспомнить, чем кому-то -- разобраться "с нуля" :)
Спс. Это очень кстати.

--------------------------------------------------------------------------------------------------------------------------------------------------
Вот, отведайте безобразное макро - CASE866 -
- перекодирует одну буковку UPPER<->LOWER CASE. (DOS CP866, корректная поддержка Ё и украинских символов).
Там есть опция компиляции, когда он будет лупить перекодировку всего текста от текущей позиции курсора,
сохраняя регистр после символов '.','?','!', но сейчас транслировалось с выключенной этой опцией.
Только одна буковка и перевод RIGHT;
У меня этот (аналогичный) макрос работает и в KEDIT, и в THE, а теперь и в MEL. Настроен в них во всех на <Ctrl+W>.
Проверено в вашей сборке ME7:
Вложения
case866.png
case866.png (4.3 Кб) Просмотров: 3492
CASE866.RAR
(2.32 Кб) Скачиваний: 124
Последний раз редактировалось Nika 12 июл 2014, 01:37, всего редактировалось 14 раз(а).
Nika
Мастер Даунгрейда
 
Сообщения: 587
Зарегистрирован: 17 окт 2013, 00:21

Re: Multi-Edit

Сообщение SergeCpp » 12 июл 2014, 02:21

Nika писал(а):
SergeCpp писал(а):Вообще, опасно запускать мои макро в оригинальных и v.v.

Это я уже тоже понял.. Достаточно, что я попытался запустить стандартный medebug.mac, а мне сказали "Incompatible version." Впечатлило.

А зачем вы хотели запустить "у меня" стандартный medebug.mac?

Nika писал(а):
SergeCpp писал(а):Ваши вопросы -- хорошо, задавайте! Я потихоньку вспоминаю, где и что там, тем более мне всё же легче вспомнить, чем кому-то -- разобраться "с нуля" :)

Спс. Это очень кстати.

И мне тоже интересно -- что именно вызывает вопросы.

Nika писал(а):Вот, отведайте безобразное макро - CASE866 -
- перекодирует одну буковку UPPER<->LOWER CASE. (DOS CP866, корректная поддержка Ё и украинских символов).
Там есть опция компиляции, когда он будет лупить перекодировку всего текста от текущей позиции курсора,
сохраняя регистр после символов '.','?','!', но сейчас транслировалось с выключенной этой опцией.
Только одна буковка и перевод RIGHT;
У меня этот (аналогичный) макрос работает и в KEDIT, и в THE, а теперь и в MEL. Настроен в них во всех на <Ctrl+W>.
Проверено в вашей сборке ME7:

Спасибо, интересно.
Такие вещи делаются (и легче писать и быстрее работает) таблицами перекодировки, у меня даже "интерфейсные функции" для этого есть, посмотрите у меня в BLOCK.S: BlockXLAT(), BlockClear(), BlockCodePage(), в TEXTUTIL.S: ChngCase(), в STRING.S: _ansi2oem(), _oem2ansi(), _koi82oem(), _uni2oem(). Вроде всё припомнил.

С преобразованием русских букв ВВЕРХ<=>вниз у меня долгая история. Сначала (в девяностых) я написал что-то вроде вашего и заменил ВСЕ вызовы caps/lower на свои _caps/_lower. Позже сделал таблицей. А совсем позже всё же собрался, нашёл, где в редакторе это используется (и в ядре /EXE/ тоже внутренне используется, в меню, например) и поменял в EXE. Причём пришлось применить изворотливость, так как там места совсем не было в окрестностях этих функций, но были места в концах оверлейных модулей, по нескольку байт, так и втискивал. Это всё в IDB, конечно, видно.

===

А мой отладчик (на вашем скрине его зпуск) разве работает? А то я уже не помню, мне казалось, что нет. Связано это с тем, что я изменил концепцию компиляции (в связи с добавлением препроцессора), а макроотладчик под это дело не подстроил (кажется?). Я уже не помню, что там, но там минимально, так как все исходники при отлаживании нужно брать из TEMP, а не из SRC. Там ещё что-то где-то, но я увы забыл... Если работает, то давайте сюда скрин, интересно.

===

Да, если вы собираетесь использовать macro_addr, то примите во внимание, что его значение может меняться во время работы одного макро. То есть, сохранив macro_addr в переменной и использовав эту переменную в дальнейшем, вы рискуете. Используйте только macro_addr и только сразу перед употреблением. Для этого изменения macro_addr есть даже "специальный бит", см. medebug.s строки 457-458.
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 418
Зарегистрирован: 11 апр 2011, 13:49
Откуда: At Home

Multi-Edit - мелочи

Сообщение SergeCpp » 12 июл 2014, 02:42

Попробуйте "у меня" нажать мышкой на:
1. номер страницы (если он есть /"Pg1"/ на рамке окна; он есть не всегда, в зависимости от файла/режима),
2. номер строки (вверху, на "L" тоже можно),
3. номер колонки (аналогично),
4. дату (что прямо под этими "L C"),
5. имя файла (что ниже даты, жёлтым цветом на рамке окна).

6. На буковке окна тоже можно, это уже не моё, так было изначально.

Alt+Control+Shift, когда на экране -- диалог (аналогичное есть в FoxPro и в Far).
Shift+Esc -- выйти по Esc из всех диалогов, в которые мы забрались (пример: Control+F, F3, F3).

А теперь включите ScrollLock и запустите редактор Изображение.
Последний раз редактировалось SergeCpp 12 июл 2014, 02:52, всего редактировалось 1 раз.
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 418
Зарегистрирован: 11 апр 2011, 13:49
Откуда: At Home

Re: Multi-Edit

Сообщение Nika » 12 июл 2014, 04:15

SergeCpp писал(а):Такие вещи делаются (и легче писать и быстрее работает) таблицами перекодировки, ...
Согласен. Но размер таблиц может намного превышать размер кода бестабличного преобразования.
SergeCpp писал(а):...А совсем позже всё же собрался, нашёл, где в редакторе это используется (и в ядре /EXE/ тоже внутренне используется, в меню, например) и поменял в EXE.
Аналогично попытался сделать и я в MEL. Ещё году этак в 97м. Но там действительно мало места - и используется простое компактное вычисление только для латиницы. Короче, сделал я врезку (прыжок в MEL.mz.29683h не помню куда, вместо каких-то строчек пытался втиснуться - места было явно мало. Паскаль всё-таки компактный код создаёт...), сразу не пошло как следует, .. Я и забросил это дело, решив позже (чуть чуть..) сделать всё таблично через макросы. А дальше я подсел на KEDIT и это ушло на второй ... десятый план. Плюс появилась ещё версия MEW.EXE (ну та, где фонты 80х33 поредактированы в cp1251) и всё усложнилось с этим LOW\UPPER. Забросил. Сейчас всплыло - может, сделаю.
Вообще, я и в клавиатурном досовском драйвере (да и.. везде) все такие вещи делал таблично. Действительно, и удобно и быстро работает. Размером в данном случае тут можно (и лучше) пренебрегать. В данном конкретном случае "бес попутал"... Незнакомый язык. Два даже (СМАС & MEMAC). Я по версии MEMAC 2.01e сделал неприятный вывод, что он болезненно реагирует на выражения типа (например) "a:=1". Нужно писать "а := 1" (пробелы). Это меня насторожило, и я сейчас не доверяю всяким изящным конструкциям в этом макро-языке.

SergeCpp писал(а):Да, если вы собираетесь использовать macro_addr, то примите во внимание, что его значение может меняться во время работы одного макро.
--Хм.. Из контекста использования я было подумал, что это константа для текущего запущенного макроса.. Спасибо, учту.

SergeCpp писал(а):Попробуйте "у меня" нажать мышкой на: [...]
Даа, такие мелочи делают работу в редакторе комфортной.
В хороших редакторах есть возможность самому делать себе всякие такие "вкусняшки". А тут всё по делу.
(Кстати, мне понравился тот альтернативный "Screen Layout B". Ничего лишнего на экране).

SergeCpp писал(а):... интересно -- что именно вызывает вопросы.
В общем-то, я вглубь стараюсь не влазить. Пока всё б.м. ясно.
Но - не смейтесь - мне не ясно, как активизировать отладчик.
Что в вашей сборке, что в стандартной - пункт "Debug macro" работает у меня абсолютно идентично пункту "Run macro"... (.MAP я рядом кладу, не в этом дело.) Вот это меня обескураживает. Правда, я не сильно расстраиваюсь, работается нормально и без "фуллскрин дебуггера".
А запускал я фирменный medebug.mac в вашей сборке потому, что пытаюсь запустить его в MEL. Безуспешно, как я описывал.
(Там сейчас специально оставлен "холостой" пункт меню "Debug macro", чтобы можно было medebug.MAC просто положить рядом c MEL.EXE и всё работало. Но вряд-ли что-то из этого получится..).

-- Добавлено --
А функция REDRAW работает как надо. Спасибо за замечание. Всёже примеры стОит иногда смотреть и руководства читать.
Но что есть, переделывать уже не буду - работает вроде и с теми вывертами, что у меня.
Последний раз редактировалось Nika 12 июл 2014, 05:39, всего редактировалось 28 раз(а).
Nika
Мастер Даунгрейда
 
Сообщения: 587
Зарегистрирован: 17 окт 2013, 00:21

Multi-Edit — запуск макроотладчика

Сообщение SergeCpp » 12 июл 2014, 06:39

(Очень кратко и поверхностно! Потому что тут очень много и надо бы собраться и в основную тему написать.)

1. Запускаете редактор в режиме программиста (левый Control при запуске).
2. Открываете _test.s.
3. В _t_main() пишете две эти строки:
Код: Выделить вс
void _t_main()
{
  int i = 0;

  i = factorial( 6 );

4. Нажимаете F9, выбираете там "Debug CMAC macro", нажимаете Enter и ждёте (там в первый раз много чего интересного и увлекательного происходить будет).
5. "No errors" -- вверху слева -- так (на всякий случай, мало ли)? Так -- дальше. НЕ ТАК -- goto пункт 3.
6. Нажимаете Alt+F6 (ага). Нажимаете Shift+F3 (или просто F3), находите TEMP\_TEST.S, нажимаете Enter, файл открылся.
7. Переходите в нём к строке 53 (ну, это неважно, но уж переходите, мало ли).
8. Нажимаете Alt+Shift+F9. В поле Command есть _TEST^_t_main? Если есть, идём к пункту 9. Если нет, нажимаете на клавиатуре курсорную "вниз" и это _TEST^_t_main там выбираете, нажав в том списке Enter и тоже к пункту 9.
9. Запускаем отладку, нажав Enter.
10. Запустился отладчик? У меня -- запустился.
11. Нажимаем F7, F7, F7, F7, F8 (ЭФ-ВОСЕМЬ).
12. Двигаемся клавиатурной стрелочкой "вправо" до начала ff.

Сверяем скрины (отличаться может только первый адрес в ЗАГОЛОВКЕ DOS-ОКНА, тот, что сразу после "Debugging", ну и часы, что в углу) -- я сверил (два раза запускал), у меня OK:

Изображение
В полный размер: http://old-dos.ru/screens/1328/me_macro_debugger_brief_1.png

13. Побегав стрелочками по этой строке, нажимаем F3 на f, i, ff.
14. Мы в начале ff. Нажимаем F2, пишем 789:

Изображение
В полный размер: http://old-dos.ru/screens/1328/me_macro_debugger_brief_2.png

15. Нажимаем Enter:

Изображение
В полный размер: http://old-dos.ru/screens/1328/me_macro_debugger_brief_3.png

16. Нажимаем F7 и двигаемся курсором к f.

Изображение
В полный размер: http://old-dos.ru/screens/1328/me_macro_debugger_brief_4.png

Можно понажимать Alt+B, Alt+H, Alt+D (Alt+O не реализовано).
Мышкой или Tab можно переключаться в Watch и обратно.
Можно, пока не вышли из отладки, курсором забраться выше, там (строка 380 и выше) есть интересности вида r_flags, r_ds, r_dx, r_bx, r_ax (для них Alt+H и пригодится) -- на них курсором нужно встать, чтоб видно было.
Там ещё выше (строка 367) есть некое "~O~H~", на нём можно встать курсором, нажать Shift+F2, Enter, 12345, Enter, и посмотреть, что будет.

Далее -- самостоятельно :) F1 -- работает :)

//
Последний раз редактировалось SergeCpp 12 июл 2014, 07:38, всего редактировалось 2 раз(а).
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 418
Зарегистрирован: 11 апр 2011, 13:49
Откуда: At Home

Пред.След.

Вернуться в Поиск программ и игр

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1