Важная информация

User Tag List

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

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

  1. #1
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

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

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

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

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

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

  3. #2
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

  4. #3
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  5. #4
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,746
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    265
    Поблагодарили
    199 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    чо во флейме то? хоть в программировании бы опубликовался
    С уважением,
    Jerri / Red Triangle.

  6. #5
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Некоторые из моих поделок тут: https://github.com/serge-404

  7. #6
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

  8. #7
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,395
    Спасибо Благодарностей отдано 
    304
    Спасибо Благодарностей получено 
    594
    Поблагодарили
    440 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  9. #8
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

  10. #9
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

  11. #10
    Veteran Аватар для Hacker VBI
    Регистрация
    05.03.2013
    Адрес
    г. Канев, Украина
    Сообщений
    1,596
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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

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

Похожие темы

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

Ваши права

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