Важная информация
Страница 1 из 13 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 124

Тема: Как организовать память для текстового редактора?

  1. #1
    Veteran
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,656
    Благодарностей: 1241
    Записей в дневнике
    21

    По умолчанию Как организовать память для текстового редактора?

    На процессоре 8080

    Как хранить текст, что бы можно было без тормозов удалять, добавлять строки? Удалять, добавлять символы в строке?

    Единственное, что приходит в голову, это:
    1) Грузим текст в память, убеждаемся, что там нет символов с кодом 1
    2) Составляем массив, в который записываем адреса строк.
    3) При редактировании, если потребуется увеличить размер строки, мы копируем строку в конец текста. И подправляем указатель на строку. В начале старой строки пишем символ с кодом 1. Дальше можно увеличивать строку, пока хватит адресного пространства.
    4) При редактировании, если потребуется уменьшить размер строки, в конец строки дописываем код 1
    5) Когда ОЗУ закончится, мы запускаем дефрагментацию памяти/сборку мусора. Все строки в начале которых 1 выкидываются. 1 выкидывается из конца строк.
    (Сборку мусора можно и по фону сделать.)
    6) Возможно стоит размещать новые строки не в конце памяти, а в свободных строках подходящего размера. Поиск таких строк можно оптимизировать, построив упорядоченный массив.
    Последний раз редактировалось vinxru; 28.03.2013 в 01:24.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Veteran
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Благодарностей: 565

    По умолчанию

    Ещё как вариант
    Текст до курсора - от начала памяти и до курсора
    Текст после курсора в конце памяти
    Т.е свободное место в середине
    При перемещении курсора - перемещаем строки в памяти
    А т.к в основном перемещение в ближайших строках то вообще нет тормозов
    Да и своп в такую схему легко добавить

    Зато нет необходимости сдвигать блок при вставке в начало текста
    Да и доп расходом по памяти мало

  4. Эти 5 пользователя(ей) поблагодарили esl за это полезное сообщение:
    alone (04.04.2013), Barmaley_m (31.03.2013), hobot (28.03.2013), psb (28.03.2013), vinxru (28.03.2013)

  5. #3
    Veteran
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,656
    Благодарностей: 1241
    Записей в дневнике
    21

    По умолчанию

    Отличная идея.

  6. #4

    По умолчанию

    чо во флейме то? хоть в программировании бы опубликовался
    С уважением,
    Jerri / Red Triangle.
    [02.05.2014] не забудь этот день. Чубайс должен умереть. Dixi.
    [l'Abbey des morts TSEvo EV...5%] kiwi кошелек +79178162712

  7. #5
    Moderator Аватар для Error404
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    3,300
    Благодарностей: 881

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    При перемещении курсора - перемещаем строки в памяти
    А т.к в основном перемещение в ближайших строках то вообще нет тормозов
    PgUp, PgDown, Ctrl+Home, Ctrl+End - куча копирования.
    Вообще в сети есть исходники редакторов для CP/M, в т.ч. и с виртуализацией тестового буфера.
    Лучше сделать и жалеть, чем не сделать и жалеть.

  8. #6
    Veteran
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Благодарностей: 565

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    PgUp, PgDown, Ctrl+Home, Ctrl+End - куча копирования.
    Вообще в сети есть исходники редакторов для CP/M, в т.ч. и с виртуализацией тестового буфера.
    pgUp/pgDn - копейки (максимум размер экрана)
    Ctrl+Home/End - пользователь ожидает что это займет чуть дольше (подсознательно), да и редко это надо
    а раздражаеют постоянные тормоза

    да и тут получаем за очень не дорого строки произвольной длины.

    собственно это вариант
    правда есть подозрение что в TASM был как раз он
    вроде как он был в MIM (микромир -korvet/msx/etc), TOR-MSX

  9. Этот пользователь поблагодарил esl за это полезное сообщение:
    Barmaley_m (31.03.2013)

  10. #7
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    Павлодар
    Сообщений
    2,053
    Благодарностей: 966

    По умолчанию

    Ну вы слишком много кушать. Микрон, конечно, тормозная скотина, но ED^7000, он же "Редактор текстов *Практик*" вполне сносно работал с текстами, занимающими от 1200H до 7EFFH (т.е. 27КБ) на Специалисте с его 2МГц. А я переместил его на Орион с адреса A000H, увеличив размер буфера. и там он у меня в 90е тоже вполне нормально бегал. Его основная болезнь - это медленный вывод текста. После подмены штатной ПСПЗУ на NCшную с быстрым выводом - он таки летал. Ну а текст у него сплошным куском был, с разбивочкой строк кодом 0D.
    Последний раз редактировалось HardWareMan; 28.03.2013 в 15:40.

  11. Эти 2 пользователя(ей) поблагодарили HardWareMan за это полезное сообщение:
    perestoronin (02.04.2013), vinxru (28.03.2013)

  12. #8
    Veteran
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,656
    Благодарностей: 1241
    Записей в дневнике
    21

    По умолчанию

    Тормоза будут не такие и больше.

    Переместить 36 Кб текста в памяти, а это как раз оперативка Специалиста, будет быстрее, чем перерисовать экран размером в 12 Кб шрифтом в 6 пикселей. То есть шрифтнадо двигать и AND+OR накладывать на экран.

  13. #9
    Veteran
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Благодарностей: 565

    По умолчанию

    Цитата Сообщение от vinxru Посмотреть сообщение
    Тормоза будут не такие и больше.

    Переместить 36 Кб текста в памяти, а это как раз оперативка Специалиста, будет быстрее, чем перерисовать экран размером в 12 Кб шрифтом в 6 пикселей. То есть шрифтнадо двигать и AND+OR накладывать на экран.
    эт понятно
    в таком случае можно выводить построчно, и проверять, не надо ли еще скролить (и если надо - не обновлять что осталось)
    скорость реакции будет заметно выше, а "временный бред" на экране - терпимо

    так было на Корвете в ChiWorker сделано.
    Последний раз редактировалось esl; 28.03.2013 в 16:43.

  14. #10
    Veteran Аватар для Hacker VBI
    Регистрация
    05.03.2013
    Адрес
    г. Канев, Украина
    Сообщений
    1,423
    Благодарностей: 728

    По умолчанию

    А если работать с буффером? и обрабатывать блоки при выходе курсора за его пределы?

Страница 1 из 13 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Алгоритм текстового Quest'a
    от ALKO в разделе Программирование
    Ответов: 11
    Последнее: 23.12.2010, 01:47
  2. Как проще код из текстового файла -> Alasm-файл?
    от TomCaT в разделе Программирование
    Ответов: 10
    Последнее: 28.05.2010, 15:53
  3. Адаптация текстового редактора
    от Raydac в разделе Софт
    Ответов: 1
    Последнее: 09.06.2008, 13:27
  4. Интересная идея текстового интерфейса в играх
    от Black_Cat в разделе Программирование
    Ответов: 3
    Последнее: 18.11.2006, 16:22
  5. Проект муз. редактора для AY
    от Bulba в разделе Музыка
    Ответов: 36
    Последнее: 09.09.2005, 19:32

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •