nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 23 Apr 2024 22:56



Reply to topic  [ 84 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next
Текстовый редактор ПОБЕДИТ 
Author Message
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 317
Location: Tashkent
Reply with quote
Pyk wrote:
В Emu80 работает, клавиши не совпадают, правда.
Файлом конфигурации переназначить на свой вкус можно ли?
Pyk wrote:
Ну и на реале скорее всего будет рассинхронизация позиции курсора со световым пером, но это нужно пробовать, точное значение смещения до сих пор на реале не проверено (хотя по опыту Кристы, кажется 8 символов).
А на одновибраторах с задержкой сигнала от светового пера на 50-60 мкс можно ли дело поправить, раз в знакоряде по 10 линий?
(Хотя, вообще-то сейчас проблема в том, какое и как световое перо физически подключить бы!)

А так, программно это решается одним байтом.
Pyk wrote:
Можно покритикую немного? Задумка отличная, но с производительностью просто беда какая-то, думаю, что стоит попытаться оптимизировать. Тот же скроллинг, например, можно сделать с использованием стековых операций.
Типа такого?
Code:
0000 2A F0 7F 31 D0 76 01 24-09 AF E3 33 0B B0 F2 0A
0010 00 C3 03 00
Pyk wrote:
А вообще он тормозит даже при простом перемещении курсора по экрану, отображение служебной информации много времени отнимает?
Попробуйте запустить редактор, но в PC директивой X пусть будет 0, в DE - 2100. Повлияло на производительность?

На самом деле, так ещё перед каждым выводом строки стоит вызов F812, иначе клавиатура очень вяло реагирует.
Pyk wrote:
Кстати, еще она проблема с этим редактором - он использует все 30 строк текста и 72 символа в строке.
Такое не факт что даже все мониторы смогу показать, про телевизор и не говорю.
Надо бы убрать полезную информацию из области гашения.
В самом начале разработки отображался голый текст.
Убрать нумерацию строк - не проблема, так как занимает кучу кода.
А вот для пользователя такой текст будет ли удобен?

P.S.: Спасибо за тестирование!


12 Apr 2023 10:02
Profile WWW
Novelist

Joined: 24 Aug 2006 02:14
Posts: 46
Location: pуcвoceмьнадцaть
Reply with quote
Pyk wrote:
...как будет выглядеть картинка на стандартном телевизоре, можно, нажав в Emu80 Alt-V.

Нет, Alt+V - это, как через тв-тюнер, а на телевизоре ещё меньше. :ewink:


Attachments:
File comment: TV-TUNER
tuner.jpg
tuner.jpg [ 80.82 KiB | Viewed 3887 times ]
File comment: TV1
TV1.jpg
TV1.jpg [ 74.79 KiB | Viewed 3887 times ]
File comment: TV2
TV2.jpg
TV2.jpg [ 83.38 KiB | Viewed 3887 times ]


Last edited by DDp on 13 Apr 2023 11:49, edited 1 time in total.

12 Apr 2023 10:15
Profile
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 317
Location: Tashkent
Reply with quote
DDp wrote:
Pyk wrote:
Lavr wrote:
...как будет выглядеть картинка на стандартном телевизоре, можно, нажав в Emu80 Alt-V.

Нет, Alt+V - это, как через тв-тюнер, а на телевизоре ещё меньше. :ewink:
Последнее - снимок с физического экрана?
Если на реальном железе, будьте добры высказаться о производительности.
(В режиме с отладчиком (PC=0800 в X) и без (PC=0000).)

Вижу, что верхняя и нижняя строки почти читабельны.
(Вообще-то верхнюю я сделал для личных нужд отладки.)

А вот левый край - удручает.
Первые символы строк не видно - это совсем плохо!

(Интересно, подстройка режима ВГ75 может как-то помочь? Типа, увеличить с 78 до 80 символов или изменить длительность ССИ.)


12 Apr 2023 10:25
Profile WWW
Novelist

Joined: 24 Aug 2006 02:14
Posts: 46
Location: pуcвoceмьнадцaть
Reply with quote
Alikberov wrote:
Последнее - снимок с физического экрана?

Изображения подписаны.
Alikberov wrote:
Если на реальном железе, будьте добры высказаться о производительности.
(В режиме с отладчиком (PC=0800 в X) и без (PC=0000).)

Emu80 достаточно точно эмулируется производительность.
Alikberov wrote:
(Интересно, подстройка режима ВГ75 может как-то помочь? Типа, увеличить с 78 до 80 символов или изменить длительность ССИ.)

Не стоит. В стандартном режиме использовать прямоугольник 64x25, но на пару символов правее.


12 Apr 2023 10:53
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Pyk wrote:
Lavr wrote:
...как будет выглядеть картинка на стандартном телевизоре, можно, нажав в Emu80 Alt-V.

Вот только, извините уж, но я этого не писАл... :-?

_________________
iLavr


12 Apr 2023 12:36
Profile
Maniac

Joined: 21 Jan 2003 04:08
Posts: 224
Reply with quote
Alikberov wrote:
Файлом конфигурации переназначить на свой вкус можно ли?

Увы, пока нет. В планах есть, но пока руки не дошли сделать...
Alikberov wrote:
А на одновибраторах с задержкой сигнала от светового пера на 50-60 мкс можно ли дело поправить, раз в знакоряде по 10 линий?

Думаю, должно получиться, хотя возможны нюансы. Непонятно, например, зачем на Кристе сдвинули экран относительно РК и Микроши. Есть подозрение, что из-за каких=то проблем со световым пером (иначе зачем было ломать совместимость), но вот каких именно - непонятно...
Alikberov wrote:
Типа такого?
Code:
0000 2A F0 7F 31 D0 76 01 24-09 AF E3 33 0B B0 F2 0A
0010 00 C3 03 00

Нет, это еще тормознее традиционного способа получилось, чуть позже постараюсь привести пример.
Alikberov wrote:
Попробуйте запустить редактор, но в PC директивой X пусть будет 0, в DE - 2100. Повлияло на производительность?

Да, стало значительно лучше, но тормоза все равно ощущаются...
Alikberov wrote:
На самом деле, так ещё перед каждым выводом строки стоит вызов F812, иначе клавиатура очень вяло реагирует.

Неплохо бы вообще от F812 избавиться, как источника тормозов. А в идеале избавиться и от F803 и постараться сделать все на F81B ;) Но это непросто, я думаю, особенно без прерываний от таймера...
DDp wrote:
Нет, Alt+V - это, как через тв-тюнер, а на телевизоре ещё меньше. :ewink:

Да, ТВ-тюнер - это идеал, телевизоры дополнительно обрезают картинку, даже многие ЖК, а не только ЭЛТ...

_________________
Эмулятор Emu80


12 Apr 2023 14:15
Profile ICQ WWW
Maniac

Joined: 21 Jan 2003 04:08
Posts: 224
Reply with quote
Alikberov wrote:
Типа такого?
Code:
0000 2A F0 7F 31 D0 76 01 24-09 AF E3 33 0B B0 F2 0A
0010 00 C3 03 00

Типа такого (см. вложения).
Один вариант очень быстрый, но большой по объему, второй - чуть медленнее, но более компактный.
(перед запуском заполнить чем-нибудь экран)


Attachments:
rkup.7z [453 Bytes]
Downloaded 82 times
fast_scroll.zip [483 Bytes]
Downloaded 84 times

_________________
Эмулятор Emu80
12 Apr 2023 15:06
Profile ICQ WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 317
Location: Tashkent
Reply with quote
Pyk wrote:
Нет, это еще тормознее традиционного способа получилось, чуть позже постараюсь привести пример.

Pyk wrote:
Да, стало значительно лучше, но тормоза все равно ощущаются...

Парсинг текста на предмет табуляции много времени требует.

А ещё сейчас подсчёт первой экранной строки буфера происходит нудным сканированием обратно: Можете проверить, указав через X в DE произвольный адрес в интервале до 2EFF.

Этим на начальных стадиях обеспечилась устойчивость кода и универсальность, так как помимо отображения развёрнутого текста в окне с подсчётом номеров строк, ещё заполняется буфер указателей на каждую строку.

Конечно, сейчас очевидно, что пока каретка не выходила за верхний/нижний край экрана, пересчёт строк делать не нужно. Это дело добавления ещё одного флажка.
Pyk wrote:
Неплохо бы вообще от F812 избавиться, как источника тормозов. А в идеале избавиться и от F803 и постараться сделать все на F81B ;) Но это непросто, я думаю, особенно без прерываний от таймера...
Ну, почему же?
Например, директива D Монитора обращается к F812 по 58 раз за строку - это норма. Это тормозит до нажатия любой клавиши.
У меня это - вынужденная мера. Попробуйте занулить три ячейки по адресам 03D1-03D3 и сравните: Вывод быстрее, но перемещаться курсором становится тормознее.
А вот обращение к F81B - тоже не панацея. В ZX-Spectrum'е существовали игры, где в опциях по переназначению клавиш забыли добавить антидребезг и хоть какую-то паузу. Как итог, одна клавиша назначалась махом на все действия и в игру невозможно было играть. Видимо, владельцы Kempstone-джойстиков тестировали и не заметили такой баг.
Переписать код, чтобы стрелочные клавиши работали через F81B можно, но это трата драгоценных байтов редактора (под вариант для ПЗУ F000-F7FF).
Pyk wrote:
Типа такого (см. вложения).
Один вариант очень быстрый, но большой по объему, второй - чуть медленнее, но более компактный.
(перед запуском заполнить чем-нибудь экран)
Ну, если так, то можно:
Code:
0000:  2A F2 7F 31 D0 76 01 E9-00 AF E3 33 E3 33 E3 33
0010:  E3 33 E3 33 E3 33 E3 33-E3 33 E3 33 E3 33 0B B0
0020:  F2 0A 00 C3 03 00
На стеке только вертикальную прокрутку можно сделать, но не отображение строки: Горизонтальная прокрутка не ускорится.

А в целом...
Необходимо именно редактируемую строку в отдельном подбуфере изменять и отображать. При переходе к другой строке текущую следует в общий буфер вставить, предварительно его раздвинув/ужав.
Это же в Бейсиках происходит в манипуляциях листинга.
И об этом я думал, но хотелось просто хоть как-то код заставить работать.
Но, именно заточка под ПЗУ, когда портить ОЗУ промежуточными буферами нежелательно, отодвинуло это на второй план.

Все эти недели я только и боролся с тем, чтобы код - элементарно не падал.
Фрагменты с корректированием табуляции - самое больное место: Весь текст искажается в случае просчёта.
А ещё есть страшные подпрограммы возвращения указателя на текст по координате каретки с учётом табуляции - вот настоящий адский уголок!!!

Сейчас я побаиваюсь что-то оптимизировать.
Нужно продумать базовую логику и переписать всё с чистого листа.

Хотя...
Можете запустить промежуточный вариант где мышью работает прокрутка вниз/вверх скроллингом и отображением одной ключевой строки.
Выглядит шустро и весело, но имеются баги и все 2 Кб памяти занято уже.
(Сравните текст приветствия по G0).

P.S.: А если вдуматься, редакторы "Микрон" и "WEL" значительно уступают в скорости, но тысячи пользователей как-то справлялись. :mrgreen:


12 Apr 2023 17:59
Profile WWW
Maniac

Joined: 21 Jan 2003 04:08
Posts: 224
Reply with quote
Alikberov wrote:
Ну, если так, то можно:
Code:
0000:  2A F2 7F 31 D0 76 01 E9-00 AF E3 33 E3 33 E3 33
0010:  E3 33 E3 33 E3 33 E3 33-E3 33 E3 33 E3 33 0B B0
0020:  F2 0A 00 C3 03 00

В принципе, тоже рабочий вариант, хотя и менее универсальный и чуть медленнее по тактам.
Alikberov wrote:
На стеке только вертикальную прокрутку можно сделать, но не отображение строки: Горизонтальная прокрутка не ускорится.
Я имел в виду, что сделать горизонтальную прокрутку, а потом вывести вертикальный ряд символов. Но для этого нужно реализовать хранение каких-то метаданных о тексте - адресов начала строк, например, как-то учесть табуляцию и т.п. Я как-то упустил момент, что редактор предполагается к испоkьзованию в ПЗУ, объем ограничен и использование доп. буферов нежелательно, так что наверное действительно здесь это неприменимо...

Насчет F812... Не нравится мне, как это реализовано в РК. Тут надо учесть, что при нажатии клавиши задержка с озвучиванием клавиши будет именно в вызове F812, а вызов F803 уже отработает мгновенно, поэтому в целом связка F812+F803 работает не очень предсказуемо. Но опять-таки все упирается в размер, к тому же у Партнера, для которого я переписывал работу с клавиатурой, клавиши герконовые, с дребезгом проблем нет...

Так что из оптимизаций в данном случае наверное остается вертикальный скроллинг (если влезет), да попробовать все-таки ускорить навигацию по тексту без прокрутки - в Микроне и WEL в этом плане все шустро... Ну может быть действительно еще буфер текущей строки добавить, но для этого опять-таки нужна какие-то служебная область памяти...

_________________
Эмулятор Emu80


13 Apr 2023 00:59
Profile ICQ WWW
Devil

Joined: 26 May 2003 06:57
Posts: 860
Reply with quote
Pyk wrote:
Lavr wrote:
А под Emu b2m у меня с первого захода рухнуло всё... :-?

Странно, у меня запустился, может быть версия другая или как-то по-другому грузил?

При открытии файла .rkr реально падает. Отличный пример. Надо разобраться.
При загрузке через команду I - нормально.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


13 Apr 2023 01:41
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 317
Location: Tashkent
Reply with quote
Pyk wrote:
Я имел в виду, что сделать горизонтальную прокрутку, а потом вывести вертикальный ряд символов. Но для этого нужно реализовать хранение каких-то метаданных о тексте - адресов начала строк, например, как-то учесть табуляцию и т.п. Я как-то упустил момент, что редактор предполагается к испоkьзованию в ПЗУ, объем ограничен и использование доп. буферов нежелательно, так что наверное действительно здесь это неприменимо...

Ну может быть действительно еще буфер текущей строки добавить, но для этого опять-таки нужна какие-то служебная область памяти...
У меня и так используются все ячейки Монитора, которые на период сессии редактора никак не используются:
  • 760D - подпрограмма ввода с ленты сохраняет там регистр SP
  • 7614-761F - директивой X Монитора хранятся значения регистров PC/HL/BC/DE/SP/AF
  • 7633-7652 - буфер ввода директив Монитора
Соответственно, в этих ячейках я сохраняю состояние редактора, а ячейки с 7633 служат буфером хранения массива указателей на каждую из 25 строк.
(Так, прокрутка вверх просто перезаписывает указатель на начало отображение из ячеек 7635-7636.)

К тому же и стек расположен как у Монитора - под 76D0: Много вложенных вызовов совершать нельзя.

P.S.: Сейчас написал и отладил отдельную подпрограмму отображения нумерации строк с заполнением массива адресации строк, так как при экспериментальной той экспресс-прокрутке они затираются на экране.
Вроде бы пустяк, а часа два ушло на отладку крошечной процедуры - видимо сказывается уже переутомление.


13 Apr 2023 05:40
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
b2m wrote:
Pyk wrote:
Lavr wrote:
А под Emu b2m у меня с первого захода рухнуло всё... :-?
Странно, у меня запустился, может быть версия другая или как-то по-другому грузил?
При открытии файла .rkr реально падает. Отличный пример. Надо разобраться.
При загрузке через команду I - нормально.

Именно так и было.

_________________
iLavr


13 Apr 2023 08:39
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 860
Reply with quote
Всего-то лишний байт E6 в начале файла, а какая реакция :) Эмуль хочет грузить файл в адрес E600, что явно за пределами 32Кб.

Вопрос: всегда ли надо пропускать начальный байт E6? А вдруг загрузочный адрес действительно в области E600 (например для другого компьютера с 64Кб памяти).

Можно, конечно, сравнить адреса с длиной файла, но там ведь бывает плюс-минус несколько байт...

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


13 Apr 2023 11:11
Profile WWW
Devil

Joined: 26 May 2003 06:57
Posts: 860
Reply with quote
Исправил эмулятор. Теперь грузит без ошибки.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


13 Apr 2023 11:41
Profile WWW
Maniac

Joined: 21 Jan 2003 04:08
Posts: 224
Reply with quote
b2m wrote:
Исправил эмулятор. Теперь грузит без ошибки.

Сделал какую-то проверку в итоге? Я пока просто всегда пропускаю, хотя для некоторых РК-подобных компов теоретически действительно может быть что-то в этой области...

_________________
Эмулятор Emu80


13 Apr 2023 14:35
Profile ICQ WWW
Display posts from previous:  Sort by  
Reply to topic   [ 84 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next

Who is online

Users browsing this forum: No registered users and 17 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.