Multi-Edit 7.0

Софт только для использования в DOS

+1

Сообщение SergeCpp » 17 июл 2014, 20:16

Интересные отличия в текстах отладчика.

Версия J:
Код: Выделить всё
   if(  var_index != -1  ) {
    switch( var_type & 0x7f )
    {
      case 1 :
      do_var_type1:
        taddr = memp( str_addr + ((var_index ) * str_record_size) + 1 ); // "+1"
        var_max = memw( taddr + 2 );
        jx = memw( taddr );
        tstr2 = memstr( taddr + 4, jx );
        break;


У меня:
Код: Выделить всё
#define MEMP_STR memp( p_strs + ( watch_index * 5 ) ) // никакого "+1"
...
  if( watch_index != WATCH_ERROR )
  {
    watch_ok = TRUE;

    switch( WATCH_IS )
    {
    case VAR_STR :
    _get_str_watch:
      var_addr  = MEMP_STR;

      str_len   = memw  ( var_addr + 2 );
      watch_int = memw  ( var_addr     );
      temp_str  = memstr( var_addr + 4, watch_int );
      break;


Подобное там в нескольких местах с этим "+1". Я вот никак не вспомню: 1) было ли "+1" в том тексте, что я получил путём ручной декомпиляции, и: 2) если было, то почему я его убрал. Так как это много где и ошибка получения неправильного адреса была бы сразу видна, то тут что-то имелось в виду. Но вот что?.. Или они в J изменили формат хранения переменных?..
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 559
Зарегистрирован: 11 апр 2011, 12:49
Откуда: At Home

+1

Сообщение Nika » 17 июл 2014, 21:18

А может, то у них глюк был в самом ME.EXE и пришлось подстроить MEDEBUG под эту фичу версии 7.00... (?)
И в паблик-версии medebug 7.00j и в DownPorted версии medebug 6.10p та "+1" присутствует.
Я глазам своим поверить отказывался - но заработало в 7.00p именно без той "+1".
(Сначала поборол версию medb610p.S. Потом, когда полез в medb700p.S, уже был готов к чему-то подобному).
Зато вполне объяснимая замена str_record_size в вер.6 - да, поменялась структура.
Ну, и ещё момент, помеченный как "//{add ver6" в medb610p.S.
Вот это и были три пакстных момента, с которыми пришлось повозиться.
Остальное ерунда (ну, там, формат MAP-файла и путь к нему).

-- Добавлено --
Вот, кстати, ещё одно, что можно было бы сделать для "улучшения" версии 7.хх - подбросить туда последний MEMAC.EXE v.6.10a
и подкорректировать medebug.s (v.7.0j) так, чтобы можно было отлаживать и программы в SRC формате, а не только в S-формате.
Примерно как это в ME v.6.10p. Но там проще - там у CMAC и у MEMAC одинаковый формат MAP-файла.
Последний раз редактировалось Nika 17 июл 2014, 21:39, всего редактировалось 12 раз(а).
Nika
Мастер Даунгрейда
 
Сообщения: 736
Зарегистрирован: 16 окт 2013, 23:21

Отзыв о Multi-Edit

Сообщение SergeCpp » 23 янв 2019, 12:28

ztmak (LJ) 2016-10-01 писал(а):Реплика дилетанта, с 1990-х и по сю использующего а) Multi-Edit для DOS и б) XP. В WIN-7 досовское не заработало, а мне никак без Multi-Edit для DOS.

https://ztmak.livejournal.com/14777.html или http://archive.li/uoqH2
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 559
Зарегистрирован: 11 апр 2011, 12:49
Откуда: At Home

Multi-Edit 7.0 and Total Commander for Android

Сообщение SergeCpp » 09 сен 2019, 12:10

Установил только что Total Commander для Android, а там переключение панелей реализовано с изменением их размера (увеличением активной и уменьшением пассивной) -- совсем как в программе работы с файлами в Multi-Edit (вызывается по Shift+F3) и даже стрелочка вправо так же работает (как Tab или Shift+Tab; стрелочка влево там выполняет другую функцию).

Изображение
В полный размер.

Изображение
В полный размер.
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 559
Зарегистрирован: 11 апр 2011, 12:49
Откуда: At Home

Re: Multi-Edit 7.0

Сообщение Gawobeka » 10 ноя 2019, 21:31

Извиняюсь, если это уже обсуждалось. Интересует, можно ли декомпилировать файлы .mac? (в том числе в ранних версиях ME). В версии 2 неправильно работает макрофункция форматирования абзаца при длине строки более 80 символов. Любопытно, можно ли попробовать ее исправить.
Аватара пользователя
Gawobeka
Мастер Даунгрейда
 
Сообщения: 351
Зарегистрирован: 08 дек 2012, 21:11
Откуда: Кострома

MAC

Сообщение SergeCpp » 11 ноя 2019, 05:25

Декомпилировать файлы MAC можно. Я это делал для файла MEDEBUG. Автоматических средств у меня не было и я не знаю о существовании таковых. Поэтому я самостоятельно изучал структуру файла MAC и значения кодов операций в этом файле. В помощь были — дизассемблированный редактор и макрокомпилятор.

В версии 2, очевидно, всё это придётся проделывать уже вам — самостоятельно. Времени это занимает много (я несколько раз брался и отступался, с одного раза точно бы не осилил).

Посмотрите у меня файл DOC\MAC в архиве ME_PLUS [ http://old-dos.ru/files/file_1328.html#file1852 ]. Но версия 7, разумеется, это не 2.

Или можете написать новую функцию форматирования абзаца, взяв таковую, например, у меня (в том же архиве есть текст, не помню уже имя S-файла).
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 559
Зарегистрирован: 11 апр 2011, 12:49
Откуда: At Home

Re: Multi-Edit 7.0

Сообщение Nika » 11 ноя 2019, 18:49

Gawobeka писал(а):Извиняюсь, если это уже обсуждалось. Интересует, можно ли декомпилировать файлы .mac? (в том числе в ранних версиях ME). В версии 2 неправильно работает макрофункция форматирования абзаца при длине строки более 80 символов. Любопытно, можно ли попробовать ее исправить.
В версии 2 в самом редакторе ограничение на длину строки в 80 символов.
(а не 2000 симвлов, как в последних версиях).
Имхо средствами MAC там мудрить бесполезно.
Такое вот реальное ограничение.
Последний раз редактировалось Nika 11 ноя 2019, 18:50, всего редактировалось 1 раз.
Nika
Мастер Даунгрейда
 
Сообщения: 736
Зарегистрирован: 16 окт 2013, 23:21

Re: Multi-Edit 7.0

Сообщение Gawobeka » 12 ноя 2019, 21:56

У меня Фотон и ME2 работают с длиной строки до 254 символов.
Аватара пользователя
Gawobeka
Мастер Даунгрейда
 
Сообщения: 351
Зарегистрирован: 08 дек 2012, 21:11
Откуда: Кострома

Форматирование текста

Сообщение SergeCpp » 13 ноя 2019, 00:22

Кстати, я вспомнил, что изначально (в оригинальных версиях 7) форматирование полагается на функцию ядра (реализована и находится в EXE) для форматирования строки (не помню, как называется). У той функции есть разные особенности (из которых я помню лишь то, что после конца предложения /точки точно, вроде бы ещё воскл. и вопр. знаки/) ставится два пробела. Это можно видеть по разным текстам, находящимся в оф. поставке. Поэтому, в частности, я и не использую эту функцию ядра при форматировании в своей модификации.

То есть, весьма вероятно, что во 2 версии всё устроено так же и вам или придётся писать своё форматирование или посмотреть, как там в ядре 2 версии реализована та функция форматирования строки, чтоб поправить там по возможности (константы, размеры буферов, ещё что).

Там макрокомпилятор есть? В нём можно пока по-быстрому (в Hiew) посмотреть, есть ли там имя функции, связанной с форматированием (в хелпе там может быть имя, или же так, "на вид" видно будет).

Если есть, то определить, где там она в EXE (без дизасма тут вряд ли), и смотреть, что там за реализация.

В общем, работы много будет.
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 559
Зарегистрирован: 11 апр 2011, 12:49
Откуда: At Home

Re: Multi-Edit 7.0

Сообщение Nika » 13 ноя 2019, 06:48

Gawobeka писал(а):У меня Фотон и ME2 работают с длиной строки до 254 символов.
Да, ошибся, - не 80 символов, а 254 символа.
Остальное верно, с учётом написанного SergeCpp.
Последний раз редактировалось Nika 13 ноя 2019, 06:48, всего редактировалось 1 раз.
Nika
Мастер Даунгрейда
 
Сообщения: 736
Зарегистрирован: 16 окт 2013, 23:21

Форматирование текста

Сообщение SergeCpp » 13 ноя 2019, 09:20

Есть, кстати, вариант вполне возможный:

1) Функция форматирования в EXE имеет ограничение в 254 символа;
2) В макропрограмме форматирования размер одной или нескольких рабочих строковых переменных установлен в 80 символов.

В таком случае вполне достаточно изменить (увеличить с 80/0x50 до 254/0xFE) соответствующие байты в MAC-файле. Вот только поиск этих байтов (их адресов) без макротекстов будет тоже непрост.

P. S. Типа: "Можно снять 'Truncate spaces' и не обращаясь к настройкам редактора, изменив в файле INIT.MAC значение байта по адресу 0x266 с 1 на 0.".
Аватара пользователя
SergeCpp
Мастер Даунгрейда
 
Сообщения: 559
Зарегистрирован: 11 апр 2011, 12:49
Откуда: At Home

Re: Multi-Edit 7.0

Сообщение Gawobeka » 13 ноя 2019, 20:18

Спасибо за подсказки, правда, не знаю, когда мое мастерство дорастет до их использования :)
Аватара пользователя
Gawobeka
Мастер Даунгрейда
 
Сообщения: 351
Зарегистрирован: 08 дек 2012, 21:11
Откуда: Кострома

Re: Multi-Edit 7.0

Сообщение Nika » 14 ноя 2019, 07:55

Gawobeka писал(а):Извиняюсь, если это уже обсуждалось. Интересует, можно ли декомпилировать файлы .mac? (в том числе в ранних версиях ME). В версии 2 неправильно работает макрофункция форматирования абзаца при длине строки более 80 символов. Любопытно, можно ли попробовать ее исправить.

Проверил версию 2.01f - из странностей в той версии - это вообще отсутствующий макрос REFORMAT.
Поэтому добавил туда этот макрос, а также полезные макро PARENT, CASE866, COMM/UNCOMM.
Новый архив называется "Multi-Edit v.2.01f (fixed)" и лежит он на странице с остальными версиями 2.х:

http://old-dos.ru/index.php?page=files& ... ow&id=6378

- Каких-то странностей при форматировании текста длиной строки более 80-ти символов я там не заметил.
Равно как и в нетронутой англоязычной demo-версии 2.01g
Последний раз редактировалось Nika 14 ноя 2019, 08:07, всего редактировалось 2 раз(а).
Nika
Мастер Даунгрейда
 
Сообщения: 736
Зарегистрирован: 16 окт 2013, 23:21

Re: Multi-Edit 7.0

Сообщение Gawobeka » 14 ноя 2019, 23:36

Ошибка форматирования в Фотоне

1. Имеем абзац, состоящий из двух строк длиной около 150 символов.
2. Глюк проявляется не во всех случаях, а только при некоторых установках.
3. После команды Реформат форматируется только вторая строка, а строка, в которой стоял курсор, остается неизменной.
Вложения
Foton1.png
Foton1.png (7.34 Кб) Просмотров: 2326
Foton2.png
Foton2.png (13.75 Кб) Просмотров: 2323
Foton3.png
Foton3.png (10.78 Кб) Просмотров: 2324
Аватара пользователя
Gawobeka
Мастер Даунгрейда
 
Сообщения: 351
Зарегистрирован: 08 дек 2012, 21:11
Откуда: Кострома

Re: Multi-Edit 7.0

Сообщение Nika » 15 ноя 2019, 03:23

Gawobeka писал(а):Ошибка форматирования в Фотоне

1. Имеем абзац, состоящий из двух строк длиной около 150 символов.
2. Глюк проявляется не во всех случаях, а только при некоторых установках.
3. После команды Реформат форматируется только вторая строка, а строка, в которой стоял курсор, остается неизменной.
Значит, такая же ошибка будет и в ME 2.x. В Фотоне это макро один-в-один оттуда.
И наоборот, в русифицированную версию ME 2.01f я добавил отсутствующее макро REFORMAT из Фотона.
Чтобы исправить его, нужен сорс этого макроса. Или декомпилировать существующее, а это сложно.
SergeCpp написал об этом.
Последний раз редактировалось Nika 15 ноя 2019, 03:25, всего редактировалось 1 раз.
Nika
Мастер Даунгрейда
 
Сообщения: 736
Зарегистрирован: 16 окт 2013, 23:21

Пред.

Вернуться в Программы для DOS

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

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