Радио-86РК на SRAM 128K Alpha (2014) & Beta (2024)

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

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

Alikberov wrote:А почему бы не заказать в конце-концов раскладку оригинальной РК-клавиатуры, но в плёнке?
Как и КР-03 с клавиатурой МС-7007, выглядило бы практически как фабричная модель... :roll:
Кстати есть картинка скан какой-нибудь старой РК-шной плёночной клавы?
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Alikberov
Doomed
Posts: 347
Joined: 14 Oct 2019 18:10
Location: Tashkent

Re: Радио-86РК на SRAM 128K Alpha

Post by Alikberov »

Shaos wrote:Кстати есть картинка скан какой-нибудь старой РК-шной плёночной клавы?
У отца где-то от ПЭВМ "Специалист" лежит "мембранка". :roll:
Но, скан плёночной готовой клавы "какой-нибудь" - это не то, так как получится некий "скэн-код", которому ещё и таблица нужна.

В этом плане, мне клавиатура именно РК и нравится, где "скэн-код" прямо ложится на ASCII.
Конечно, это порождает "лабиринт дорожек". Но, один раз вытравил - и живи спокойно (не надо в программах всякие таблицы хранить).
ИМХО, лучше один раз "паяльником выстрадать" и забыть о таблицах программно, кодируя тысячу программ. Чем из-за "паяльной лени" потом чертыхаться всякий раз, когда нужно напрямую читать клавиши.
(Инженеры IBM сэкономили на этом и скэн-код первой клавиатуры стал стандартом. Сейчас тысячи моделей клавиатур навороченных имеют свою матрицу и, соответственно, собственный скэн-код, который, в свою очередь, перекодируется в стандартный реликтовый скэн-код. Пф-ффф. :x )

P.S.: Пора уж любимому РАДИО-86РК подарить плёночную клавиатуру с родным для РК скэн-кодом (т.е. просто перенести топологию оригинальной клавиатуры РК на плёнку).
Нужно когда-нибудь кому-нибудь это выстрадать! :ewink:
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

Alikberov wrote:
Shaos wrote:Кстати есть картинка скан какой-нибудь старой РК-шной плёночной клавы?
У отца где-то от ПЭВМ "Специалист" лежит "мембранка". :roll:
Но, скан плёночной готовой клавы "какой-нибудь" - это не то, так как получится некий "скэн-код", которому ещё и таблица нужна.
Да я просто хочу распечатать бумажку, заламинировать её и наложить на мою клавку из кнопочек :lol:

P.S. Ещё вот это меня интересовало на прошлой странице ;)
Shaos wrote:Кстати каким образом вот тут Монитор раскрашивался?

Image
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Alikberov
Doomed
Posts: 347
Joined: 14 Oct 2019 18:10
Location: Tashkent

Re: Радио-86РК на SRAM 128K Alpha

Post by Alikberov »

Shaos wrote:P.S. Ещё вот это меня интересовало на прошлой странице ;)
Кстати каким образом вот тут Монитор раскрашивался?
Всё очень просто (относительно): Так как эмулятор rk86.ru написан на HTML/JS, то есть - опенсорс, с помощью технологии chrome-extension к сайту подгружается локальный JS-файл, который инжектируется на основную страницу.
(Лично я такой трюк назвал инжекторным эмулятором: Форк эмулятора не делаешь, но для себя локально его изменяешь под свои требования.)

Таким образом, я:
  • Добавил 512 Кб памяти с перехватом префиксов MOV R,R
  • Модифицировал ассемблер, добавив префиксные инструкции (LDAX D1/D2-D7 и т.д.)
  • Добавил ограниченную поддержку кодов F1/F3 для ВГ75
  • Добавил поддержку тайлов
Собственно, цветные символы на том видео - тайлы.

То есть, как известно, у РК знакогенератор - 6x8 и старшие два бита не используются.
Вот я и добавил в эти два бита способность изменять цвет пикселей строки символа.
Так как ВТ57 не реагирует (проверил на своём КР-03 практически) на адреса E009-E00F, все 8 Кб (точнее, 2 Кб - E00C-FFFF) я попробовал отдать под знакогенератор в режиме "только запись".
И "цветные символы-тайлы" загружал уже на программном уровне в игре "КСОНИКС".
(Физически, схематически, это относительно легко сделать, посадив свою схему параллельно ПДП: ВТ57 даже "отрезать" от ИД7 не понадобится, так как он игнорирует адреса E00C-ExxF.)

P.S.: В декабре получил почтой четыре штуки К537РУ8, для опытов со знакогенератором (в перспективе).
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

Ну значит это очень похоже на то, что я хочу сделать в железе (меня эта идея посетила в августе 2021) :)

А какие коды каким цветам соответствуют? Мои соответствия можно почитать выше на этой странице

Кстати этот онлайн эмулятор ведь опенсорц - можно взять сырцы и запустить на своём сайте с изменениями - я так в своё время сделал - см. http://rk86.net
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Alikberov
Doomed
Posts: 347
Joined: 14 Oct 2019 18:10
Location: Tashkent

Re: Радио-86РК на SRAM 128K Alpha

Post by Alikberov »

Shaos wrote:Ну значит это очень похоже на то, что я хочу сделать в железе :)

А какие коды каким цветам соответствуют? Мои соответствия можно почитать выше на этой странице
Вроде, учитывая печальный опыт с палитрой CGA (инженеры сдуру сделали R-G-Y и M-C-W, вместо простого R-G-B, подгоняя всё под владельцев ч/б мониторов), я сделал всё очень просто:
  • (11)010101 - ⬛⬛⬛⬛⬛⬛
  • (10)010101 - ⬛⬛⬛⬛⬛⬛
  • (01)010101 - ⬛⬛⬛⬛⬛⬛
  • (00)010101 - ⬛⬛⬛⬛⬛⬛
  • (00)111111 - ⬛⬛⬛⬛⬛⬛
  • (01)111111 - ⬛⬛⬛⬛⬛⬛
  • (10)111111 - ⬛⬛⬛⬛⬛⬛
Shaos wrote:Кстати этот онлайн эмулятор ведь опенсорц - можно взять сырцы и запустить на своём сайте с изменениями - я так в своё время сделал - см. http://rk86.net
Хм. Ассемблер там не функционирует. :neutral:
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

Где там? .ru или .net? Я давно не апдейтил свой сайт - надо поглядеть

По цветам не понял - все квадратики справа чёрные

Если шрифт адресуется начиная с E00C, то значит ли это, что символы с кодом 0 и 1 раскрасить нельзя?
Или шрифт выше сидит? 2 кило можно разместить в диапазоне E800…EFFF (начиная с E800 будет основной шрифт, а начиная с EC00 - альтернативный).
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Alikberov
Doomed
Posts: 347
Joined: 14 Oct 2019 18:10
Location: Tashkent

Re: Радио-86РК на SRAM 128K Alpha

Post by Alikberov »

Shaos wrote:Где там? .ru или .net? Я давно не апдейтил свой сайт - надо поглядеть
http://rk86.net/
Shaos wrote:По цветам не понял - все квадратики справа чёрные
Снимок экрана_2024-01-19_16-05-31.png
Shaos wrote:Если шрифт адресуется начиная с E00C, то значит ли это, что символы с кодом 0 и 1 раскрасить нельзя?
Или шрифт выше сидит? 2 кило можно разместить в диапазоне E800…EFFF (начиная с E800 будет основной шрифт, а начиная с EC00 - альтернативный).
Если ПДП занимает все 8 Кб памяти, но в каждых 16 байтах "реагирует" только на первые 9, имеем из 8 Кб все 3,5 Кб "свободными".
Так как РК-шный знакогенератор - 1 Кб, получаем целых 3 страницы знакогенератора.

Например, вот код для "прошивки" 2 Кб:

Code: Select all

if(address >= 0xE000 && address <= 0xFFFF) {
        if((address & 0x000F) >= 0x000C) {
                fonts[((address >> 2) & 0x07FC) | (address & 0x0003)] = data;
        }
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

Alikberov wrote:
Shaos wrote:По цветам не понял - все квадратики справа чёрные
Image
Shaos wrote:Если шрифт адресуется начиная с E00C, то значит ли это, что символы с кодом 0 и 1 раскрасить нельзя?
Или шрифт выше сидит? 2 кило можно разместить в диапазоне E800…EFFF (начиная с E800 будет основной шрифт, а начиная с EC00 - альтернативный).
Если ПДП занимает все 8 Кб памяти, но в каждых 16 байтах "реагирует" только на первые 9, имеем из 8 Кб все 3,5 Кб "свободными".
Так как РК-шный знакогенератор - 1 Кб, получаем целых 3 страницы знакогенератора.

Например, вот код для "прошивки" 2 Кб:

Code: Select all

if(address >= 0xE000 && address <= 0xFFFF) {
        if((address & 0x000F) >= 0x000C) {
                fonts[((address >> 2) & 0x07FC) | (address & 0x0003)] = data;
        }
т.е. дырками по 7 байт пишем? Или судя по коду - по 4? Как-то совсем неудобно...
Проще ещё один декодер адреса поставить, чем программно извращаться :)
Типа разделив область записи в ПДП #E000...#E7FF и записи в шрифт #E800...#EFFF.

Вот как на айфоне эти квадратики выглядят (в firefox тоже самое):
IMG_5983.jpeg
Возвращаясь к картинке:

Image

Почему где-то цвета ярче, а где-то темнее? А так по цветам как у меня на прошлой странице выбрано для палитры по умолчанию: 11 - белый, 10 - красный, 01 - зеленый и 00 - синий. По идее биты в знакоместах у РК инверсные - т.е. единички это чёрный фон, а нолики - белые (или цветные) точки. Получается единички в последних строчках должны быть чёрные? Или это особый случай для возможности рисования цветного фона? По идее мысль интересная!

P.S. Посмотрел http://rk86.net - вроде работает ассемблер - в чём конкретно проблема?
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Alikberov
Doomed
Posts: 347
Joined: 14 Oct 2019 18:10
Location: Tashkent

Re: Радио-86РК на SRAM 128K Alpha

Post by Alikberov »

Shaos wrote:т.е. дырками по 7 байт пишем? Или судя по коду - по 4? Как-то совсем неудобно...
Проще ещё один декодер адреса поставить, чем программно извращаться :)
Типа разделив область записи в ПДП #E000...#E7FF и записи в шрифт #E800...#EFFF.
Да, не так удобно, как хотелось бы. Но, не нужно ничего резать и каскадировать дешифрацию.

Кстати, так как ВГ75 запись данных игнорирует без предварительной настройки, то все чётный байты в пространстве C000-DFFE можно спокойно записывать - это уже 4 Кб.

И (проверил на КР-03) так как ВВ55 при чтении 8003 возвращает FE/FF, получаем ещё 4 Кб по адресам 8003-BFFF на чтение.
Т.е. не добавляя лишних дешифраторов, прямо в параллель ВВ55/ВТ57/ВГ75 можно посадить дополнительную периферию.
Конечно, будут всякие нюансы.
Но, в концепции "дорожки - не режем, дешифратор - не добавляем" получаем, в своём роде, любопытный концепт.

Кстати, я виртуально (в эмуляторе rk86.ru) на клавиатуру посадил индикатор ИПВ (документация) на порт клавиатуры 8000 (ссылка на симуляцию: параметр fade/параметр speed/параметр stream) и проверил, можно ли в паузах между опросами клавиатуры выводить символы, так как порты 8000 и 8001 простаивают в остальное время.
(Т.е. если в 8000 код FF, то никакие нажатия клавиш не изменят в 8001 код. Что можно использовать также. Т.е. добавить на плату клавиатуры К155ЛА2 и при коде FF на PBA активировать некий дополнительный буфер: АЦП, джойстики NES или клавиатуру PS/2)

Т.е. идей мягкой доработки РК просто уйма. :mrgreen:
Shaos wrote:Возвращаясь к картинке:

Image

Почему где-то цвета ярче, а где-то темнее? А так по цветам как у меня на прошлой странице выбрано для палитры по умолчанию: 11 - белый, 10 - красный, 01 - зеленый и 00 - синий. По идее биты в знакоместах у РК инверсные - т.е. единички это чёрный фон, а нолики - белые (или цветные) точки. Получается единички в последних строчках должны быть чёрные? Или это особый случай для возможности рисования цветного фона? По идее мысль интересная!
Да, если пиксели не горят, но цвет задан - цвет отображается фоном в полутонах.
Хотя, был ещё вариант, когда старшие два бита в 01 и 10 устанавливают два цвета, а при 00 - биты 0-5 вместо ч/б пикселей работают как три пикселя: (00)(C1)(C2)(C3). Т.е. в строке символа имеется не 6 ч/б пикселей, а 3 цветных (чёрный/красный/зелёный/синий).
Shaos wrote:P.S. Посмотрел http://rk86.net - вроде работает ассемблер - в чём конкретно проблема?
Снимок экрана_2024-01-20_00-47-42.png
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

А что за браузер? У меня в firefox всё работает:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

Alikberov wrote:Т.е. идей мягкой доработки РК просто уйма. :mrgreen:
Shaos wrote:Возвращаясь к картинке:

Почему где-то цвета ярче, а где-то темнее? А так по цветам как у меня на прошлой странице выбрано для палитры по умолчанию: 11 - белый, 10 - красный, 01 - зеленый и 00 - синий. По идее биты в знакоместах у РК инверсные - т.е. единички это чёрный фон, а нолики - белые (или цветные) точки. Получается единички в последних строчках должны быть чёрные? Или это особый случай для возможности рисования цветного фона? По идее мысль интересная!
Да, если пиксели не горят, но цвет задан - цвет отображается фоном в полутонах.
Хотя, был ещё вариант, когда старшие два бита в 01 и 10 устанавливают два цвета, а при 00 - биты 0-5 вместо ч/б пикселей работают как три пикселя: (00)(C1)(C2)(C3). Т.е. в строке символа имеется не 6 ч/б пикселей, а 3 цветных (чёрный/красный/зелёный/синий).
С тремя цветными пикселами аппаратно малой кровью не сделать
А вот раскрашивание всей 8-пиксельной плашки в 2 цвета - это относительно легко

По поводу "мягкой" доработки - в наше время рабочих классических РК (куда можно по живому втыкаться проводочками) уже не найти - так что проще свою схему нагородить, вставить/убрать всё что нужно и заказать производство новых плат...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

Shaos wrote:
Shaos wrote:Вот чегой-то родилась у меня идея - взять исправленную версию 2016 года от alexcp и заменить ПЗУ знакогенератора на ОЗУ с возможностью программной замены шрифтов :o
По ходу можно попробовать добавить цвет с помощью 2х свободных битиков знакогенератора (в стандартном знакогенераторе РК там записаны единички) - получится один из 4 цветов на каждую горизонтальную плашку:
00 - красным по чёрному;
01 - зелёным по чёрному;
10 - синим по чёрному;
11 - белым по чёрному (значение по умолчанию).
Таким образом мы как бы получим цветные тайлы, которых будет 2 набора, переключаемых программно, т.е. всего 256 (т.к. знакогенератор 2кб). При этом придётся расширить монитор, чтобы при рестарте он заполнял бы это ОЗУ стандартным шрифтом, который теперь будет храниться в ПЗУ монитора (которое напомню у нас 8кб где пока используется только 2кб).

Если всё также уталкиваться в размеры 15x10 см (ну или в предел моей стандартной лицензии игла 16x10), то возможно следует всю новую мелкую логику (включая регистр управления страницами памяти) затолкать в одну палку/галку. Туда же можно добавить поддержку нескольких предопределённых палитр (как минимум двух - RGB как описано выше и аля CGA с Magenta и Cyan).

P.S. Подключение ОЗУ шрифтов к шине данных можно сделать по адресам C000...C800, когда в регистре управления установлена несуществующая страница 7 (например) - в этом случае ВГ75 уходит в тень (собственно также как и сейчас если установлена ненулевая страница - 1,2 или 3), а _CS_C000 выходящий на внешний разъём не активируется. Ну и ещё один бит в регистре управления может быть отведён под переключение палитр (0-RGBW, 1-YCMW).
Кстати придумал обоснование почему именно по _CS_C000 надо шрифт менять - не только потому, что это адресный диапазон ВГ75, который в режиме записи в память шрифтов будет отсюда отключен, но и потому, что эти стробы торчат наружу через шину расширения (вместе с шиной данных и нужными адресными сигналами) и прототип цветового расширения можно прицепить "навесиком" над дособиранной Alpha-версией :)

Также наверное надо утолкаться в мелкую логику, поэтому цвета надо расположить позакономернее - например чтобы второй набор был просто инвертированием первого (за исключением белого цвета, который есть и там, и там):

Code: Select all

   PALETTE-0   PALETTE-1
00 (001) Blue  (110) Yellow
01 (010) Green (101) Magenta
10 (100) Red   (011) Cyan
11 (111) White (111) White
И палитры надо не отдельным битом переключать, а совместить это с переключением шрифта - PALETTE-0 будет в основном шрифте работать, а PALETTE-1 - в альтернативном 8)

В этом случае появится возможность менять палитры и шрифты одновременно на лету в нужной точке кадра отсчитав нужное количество тактов от сигнала кадрового синхроимпульса, получая на экране многоцветные двухшрифтовые эффекты :o

И это всё можно будет обозвать (если заработает) Radio-86RK-SRAM128K Beta :idea:
Может действительно логичнее писать в шрифт по адресам #E800...#EFFF?
И не будет привязки к 128-килобайтному варианту (правда навесиком в 128КБ это уже будет не приделать).
При появлении строба /WR по этим адресам можно отрезать ОЗУ шрифтов от ВГ75 (при этом экран почернеет) и подцепить к шине данных на время цикла записи байта...

Если добавить полутона, то мои цвета в двух палитрах будут выглядеть вот так:
  • (11)010101 - @@@@@@ - @@@@@@
  • (10)101010 - @@@@@@ - @@@@@@
  • (01)010101 - @@@@@@ - @@@@@@
  • (00)101010 - @@@@@@ - @@@@@@
  • (11)111111 - @@@@@@ - @@@@@@
  • (10)111111 - @@@@@@ - @@@@@@
  • (01)111111 - @@@@@@ - @@@@@@
  • (00)111111 - @@@@@@ - @@@@@@
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Радио-86РК на SRAM 128K Alpha

Post by Shaos »

Shaos wrote:Увидел тут внизу форума, что сегодня alexcp отмечает N-летие - принимай поздравлямбы :)
О - опять вижу alexcp в именинниках снизу форума - хэппибёздэй! :lol:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Alikberov
Doomed
Posts: 347
Joined: 14 Oct 2019 18:10
Location: Tashkent

Re: Радио-86РК на SRAM 128K Alpha

Post by Alikberov »

Shaos wrote:С тремя цветными пикселами аппаратно малой кровью не сделать
А вот раскрашивание всей 8-пиксельной плашки в 2 цвета - это относительно легко
Shaos wrote:По поводу "мягкой" доработки - в наше время рабочих классических РК (куда можно по живому втыкаться проводочками) уже не найти - так что проще свою схему нагородить, вставить/убрать всё что нужно и заказать производство новых плат...
Ну, смотря как на это смотреть. В принципе.
Т.е. так как:
  • ВВ55 игнорирует чтение режима и возвращает FF/FE по 8003 - можно это использовать
  • ВТ57 игнорирует запись по E009-E00F - это можно использовать
  • ВГ75 игнорирует запись в C000 без предварительного кода в C001 - это можно использовать
Т.е. я сторонник использования ИМС на все 100%.
(Это как: Отрицательный результат - тоже результат.)
Раз конкретная ИМС ведёт себя конкретным образом, то это - фишка (все 100%, а не 99%).
(Раз ВВ55 при чтении 8003 возвращает рандомно FE или FF, можно использовать как источник рандома.)