nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 19 Aug 2018 21:20



Reply to topic  [ 29 posts ]  Go to page Previous  1, 2
Эмулятор Ориона от Error404 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
PVV wrote:
сделать кнопку сохранения экранной памяти в файл, и вызвать внешнюю программу распознавания экрана (с передачей ей в качестве параметра имени этого сохраненного файла)

Мне кажется, что распознавать графику - это уж сильно чрезмерно. :-?
Венда - графическая система, но копировать с её экрана в текстовом режиме - можно.
Мне думается, что надо просто в памяти эмулятора иметь текстовый буфер, в который
прописывать текстовую информацию параллельно выводусимволов на экран.
При необходимости "сграбить" - просто выдавать символы из текстового буфера. :obye:

_________________
iLavr


25 Nov 2016 12:18
Profile
God

Joined: 02 Jan 2006 03:28
Posts: 1341
Location: Abakan
Reply with quote
Lavr wrote:
Мне кажется, что распознавать графику - это уж сильно чрезмерно.
Давным давно, в далёкой... Про что это я?
FineReader справлялся на ура с распознаванием принт-скриненых экранов спектрума. Причём снимки делал на спектруме, сохранял на дискетку, потом уже на PC переводил в bmp, и подсовывал FR.

Понятно, что изврат, но если надо, то почему нет.

Не скажу за Орион, но как вариант для обдумывания: на спектруме есть системная переменная, которая хранит адрес шрифта, и если печать идёт стандартными средствами через RST16, то можно написать програмку для спектрума, которая будет анализировать экран сообразно текущему шрифту и и сохранять где-нибудь в памяти текст размером 768 байт, а уже из эмулятора эти байтики можно куда угодно передать.


25 Nov 2016 22:02
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
jdigreze wrote:
Lavr wrote:
Мне кажется, что распознавать графику - это уж сильно чрезмерно.
FineReader справлялся на ура с распознаванием принт-скриненых экранов спектрума.
Да все они справляются - никто не спорит.
И даже FineReader - это чрезмерно... Поскольку и сама Венда, как графическая система, не всё
дает считать со своих экранов, то у меня, к примеру, в трее висит всегда такая утилитка,
как KleptoMania (k-mania.exe) - всё что может она у Венды сграбать в тексте - она сграбает...
А что не может - у нее есть свой маленький встроенный "FineReader" которым она на лету
старается распознать выделенную мышью область.

Но чем плохи всякие "FineReader"-ы они всё же путают порой важные для программиста вещи,
типа "0" и "О", "8" и "В" и т.д.
А для чего грабать с экрана "Специалиста" ("Ориона")? Да вот вывел я, скажем, дамп области
памяти и хочу поиметь его в текстовом виде. "FineReader"-ы на дампе замучают неверно распознанными
парами "0" и "О", "8" и "В" и иже с ними.

_________________
iLavr


26 Nov 2016 08:27
Profile
God
User avatar

Joined: 13 Nov 2010 05:06
Posts: 1291
Reply with quote
На моём "Орионе" я встречал как минимум 5 видов шрифтов в разных программах. Поскольку коды символов нигде после вывода не хранятся, распознавание с экрана может не быть достаточно простым...


26 Nov 2016 12:37
Profile
God

Joined: 02 Jan 2006 03:28
Posts: 1341
Location: Abakan
Reply with quote
Lavr wrote:
А для чего грабать с экрана "Специалиста" ("Ориона")? Да вот вывел я, скажем, дамп области
памяти и хочу поиметь его в текстовом виде. "FineReader"-ы на дампе замучают неверно распознанными
парами "0" и "О", "8" и "В" и иже с ними.
Причём, если "О" в дампе это однозначно "0", то "8" или "В" - бошку сломаешь, особенно если первоисточника под рукой нет. Я с этой парой сталкивался :lol:

VituZz wrote:
На моём "Орионе" я встречал как минимум 5 видов шрифтов в разных программах.
Увы и ах, но на Орионе мне работать не приходилось, хотя один у нас в городе точно был, и я его даже в руках держал. :roll:


26 Nov 2016 21:11
Profile
Maniac
User avatar

Joined: 05 Oct 2006 05:45
Posts: 266
Location: Moscow
Reply with quote
jdigreze wrote:
Lavr wrote:
Не скажу за Орион, но как вариант для обдумывания: на спектруме есть системная переменная, которая хранит адрес шрифта, и если печать идёт стандартными средствами через RST16, то можно написать програмку для спектрума, которая будет анализировать экран сообразно текущему шрифту и и сохранять где-нибудь в памяти текст размером 768 байт, а уже из эмулятора эти байтики можно куда угодно передать.


Пожалуй, вот этот вариант был бы самым близким к реальности (и практике современной эмуляции, т.е. виртуализации на "больших" машинах): программка написанная для определенной среды, выплевывающая в порт распознанные символы (ил заранее буферизированные ею при выводе ОС), а эмулятор, который по своей природе ничем кроме портов не должен оперировать (не лезть внутрь модели, в т.ч. и "после клавиатурной ВВ55"), уже эту последовательность обрабатывал бы. И с Paste - в обратной последовательности. Завязка на среду, т.е. ОС - это важно, т.к. в разных ОС Ориона операции со шрифтами сильно разные, как и шрифты, и переменные на них указывающие: например в CP/M у меня полдюжины шрифтов разной размерности (на один и тот же экран одновременно ведется вывод шрифтами разного начертания и ширины знакоместа - и это в казалось бы сугубо текстовой CP/M где на экране нет никакой графики). Шрифты загружаются/выгружающихся ОС динамически в любую свободную память (в пределах всех доступных страниц ОЗУ). Т.е. возможны такие варианты, что на момент распознавания шрифт уже может быть выгружен, хотя на экране рисовали именно им, и загружен другой по тому же адресу.

Все это означает написание драйвера для каждой ОС, каждого Монитора F800 (шрифты у Монитора2 например отличаются от Монитора3), которых на Орионе немало. Кроме того, тому драйверу надо как-то передавать из интерфейса эмулятора координаты области экрана где идет COPY (видимо, опять через какой-то порт). Задача при ближайшем рассмотрении - непростая. :)

_________________
Всем добра!


30 Nov 2016 00:55
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Error404 wrote:
Задача при ближайшем рассмотрении - непростая. :)

Ясен пень - если бы задача была простая, я бы ни у кого консультаций не спрашивал... :mrgreen:

_________________
iLavr


30 Nov 2016 16:02
Profile
Maniac
User avatar

Joined: 05 Oct 2006 05:45
Posts: 266
Location: Moscow
Reply with quote
Lavr wrote:
Error404 wrote:
Задача при ближайшем рассмотрении - непростая. :)

Ясен пень - если бы задача была простая, я бы ни у кого консультаций не спрашивал... :mrgreen:


Кстати, раз уж мы упомянули CP/M, то был у меня такой эпизод когда я отлаживал для своего клона CP/M драйвер RS-232 (делал это в эмуляторе). При этом CP/M переключалась с работы консоли с TV-выходом на режим работы консоли по RS-232 (она штатно "из коробки" умеет это переключать командой PIP еще с тех мохнатых времен). А как клиент я использовал Винду с Hyperterm. Так вот как побочный эффект такой "удаленной консоли" - с экрана Hyperterm прекрасно делается и Copy и Paste в "среду Ориона". :)

_________________
Всем добра!


07 Dec 2016 00:37
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 16842
Location: Colorado
Reply with quote
Вопрос - а почему ты уже пятый год не читаешь личные сообщения? ;)

_________________
:eugeek: https://twitter.com/Shaos1973


07 Dec 2016 01:14
Profile WWW
Maniac
User avatar

Joined: 05 Oct 2006 05:45
Posts: 266
Location: Moscow
Reply with quote
Shaos wrote:
Вопрос - а почему ты уже пятый год не читаешь личные сообщения? ;)


не знаю :o
возможно что смотрю на "0 new messages, 4 unread messages", вижу там ноль новых, дальше уже не воспринимаю. :)
Психология. :oidea:

_________________
Всем добра!


08 Dec 2016 15:15
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 16842
Location: Colorado
Reply with quote
Понятно :no:

_________________
:eugeek: https://twitter.com/Shaos1973


09 Dec 2016 20:34
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
VituZz wrote:
На моём "Орионе" я встречал как минимум 5 видов шрифтов в разных программах. ...
Ну поскольку я прицеливаюсь использовать "Специалист_МХ" под
ОС РАМФОС в качестве удобного "подвиндовозного" средства разработки с его родными
Ассемблером, Дизассемблером, Редактором и Отладчиком, то шрифт там всего один...
А вот управление мышью, раз уж это всё под Вендой, и "копи-паст" всё же приделать
хотелось бы... раз уж даже к оригинальному «Специалисту» пытались приделать «Мышь».

_________________
iLavr


10 Dec 2016 03:42
Profile
God
User avatar

Joined: 13 Nov 2010 05:06
Posts: 1291
Reply with quote
Для железного "Ориона" тоже ещё в те годы была поддержана мыша в какой-то псевдо-виндовозной оболочке. Но она меня совсем не впечатлила. По-моему, столь скромные по возможностям компы лучше всего себя реализуют в текстовом режиме типа консоли в Линухе. В эмуляторе же мышь, конечно, дело нужное.


15 Dec 2016 11:27
Profile
Senior
User avatar

Joined: 19 Feb 2017 04:46
Posts: 120
Location: Россия
Reply with quote
Error404 wrote:
Функционал по Paste я планировал реализовать, но не взлетело, ибо в сугубо аппаратной модели с клавиатурой на ВВ55 не получается вогнать в ПК текст имитируя замыкание кнопок матрицы клавиатуры (мои нажатия не проходят через п.п. отсечки дребезга контактов Мониторов, а наворачивать их многократные повторения которые еще неизвестно как заработают (не будет ли ОРИОН вводиться как ОООРРРИИИОООННН) - ну его нафиг).

Сама идея пастирования через имитацию сигналов на входе ППА клавиатуры порочна и не позволит получить нужную скорость ввода символов.

Борьба с дребезгом не повредит, т.к, во первых, она будет работать только если идут подряд два одинаковых символа, а во вторых, столь быстрый темп ввода эмуляцией ППА не получить.

Потому что есть минимальная длительность фиксации нажатия (~0.1 секунды, это время сканирования матрицы и эхо-печати), но с учетом длительности ролика, Paste с эхо печатью даже в монохроме не сможет иметь темп ниже 0.25 секунды (время ролика). Таким образом при Paste со входов ППА клавиатуры вставка 100 символов займёт не менее 25 секунд, а 1 кб будет пастироваться 4 минуты.

Но зачем имитировать сигналы на входе ППА клавиатуры. Проще ввести точку перехвата и выдавать Paste-коды с неё. Все драйверы с автоповтором используют подпрограмму F81B (и никогда не F803). Причём внешние драйверы клавиатуры используют стандартный вход F81B, а п/п-мма F803 внутри ПЗУ М3 с векторизацией входа F81B вызывает саму F81B, а вот М3 без векторизации вызывает внутренний вход в опрос клавиатуры, но не проблема изменить ПЗУ так, чтобы вызывался стандартный вход F81B. Таким образом все опросы клавиатуры проходят только через одну точку F81B. Потому для Paste достаточно перехватывать и имитировать нажатия длительностью 0.2 секунды только для единственной подпрограммы F81B, что не проблема сделать в эмуляторе. Это сработает, в том числе и для ORDOS, хотя будет очень медленно.

Но если интересует Paste только в CP/M, то всё проще, лучше и намного быстрее. Т.к CP/M вводит только через CONIN CP/M BIOS-а. Достаточно на время Paste выдавать всегда готовность по BIOS функции STATUS и выдавать очередной пастируемый символ по каждому CALL CONIN. Это лучше потому, что тогда не важна скорость ролика и темп ввода получится максимально быстрый. И это не будет решение только для CP/M с одним конкретным уровнем TPA, если ввести автонастройку на адрес BIOS по адресу JMP-а в ячейке 0.

А Copy маркированного текста ИЗ эмулятора можно сделать если иметь специально написанный текстов редактор 8-ми разрядки и если эмулятор имеет функцию приёма в Paste-буфер Windows, т.е в эмуляторе нужны функции доступные для программ 8-ми разрядки.

В моём эмуляторе ОРИОНА есть функции эмулятора, которые вызываются командой INIR, в регистре A номер функции, в других регистрах Z80 параметры. Так программа КР580 может узнать текущее время, получить каталог винчестера (каталога FILES.CPM), считать/записать файл. Потому возможен нортон в котором в одной панели каталог виртуального CP/M-диска, а в другом каталог винчестера. Потому Copy/Paste мне был не нужен, если надо сделать вставку, достаточно поместить файл в каталог FILES.CP/M. Имея функции эмулятора, встроить Paste для использования в текстовом редакторе это работа на 30 минут.

А вообще обмен между эмулятором и средой IBM PC имеет смысл только для эмуляторов в которых встроенная DOS работает только с образами дисков, отчего набор файлов доступных в эмуляторе надо специально компоновать отдельной программой, что неудобно для реальной работы. А грамотные эмуляторы в этом не нуждаются т.к вообще не используют образы, ни квазидисков, ни дискет.


09 May 2018 07:53
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 29 posts ]  Go to page Previous  1, 2

Who is online

Users browsing this forum: No registered users and 1 guest


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.