Световое перо для РК

Советский компьютер Радио-86РК (1986) и его клоны

Moderator: Shaos

begoon
Senior
Posts: 147
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Световое перо для РК

Post by begoon »

У меня очередной приступ ностальгии, отягощенный наличием свободного времени, поэтому есть вопрос.

У меня в голове живут какие-то смутные воспоминания, что к РК подключали световое перо. Вспоминается вроде как даже какая-то печатная статья где-то, чуть ли не в журнале Радио. Но может меня память серьезно подводит, ибо в интернете ничего подобного мне найти не удалось.

Да, я знаю, что ВГ75 технически поддерживает световое перо, но были ли реальные схемы подключения к РК?

Поделитесь информацией, у кого есть, или подскажите где смотреть.

Если световое перо таки было, может его в эмуляторе поддержать...
gdv2002
Fanat
Posts: 52
Joined: 22 Mar 2018 20:46

Re: Световое перо для РК

Post by gdv2002 »

Для РК не помню светового пера, для Спеца и Ориона были схемы.
Да и как оно тут будет работать, графики-то нет.
User avatar
Paguo-86PK
Maniac
Posts: 267
Joined: 12 Apr 2011 20:43
Location: Tashkent

Re: Световое перо для РК

Post by Paguo-86PK »

gdv2002 wrote:Для РК не помню светового пера, для Спеца и Ориона были схемы.
Да и как оно тут будет работать, графики-то нет.
A причём здесь графика?
Вот Википедия что показывает:

 Терминал 1969 года
Image

«Криста» световое перо имела и Википедия подтверждает это…

И подходили почти все программы РАДИО-86РК (комментарии).
А значит, от РК не так сильно отличается.

P.S.: Нужно посмотреть схему «Кристы» и изучить соответствующее ПО…
Last edited by Paguo-86PK on 09 Mar 2021 06:29, edited 1 time in total.
begoon
Senior
Posts: 147
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Re: Световое перо для РК

Post by begoon »

Paguo-86PK wrote:Нужно посмотреть схему «Кристы» и изучить соответствующее ПО
Можно для начала поддержать перо, которое вы используете в демках оконного интерфейса для РК.

Какие адреса вы используете и как?
User avatar
Paguo-86PK
Maniac
Posts: 267
Joined: 12 Apr 2011 20:43
Location: Tashkent

Re: Световое перо для РК

Post by Paguo-86PK »

begoon wrote:
Paguo-86PK wrote:Нужно посмотреть схему «Кристы» и изучить соответствующее ПО
Можно для начала поддержать перо, которое вы используете в демках оконного интерфейса для РК.

Какие адреса вы используете и как?

Code: Select all

RD_PEN: LXI	HL,0C001H
	MVI	M,060H
	DCR	L
	MOV	C,M
	MOV	B,M
begoon
Senior
Posts: 147
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Re: Световое перо для РК

Post by begoon »

Paguo-86PK wrote:Какие адреса вы используете и как?

Code: Select all

RD_PEN: LXI	HL,0C001H
	MVI	M,060H
	DCR	L
	MOV	C,M
	MOV	B,M
Это, как я понимаю, координаты. А как понять в программе, что перо "приложено"? Особые несуществующие координаты, типа FF FF?
User avatar
Paguo-86PK
Maniac
Posts: 267
Joined: 12 Apr 2011 20:43
Location: Tashkent

Re: Световое перо для РК

Post by Paguo-86PK »

Нa сколько я помню из школьных опытов в 90-х, чтение координат светового пера возвращало 0.

Но, судя по информации:
i8275_lpen.jpeg
Нужно сначала проверить флаг, а потом уже читать координаты.
You do not have the required permissions to view the files attached to this post.
User avatar
Paguo-86PK
Maniac
Posts: 267
Joined: 12 Apr 2011 20:43
Location: Tashkent

Re: Световое перо для РК

Post by Paguo-86PK »

begoon wrote:
Paguo-86PK wrote:Можно для начала поддержать перо, которое вы используете в демках оконного интерфейса для РК.
Пытaюсь запустить свою демку такой ссылкой, после загрузки происходит сбой и это видно по смещению экрана.
И в дизассемблере Монитор начинается с F7E2 - смещение на целых 30 байтов!
Хотя залит файл вроде бы корректно.

P.S.: На счёт загрузки файлов, начинающихся с «mon»: Здесь желательно иметь возможность подзагрузки второго файла, который запустится уже на загруженном Мониторе…
begoon
Senior
Posts: 147
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Re: Световое перо для РК

Post by begoon »

Paguo-86PK wrote:Хотя залит файл вроде бы корректно.
Ваш файл битый.

Посмотрите на строки со смещениями 2170 и 2180.

Вот ваша демка на исправленном файле.
User avatar
Paguo-86PK
Maniac
Posts: 267
Joined: 12 Apr 2011 20:43
Location: Tashkent

Re: Световое перо для РК

Post by Paguo-86PK »

begoon wrote:
Paguo-86PK wrote:Хотя залит файл вроде бы корректно.
Ваш файл битый.

Посмотрите на строки со смещениями 2170 и 2180.
Спасибо!
Исправил…
(Понятия не имею, как произошёл такой сбой именно на тех строках.)

В Бейсике через «RUN 1000» можно тестировать «световое перо».

Не думаю, что ВГ75 так наворочена, что могла возвращать какие-то особые координаты светового пера.
LPEN.PNG
(Не совсем понятно, что происходит при программировании растра: Видимо, регистры светового пера не затрагиваются.)
Так как в документациях по ВГ75 сказано, что по сигналу LPEN от физического светового пера координаты просто копировались в регистры и не изменялись до очередного сигнала или до отключения питания (вход Сброса отсутствует.)

Потому только по биту LP статуса можно ориентироваться, приходил ли LPEN в текущем кадре или нет…
You do not have the required permissions to view the files attached to this post.
begoon
Senior
Posts: 147
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Re: Световое перо для РК

Post by begoon »

Добавил в эмулятор поддержку пера - демо.

Когда эмулятор запустится, сказать "G0", потом "N" в бейсике, и потом "RUN 1000".

UPDATE: Исправил ссылку на демо. До этого она указывала на localhost.
Last edited by begoon on 10 Mar 2021 04:51, edited 1 time in total.
User avatar
Paguo-86PK
Maniac
Posts: 267
Joined: 12 Apr 2011 20:43
Location: Tashkent

Re: Световое перо для РК

Post by Paguo-86PK »

Дa, уже заметил.

Нужно доработать как-то Бейсик-демонстрацию и добавить чтение статусного регистра.

В любом случае, главное - что поддержка светового пера появилась.
А если она в чём-то не совсем корректная, узнать можно будет по отзывам тех пользователей, которые имели опыт подключения светового пера к ВГ75.

У меня РК имеется и световые перья советского образца есть.
(Вот не могу советовать привязывать клик мышки в программах к биту статуса LP для полной совместимости: В рамках эмулятора это отлично будет работать, но не понятно, как в железе программа будет вести…)
Если удастся написать более-менее сносный софт с подобной фишкой, можно будет отремонтировать реальный РК и подключить к нему реальное световое перо. Тогда и видно будет.

P.S.: Иначе наблюдается вакуум в этом отношении во всех эмуляторах…
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Световое перо для РК

Post by Lavr »

Paguo-86PK wrote:Так как в документациях по ВГ75 сказано, что по сигналу LPEN от физического светового пера координаты просто копировались в регистры и не изменялись до очередного сигнала или до отключения питания (вход Сброса отсутствует.)

Потому только по биту LP статуса можно ориентироваться, приходил ли LPEN в текущем кадре или нет…
В световом пере просто всегда есть кнопка явно или неявно...

Вот здесь кнопка сделана неявно:
img5.png
То есть, когда механически ткнули в экран, то замкнули пружинный контакт, он разрешает работу фотодатчика:
он подключен к LPEN; поскольку растр ВГ75 формирует сама, она по фотодатчику лишь фиксирует,
где он уловил прохождение луча. Эти координаты ВГ75 и запишет в регистры светового пера.
light pen.png
Кнопка может быть явно НА световом пере - тогда тыкать не надо: указал в экран и нажал пальцем кнопку.
В принципе и без кнопки, я думаю, этот процесс может идти постоянно.
ВГ75 записывает в регистры светового пера по сигналу LPEN, по флагу готовности - остается лишь координаты считать.
You do not have the required permissions to view the files attached to this post.
iLavr
begoon
Senior
Posts: 147
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Re: Световое перо для РК

Post by begoon »

В эмуляторе я кнопку светового пера (левую кнопку мыши) "завел" напрямую на бит LP статусного регистра:

Code: Select all

if (addr == 0xc001) {
  return 0xff | ~(this.screen.light_pen_active ? 0x10 : 0x00);
}
На реальном железе этот бит как бы говорит, что ВГ75 видит внешний LPEN=1 (кнопка нажата) и поэтому считал перо и уже готов "отдать" координаты на чтение по команде 60h.

В эмуляторе же координаты пера как бы всегда "готовы" мгновенно, если левая кнопка мыши нажата, поэтому виртуальный ВГ75 всегда готов отдать координаты, если подана команда 60h, и все зависит просто от кнопки мыши.
User avatar
Paguo-86PK
Maniac
Posts: 267
Joined: 12 Apr 2011 20:43
Location: Tashkent

Re: Световое перо для РК

Post by Paguo-86PK »

begoon wrote:В эмуляторе я кнопку светового пера (левую кнопку мыши) "завел" напрямую на бит LP статусного регистра:

Code: Select all

if (addr == 0xc001) {
  return 0xff | ~(this.screen.light_pen_active ? 0x10 : 0x00);
}
На реальном железе этот бит как бы говорит, что ВГ75 видит внешний LPEN=1 (кнопка нажата) и поэтому считал перо и уже готов "отдать" координаты на чтение по команде 60h.

В эмуляторе же координаты пера как бы всегда "готовы" мгновенно, если левая кнопка мыши нажата, поэтому виртуальный ВГ75 всегда готов отдать координаты, если подана команда 60h, и все зависит просто от кнопки мыши.
Пытaюсь писать на Бейсике демонстрацию с использованием светового пера, но никак не могу прочитать статус.
Глянул в скрипт…

Чтo-то я не пойму:

Code: Select all

99    if (addr == 0xc001) {
100     return 0xff | ~(this.screen.light_pen_active ? 0x10 : 0x00);
101    };
Почему вместо «& ~» применён «| ~»?
Заглушка?

Кстати, флаг «IR» тоже не плохо было бы поддержать с маской 0x20, который используется в подпрограмме запуска ВГ75/ВТ57.
В 90-х я по этому флагу устраивал часы реального времени.

Если при стандартных настройках ВГ75:

Code: Select all

SHHHHHHH 4D - 78 CHARACTERS PER ROW + 8 CHARACTERS PER HRTC
VVRRRRRR 1D - 30 ROWS PER FRAME     + 1 ROW PER VRTC
UUUULLLL 99 - 10 LINES PER ROW
MFCCZZZZ 93 -  8 CHARACTERS PER HRTC
Частота активации «IR» должна быть примерно 50 Гц:

Code: Select all

8 MHz / (6 * 86 * 31 * 10) ≈ 50,0125 Hz
Соответственно, в эмуляторе нужно привязать флаг ко времени:

Code: Select all

vg75_flag_IR = Date.now() % Math.floor(8 / (6 * (characters_per_row + characters_per_hrtc) * (rows_per_frame + rows_per_vrtc) * lines_per_row / 100000)) > (длительность IRQ) ? 0x20 : 0x00;