nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 19 Mar 2024 03:34



Reply to topic  [ 244 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6 ... 17  Next
Электроника МК-85 
Author Message
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
Post Re:
Shaos wrote:
VladAnt wrote:
Quote:
Даже написал микро-операционку - запускалку программ, выбираемых из списка.

А про нее можно по-подробнее :D


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

Нашёл текст своей "операционки" в одной из старых тетрадок :idea:
Про вывод количества свободных ячеек я похоже приврал :roll:
И потом там стрелками влево-вправо управление идёт:
Code:
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

_________________
:dj: https://mastodon.social/@Shaos


17 Jan 2018 00:31
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
Немного поработал над декорированием виртуального корпуса :mrgreen:


Attachments:
nedoMK-85MM-red.gif
nedoMK-85MM-red.gif [ 68.41 KiB | Viewed 17506 times ]

_________________
:dj: https://mastodon.social/@Shaos
17 Jan 2018 19:02
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Фу! Фу! Как яблофон у гламурной фифы! :-? Верни стальной нормальный цвет! :twisted:

_________________
iLavr


17 Jan 2018 22:41
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
Это чтобы не путали с оригинальным эмулятором :no:

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

С июня 2018 оно живёт тут: https://gitlab.com/nedopc/mk85

_________________
:dj: https://mastodon.social/@Shaos


17 Jan 2018 22:57
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
О, Пётр (автор эмулятора) уже собрал мою адаптированную под Лазарус версию в Линухе и прислал правки :o


Attachments:
nedoMK85.png
nedoMK85.png [ 581.61 KiB | Viewed 17490 times ]

_________________
:dj: https://mastodon.social/@Shaos
18 Jan 2018 06:43
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
Напишу тут, пока не забыл. Когда прошивка МК-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 :)

_________________
:dj: https://mastodon.social/@Shaos


18 Jan 2018 21:44
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
Чото я не могу найти такие двойные кнопочки как на схеме МК-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. А вообще если бы можно было ковыряться в ПЗУ, а не ограничивать себя возможностью запуска оригинальной прошивки как варианта, то можно было просто тупо переписать эту часть, чтобы научить микрокомпьютер работать с обычной матрицей кнопок, а не с этим диагональным двухпереключательным чудом...

_________________
:dj: https://mastodon.social/@Shaos


19 Jan 2018 21:28
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
Теперь дисплей отображает красным по чёрному - типа LED ;)

Attachment:
nedoMK-85MM-redLED.gif
nedoMK-85MM-redLED.gif [ 60.41 KiB | Viewed 17440 times ]


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

Attachment:
mk85scr2018.gif
mk85scr2018.gif [ 31.01 KiB | Viewed 17441 times ]

_________________
:dj: https://mastodon.social/@Shaos


19 Jan 2018 23:37
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
Щас переписываю исходники патча v27 от Петра, чтобы они стали совместимыми с pdp11asm - после того как добьюсь соответствия байт в байт моей бинарной сборки бинарю v27 - буду добавлять своё ( возможно с кусками на сях ; )

P.S. Ещё один неожиданный плюс от использования pdp11asm это возможность компилировать им прошивки для ОБОИХ процессоров в системе - и КМ1801ВМ2, и К1821ВМ85 :mrgreen:

_________________
:dj: https://mastodon.social/@Shaos


20 Jan 2018 14:11
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
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 уходят - ничего не надо мудрить...

_________________
:dj: https://mastodon.social/@Shaos


20 Jan 2018 20:23
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
Наличие второго процессора на обработке клавы также даст возможность реализовать мета-кнопки WRT, RUN, TRACE и т.д. когда процессор при обнаружении нажатия таковой просто будет имитировать для ВМ2 последовательное нажатие двух кнопок - MODE и соответствующую цифру (запас по кнопкам есть - МК85 использует только 55 кнопок, а матрица 8x8 покрывает 64, т.е. есть запас в 9 кнопок).

_________________
:dj: https://mastodon.social/@Shaos


20 Jan 2018 21:17
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
Shaos wrote:
Чото я не могу найти такие двойные кнопочки как на схеме МК-85


Piotr Piatek предложил решить проблему отсутствия двухконтактных кнопочек вот таким способом :)

Attachment:
9.png
9.png [ 322 Bytes | Viewed 17380 times ]


При этом правда потребуется 110 диодов...

_________________
:dj: https://mastodon.social/@Shaos


21 Jan 2018 15:00
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
А вот и исходники патча, превращающего оригинальный ПЗУ МК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

_________________
:dj: https://mastodon.social/@Shaos


21 Jan 2018 16:22
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22383
Location: Silicon Valley
Reply with quote
Ну вот - теперь у меня есть вся линейка семейства :mrgreen:


Attachments:
mk85.jpg
mk85.jpg [ 202.29 KiB | Viewed 17364 times ]

_________________
:dj: https://mastodon.social/@Shaos
21 Jan 2018 19:18
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Что-то последняя "дочь семейства" - мятая и гнутая какая-то... :mrgreen:

_________________
iLavr


21 Jan 2018 19:44
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 244 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6 ... 17  Next

Who is online

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