|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Эмулятор Ориона от Error404
Author |
Message |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Мне кажется, что распознавать графику - это уж сильно чрезмерно. Венда - графическая система, но копировать с её экрана в текстовом режиме - можно. Мне думается, что надо просто в памяти эмулятора иметь текстовый буфер, в который прописывать текстовую информацию параллельно выводусимволов на экран. При необходимости "сграбить" - просто выдавать символы из текстового буфера.
_________________ iLavr
|
25 Nov 2016 11:18 |
|
|
jdigreze
God
Joined: 02 Jan 2006 02:28 Posts: 1390 Location: Abakan
|
Давным давно, в далёкой... Про что это я? FineReader справлялся на ура с распознаванием принт-скриненых экранов спектрума. Причём снимки делал на спектруме, сохранял на дискетку, потом уже на PC переводил в bmp, и подсовывал FR. Понятно, что изврат, но если надо, то почему нет. Не скажу за Орион, но как вариант для обдумывания: на спектруме есть системная переменная, которая хранит адрес шрифта, и если печать идёт стандартными средствами через RST16, то можно написать програмку для спектрума, которая будет анализировать экран сообразно текущему шрифту и и сохранять где-нибудь в памяти текст размером 768 байт, а уже из эмулятора эти байтики можно куда угодно передать.
|
25 Nov 2016 21:02 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Да все они справляются - никто не спорит. И даже FineReader - это чрезмерно... Поскольку и сама Венда, как графическая система, не всё дает считать со своих экранов, то у меня, к примеру, в трее висит всегда такая утилитка, как KleptoMania (k-mania.exe) - всё что может она у Венды сграбать в тексте - она сграбает... А что не может - у нее есть свой маленький встроенный "FineReader" которым она на лету старается распознать выделенную мышью область. Но чем плохи всякие "FineReader"-ы они всё же путают порой важные для программиста вещи, типа "0" и "О", "8" и "В" и т.д. А для чего грабать с экрана "Специалиста" ("Ориона")? Да вот вывел я, скажем, дамп области памяти и хочу поиметь его в текстовом виде. "FineReader"-ы на дампе замучают неверно распознанными парами "0" и "О", "8" и "В" и иже с ними.
_________________ iLavr
|
26 Nov 2016 07:27 |
|
|
VituZz
God
Joined: 13 Nov 2010 04:06 Posts: 1345
|
На моём "Орионе" я встречал как минимум 5 видов шрифтов в разных программах. Поскольку коды символов нигде после вывода не хранятся, распознавание с экрана может не быть достаточно простым...
|
26 Nov 2016 11:37 |
|
|
jdigreze
God
Joined: 02 Jan 2006 02:28 Posts: 1390 Location: Abakan
|
Причём, если "О" в дампе это однозначно "0", то "8" или "В" - бошку сломаешь, особенно если первоисточника под рукой нет. Я с этой парой сталкивался Увы и ах, но на Орионе мне работать не приходилось, хотя один у нас в городе точно был, и я его даже в руках держал.
|
26 Nov 2016 20:11 |
|
|
Error404
Maniac
Joined: 05 Oct 2006 04:45 Posts: 269 Location: Moscow
|
Пожалуй, вот этот вариант был бы самым близким к реальности (и практике современной эмуляции, т.е. виртуализации на "больших" машинах): программка написанная для определенной среды, выплевывающая в порт распознанные символы (ил заранее буферизированные ею при выводе ОС), а эмулятор, который по своей природе ничем кроме портов не должен оперировать (не лезть внутрь модели, в т.ч. и "после клавиатурной ВВ55"), уже эту последовательность обрабатывал бы. И с Paste - в обратной последовательности. Завязка на среду, т.е. ОС - это важно, т.к. в разных ОС Ориона операции со шрифтами сильно разные, как и шрифты, и переменные на них указывающие: например в CP/M у меня полдюжины шрифтов разной размерности (на один и тот же экран одновременно ведется вывод шрифтами разного начертания и ширины знакоместа - и это в казалось бы сугубо текстовой CP/M где на экране нет никакой графики). Шрифты загружаются/выгружающихся ОС динамически в любую свободную память (в пределах всех доступных страниц ОЗУ). Т.е. возможны такие варианты, что на момент распознавания шрифт уже может быть выгружен, хотя на экране рисовали именно им, и загружен другой по тому же адресу. Все это означает написание драйвера для каждой ОС, каждого Монитора F800 (шрифты у Монитора2 например отличаются от Монитора3), которых на Орионе немало. Кроме того, тому драйверу надо как-то передавать из интерфейса эмулятора координаты области экрана где идет COPY (видимо, опять через какой-то порт). Задача при ближайшем рассмотрении - непростая.
_________________ Всем добра!
|
29 Nov 2016 23:55 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ясен пень - если бы задача была простая, я бы ни у кого консультаций не спрашивал...
_________________ iLavr
|
30 Nov 2016 15:02 |
|
|
Error404
Maniac
Joined: 05 Oct 2006 04:45 Posts: 269 Location: Moscow
|
Кстати, раз уж мы упомянули CP/M, то был у меня такой эпизод когда я отлаживал для своего клона CP/M драйвер RS-232 (делал это в эмуляторе). При этом CP/M переключалась с работы консоли с TV-выходом на режим работы консоли по RS-232 (она штатно "из коробки" умеет это переключать командой PIP еще с тех мохнатых времен). А как клиент я использовал Винду с Hyperterm. Так вот как побочный эффект такой "удаленной консоли" - с экрана Hyperterm прекрасно делается и Copy и Paste в "среду Ориона".
_________________ Всем добра!
|
06 Dec 2016 23:37 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22735 Location: Silicon Valley
|
Вопрос - а почему ты уже пятый год не читаешь личные сообщения?
|
07 Dec 2016 00:14 |
|
|
Error404
Maniac
Joined: 05 Oct 2006 04:45 Posts: 269 Location: Moscow
|
не знаю возможно что смотрю на "0 new messages, 4 unread messages", вижу там ноль новых, дальше уже не воспринимаю. Психология.
_________________ Всем добра!
|
08 Dec 2016 14:15 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22735 Location: Silicon Valley
|
Понятно
|
09 Dec 2016 19:34 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну поскольку я прицеливаюсь использовать "Специалист_МХ" под ОС РАМФОС в качестве удобного "подвиндовозного" средства разработки с его родными Ассемблером, Дизассемблером, Редактором и Отладчиком, то шрифт там всего один... А вот управление мышью, раз уж это всё под Вендой, и "копи-паст" всё же приделать хотелось бы... раз уж даже к оригинальному «Специалисту» пытались приделать «Мышь».
_________________ iLavr
|
10 Dec 2016 02:42 |
|
|
VituZz
God
Joined: 13 Nov 2010 04:06 Posts: 1345
|
Для железного "Ориона" тоже ещё в те годы была поддержана мыша в какой-то псевдо-виндовозной оболочке. Но она меня совсем не впечатлила. По-моему, столь скромные по возможностям компы лучше всего себя реализуют в текстовом режиме типа консоли в Линухе. В эмуляторе же мышь, конечно, дело нужное.
|
15 Dec 2016 10:27 |
|
|
barsik
Doomed
Joined: 19 Feb 2017 03:46 Posts: 583 Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
|
Сама идея пастирования через имитацию сигналов на входе ППА клавиатуры порочна и не позволит получить нужную скорость ввода символов. Борьба с дребезгом не повредит, т.к, во первых, она будет работать только если идут подряд два одинаковых символа, а во вторых, столь быстрый темп ввода эмуляцией ППА не получить. Потому что есть минимальная длительность фиксации нажатия (~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 06:53 |
|
|
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
|
|