Эмулятор Ориона от Error404

Компьютер Орион-128 (1990) расширяемый до 256 КБ и его развитие

Moderator: Shaos

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

Re: Эмулятор Ориона от Error404

Post by Lavr »

PVV wrote:сделать кнопку сохранения экранной памяти в файл, и вызвать внешнюю программу распознавания экрана (с передачей ей в качестве параметра имени этого сохраненного файла)
Мне кажется, что распознавать графику - это уж сильно чрезмерно. :-?
Венда - графическая система, но копировать с её экрана в текстовом режиме - можно.
Мне думается, что надо просто в памяти эмулятора иметь текстовый буфер, в который
прописывать текстовую информацию параллельно выводусимволов на экран.
При необходимости "сграбить" - просто выдавать символы из текстового буфера. :obye:
iLavr
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Re: Эмулятор Ориона от Error404

Post by jdigreze »

Lavr wrote:Мне кажется, что распознавать графику - это уж сильно чрезмерно.
Давным давно, в далёкой... Про что это я?
FineReader справлялся на ура с распознаванием принт-скриненых экранов спектрума. Причём снимки делал на спектруме, сохранял на дискетку, потом уже на PC переводил в bmp, и подсовывал FR.

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

Не скажу за Орион, но как вариант для обдумывания: на спектруме есть системная переменная, которая хранит адрес шрифта, и если печать идёт стандартными средствами через RST16, то можно написать програмку для спектрума, которая будет анализировать экран сообразно текущему шрифту и и сохранять где-нибудь в памяти текст размером 768 байт, а уже из эмулятора эти байтики можно куда угодно передать.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Эмулятор Ориона от Error404

Post by Lavr »

jdigreze wrote:
Lavr wrote:Мне кажется, что распознавать графику - это уж сильно чрезмерно.
FineReader справлялся на ура с распознаванием принт-скриненых экранов спектрума.
Да все они справляются - никто не спорит.
И даже FineReader - это чрезмерно... Поскольку и сама Венда, как графическая система, не всё
дает считать со своих экранов, то у меня, к примеру, в трее висит всегда такая утилитка,
как KleptoMania (k-mania.exe) - всё что может она у Венды сграбать в тексте - она сграбает...
А что не может - у нее есть свой маленький встроенный "FineReader" которым она на лету
старается распознать выделенную мышью область.

Но чем плохи всякие "FineReader"-ы они всё же путают порой важные для программиста вещи,
типа "0" и "О", "8" и "В" и т.д.
А для чего грабать с экрана "Специалиста" ("Ориона")? Да вот вывел я, скажем, дамп области
памяти и хочу поиметь его в текстовом виде. "FineReader"-ы на дампе замучают неверно распознанными
парами "0" и "О", "8" и "В" и иже с ними.
iLavr
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Re: Эмулятор Ориона от Error404

Post by VituZz »

На моём "Орионе" я встречал как минимум 5 видов шрифтов в разных программах. Поскольку коды символов нигде после вывода не хранятся, распознавание с экрана может не быть достаточно простым...
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Re: Эмулятор Ориона от Error404

Post by jdigreze »

Lavr wrote:А для чего грабать с экрана "Специалиста" ("Ориона")? Да вот вывел я, скажем, дамп области
памяти и хочу поиметь его в текстовом виде. "FineReader"-ы на дампе замучают неверно распознанными
парами "0" и "О", "8" и "В" и иже с ними.
Причём, если "О" в дампе это однозначно "0", то "8" или "В" - бошку сломаешь, особенно если первоисточника под рукой нет. Я с этой парой сталкивался :lol:
VituZz wrote:На моём "Орионе" я встречал как минимум 5 видов шрифтов в разных программах.
Увы и ах, но на Орионе мне работать не приходилось, хотя один у нас в городе точно был, и я его даже в руках держал. :roll:
User avatar
Error404
Maniac
Posts: 269
Joined: 05 Oct 2006 04:45
Location: Moscow

Re: Эмулятор Ориона от Error404

Post by Error404 »

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

Все это означает написание драйвера для каждой ОС, каждого Монитора F800 (шрифты у Монитора2 например отличаются от Монитора3), которых на Орионе немало. Кроме того, тому драйверу надо как-то передавать из интерфейса эмулятора координаты области экрана где идет COPY (видимо, опять через какой-то порт). Задача при ближайшем рассмотрении - непростая. :)
Всем добра!
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Эмулятор Ориона от Error404

Post by Lavr »

Error404 wrote:Задача при ближайшем рассмотрении - непростая. :)
Ясен пень - если бы задача была простая, я бы ни у кого консультаций не спрашивал... :mrgreen:
iLavr
User avatar
Error404
Maniac
Posts: 269
Joined: 05 Oct 2006 04:45
Location: Moscow

Re: Эмулятор Ориона от Error404

Post by Error404 »

Lavr wrote:
Error404 wrote:Задача при ближайшем рассмотрении - непростая. :)
Ясен пень - если бы задача была простая, я бы ни у кого консультаций не спрашивал... :mrgreen:
Кстати, раз уж мы упомянули CP/M, то был у меня такой эпизод когда я отлаживал для своего клона CP/M драйвер RS-232 (делал это в эмуляторе). При этом CP/M переключалась с работы консоли с TV-выходом на режим работы консоли по RS-232 (она штатно "из коробки" умеет это переключать командой PIP еще с тех мохнатых времен). А как клиент я использовал Винду с Hyperterm. Так вот как побочный эффект такой "удаленной консоли" - с экрана Hyperterm прекрасно делается и Copy и Paste в "среду Ориона". :)
Всем добра!
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Эмулятор Ориона от Error404

Post by Shaos »

Вопрос - а почему ты уже пятый год не читаешь личные сообщения? ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Error404
Maniac
Posts: 269
Joined: 05 Oct 2006 04:45
Location: Moscow

Re: Эмулятор Ориона от Error404

Post by Error404 »

Shaos wrote:Вопрос - а почему ты уже пятый год не читаешь личные сообщения? ;)
не знаю :o
возможно что смотрю на "0 new messages, 4 unread messages", вижу там ноль новых, дальше уже не воспринимаю. :)
Психология. :oidea:
Всем добра!
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Эмулятор Ориона от Error404

Post by Shaos »

Понятно :no:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Эмулятор Ориона от Error404

Post by Lavr »

VituZz wrote:На моём "Орионе" я встречал как минимум 5 видов шрифтов в разных программах. ...
Ну поскольку я прицеливаюсь использовать "Специалист_МХ" под
ОС РАМФОС в качестве удобного "подвиндовозного" средства разработки с его родными
Ассемблером, Дизассемблером, Редактором и Отладчиком, то шрифт там всего один...
А вот управление мышью, раз уж это всё под Вендой, и "копи-паст" всё же приделать
хотелось бы... раз уж даже к оригинальному «Специалисту» пытались приделать «Мышь».
iLavr
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Re: Эмулятор Ориона от Error404

Post by VituZz »

Для железного "Ориона" тоже ещё в те годы была поддержана мыша в какой-то псевдо-виндовозной оболочке. Но она меня совсем не впечатлила. По-моему, столь скромные по возможностям компы лучше всего себя реализуют в текстовом режиме типа консоли в Линухе. В эмуляторе же мышь, конечно, дело нужное.
User avatar
barsik
Doomed
Posts: 585
Joined: 19 Feb 2017 03:46
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь

Re: Эмулятор Ориона от Error404

Post by barsik »

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 работает только с образами дисков, отчего набор файлов доступных в эмуляторе надо специально компоновать отдельной программой, что неудобно для реальной работы. А грамотные эмуляторы в этом не нуждаются т.к вообще не используют образы, ни квазидисков, ни дискет.