
Сообщение от
Robus
Снова низкий поклон !!!
Вообще-то, если уж смотреть совсем в корень проблемы, то можно пойти очень неординарным путём ... Может это натолкнёт тебя на новые мысли ...
Попробуй сделать моментальную компиляцию ... То есть, если кто-то пишет JP Start, то так и сохраняешь 195,lo,hi ... Только Lo/Hi, будет указывать на таблицу меток, от которой никак не уйти. Конечно тогда возникают трудности с ремарками ... Но и тут можно обойти проблему, просто сделай ещё один буфер, где будут лежать ремарки а заодно и DB, с указанием на строку, где её набивали ... Я понимаю, что редактирование такого извращённого текста будет сложным, но экономным. На встречу этой идеи могу предложить другой метод редактирования текста, что ускорит обработку редактирования в тысячи раз, а если быть точным, то по сути в бесконечность ... Представь себе, что у тебя есть кусок памяти в 40000 байт, куда загружен текст в конец этого блока. При нажатии вниз, ты всего-то переносишь в начало блока строку. Ежели кто-то набивает текст, то ты просто в конец текущей строки добавляешь байты (текст). Просто человек при редактировании всё равно пользуется переходом вверх/вниз, а тебе всего-то нужно перенести пару байт соответствующей строки.
00000 ... ORG 16384
00002 ... LD HL,16384
00005 ... LD DE,16385
00008<--- Тут курсор
39992 ... LD BC,6911
39995 ... LD (HL),L
39996 ... LDIR
39998 ... DI
39999 ... HALT
Ежели кто-то нажал вниз будет:
00000 ... ORG 16384
00002 ... LD HL,16384
00005 ... LD DE,16385
00008 ... LD BC,6911
00011<--- Тут курсор
39995 ... LD (HL),L
39996 ... LDIR
39998 ... DI
39999 ... HALT
То есть, по-сути, всё, что остаётся это просто высветить текст, или перенести его скроллом, и высветить только одну строчку, которую редактируем !
Конечно я утрировал, поскольку там есть и ORG, его то же нужно как-то закодировать, но это дело техники ... Если тебя это заинтересовало, то могу дать уже готовый текстовый редактор, который я делал в 94-ом году. Там, кстати, сделан совершенно любой шрифт по X и Y, только нарисовать и всё. Причём, каждая буква может быть своего размера. В турбо, при условии, что высота шрифат 2 пиксела, получается один фрейм, при скроллировании. Если взять фонт высостой в 6 пикселей, то получается один фрейм и без турбо. Там применён этот метод редктирования, но я совсем не помню, сколько он при этом жрёт памяти, но один фрейм гарантирую. Я всегда свои тексты набивал в нём, поскольку очень люблю один фрейм !!!