Вы видите желто и синих цвета? Но у меня черно-белые изображение. Сам монитор черно-белые. Монохромное изображение — чёрно-белые компьютер монитор. У меня он был! Нет у меня желто и синих цвета.
А они есть в глазу! Но не только. Они есть в фотоапарата! Фотоапарат решил что желтый и синий цвета.
Снимок от фотоапарата.



Но нужно по порядку. 2004 год, 20 лет назад! Я читаю программирование видеоадаптеров.

«Контроллер атрибутов содержит двадцать один регистр. Доступ к ним осуществляется через один порт — 3C0h. Этот порт совмещает в себе функции индексного порта и порта данных, регулируемые внутренним триггером. Триггер переключается при каждой операции записи в порт и записываемые данные воспринимаются либо как индекс регистра, либо как данные для обмена с регистром.»

«11h регистр цвета рамки экрана (Screen Border Color Register — SBCR).»


НЕТ! Нет рамки а есть всю экрана! И начиная от S3 и заканчивая NVIDIA. Начиная 1 килобайт и заканчивая 16 гигабайт!
И можно мерцать! Получая белый либо черный цвета.
И вот тут я обнаружил цвет!

Цвет Фехнера

«Цветовой эффект Фехнера — это иллюзия цвета, наблюдаемая при взгляде на некоторые быстро меняющиеся или движущиеся черно-белые узоры. Их также называют цветами мерцания, вызванными узором (PIFC). Исследования показывают, что процесс сине-желтого оппонента объясняет все различные PIFC.

Эффект чаще всего демонстрируется с помощью устройства, известного как волчок Бенхама (также называемого диском Бенхама). Когда верхняя часть вращается, дуги бледного цвета видны в разных местах диска, образующего его верхнюю поверхность. Эффект также можно увидеть в стробоскопических источниках света, когда вспышки настроены на определённую критическую скорость. Вращающиеся лопасти вентилятора, особенно алюминиевые, также могут продемонстрировать этот эффект; когда вентилятор ускоряется или замедляется, цвета появляются, смещаются, меняются и исчезают.

Механизм восприятия цвета Фехнера до конца не изучен.»


Но не только мой мозг. Фотоапарат тоже! Вы сами видете — вот снимок 2004 года.
Синий и желтого цвета!



Потом я забыл. Положил в стол. И лежал до 2024 года.

Как сделать?

Сразу сказать что аппаратная виртуализация не идет!

Hyper-V
VirtualBox
QEMU

дают черный экран и все.

Поэтому нужно реального режима!
И это можно. Он есть.

for /f "tokens=2 delims= " %%i in ('bcdedit /create /application bootsector /d fechner') do (
bcdedit /set %%i device partition=C:
bcdedit /set %%i path \fechner.bin 
bcdedit /displayorder %%i /addlast
)
bcdedit /timeout 60


Такой в cmd. и выполнить.
И тогда при перезагрузки появится fechner
Это я так назвал )
Вот



bcdedit создает
Загрузочный сектор реального режима
-------------------------------
идентификатор     {0a1587d3-9c52-11ed-adbb-74d4350b9326}
device            partition=C:
path              \fechner.bin
description       fechner

и
displayorder           {current}
                       {0a1587d3-9c52-11ed-adbb-74d4350b9326}
timeout                60


Однако должен быть fechner.bin
Как? Fasm!

flatassembler.net/download.php
flatassembler.net/fasmw17332.zip

Нужен один файл FASM.EXE
И создать fechner.asm

Вот fechner.asm

  mov bl,63
  mov si,1
  mov dx,3c0h

metka:
  mov al,11h
  out dx,al
  mov al,bl
  out dx,al
  xor bl,63

  mov cx,si
delay:
  finit
loop delay

  in al,60h
  cmp al,29
jne noctrl
  inc si
lo1:
  in al,60h
  cmp al,29
je lo1
jmp metka

noctrl:
  cmp al,56
jne noalt
  dec si
lo2:
  in al,60h
  cmp al,56
je lo2
jmp metka

noalt:
  cmp al,1
jne metka
jmp 0FFFFh:0


Его открыть с помощью FASM.EXE и появится fechner.bin




61 байт! Это самый нужный файл! )
Перезагрузка и выбираете fechner.bin в реального режима!

Три клавиши



Самый левый внизу — Ctrl — для увеличения черный и белый пикселей, по пробуете!
Левый внизу — Alt — для уменьшения который увеличеных.
Самый левый верху — Esc — выйти!

Вот что мы увидели.



Так.



Так.



И еще так.



Явно цвета, синий и желтый (сиреневого, фиолетового)! А на самом деле черно-белый. Мозг и фотоапарата делает их! Можно поиграть.

Всем спасибо!
Немного больше года назад я перенес инсульт. И преодолевает его последствия. Я стараюсь!

Комментарии (19)


  1. markshevchenko
    24.06.2024 07:38
    +6

    В начале 90-х принимал участие в переводе Turbo Vision в графический режим для новых тогда адаптеров SVGA. Вдоль и поперёк перечитывал книги Джордейна и Нортона, которые рассказывали, как управлять адаптерами EGA. Естественно, делал на языке ассемблера.

    Это не так круто, как эффект Фехнера (я про него и не знал до прочтения статьи), но где-то рядом. Испытал острое чувство ностальгии. Спасибо.

    Выздоравливайте!


    1. pae174
      24.06.2024 07:38

      Turbo Vision в графический режим для новых тогда адаптеров SVGA

      Graphics Vision что ли?


      1. markshevchenko
        24.06.2024 07:38
        +1

        Я не знаю, что такое Graphics Vision. Тогда у ребят в Turbo Pascal, кажется, 6-й версии была текстовая GUI библиотека Turbo Vision. Оказалось, что весь её вывод сконцентрирован буквально в одном пользовательском прерывании, если не ошибаюсь, 60h.

        Мы переводили экран в графический режим при старте, перехватывали прерывание и там был код, который выводил текст в графических режимах 80060016 или 64040016. Думаю, мы не одни такие были, так что наверное были и другие похожие решения.


        1. pae174
          24.06.2024 07:38
          +2

          Я в 1994 наверное году пытался применить некую библиотеку с названием GraphicVision (или похожим - я точно не помню), которая представляла собой набор классов, похожий на TurboVision, но только с закосом под графику. Там ничего не перехватывалось а тупо классы были заново переписаны. Можно было размеры окошек и кнопок задавать в пикселях, например. Так что в DOS получалось нечто похожее на виндовую программу, развернутую на весь экран. Её где-то в Москве сделали. Она багливая была до жути, я писал разработчикам багрепорты через FIDO, но не кончилось ничем. В результате мы на винду перелезли и забыли про DOS.


          1. checkpoint
            24.06.2024 07:38
            +2

            Помоему она называлась SuperVision и была написана на Turbo Pascal-е, эдакий клон Turbo Vision для граф мода. В 93-94-м я писал свою аналогичную на Borland C++. Но потом увидел OS/2 и на этом всё.


        1. Oinky
          24.06.2024 07:38

          Разве Turbo Vision использовала прерывание для вывода? Насколько помню, она выводила напрямую в видеопамять, как и стандартный модуль Crt.


          1. markshevchenko
            24.06.2024 07:38
            +1

            Тут два аспекта. Стандартно, для вывода можно было использовать прерывания 10h (BIOS) и 21h (DOS). Конечно, Turbo Vision не использовала эти прерывания, потому что они работали медленно.

            Там был собственный метод вывода и, конечно, он работал через видеопамять. Но как он вызывался? Через пользовательское прерывание 60h (или 61h, я сейчас уже не помню). Пользовательские прерывания отдавались на откуп программистам, их можно было использовать, как угодно. В Turbo Vision — для вывода.

            Почему этот метод работал быстрее, чем прерывания BIOS? Там были режимы "скопировать прямоугольную область на экран", "повторить символ N раз" (это для повторения символов). В BIOS и DOS привязаны к курсору: чтобы вывести символ, надо передвинуть курсор. Это было медленно. Простое копирование в видеопамять без привязки к курсору — быстро.

            Некоторые детали могут не соответствовать действительности. История из 92-го года, больше 30-ти лет прошло.


            1. Oinky
              24.06.2024 07:38

              Да, помню эту привязку к курсору. Да и модуль Crt, хоть и выводил напрямую в видеопамять, тоже требовал позиционировать курсор с помощью gotoxy. При больших объемах вывода в разных местах экрана ещё хорошо было сделать курсор временно невидимым, чтобы на медленных машинах он не мелькал.

              Давно не видел исходных текстов Turbo Vision. В 90-е немного её дорабатывал, чтобы работали русские Alt-комбинации (Alt-Ф для '~Ф~айл') и ещё какие-то ошибки исправлял. Про такую систему с прерыванием не помню, и как будто не очень понятно, зачем это могло быть там, ведь достаточно обычной подпрограммы, вызываемой не через int, а через call; это же не резидент. Да и из справочника Ральфа не припомню какого-то особенного прерывания Turbo Vision. Может, раскопаю потом всё это дело.


              1. markshevchenko
                24.06.2024 07:38

                Согласен, что странно, но в паскалевской версии TV было так, и это сильно упростило нам разработку графического расширения.


              1. pae174
                24.06.2024 07:38

                не очень понятно, зачем это могло быть там, ведь достаточно обычной подпрограммы, вызываемой не через int, а через call

                int на три байта короче far call. Если требуется вызывать подпрограмму из 1000 мест то это сразу экономит 3 килобайта.


  1. tuxi
    24.06.2024 07:38
    +15

    Выздоравливайте!


  1. SuperTEHb
    24.06.2024 07:38

    Не может ли камера воспринимать сиреневый цвет просто из-за настройки баланса белого? Вспоминается спор по поводу бело-золотого платья или какое оно там было...


    1. vicsoftware
      24.06.2024 07:38

      У фотоаппарата есть ещё эффект муара. Поскольку на экране красный/синий/желтый пиксели разнесены, а у фотоаппарата также присутствуют раздельные фотоэлементы под каждый цвет, то возможна ситуация, когда какие-то точки с экрана просто не попадут на соответствующие фотоэлементы и выпадут из картинки.



  1. IvanPetrof
    24.06.2024 07:38
    +4

    Если у вас не монохромный монитор (а сейчас такой где взять?) то его изображение всегда состоит из красных/синих/зелёных субпикселей. Какой бы цвет на него не выводили (ну, кроме чёрного). Вы уверены, что это не артефакты цветного монитора, работающего в закритическом режиме?


    1. Javian
      24.06.2024 07:38

      нет.

      Если бы этот опыт показать по телевидению, то эффект был бы тот же: на экране черно-белого телевизора вы увидели бы разноцветные кольца.

      Скриншот ниже https://habr.com/ru/articles/823560/#comment_26969832


      1. IvanPetrof
        24.06.2024 07:38

        По вашей ссылке немного про другое. эффект Фехнера несомненно существует. И видят его человеки (даже через передачу по телевизору. Но, разумеется, только в динамике. На стопкадре будет ч/б).

        Но вот камера, в вашем случае, скорее видит какие-то субпиксельные артефакты (подобно цветному муару). не хватает чистоты эксперимента, где камера смотрит на аппаратный ч/б экран. Ну, или, хотя бы пресловутый диск Фехнера ей показать (а потом рассмотреть стоп-кадр)


  1. checkpoint
    24.06.2024 07:38

    Интересно, Интел уже похерил загрузку из MBR на современных компах ?


  1. Javian
    24.06.2024 07:38

    волчок Бенхама

    Так вот как это называется. Десятки лет прошли, но только сейчас я снова этот волчок встретил и наконец-то узнал откуда он взялся.

    В.Н.Болховитинов. Твоё свободное время (1975)