Микро-ЭВМ на КМ1801ВМ2

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

Moderator: Shaos

Xrust
Junior
Posts: 6
Joined: 06 Aug 2017 08:30

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Xrust »

Проверял сегодня схему Lavrа с первой страницы, только без буферных регистров. В качестве генератора и "пускача" поставил тиньку, прошитую простейшим скетчем Ардуино. AD5 и AD7 завел с DIN через повторители с ОК (ЛП17). RPLY сначала формировал тоже как на схеме, затем выкинул триггер и запустил сигнал просто через повторитель. Присутствие RPLY при чтении безадресного регистра на первый взгляд никак не повлияло на результат. Вот такая получилась минимальная схема.
You do not have the required permissions to view the files attached to this post.
Alekcandr
Doomed
Posts: 665
Joined: 01 Oct 2007 10:30
Location: Ukraine

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Alekcandr »

Круто)
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Shaos wrote:
Lavr wrote:
Shaos wrote:Ну последнее значит что ушло в производство на фабрику (fab) - значит всё хорошо :)
Я почему переспросил: обычно, когда "всё хорошо", ты показываешь здесь платы, а я ничего не спрашиваю... :wink:
А тут - одно уведомление, второе уведомление... :-?
Ну как придут платы - покажу и платы :roll:
Последнее уведомление пришло про то что платы сделаны и направились по почте ко мне :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Xrust wrote:Проверял сегодня схему Lavrа с первой страницы, только без буферных регистров. В качестве генератора и "пускача" поставил тиньку, прошитую простейшим скетчем Ардуино. AD5 и AD7 завел с DIN через повторители с ОК (ЛП17). RPLY сначала формировал тоже как на схеме, затем выкинул триггер и запустил сигнал просто через повторитель. Присутствие RPLY при чтении безадресного регистра на первый взгляд никак не повлияло на результат. Вот такая получилась минимальная схема.
Там могут быть различия в поведении между более старыми белыми ВМ2 (керамическими) и более новыми черными ВМ2 (пластмассовыми).
Мы тут в свое время сообща решили вот так формировать RPLY (с конфигурируемыми задержками):
viewtopic.php?p=143377#p143377
Именно такой подход сделан в моем модуле ЦПУ для PDPii - см. несколько страниц назад...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Shaos wrote:
Shaos wrote:
Lavr wrote:
Shaos wrote:Ну последнее значит что ушло в производство на фабрику (fab) - значит всё хорошо :)
Я почему переспросил: обычно, когда "всё хорошо", ты показываешь здесь платы, а я ничего не спрашиваю... :wink:
А тут - одно уведомление, второе уведомление... :-?
Ну как придут платы - покажу и платы :roll:
Последнее уведомление пришло про то что платы сделаны и направились по почте ко мне :)
Пришли платки :mrgreen:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Спаял - теперь есть возможность гонять программки из ПЗУ (правда пока без ОЗУ) :kruto: С чего бы начать демонстрацию возможностей PDPii? Подцепить жидкокристаллический дисплейчик 16x2 и вывести на него "nedoPC-18 PDPii"? ;) Или сразу nedoText с выводом на экран ТВ? В-принципе, и для того, и для другого достаточно будет 16-битного порта на вывод и на ввод (для ЖКХ можно только на вывод) - разрешать его по BBS7 (т.е. при любом обращении в старшую восьмушку адресного пространства будет выбираться этот порт) и работать с ним только словами, т.е. в этом случае алхимия с WTBT и A0 при записи будет ненужна - на макетке можно по быстрому собрать...
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

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

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Shaos wrote:но т.к. инструкция NOP возвращается всегда при наличии DIN (даже в случае "безадресного чтения"), то адресный счётчик начинает выполнять программу с адреса 0x00A0 (0240) :roll:
в ПЗУ надо писать инвертированные биты (т.к. шина у нас инвертированная) - значит вместо 0x00A0 надо будет вписать 0000000010100000 -> 1111111101011111 или 0xFF5F, ну и в моей схеме безадресное чтение не должно никуда идти, если я ничего не путаю, т.е. оно автоматически прочитает нули (ибо шина данных подтянута к +5В) и будет бежать нопами с нулевого адреса...

P.S. Вроде бегут нопы - адрес тикает (правда начинает не с нуля, а с 0x00A0 т.к. по безадресному чтению он читает ноль, а по нулевому адресу в ПЗУ сидит NOP - 0x00A0). С осциллятором 1 МГц старший светодиод адреса мигает 100 раз за 39 с чем-то секунд - это 32768 нопов пролетают каждые 0.39 сек - при 1 МГц клоке это 500 000 внутренних тактов в секунду или 195000 за один пробег по всей памяти - это 6 внутренних тактов (или 12 внешних тактов) на каждый NOP. И у меня похоже один из битов адреса глючит - светодиод A4 никогда не зажигается.

P.P.S. А - там просто непропай был - пропаял ногу светодиода и всё заработало как надо :)


https://youtu.be/NA2n89yNx3Y
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Кроме 1 МГц успешно потестил также осцилляторы 3 МГц, 4 МГц и даже 10 МГц :o

А вот 16 и 20 МГц не завелись...

P.S. То был ВМ2 с одной точкой, а вот ВМ2 без точек на 16 МГц вроде как завёлся! :eugeek:

P.P.S. Это всё были чёрные - добрался до белых (у меня пара новых появилась за последний год) так вот они тоже рабочие (до 10 МГц) - вместе со старым единственным белым, что работал, получается 3

P.P.P.S. Перепроверил все чёрные и все белые - до 10 МГц включительно работают даже те керамические, которые я в прошлом году забраковал после пошаговой проверки (может они на нулевой частоте в-принципе не пашут?) - точно нерабочие сейчас 1 чёрный и 1 белый

P.P.P.P.S. Некоторые чёрные с точкой гонятся до 16 МГц, несмотря на точку, а один даже на 20 МГц вроде как завёлся :twisted: (пошёл чуть дальше - на 25 МГц уже всё мёртво)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Shaos wrote:... а один даже на 20 МГц вроде как завёлся :twisted:
при этом блок питания показывает ток 0.59А (возможно из-за светодиодов)


https://youtu.be/ET_R9582DBU (надо смотреть на полный экран в 1080p60 режиме - тогда будет заметно мерцания светодиода старшего бита адреса)

Ещё момент - джамперы JP6 и JP7 всё также стоят в режиме без задержек, т.е. RPLY является непосредственным отражением DIN - наверное поэтому NOP выполняется за 6 тактов, а не за 8, как по заводской документации (хотя заводская документация говорит 8 тактов CLCI на операцию регистр-регистр, а у меня выходит 12 тактов CLCI). ПЗУ время доступа судя по маркировке 120нс - в режиме без задержки RPLY ручной проход показывает, что DIN активен в течение 4 тактов CLCI (внешний клок), значит предел скорости для ПЗУ должен быть порядка 120нс/4=30нс на клок, что есть 33.33 МГц CLCI :o

P.S. NOP это на самом деле SEx/CLx команда, которая ничего не делает т.к. битовая маска флагов нулевая:

Code: Select all

Condition Code Operations

                      _ _ _ _ _ _ _ _ _ _:_ _ _:_ _ _
                     |0|0|0|0|0|0|0|0|1|0|1|s|N|Z|V|C|
                     |     O p c o d e     | | Mask  |
http://ftp.dbit.com/pub/pdp11/faq/faq.pages/PDPinst.html

но я пока нигде не могу найти информацию о том, как долго она должна выполняться на ВМ2...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Тестовая программа, выводящая строку на ЖКИ может выглядеть так (написано под PDP11ASM):

Code: Select all

decimalnumbers
    org 0
    .word 0100H,0E0H ; reset vector
    org 0100H
start:
    mov #init,r4
initloop:
    movb (r4)+,r0
    beq endinit
    com r0 ; invert character
    bis #0FF00H,r0 ; set all bits of higher byte
    mov r0,@#0FF00H
    bic #800H,r0 ; inverted E=1
    mov r0,@#0FF00H
    bis #800H,r0 ; inverted E=0
    mov r0,@#0FF00H
    mov #100,r0
delay1:
    sob r0,delay1
    jmp initloop
endinit:
    mov #msg,r4
loop:
    movb (r4)+,r0
    beq endloop
    com r0 ; invert character
    bis #0FF00H,r0 ; set all bits of higher byte
    bic #200H,r0 ; inverted RS=1
    mov r0,@#0FF00H
    bic #800H,r0 ; inverted E=1
    mov r0,@#0FF00H
    bis #800H,r0 ; inverted E=0
    mov r0,@#0FF00H
    mov #100,r0
delay2:
    sob r0,delay2
    jmp loop
endloop:
    mov #0FFFFH,r0
delay:
    sob r0,delay
    jmp start

msg:    .byte    "Hello, World!",0
init:    .byte 30H,30H,38H,8H,1H,6H,0CH,0
16-битный порт на вывод доступен по BBS7, т.е. адрес 0FF00H должен сработать - младший байт это 8-битные данные в ЖКИ и несколько битов в старшем байте порта пойдут на управление - RS,R/W,E:

bit 8 - LED (индикация ошибки)
bit 9 - RS (0 для команды, 1 для данных)
bit 10 - R/W (0 для записи. 1 для чтения)
bit 11 - E (1 для разрешения связи с ЖКИ)
bit 12 - бит адреса клавиаутры KA0
bit 13 - бит адреса клавиатуры KA1
bit 14 - бит адреса клавиатуры KA2
bit 15 - IFLAG для nedoText/SX ?

в будущем можно на ввод тоже поддержать - младший байт также будет 8 бит данных (чтение из ЖКИ), а старший байт может быть таким:

bit 8 - бит клавиатуры KB0
bit 9 - бит клавиатуры KB1
bit 10 - бит клавиатуры KB2
bit 11 - бит клавиатуры KB3
bit 12 - бит клавиатуры KB4
bit 13 - кнопка S1?
bit 14 - кнопка S2?
bit 15 - OFLAG из nedoText/SX?

P.S. по идее наверное можно офигеть и подключить к PDPii целую советскую клаву МС7007 :mrgreen:
kbd_ms7007.jpg
получив эдакий НедоУКНЦ :rotate:

Там правда 12 линий назад надо будет принимать - в таком случае ЖКИ к млашему байту на ввод можно подключать только если E=1, а в противном случае это будет клава...

P.P.S. а дальше уже можно будет попробовать RT-11 на этом завести (c nedoText-овым выводом на ТВ), а может быть даже BSD :o
http://www.vcfed.org/forum/archive/index.php/t-45773.html
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Вобщем прежде чем делать полновесный PDPii в mini-ITX форм-факторе с PS/2-клавой и дисками HDD/FDD (как предполагалось год назад), прямо щас можно реализовать две "облегченные" вариации для пробуждения интереса публики:
  • Junior PDPii - с дисплейчиком 16x2 и микрокнопочной клавкой прямо на материнской плате (чтобы начать продажи);
  • Soviet PDPii - с текстовым выводом на ТВ и советской клавиатурой "Электроника МС 7007" (у меня их есть несколько);
  • Graphic PDPii - полноценный компьютер с PS/2-клавой (и мышой?), VGA-выходом, звуковым стерео-выходом на колонки, HDD, FDD, CD-ROM, Ethernet и в mini-ITX форм факторе (предполагается быть совместимым с БК).
Первые две вариации будут использовать тот же базовый набор плат - CPU, ROM, RAM (плюс будет один-два свободных слота для будущих плат расширения типа переходника на периферию RC2014). В полноценном варианте память будет на самой материнке (т.е. модули ROM и RAM туда втыкать уже будет нельзя) и возможно ещё сделаю CPU модуль на ВМ1...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Пока нету PDPii материнки (backplane) - вместо неё можно заюзать большую бредборду (63 контакта в ряд):
PDPii-breadboard-small.jpg
Два жёлтых проводочка слева, которые под углом - это BDMGO-BDMGI и BIAKO-BIAKI для составления цепочки срабатывания (если CPU плата стоит последней, то эти два проводочка иначе надо воткнуть):
PDPii-breadboard2-small.jpg
Собрал тестик для ЖКИ (кроме CPU и ROM модулей на бредборде установлены одна 74LS32 и две 74LS374) - осталось прошивку написать :mrgreen:
PDPii-LCD-test-small.jpg
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Shaos »

Shaos wrote:Тестовая программа, выводящая строку на ЖКИ может выглядеть так (написано под PDP11ASM):

Code: Select all

decimalnumbers
    org 0
    .word 0100H,0E0H ; reset vector
    org 0100H
start:
    mov #init,r4
initloop:
    movb (r4)+,r0
    beq endinit
    com r0 ; invert character
    bis #0FF00H,r0 ; set all bits of higher byte
    mov r0,@#0FF00H
    bic #800H,r0 ; inverted E=1
    mov r0,@#0FF00H
    bis #800H,r0 ; inverted E=0
    mov r0,@#0FF00H
    mov #100,r0
delay1:
    sob r0,delay1
    jmp initloop
endinit:
    mov #msg,r4
loop:
    movb (r4)+,r0
    beq endloop
    com r0 ; invert character
    bis #0FF00H,r0 ; set all bits of higher byte
    bic #200H,r0 ; inverted RS=1
    mov r0,@#0FF00H
    bic #800H,r0 ; inverted E=1
    mov r0,@#0FF00H
    bis #800H,r0 ; inverted E=0
    mov r0,@#0FF00H
    mov #100,r0
delay2:
    sob r0,delay2
    jmp loop
endloop:
    mov #0FFFFH,r0
delay:
    sob r0,delay
    jmp start

msg:    .byte    "Hello, World!",0
init:    .byte 30H,30H,38H,8H,1H,6H,0CH,0
16-битный порт на вывод доступен по BBS7, т.е. адрес 0FF00H должен сработать - младший байт это 8-битные данные в ЖКИ и несколько битов в старшем байте порта пойдут на управление - RS,R/W,E:

bit 8 - LED (индикация ошибки)
bit 9 - RS (0 для команды, 1 для данных)
bit 10 - R/W (0 для записи. 1 для чтения)
bit 11 - E (1 для разрешения связи с ЖКИ)
bit 12 - бит адреса клавиаутры KA0
bit 13 - бит адреса клавиатуры KA1
bit 14 - бит адреса клавиатуры KA2
bit 15 - IFLAG для nedoText/SX ?

в будущем можно на ввод тоже поддержать - младший байт также будет 8 бит данных (чтение из ЖКИ), а старший байт может быть таким:

bit 8 - бит клавиатуры KB0
bit 9 - бит клавиатуры KB1
bit 10 - бит клавиатуры KB2
bit 11 - бит клавиатуры KB3
bit 12 - бит клавиатуры KB4
bit 13 - кнопка S1?
bit 14 - кнопка S2?
bit 15 - OFLAG из nedoText/SX?
Собственно вот :mrgreen:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Микро-ЭВМ на КМ1801ВМ2

Post by Lavr »

LCD без подсветки?
iLavr