ПОБЕДИТ - Редактор текстового буфера

Советский компьютер Радио-86РК (1986) и его клоны

Moderator: Shaos

User avatar
Alikberov
Doomed
Posts: 347
Joined: 15 Oct 2019 01:10
Location: Tashkent
Contact:

ПОБЕДИТ - Редактор текстового буфера

Post by Alikberov »

Для РАДИО-86РК существует, как минимум, два текстовых редактора: Однако, на практике хотелось бы что-нибудь компактнее и с другой адресной посадкой. Ещё лучше, если код редактора уместился бы в другое ПЗУ, так как Монитор по директиве U уходит на адрес F000.

Наконец-то дошли руки до битья кода редактора текста.

Представляемый здесь редактор является попыткой разработки с нуля всего кода с поддержкой некоторых современных фишек.
  • Имеется поддержка горизонтальной прокрутки (клавиши F2/F4 или световое перо) длинных строк (как в NortonCommander)
  • Вертикальная прокрутка курсорными клавишами или световым пером (мышью) на границах экрана
  • Клавиши DEL/HOME/END конкретно в онлайн-эмуляторе работают по назначению
  • Клавиши HOME/END на больших строчках срабатывают стандартно
Однако, на данный момент:
  • Выводится отладочная информация вверху (адрес строки; код токена и его индекс; шестнадцатеричное 24-битное представление целой/дробной части числа)
  • Имеются местами глюки
Код очень капризный и сложный в отладке, так как разрабатывается всего несколько дней в рамках экспериментального интерпретатора.
Редактор решил написать, чтобы отладить работу промежуточных подпрограмм умножения/деления 24-битных чисел и поиска ключевых слов/токенов. Потому, вверху можно видеть всю информацию.
(Дробные части чисел E и PI представляются как B7E151 и 243F6A при наведении курсора на соответствующие позиции.)


Весь код (редактора) занимает (сейчас) менее 2 Кб (адрес с 3000 по 34FF).

Запустить и попробовать всё это безобразие можно по этой ссылке (прокрутка быстрее и до 254 позиций, но редактор ещё ограничен 127 символами на строку).
ссылка на прошлый вариант с ограничением на 127 для сравнения скорости
Директивой G3000 Монитора производится запуск редактора.
  • Редактор работает с буфером текста по любому адресу, который можно предварительно указать в регистре DE через директиву X Монитора
  • Весь код располагается по адресам 3000-34FF и запускается директивой G3000 Монитора
  • Размер кода в 1280 байтов позволяет уместить его на дополнительном ПЗУ по адресам F000-F4FF
  • Ячейка 3454 может принимать код FF (RST 7) или 00 (NOP) - с отладкой или без (это следует учитывать в случае записи в ПЗУ)
ВАЖНО!

Небольшая поправка.

Статус программы «Победит» понижается с "текстового редактора" до "редактора текстового буфера". :roll:

Причины: Код программы писался в рамках общего проекта ЯВУ Бейсик как продвинутый оператор «INPUT», чтобы закрыть тему проблемы ввода текста навсегда.

Тем самым, «ПОБЕДИТ»:
  1. Не должен уметь загружать файл текста (в Бейсике оператор INPUT вообще только для простого ввода строки)
  2. Не должен уметь сохранять буфер текста в файл
  3. Не должен уметь производить поиск или замену по ключевому шаблону (ни INPUT Бейсика, ни READLN Паскаля такого функционала не включают)
  4. Может использоваться в таких пакетах, как ASSEMBLER, PASCAL, FORTH, подменяя построчный редактор текста «ED.MIKRON»
  5. Тем не менее, гибкости кода редактора хватает, чтобы быть оболочкой "верхнего уровня", откуда функциональными клавишами можно проделать всё то, чего в нём не хватает (поиск/замена слов, запуск трансляции, сохранение на диск и т.п.)
P.S.: Иными словами, подпрограмму F8EE Монитора можно исключить из ПЗУ и вызывать «ПОБЕДИТ»: Получился бы вариант Монитора, где можно описывать своеобразные пакетные сценарии (ещё не «Batch» или «Bash», но уже не привычная унылая CLI.)
Attachments

Скриншот редактора
Скриншот редактора
rk86-light-editor.png (36.55 KiB) Viewed 8809 times

Last edited by Alikberov on 07 Dec 2024 22:27, edited 5 times in total.
begoon
Senior
Posts: 146
Joined: 23 Aug 2012 00:06
Location: 188.220.42.216

Re: Маленький Кустарный Экранный Редактор

Post by begoon »

КРУТО!

Реально как будто РК имеет мышку.
User avatar
Alikberov
Doomed
Posts: 347
Joined: 15 Oct 2019 01:10
Location: Tashkent
Contact:

Re: Маленький Кустарный Экранный Редактор

Post by Alikberov »

  • Повысилась скорость отображения буфера
  • Число символов на строку может достигать 255
  • Улучшена вставка табуляции
  • Двойной клик мышки (светового пера) или клавиша F1 вызывает меню с передачей управления пользовательскому коду
  • Код транслирован в область F000-F5FF и может быть прошит в ПЗУ с запуском директивой U стандартного Монитора
Вот ссылка для онлайн запуска.
Attachments

Скриншот редактора
Скриншот редактора
rk86-light-editor.png (36.99 KiB) Viewed 8796 times

User avatar
Lavr
Supreme God
Posts: 16628
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Маленький Кустарный Экранный Редактор

Post by Lavr »

А что будет происходить с экраном, если курсором вправо пойти редактировать за экран длинную строку,
заканчивающуюся стрелкой => ?
Сделайте такой скриншот, если не трудно...
iLavr
User avatar
Alikberov
Doomed
Posts: 347
Joined: 15 Oct 2019 01:10
Location: Tashkent
Contact:

Маленький Кустарный Экранный Редактор

Post by Alikberov »

Всегда интересно было, как устроен редактор в Norton/Volcov Commander с поддержкой длинных строк.
И вот, спустя 25 лет, удалось разработать подобный код и под РК. 8)

До 2 Кб осталось ровно 512 байтов. И вот думаю, что с ними делать?
Если весь код в перспективе прошивать в дополнительное ПЗУ, нужно либо оставить там резервное пространство, либо дописать и устранить все причуды кода.
Lavr wrote:А что будет происходить с экраном, если курсором вправо пойти редактировать за экран длинную строку,
заканчивающуюся стрелкой => ?
A разве код по ссылке не запускается?
Lavr wrote:Сделайте такой скриншот, если не трудно...
Как говорилось выше, всё почти так, как в редакторе Norton Commander.
Attachments

Прокрутка на 1 позицию
Прокрутка на 1 позицию
rk86-light-editor-pan1.png (36.93 KiB) Viewed 8755 times

User avatar
Lavr
Supreme God
Posts: 16628
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Маленький Кустарный Экранный Редактор

Post by Lavr »

Alikberov wrote:
Lavr wrote:А что будет происходить с экраном, если курсором вправо пойти редактировать за экран длинную строку,
заканчивающуюся стрелкой => ?
A разве код по ссылке не запускается?
Lavr wrote:Сделайте такой скриншот, если не трудно...
Как говорилось выше, всё почти так, как в редакторе Norton Commander.
Image
Спасибо! Это именно то, что я и ожидал увидеть! :kruto:

В своё время я интересовался, почему в ZX-Spectrum не сделали текстовый редактор по такому же принципу?

Image

Ответом мне было, что это - "лишнее тормозилово". :-?

Но выходит, что можно и попробовать сделать так!
iLavr
Pyk
Maniac
Posts: 250
Joined: 21 Jan 2003 11:08
Contact:

Re: Маленький Кустарный Экранный Редактор

Post by Pyk »

А можно в виде RK-файла посмотреть? Хочется попробовать в emu80 запустить...
User avatar
Alikberov
Doomed
Posts: 347
Joined: 15 Oct 2019 01:10
Location: Tashkent
Contact:

Re: Маленький Кустарный Экранный Редактор

Post by Alikberov »

Pyk wrote:А можно в виде RK-файла посмотреть? Хочется попробовать в emu80 запустить...
Attachments

rk86-light-editor-alpha.rkr.zip
Внимание!
Код подкорректирован в качестве альфа-версии, специально под просьбу
(4.21 KiB) Downloaded 246 times

User avatar
Alikberov
Doomed
Posts: 347
Joined: 15 Oct 2019 01:10
Location: Tashkent
Contact:

Маленький Кустарный Экранный Редактор

Post by Alikberov »

Устранил несколько багов и выправил процедуры вставки новой строки и забоя.
(Нужно ещё код подчистить от мёртвых инструкций.)

Запустить онлайном можно здесь.
В целом, код редактора занял практически 2 Кб.

Всё же склоняюсь к варианту прошить его в дополнительное ПЗУ.
Только нужно разобраться с механизмом размещения текста, чтобы корректно взаимодействовать с Ассемблером или Паскалем.

Думаю, всё это можно спихнуть на пользовательский код, так как редактор ему передаёт всю информацию через регистры, что можно видеть в самом верху.
Снизу - декодировка токенов, целых чисел и дробных частей.
Attachments

rk86-light-editor-alpha1.rkr.zip
Загрузочный rkr-файл для оценки производительности в других эмуляторах
После запуска G0 через директиву X выставите PC=800 и DE=2100
(4.56 KiB) Downloaded 255 times

begoon
Senior
Posts: 146
Joined: 23 Aug 2012 00:06
Location: 188.220.42.216

Re: Маленький Кустарный Экранный Редактор

Post by begoon »

Боковой скроллинг -- просто ураган! :kruto:
Pyk
Maniac
Posts: 250
Joined: 21 Jan 2003 11:08
Contact:

Re: Маленький Кустарный Экранный Редактор

Post by Pyk »

В Emu80 работает, клавиши не совпадают, правда.
Ну и на реале скорее всего будет рассинхронизация позиции курсора со световым пером, но это нужно пробовать, точное значение смещения до сих пор на реале не проверено (хотя по опыту Кристы, кажется 8 символов).

Можно покритикую немного? Задумка отличная, но с производительностью просто беда какая-то, думаю, что стоит попытаться оптимизировать. Тот же скроллинг, например, можно сделать с использованием стековых операций.

Я еще в 90-х начинал делать что-то подобное, до конца не довел, но довольно шустрого скроллинга, помню, добиться удалось. Правда, то было для Партнера, там мне удалось кроме прочего переписать процедуру ввода с клавиатуры с использованием прерываний, так что во время задержки автоповтора клавиш редактор мог делать что-то полезное, например скроллить экран. На РК так не получится, но все равно можно попробовать также уменьшить задержку автоповтора и т.п. А вообще он тормозит даже при простом перемещении курсора по экрану, отображение служебной информации много времени отнимает?
User avatar
Lavr
Supreme God
Posts: 16628
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Маленький Кустарный Экранный Редактор

Post by Lavr »

Pyk wrote:В Emu80 работает, ...
А под Emu b2m у меня с первого захода рухнуло всё... :-?

scr_b2m.PNG
scr_b2m.PNG (61.67 KiB) Viewed 8554 times

Надо будет другие варианты эмулятора РК попробовать.
iLavr
begoon
Senior
Posts: 146
Joined: 23 Aug 2012 00:06
Location: 188.220.42.216

Re: Маленький Кустарный Экранный Редактор

Post by begoon »

Lavr wrote:Надо будет другие варианты эмулятора РК попробовать.
Ага! Эмулятор rk86.ru называется :-)
Pyk
Maniac
Posts: 250
Joined: 21 Jan 2003 11:08
Contact:

Re: Маленький Кустарный Экранный Редактор

Post by Pyk »

Lavr wrote:А под Emu b2m у меня с первого захода рухнуло всё... :-?
Странно, у меня запустился, может быть версия другая или как-то по-другому грузил?

Кстати, еще она проблема с этим редактором - он использует все 30 строк текста и 72 символа в строке.
Такое не факт что даже все мониторы смогу показать, про телевизор и не говорю.
Надо бы убрать полезную информацию из области гашения.
И если по вертикали можно запрограммировать ВГ75 на бОльшее количество строк, то по горизонтали придется наверное пожертвовать частью символов. Посмотреть на то, как будет выглядеть картинка на стандартном телевизоре, можно, нажав в Emu80 Alt-V.
User avatar
Lavr
Supreme God
Posts: 16628
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Маленький Кустарный Экранный Редактор

Post by Lavr »

Pyk wrote:
Lavr wrote:А под Emu b2m у меня с первого захода рухнуло всё... :-?
Странно, у меня запустился, может быть версия другая или как-то по-другому грузил?
Там несколько версий РК-86 же в меню. Выбрал самый первый.
Ну а уж файл типа *.rkr я "как-то по-другому грузить" никак не мог... :wink:


P.S. Но со второго захода всё заработало. Значит имел место "визит-эффект"... :wink:

scr_b2m2.PNG
scr_b2m2.PNG (39.48 KiB) Viewed 8513 times

iLavr
Post Reply