nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 18 Mar 2024 20:44



Reply to topic  [ 40 posts ]  Go to page Previous  1, 2, 3  Next
Световое перо для РК 
Author Message
Senior

Joined: 22 Aug 2012 17:06
Posts: 144
Location: 188.220.42.216
Reply with quote
Paguo-86PK wrote:
Чтo-то я не пойму:
Code:
99    if (addr == 0xc001) {
100     return 0xff | ~(this.screen.light_pen_active ? 0x10 : 0x00);
101    };
Почему вместо «& ~» применён «| ~»?
Да, это была опечатка. Исправил на "|". Изменения выложены.
Paguo-86PK wrote:
Кстати, флаг «IR» тоже не плохо было бы поддержать с маской 0x20, который используется в подпрограмме запуска ВГ75/ВТ57. В 90-х я по этому флагу устраивал часы реального времени.

Если при стандартных настройках ВГ75:
Code:
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:
8 MHz / (6 * 86 * 31 * 10) ≈ 50,0125 Hz
Соответственно, в эмуляторе нужно привязать флаг ко времени:
Code:
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;
Я этого не знал. Надо будет поддержать. Пока этого нет.

Чтобы этот флаг тестировать, есть пример программы, которая умеет этот флаг использовать?


10 Mar 2021 11:10
Profile
Maniac
User avatar

Joined: 12 Apr 2011 20:43
Posts: 267
Location: Tashkent
Reply with quote
begoon wrote:
Чтобы этот флаг тестировать, есть пример программы, которая умеет этот флаг использовать?
B 90-х единственным источником программ на РК был журнал РАДИО и собственная любознательность.
Даже если такие программы есть, о них я не знаю.

Лично сам писал псевдографическую бегущую строку, а когда обнаружил её подёргивание, решил привязать задержку к флагу IR ВГ75.

Для проверки могу лишь дать свой код:
 "Исходный листинг"
Code:
MASK    EQU     020H    ; 010H для проверки "светового пера"
;;;;;;;;;;;;;;;;;;;;;;;;;
        .ORG    00000H
        LXI     H,ZEROS
        CALL    0F818H
        INX     H
        PUSH    H
        LHLD    07600H
        SHLD    RASTER+1
        POP     H
        CALL    0F818H
        INX     H
        PUSH    H
        LHLD    07600H
        SHLD    FRAME+1
        POP     H
        CALL    0F818H
        INX     H
        PUSH    H
        LHLD    07600H
        SHLD    VRTC+1
        POP     H
        CALL    0F818H
        LHLD    07600H
        SHLD    SHADE+1
        LXI     B,0C001H
FRAME:  LXI     H,0
        CALL    COUNT
RASTER: LXI     H,0
LOOPZ:  CALL    COUNT
        LDAX    B
        ANI     MASK
        JZ      LOOPZ
SHADE:  LXI     H,0
        CALL    COUNT
VRTC:   LXI     H,0
LOOPNZ: CALL    COUNT
        LDAX    B
        ANI     MASK
        JNZ     LOOPNZ
        JMP     FRAME
;;;;;;;;;;;;;;;;
COUNT:  PUSH    H
CLOOP:  MOV     A,M
        ORA     A
        JZ      CEND
        ADI     061H
        DAA
        JNC     CNEXT
        XRA     A
CNEXT:  ANI     00FH
        ADI     030H
        MOV     M,A
        DCX     H
        ANI     00FH
        JZ      CLOOP
CEND:   POP     H
        RET
;;;;;;;;;;;;;;;;
ZEROS   DB      00DH,00AH,'rastr',018h,'00000000',008H,0
        DB      018H,018H,'s~et',018h,'0000',008H,0
        DB      00DH,00AH,'<ksi>',018h,'00000000',008H,0
        DB      018H,018H,'s~et',018h,'0000',008H,0
  • «РАСТР» - длительность кадра. Сейчас он не считает, так как флаг «IR» извещает о вечном конце кадра
  • «РАСТР - СЧЁТ» - счётчик кадров. Так как по «IR» кадры не обновляются формально, счёта нет
  • «<КСИ>» - длительность КСИ. Сейчас формально система в статусе вечного КСИ
  • «<КСИ> - СЧЁТ» - счётчик КСИ. Сейчас может насчитываться лишь один супер-длинный КСИ
Готовая ссылка.

P.S.: Накидал кое-как игру с использованием «светового пера»…
И «Игра "Жизнь"» вроде работает…
P.P.S.: Что-то мне подсказывает, что флаг «LP» - инвертирован.
В документации написано одно, в эмуляторе - как будто инверсия.
Проверьте пожалуйста ещё раз логику, а то не хотелось бы код своих программ массово править… :wink:


10 Mar 2021 12:33
Profile WWW
Senior

Joined: 22 Aug 2012 17:06
Posts: 144
Location: 188.220.42.216
Reply with quote
Paguo-86PK wrote:
Кстати, флаг «IR» тоже не плохо было бы поддержать с маской 0x20, который используется в подпрограмме запуска ВГ75/ВТ57. В 90-х я по этому флагу устраивал часы реального времени.

Если при стандартных настройках ВГ75:
Code:
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:
8 MHz / (6 * 86 * 31 * 10) ≈ 50,0125 Hz

Соответственно, в эмуляторе нужно привязать флаг ко времени:
Code:
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;

Спасибо за очень подробную формулу.

Поясните, пожалуйста, еще раз по формуле, правильно ли я понял:
  • characters_per_row - это 78
  • characters_per_hrtc - это 8
  • rows_per_frame - это 30 (некоторые программы, например GFIRE могут ставить больше значение, например 38, для большого размера экрана по высоте)
  • rows_per_vrtc - это 1
  • lines_per_row - это 10

Вопрос:
  • что есть "длительность IRQ", и чему оно равно?
  • что такое такое 6?
  • откуда частота именно 8 MHz?


11 Mar 2021 09:11
Profile
Maniac
User avatar

Joined: 12 Apr 2011 20:43
Posts: 267
Location: Tashkent
Reply with quote
begoon wrote:
Поясните, пожалуйста, еще раз по формуле, правильно ли я понял:
  • characters_per_row - это 78
  • characters_per_hrtc - это 8
  • rows_per_frame - это 30 (некоторые программы, например GIRE могут ставить больше значение, например 38, для большого размера экрана по высоте)
  • rows_per_vrtc - это 1
  • lines_per_row - это 10
Eсли я не запутался. Но, так как частота кадров получается ≈50 Гц, видимо, всё так.
Quote:
Вопрос:
  • что есть "длительность IRQ", и чему оно равно?
  • что такое такое 6?
  • откуда частота именно 8 MHz?

  • частота 16 МГц тактового генератора DD1 ГФ24 с вывода 12 OSC поступает на вывод 14 DD3 ИЕ4 и делится пополам¹
  • коэффициент деления счётчика DD3 ИЕ4 на выводе 8 равен 6, с которого тактируется сама ВГ75 и обеспечивает по 6 пикселей на знакоместо¹
  • длительность сигнала прерывания - самый сложный вопрос…
(¹-такие излишние подробности для тех, кто через гугл будет искать детальную информацию…)
Attachment:
File comment: Длительность IRQ
i8275-irq.jpg
i8275-irq.jpg [ 30.88 KiB | Viewed 6086 times ]

Из графиков не совсем понятно (мне в частности) чему равна длительность IRQ. Но из описания следует, что в начале последней отображаемой строки, когда из ПДП прочитан весь буфер, вырабатывается внешнее прерывание, если оно разрешено командой «Enable Interrupt» с кодом 0xA0 или командой «Start Display», разрешающей прерывания и ПДП.
Однако, тут говорится:
Attachment:
i8275-ir.jpg
i8275-ir.jpg [ 12.73 KiB | Viewed 6086 times ]

Значит, флаг устанавливается на период от последней отображаемой строки до начала первой, но сбрасывается и чтением статуса.

Тем самым, если не ошибаюсь, длительность этого периода должна иметь в выражении «6 * (characters_per_row + characters_per_hrtc) * (1 + rows_per_vrtc) * lines_per_row»…
Но пока не совсем понимаю, как это подставить в соотношение…
(К сожалению, привык разбираться с логическим описанием задачи, а не математическим…)


11 Mar 2021 10:52
Profile WWW
Senior

Joined: 22 Aug 2012 17:06
Posts: 144
Location: 188.220.42.216
Reply with quote
Paguo-86PK wrote:
Накидал кое-как игру с использованием «светового пера»…
И «Игра "Жизнь"» вроде работает
Блин, программы с использованием пера - это ОЧЕНЬ круто!
Давайте еще!
Paguo-86PK wrote:
Что-то мне подсказывает, что флаг «LP» - инвертирован.
В документации написано одно, в эмуляторе - как будто инверсия.
Убрал инверсию флага LP. Теперь как в документации. Увы, игры, что выше, теперь надо править...

Кстати, в доках пишут, что координата X имеет смещение на 3 позиции. Получается, что в программах надо это учитывать, и везде вычитать 3 из координаты Х. Будем это поддерживать?
Attachment:
i8275_light_pen.png
i8275_light_pen.png [ 143.93 KiB | Viewed 6082 times ]


По поводу флага IR. Непонятно до конца как сделать. Например:
  • 50 раз в секунду (каждые 20мс) флаг IR устанавливается в 1
  • флаг стоит некоторое время T и потом сбрасывается (до следуюшего 50MHz тика)
  • команда чтения регистра состояния всегда сбрасывает IR в 0.

Остается понять, какое это время T.


11 Mar 2021 11:48
Profile
Maniac
User avatar

Joined: 12 Apr 2011 20:43
Posts: 267
Location: Tashkent
Reply with quote
begoon wrote:
Блин, программы с использованием пера - это ОЧЕНЬ круто!
Сaм это понял, когда получилось реализовать. Скорость работы с интерфейсом повышается значительно! :mrgreen:
Quote:
Давайте еще!
Этo не так легко! :lol:
Самая сложная сторона - перевод в громадный Hex-файл: Там куча промежуточных стадий:
  1. В консоли по «dd 0,65536» выгружаю память в файл
  2. Онлайн утилитой перевожу в текстовый хекс-дамп
  3. В NotePad++ несколько раз поиском/заменой привожу в надлежащий вид
И только потом вкачиваю в gist…
Все эти процедуры довольно утомительны.

Думаю, в консоль нужно добавить ещё директиву для выгрузки памяти прямо в хекс-текст.
Но каждый раз все 64 Кб выгружать - изрядно затратно: Нужно добавить возможность грузить несколько файлов по порядку (например)…
Quote:
Убрал инверсию флага LP. Теперь как в документации. Увы, игры, что выше, теперь надо править...
Исправил…
Quote:
Кстати, в доках пишут, что координата X имеет смещение на 3 позиции. Получается, что в программах надо это учитывать, и везде вычитать 3 из координаты Х. Будем это поддерживать?
Тоже всюду читаю про это смещение.
Здесь я предлагаю ввести файл конфигурации. Тем самым, там и можно будет указывать любое смещение…
Quote:
По поводу флага IR. Непонятно до конца как сделать…

Остается понять, какое это время T.
Пока не могу ничего больше посоветовать: Самому нужно как-то вникнуть в теорию и понять, что с теми цифрами делать… :roll:


11 Mar 2021 12:32
Profile WWW
Senior

Joined: 22 Aug 2012 17:06
Posts: 144
Location: 188.220.42.216
Reply with quote
Paguo-86PK wrote:
Самая сложная сторона - перевод в громадный Hex-файл: Там куча промежуточных стадий:
  1. В консоли по «dd 0,65536» выгружаю память в файл
  2. Онлайн утилитой перевожу в текстовый хекс-дамп
  3. В NotePad++ несколько раз поиском/заменой привожу в надлежащий вид
И только потом вкачиваю в gist.
Я написал для этого конвертер - rk86_hex.py. Переводит бинари прямо в нужный формат с тегами.

Paguo-86PK wrote:
Думаю, в консоль нужно добавить ещё директиву для выгрузки памяти прямо в хекс-текст.
Но каждый раз все 64 Кб выгружать - изрядно затратно: Нужно добавить возможность грузить несколько файлов по порядку (например)
Я думаю просто сделать нормальные снапшоты - полный дамп памяти, в дополнительные теги сохранять состояние процессора и остальных микросхем. И не надо никакой магии скриптов, подсовывания нажатий кнопок и так далее.

И от двоичных файлов надо будет отказаться при выгрузки из эмулятора. Текстовые в разы удобнее.

Paguo-86PK wrote:
Quote:
Кстати, в доках пишут, что координата X имеет смещение на 3 позиции. Получается, что в программах надо это учитывать, и везде вычитать 3 из координаты Х. Будем это поддерживать?
Тоже всюду читаю про это смещение.
Здесь я предлагаю ввести файл конфигурации. Тем самым, там и можно будет указывать любое смещение.
Все-таки это стандартное поведение микросхемы. Любое реальное железо именно так бы и работало. Думаю, до просто делать "-3", ибо без этого будут бинари, заточенные чисто под эмулятор.


11 Mar 2021 13:05
Profile
Maniac
User avatar

Joined: 12 Apr 2011 20:43
Posts: 267
Location: Tashkent
Reply with quote
begoon wrote:
Я написал для этого конвертер - rk86_hex.py. Переводит бинари прямо в нужный формат с тегами.
Когдa-то нашёл и выбрал именно Ваш эмулятор для разработки по причине того, что не надо локально ничего сохранять, устанавливать и запускать… :ebiggrin:
А Python стоит в VMware отдельно, чтобы не засорять хост-среду. :idea:
Считаю излишним что-то скачивать и устанавливать (Python) для конкретного момента.
(Фишка Вашего эмулятора - среда разработки онлайн.)
Quote:
И от двоичных файлов надо будет отказаться при выгрузки из эмулятора. Текстовые в разы удобнее.
Иногда свои наброски проверяю и в Emu80 под VMware. Выгрузка только в текст значительно осложнит процесс проверки узких мест в разных эмуляторах…
Quote:
Все-таки это стандартное поведение микросхемы. Любое реальное железо именно так бы и работало. Думаю, до просто делать "-3", ибо без этого будут бинари, заточенные чисто под эмулятор.
По-моему, здесь может скрываться подвох.
Если на экране 78×30 в позиции «0,0» сработает световое перо, оно должно вернуть позицию «75,29»?
То есть, что будет с позицией Y? Смещение на 3 знакоместо здесь, получается, понятие растяжимое… :roll:

Всё очень мутно в этом плане и документация ссылает программиста всё прощупывать методом проб и ошибок.

Конкретно здесь обсуждался способ доработки узла на ВГ75 для сдвига временны́х параметров под НЧ-сигнал по ГОСТу. Если браться серьёзно к проработке схемы РАДИО-86РК, можно скорректировать практически всё. Включая и позицию светового пера.

По поводу длительности флага IR
По-моему, это описывается примерно так:
Code:
// i8275 default settings
characters_per_row = 78;
characters_per_hrtc = 8;
rows_per_frame = 30;
rows_per_vrtc = 1;
lines_per_row = 10;

// circuit properties
i8275_clock = 8000000;

// raster properties
ticks_per_row = 6 * (characters_per_row + characters_per_hrtc) * lines_per_row;
ticks_per_frame = ticks_per_row * (rows_per_frame + rows_per_vrtc);

fps = i8275_clock / ticks_per_frame;

frame_duration_ms = 1000 / fps;
vrtc_duration = frame_duration_ms / (rows_per_frame + rows_per_vrtc);

        // Выявление момента последней строки кадра
        period = Date.now() % frame_duration_ms;
        i8275_flag_ir = period < vrtc_duration ? 0x20 : 0x00;


11 Mar 2021 13:44
Profile WWW
Maniac
User avatar

Joined: 12 Apr 2011 20:43
Posts: 267
Location: Tashkent
Reply with quote
Игры
Адаптировал под световое перо игру, которая на кассете называлась «МАРС-2», но в файлах представлена как «MARS3».

Вот нормальная адаптация под световое перо игры «МАРС».
(Игра со звуком!)


12 Mar 2021 15:42
Profile WWW
Writer
User avatar

Joined: 22 Jun 2013 01:49
Posts: 13
Location: Москва
Reply with quote
Если прерывания не были специально запрещены, то флаг IR устанавливается вначале отображения последней строки - то есть с началом отображения первой линии последней строки символов. А сбрасывается этот флаг только при чтении и больше никак - если не было чтения, то после первого же отображённого кадра флаг будет выставлен всегда.


12 Mar 2021 23:49
Profile
Maniac
User avatar

Joined: 12 Apr 2011 20:43
Posts: 267
Location: Tashkent
Reply with quote
SegaBoy wrote:
Если прерывания не были специально запрещены, то флаг IR устанавливается вначале отображения последней строки - то есть с началом отображения первой линии последней строки символов. А сбрасывается этот флаг только при чтении и больше никак - если не было чтения, то после первого же отображённого кадра флаг будет выставлен всегда.
Спасибо! :kruto:
Всегда задавался вопросом, зачем по адресу FAE0 стояли два 7E 7E. Думал, для задержки… :roll:
(Всё таки или справочники читал не внимательно, либо как-то неочевидно там выложены нюансы…)

Тач-скрин
Тут идейка в голову пришла.
Так как сейчас CRT средства отображения информации становятся всё более экзотическими, есть мысль рестистивную тач-панель использовать для вырабатывания сигнала LPEN относительно HRTC и VRTC в зависимости от точки касания.
А так как схема на одновибраторах (например) однозначно потребует калибровки, то в этих условиях коэффициент смещения знакоместа будет варьируемым.
Тем самым, соблюдать в эмуляторе искусственно эту особенность ВГ75 и, тем более, искусственно приращивать в программах эту непонятную константу коррекции - ещё более бессмысленно.

Технологии и так перегружены всякими пережитками ограничений первых ЭВМ, смысл (ограничений) которых нужно узнавать из справочников… :roll:

ИМХО: Не нужно плодить сущностей и осложнять задачу программно, которая решается простой калибровкой аппаратной части единожды, чем в каждой программе учитывать это смещение…


13 Mar 2021 00:21
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
В световом пере просто всегда есть кнопка явно или неявно...

Во времена популярности "Paдио-86PK" мне световое перо как-то и в голову не приходило, потому как
был у меня тогда "Специалист", а ВГ75 была страшным дефицитом...

А вот когда у меня появилась 286 машина и EGA видеокарта, мне световое перо очень не по-децки захотелось,
потому как вот в этой книжке очень подробно было рассказано, как устроено световое перо:
Attachment:
576021b.jpg
576021b.jpg [ 65.5 KiB | Viewed 5889 times ]

Но как цеплять его к видеокарте, там объяснили весьма скудно, видимо, посчитали, что это знают все.
Но поскольку компьютерная комплектация тогда покупалась без бумажной документации, я так и не сумел
найти, как световое перо к видеокарте подключать.
Хотя, если и сейчас погуглить, то EGA видеокарта и световое перо - это просто прямо как отец и сын! :roll:
Но главное, в книжке были такие соблазнительные картинки пакетов САПР, работающих со световым пером...
Но - не срослось... :-?

Сорри за небольшой оффтоп тут... просто топик напомнил...

_________________
iLavr


14 Mar 2021 01:38
Profile
Maniac
User avatar

Joined: 12 Apr 2011 20:43
Posts: 267
Location: Tashkent
Reply with quote
begoon wrote:
Кстати, в доках пишут, что координата X имеет смещение на 3 позиции. Получается, что в программах надо это учитывать, и везде вычитать 3 из координаты Х. Будем это поддерживать?
Послe долгих мысленных экспериментов пришёл к заключению: Смещение поддерживать надо!
(Его устранить аппаратно можно лишь задержкой сигнала на целый кадр МИНУС 3 позиции…)

Конкретно 3 позиции - и в справочниках везде с детства читал про это.

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

Делал как-то рандомную перезапись регистров позиции курсора в течении кадра - весь экран покрывался большим количеством курсоров. То есть, никаких блокировочных механизмов для обновления позиции курсора ровно 1 раз в 1 кадр там нету.

А учитывая, что и флаг IR ставится в последнем знакоряде и сбрасывается только программно, косвенно как-то получается, что и флаг LP устанавливается по сигналу LPEN и не сбрасывается никогда до программного чтения-сброса.
(Здесь и подводный камень может крыться, если запоминается только первая позиция светового пера и не будет обновляться до программного чтения статусного регистра / регистров позиции флагов.)

P.S.: Слишком много белых пятен… :roll:


14 Mar 2021 06:33
Profile WWW
Maniac
User avatar

Joined: 12 Apr 2011 20:43
Posts: 267
Location: Tashkent
Reply with quote
Попытaлся вновь написать свою подпрограмму построения линии псевдографикой, так как «световым пером» теперь легче манипулировать и выискивать баги визуализации.

Как известно, в Бейсиках линии оператором LINE рисуются внутренними вызовами кода оператора PLOT, что не лучшим образом сказывается на производительности.
Здесь, однако, идея в том, чтобы строить именно линию на экране не отдельными вызовами вывода псевдографического пикселя, а внутренним циклом LINE сразу двумя псевдографическими пикселями на знакоместо, перебирая лишь сами коды псевдографики…
(Онлайн запуск Fast-Lines-86).
Увы, как можно убедиться, хоть линии строятся существенно быстро, но не всякие квадранты алгоритмом верно выводятся на данный момент…

Имeется несколько световых перьев типа ЕС 27.00.Е000.
Вышло содержание с ссылкой на Селекторное перо, так как конкретно у меня схема другая, чем в документации…

У меня на компараторе оно…


Attachments:
File comment: Сторона 2
20210319_172915.jpg
20210319_172915.jpg [ 109.96 KiB | Viewed 5826 times ]
File comment: Сторона 1
20210319_172900.jpg
20210319_172900.jpg [ 111.43 KiB | Viewed 5826 times ]
19 Mar 2021 05:42
Profile WWW
Maniac
User avatar

Joined: 12 Apr 2011 20:43
Posts: 267
Location: Tashkent
Reply with quote
B общем, нашёл-таки выход!

Так как в РАДИО-86РК одно знакоместо - 10 линий растра, нет никакой разницы, в какую из этих линий световым пером попадёт пользователь физически. Тем более, на практике, так как экран кинескопа имеет определённую толщину и пиксели всегда видны немного дальше активной поверхности, то точность срабатывания светового пера также уменьшается.

Тем самым, можно отложить срабатывание светового пера на 75 видимых знакомест.
Вот иллюстрация:
Attachment:
File comment: Иллюстрация аппаратной коррекции позиции светового пера
LPEN-86-Delay.png
LPEN-86-Delay.png [ 702.71 KiB | Viewed 5625 times ]

  • Красное - сигнал от светового пера
  • Жёлтое - интервал линии задержки
  • Зелёное - задержанный сигнал, проходящий на вход LPEN ВГ75
  • Оранжевое - разница между знакоместами
Тем самым, световое перо сработает на 1 линию растра ниже, но с нужным смещением.

Таким образом, программно координаты позиция светового пера будет считываться верно и без смещения. А если смещение и будет, то аппаратно легко откалибровать.

То есть, сигнал от светового пера поступает на одновибратор.
Одновибратор же выдаст ответный сигнал для ВГ75 спустя определённый жёлтой линией интервал.

Вуаля!
И программно всё без костылей аппаратных ограничений прошлого.:)

Так как многие будут пользоваться именно эмуляторами РАДИО-86РК, а кто будет собирать и искать ВГ75, тому легче, благодаря реверс-инженерингу, исполнить аналог ВГ75 в ПЛИС/FPGA с поддержкой сенсорной тач-панели, естественно, использование внутренних сумматоров для коррекции рудиментарного смещения на 3 позиции будет как мозоль и легче выдавать координаты как есть.
Тем самым, поддержка смещения может сыграть злую шутку как наследие ВГ75, которых физически уже не сыщешь.
Лучше - программно не поддерживать, так как аппаратно можно легко откалибровать!

P.S.: ИМХО, необходимость поддерживать программно смещение отпала, так как переменным резистором интервальный порог настроить легче, чем переписывать весь код…


14 Apr 2021 12:18
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 40 posts ]  Go to page Previous  1, 2, 3  Next

Who is online

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