Электроника МК-85

Digital Equipment Corporation PDP-8 & PDP-11 (а также совместимые с последним советские ЭВМ на 1801ВМ1/2/3)

Moderator: Shaos

Post Reply
User avatar
Shaos
Admin
Posts: 23629
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re:

Post by Shaos »

Shaos wrote:
VladAnt wrote:
Даже написал микро-операционку - запускалку программ, выбираемых из списка.
А про нее можно по-подробнее :D
Просто нулевой программой запускается некая простая бейсик программа, которая пишет на экран "MK-85 OS" (конечно-же это была операционная система ; ) и кол-во свободных ячеек. В программе заведены строковые переменные, содержащие имена программ по индексам. Стрелками вниз-вверх можно переключать на экране описания. Запуск по Enter или по порядковому номеру (вроде). Удобнее чем запоминать что есть P1, а что P7 ;)
Нашёл текст своей "операционки" в одной из старых тетрадок :idea:
Про вывод количества свободных ячеек я похоже приврал :roll:
И потом там стрелками влево-вправо управление идёт:

Code: Select all

10 С=2:B=0
20 CSR 0,:GOSUB 100*B+100
30 A$=KEY:IF A$="" THEN 30:A=ASCI A$:IF A=4;CSR 0,:GOTO #D,10
40 IF A=5;IF B=0 THEN 30;B=B-1;GOTO 20
50 IF A=6;IF B=C THEN 30;B=B+1;GOTO 20
60 GOTO 30
100 PRINT "OS MK-85(<>)";:D=0;RETURN
200 PRINT "Игра БЕГУН  ";:D=9;RETURN
300 PRINT "Грф.редактор";:D=1;RETURN
и т.д. (при добавлении программ, надо ещё поправлять С в самом начале, чтобы оно было равно количеству программ)
Программка написана в 1992 году - 26 лет назад :o
С тех пор я всё на МК-85 запускал только через неё ;)

P.S. Почитал внимательно дизассемблированные исходники ПЗУ, а также всякие другие источники информации из инета - оказывается в режиме редактирования программы (WRT) на МК85 процык СПИТ, просыпаясь по прерыванию от нажатия любой клавиши :o
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23629
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Электроника МК-85

Post by Shaos »

Немного поработал над декорированием виртуального корпуса :mrgreen:
Attachments

nedoMK-85MM-red.gif
nedoMK-85MM-red.gif (68.41 KiB) Viewed 20112 times

Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16608
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Электроника МК-85

Post by Lavr »

Фу! Фу! Как яблофон у гламурной фифы! :-? Верни стальной нормальный цвет! :twisted:
iLavr
User avatar
Shaos
Admin
Posts: 23629
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Электроника МК-85

Post by Shaos »

Это чтобы не путали с оригинальным эмулятором :no:

Мой будет жить здесь: github.com/shaos/nedoMK85

С июня 2018 оно живёт тут: https://gitlab.com/nedopc/mk85
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23629
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Электроника МК-85

Post by Shaos »

О, Пётр (автор эмулятора) уже собрал мою адаптированную под Лазарус версию в Линухе и прислал правки :o
Attachments

nedoMK85.png
nedoMK85.png (581.61 KiB) Viewed 20096 times

Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23629
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Электроника МК-85

Post by Shaos »

Напишу тут, пока не забыл. Когда прошивка МК-85 что-то меняет на экране, то она посылает байт по одному из адресов #80...#DF для отображения 5-пиксельных планок (как на картинке на предыдущей страничке), по адресу #E0 посылается местоположение курсора (4 бита) и его вид (5й бит). Адрес #E8 тоже для чего-то используется, но туда посылается 0 ровно один раз при перезагрузке микрокомпьютера (инициализация контроллера ЖКИ?). Так вот у меня идея - если в клоне допустить использование оригинальной прошивки МК-85 (как одного из вариантов), то тогда надо ставить какой-то второй процик, который будет ловить эти обращения и отображать их на светодиодных матрицах. Вторым проциком можно поставить скажем 8085 ( раз уж это у нас типа nedoMK-85 ; ) и если у нас есть второй полноценный процик, то почему бы не наделить его возможностью запускать пользовательские программы? А пользовательские программы можно загонять через теже "порты" - к примеру пересылка байта по адресу #E1 задаёт старший байт адреса для 8085, #E2 задаёт младший байт адреса для 8085, а #E3 - байт, который пишется по заданному ранее адресу в память 8085. Далее можно скажем поддержать автоинкремент и последовательность посылок в #E4 будет заполнять память с шагом в 1 байт, сдвигая адрес введённый ранее в #E1 и #E2. Посылка байта в #E5 может скажем запускать программу по введённому ранее адресу (а пересланный байт будет в регистр A скажем писаться перед передачей управления). Ещё остаются #E6 и #E7 ещё для чего-нибудь (на самом деле вплоть до #FF ловилось в ЖКИ контроллере). Вобщем как-то так...

P.S. Если же мы заведомо расширенным ПЗУ пользуемся, то второго процыка ненадо - просто вешаем на ВМ2 прерывание по таймеру и по прерыванию вычитываем видеопамять #8000-#005F и чего-то выводим на светодиоды программно (для этого надо написать соответствующий обработчик в составе обновлённого ПЗУ). Единственное, что так вид курсора поменять нельзя - он всегда будет одинаковым, т.к. он в памяти не хранится, а формируется программно непосредственно перед засылкой в #E0...

P.P.S. Еще один плюс двухпроцессорного подхода заключается в том, что дисплей (и клавиатуру) можно проверить на хорошо известном (мне) микропроцессоре, который у меня уже запускался (nedoPC-85), а потом уже возится с неведомым ВМ2 :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23629
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Электроника МК-85

Post by Shaos »

Чото я не могу найти такие двойные кнопочки как на схеме МК-85:

Image

Выходит клаву тоже придётся имитировать вторым процом?

Судя по дизассемблированным исходникам ПЗУ в порт сканирования клавиатуры #102 могут подаваться следующие значения:

#2 (0010) - сканирование первого набора кнопок
#4 (0100) - сканирование второго набора кнопок
#8 (1000) - сканирование третьего набора кнопок
#E (1110) - сканирование всех кнопок (чтобы быстро определить нажато что-то или нет)

Скажем мы будем иметь 4 регистра, куда 8085 будет отображать нажатое на обычной клаве (по 2 бита на кнопку) и мы можем битами 1 и 2 из #102 выбирать какой из этих регистров будет подключаться ко входам чтения с клавиатуры (адрес #100) - каждый регистр будет подключаться к следующим сигналам с входного порта KB (#100):

бит 0 -> KB2 ( на схеме цепь 3 )
бит 1 -> KB3 ( на схеме цепь 4 )
бит 2 -> KB4 ( на схеме цепь 5 )
бит 3 -> KB5 ( на схеме цепь 6 )
бит 4 -> KB6 ( на схеме цепь 7 )
бит 5 -> KB7 ( на схеме цепь 8 )
бит 6 -> KB8 ( на схеме цепь 9 )
бит 7 -> KB9,KB10 (на схеме цепи 10 и 11, соединённые вместе - к ним подключена кнопка STOP)

Подключение клавы к 8085 наряду с дисплеем делает возможным для начала запустить это хозяйство и отладиться только на 8085, без подключения 1801ВМ2...

P.S. А вообще если бы можно было ковыряться в ПЗУ, а не ограничивать себя возможностью запуска оригинальной прошивки как варианта, то можно было просто тупо переписать эту часть, чтобы научить микрокомпьютер работать с обычной матрицей кнопок, а не с этим диагональным двухпереключательным чудом...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23629
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Электроника МК-85

Post by Shaos »

Теперь дисплей отображает красным по чёрному - типа LED ;)

nedoMK-85MM-redLED.gif
nedoMK-85MM-redLED.gif (60.41 KiB) Viewed 20046 times

Объяснялку что где хранится на экране тоже раскрасил в LED-шные цвета :)

mk85scr2018.gif
mk85scr2018.gif (31.01 KiB) Viewed 20047 times

Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23629
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Электроника МК-85

Post by Shaos »

Щас переписываю исходники патча v27 от Петра, чтобы они стали совместимыми с pdp11asm - после того как добьюсь соответствия байт в байт моей бинарной сборки бинарю v27 - буду добавлять своё ( возможно с кусками на сях ; )

P.S. Ещё один неожиданный плюс от использования pdp11asm это возможность компилировать им прошивки для ОБОИХ процессоров в системе - и КМ1801ВМ2, и К1821ВМ85 :mrgreen:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23629
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Электроника МК-85

Post by Shaos »

Shaos wrote:Выходит клаву тоже придётся имитировать вторым процом?

Судя по дизассемблированным исходникам ПЗУ в порт сканирования клавиатуры #102 могут подаваться следующие значения:

#2 (0010) - сканирование первого набора кнопок
#4 (0100) - сканирование второго набора кнопок
#8 (1000) - сканирование третьего набора кнопок
#E (1110) - сканирование всех кнопок (чтобы быстро определить нажато что-то или нет)

Скажем мы будем иметь 4 регистра, куда 8085 будет отображать нажатое на обычной клаве (по 2 бита на кнопку) и мы можем битами 1 и 2 из #102 выбирать какой из этих регистров будет подключаться ко входам чтения с клавиатуры (адрес #100) - каждый регистр будет подключаться к следующим сигналам с входного порта KB (#100):

бит 0 -> KB2 ( на схеме цепь 3 )
бит 1 -> KB3 ( на схеме цепь 4 )
бит 2 -> KB4 ( на схеме цепь 5 )
бит 3 -> KB5 ( на схеме цепь 6 )
бит 4 -> KB6 ( на схеме цепь 7 )
бит 5 -> KB7 ( на схеме цепь 8 )
бит 6 -> KB8 ( на схеме цепь 9 )
бит 7 -> KB9,KB10 (на схеме цепи 10 и 11, соединённые вместе )

Подключение клавы к 8085 наряду с дисплеем делает возможным для начала запустить это хозяйство и отладиться только на 8085, без подключения 1801ВМ2...
Итого для формирования изображения на индикаторе нам потребуется 12 регистров-защёлок 74LS574, в каждом из которых 5 младших битов идут на столбики пикселов светодиодного индикатора в соответствующем знакоместе (которых 12), оставляя по 3 старших бита на нужды клавиатуры - всего остаётся 36 битов. Клавиатурные линии сигнализации чего нажато могут пойти так:

первый регистр - KB2,KB3,KB4 при сканировании первого ряда кнопок
второй регистр - KB5,KB6,KB7 при сканировании первого ряда кнопок
третий регистр - KB8,KB9/KB10 при сканировании первого ряда кнопок и ещё один выходной бит O1
четвёртый регистр - KB2,KB3,KB4 при сканировании второго ряда кнопок
пятый регистр - KB5,KB6,KB7 при сканировании второго ряда кнопок
шестой регистр - KB8,KB9/KB10 при сканировании второго ряда кнопок и ещё один выходной бит O2
седьмой регистр - KB2,KB3,KB4 при сканировании третьего ряда кнопок
восьмой регистр - KB5,KB6,KB7 при сканировании третьего ряда кнопок
девятый регистр - KB8,KB9/KB10 при сканировании третьего ряда кнопок и ещё один выходной бит O3
десятый регистр - KB2,KB3,KB4 при сканировании всех кнопок
одинадцатый регистр - KB5,KB6,KB7 при сканировании всех кнопок
двенадцатый регистр - KB8,KB9/KB10 при сканировании всех кнопок и ещё один выходной бит KB, который скажем можно задействовать для сигнализации того, что хотя бы что-то нажато, чтобы разбудить ВМ2, который спит между нажатиями на кнопки в режиме WRT

13й регистр 74LS574 может идти на сканирование горизонтальных рядов пикселов по вертикали, используя все 8 сигналов

14й регистр 74LS574 может идти на сканирование кнопок клавиатуры, организованных в матрицу 8x8 (либо сделать как в ZX-спектруме, когда сканирование идёт битами адресной шины при вычитке байта состояния клавиатуры?) - соответственно нам нужен ещё один вход через буфер, чтобы читать клавиатуру обратно...

ещё нам нужно как минимум 2 входных регистра, в которых будет защёлкиваться адрес и байт, который ВМ2 записал, переслав что-то в диапазон #80...#FF для отображения на экране, что будет вызывать прерывание 8085 (тут желательно предусмотреть регистры со сбросом, чтобы 8085 сбрасывал их сосотяние после вычитывания)

P.S. KB9/KB10 похоже просто на HALT уходят - ничего не надо мудрить...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23629
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Электроника МК-85

Post by Shaos »

Наличие второго процессора на обработке клавы также даст возможность реализовать мета-кнопки WRT, RUN, TRACE и т.д. когда процессор при обнаружении нажатия таковой просто будет имитировать для ВМ2 последовательное нажатие двух кнопок - MODE и соответствующую цифру (запас по кнопкам есть - МК85 использует только 55 кнопок, а матрица 8x8 покрывает 64, т.е. есть запас в 9 кнопок).
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23629
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Электроника МК-85

Post by Shaos »

Shaos wrote:Чото я не могу найти такие двойные кнопочки как на схеме МК-85
Piotr Piatek предложил решить проблему отсутствия двухконтактных кнопочек вот таким способом :)

9.png
9.png (322 Bytes) Viewed 19986 times

При этом правда потребуется 110 диодов...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23629
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Электроника МК-85

Post by Shaos »

А вот и исходники патча, превращающего оригинальный ПЗУ МК85 в расширенный версии 27 (см. http://mk85.republika.pl/rom.html):

https://gitlab.com/nedopc/mk85/blob/master/firmware/patch85mm.asm

Исходники собираются пофикшенной версией pdp11asm:

https://gitlab.com/shaos/pdp11asm85

После сборки оно бинарно идентично официальной версии 27:

http://mk85.republika.pl/images/rom27.zip
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23629
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: Электроника МК-85

Post by Shaos »

Ну вот - теперь у меня есть вся линейка семейства :mrgreen:
Attachments

mk85.jpg
mk85.jpg (202.29 KiB) Viewed 19970 times

Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16608
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Электроника МК-85

Post by Lavr »

Что-то последняя "дочь семейства" - мятая и гнутая какая-то... :mrgreen:
iLavr
Post Reply