nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 27 Apr 2024 07:14



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

Joined: 14 Oct 2019 18:10
Posts: 320
Location: Tashkent
Reply with quote
Shaos wrote:
У меня кстати так и не работало с X:PC=0000 пока я C9 не поставил в 0000 через M
В строке#894 это происходит и всё верно.
Code:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;       TEST FOR CALLBACK EXISTING
;       AND CALL IT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CALLER: LHLD    BUDDY   ; Загружаем адрес пользовательского "напарника"
        MOV     A,H     ; Сначала - убеждаемся,
        ORA     L       ; что адрес - не НУЛЕВОЙ!
        RZ              ; Если НОЛЬ, "напарник" отсутствует - продолжаем работать.
        PUSH    H       ; Иначе, заносим его адрес в стек и подготавливаем информацию в регистрах
Вроде всё корректно.
Может быть следует убедиться, что в ячейках 7614/7615 вдруг что-то не появляется?
Хотя, код C9 в 0000 для корректной работы - это очень-очень странно! :o


16 Feb 2024 15:02
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 320
Location: Tashkent
Reply with quote
Оказывается, директивой «GF000» нельзя запускать редактор, так как используются служебные ячейки Монитора и код F0 выводится на экран: Инструкция RET по 0000 не нужна…
Это происходит по причине, так как ячейка 7629 используется под пользовательский символ Табуляции. По «GF000» адрес F000 записывается в ячейки 7627/7628 и дублируется в 7629/762A…

Конкретно в Emu80 директива «U» переходит в DOS и её нельзя использовать для перехода в редактор.

Остаётся лишь команда «JMP F000» по адресу F8D9…F8DB, которая выполняется, если директива не понятна…
На скриншоте я специально ввёл директиву «P» и всё запустилось!
Однако, можно использовать и все остальные комбинации: Цифры, знаки, даже F1-F4, «АР2/Esc» «Пробел» и стрелки, «ПС», «СТР» и «Home» (естественно, только одно нажатие).
Иными словами, сложнее не вызвать Победит, чем запустить!

А так как параметры уже занесены в служебную область, можно прямо ими задать стиль:
  • «P,3C09,3E» (левый край 3C; табуляция 09; правый край 3E)…
  • «P,5B5F,5D» (левый край 5B; табуляция 5F; правый край 5D)…
Т.е. получается практически полный статический контроль над стилем при запуске и включается нумерация строк. :D

Кстати, редактор никак не фильтрует символы с кодами 80…FF: Атрибуты цвета, а также и коды E4/E5 пропускаются на экран. Следовательно, можно и цвет иметь, и знакогенератор переключать (в рамках отображаемых 64 символов панорамы и предварительно настроив режим ВГ75), естественно, через свой код - нажатиями своих каких-то клавиш.


Attachments:
File comment: Запуск редактора по «P,5B5F,5D»
pobedit-start.png
pobedit-start.png [ 3.11 KiB | Viewed 405 times ]
File comment: Результат "стилизации" по «P,5B5F,5D»
pobedit-screen.png
pobedit-screen.png [ 3.08 KiB | Viewed 405 times ]
File comment: Вариант с подавлением символов 0A/0D на экране (правка одной единственной инструкцией XRA A)
POBEDITU.ROM.zip [1.77 KiB]
Downloaded 16 times
17 Feb 2024 05:16
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22599
Location: Silicon Valley
Reply with quote
Alikberov wrote:
Конкретно в Emu80 директива «U» переходит в DOS и её нельзя использовать для перехода в редактор.
Там патченный ром, который по U идёт на E000 вместо F000 - просто патчишь его обратно и всё :lol:
см. http://www.nedopc.org/forum/viewtopic.php?p=171774#p171774

_________________
:dj: https://mastodon.social/@Shaos


17 Feb 2024 11:43
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 320
Location: Tashkent
Reply with quote
Shaos wrote:
Alikberov wrote:
Конкретно в Emu80 директива «U» переходит в DOS и её нельзя использовать для перехода в редактор.
Там патченный ром, который по U идёт на E000 вместо F000 - просто патчишь его обратно и всё :lol:
см. http://www.nedopc.org/forum/viewtopic.php?p=171774#p171774
Это я понял.
Но директива «P,3C09,3E» тоже работает?


17 Feb 2024 11:50
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22599
Location: Silicon Valley
Reply with quote
Старый код может любой неизвестной директивой запускаться?

_________________
:dj: https://mastodon.social/@Shaos


17 Feb 2024 11:54
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 320
Location: Tashkent
Reply with quote
Shaos wrote:
Старый код может любой неизвестной директивой запускаться?
И старый, и этот - запускается любой неизвестной директивой из-за особенностей Монитора, а не редактора. :idea:
(Только не GF000!)

Вообще-то можно добавить и первый параметр. Типа:
  • «?<адрес_буфера_текста>,<стиль>,<стиль>»
  • «?<адрес_пользовательского_кода>,<стиль>,<стиль>»
Что сейчас никак не реализовано, даже побочно. :roll:


17 Feb 2024 11:58
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22599
Location: Silicon Valley
Reply with quote
А можно без X обойтись? Задавать адрес буфера через первый параметр директивы P

А задавание колбека можно оставить на программный вариант запуска (т.к. обычному пользователю колбек не понятен)

_________________
:dj: https://mastodon.social/@Shaos


17 Feb 2024 23:56
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 320
Location: Tashkent
Reply with quote
Shaos wrote:
А можно без X обойтись?
А задавание колбека можно оставить на программный вариант запуска (т.к. обычному пользователю колбек не понятен)
Такая практика завелась на самых началах разработки редактора, чтобы удобнее было отлаживать. :roll:
Shaos wrote:
Задавать адрес буфера через первый параметр директивы P
Тоже об этом думаю, учитывая уже всякие трюки, типа «G» с тремя параметрами, о которых раньше, почему-то, не думал…


18 Feb 2024 01:59
Profile WWW
Maniac
User avatar

Joined: 14 Oct 2019 18:10
Posts: 320
Location: Tashkent
Reply with quote
Вот, в качестве эксперимента, вариант с запуском только по:
Code:
«P<адрес_буфера>,[<левый_край|табуляция>,<правый_край>]»
При этом, любая другая неизвестная директива сейчас передаёт управление на адрес 0000: Думаю, это - наилучшее решение и пусть уже загруженная программа сама получит право разобраться, запустили её по «G» или одним из остальных 110 способов! :mrgreen:

Есть маленький нюанс: Нельзя просто запускать как «P<адрес_буфера>» и необходимо указать запятую - «P<адрес_буфера>,». Иначе адрес передастся Монитором во второй параметр стиля.

P.S.: Кстати, советую написать свой маленький код с CallBack-функцией, чтобы иметь уверенность, что подверсии редактора ничего не ломают! :wink:
В архиве - пример такого кода.
(Внимание! Редактировать текст конкретно в данном вариант строго не рекомендуется, так как размер двух первых буферов, переключаемых по F1, всего 256 байтов, что при попытке редактирования приведёт к их слиянию. Только буфер #3 (нажатиями F1) расположен выше и имеет полный объём - до адреса 75FF.)


Attachments:
File comment: Пример организации CallBack-взаимодействия с Победитом
POBEDITEST.RKR.zip [2.68 KiB]
Downloaded 17 times
File comment: Запуск только по
«P<адрес_буфера>,[<левый_край|табуляция>,<правый_край>]»
(Исправил крошечный глюк, возникший из-за удаления кода вызова директивы X!)

POBEDITP.ROM.zip [1.77 KiB]
Downloaded 17 times
File comment: Пример запуска POBEDITEST.RKR
Снимок экрана_2024-02-18_11-16-32.png
Снимок экрана_2024-02-18_11-16-32.png [ 31.22 KiB | Viewed 272 times ]
18 Feb 2024 11:39
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 84 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6

Who is online

Users browsing this forum: No registered users and 77 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.