PDA

Просмотр полной версии : Быстрое умножение на 10000



litwr
30.01.2017, 14:24
С помощью экспертов по Амигам вышел на отличный алгоритм для такого умножения. К1801ВМ1 несколько неуклюж с таблицами, что не позволяет сделать на нем быстрое табличное умножение как на z80 или 6502. Кстати, мотороловские процессоры (680x, 680x0) тут также неуклюжи. Поэтому с 68020 иногда быстрее использовать сдвиги, чем довольно быстрое (28 тактов) аппаратное умножение. Решил поделиться. Как никак, а красота. :) Константа data умножается беззнаково на 10000, результат в r2 - high, r3 - low.


mov #data,r0
clr r4
clr r2
mov r0,r3
asl r3
rol r2
asl r3
rol r2
asl r3
rol r2
sub r3,r0
sbc r4
sub r2,r4
asl r3
rol r2
sub r3,r0
sbc r4
sub r2,r4
sub r3,r0
sbc r4
sub r2,r4
swab r0
swab r4
clrb r4
bisb r0,r4
clrb r0
sub r0,r3
sbc r2
sub r4,r2

С аппаратным умножением (K1801ВМ1Г), конечно, короче, но не факт, что быстрее.


mov #data,r2
mul #10000,r2
bpl bypass
add #10000,r2
bypass

Интересно узнать, какое и насколько быстрее. Прикрепляю программки для тестирования для БК0010 и 0011. C эмулятором аппаратное значительно быстрее, но там эмулируется какая-то PDP-11 с более быстрым, чем у ВМ1Г умножением. Программка с приведённым выше программным умножением с БК0011 под медленным RT-11 обогнала быстрый американский Коммодор-64 (европейский медленнeе) под максимально быстрым бейсиком в ПЗУ - http://litwr2.atspace.eu/pi/pi-spigot-benchmark.html. А с аппaратным возможно обогнала бы и MSX-2.
59586

MacBuster
31.01.2017, 22:52
В чем смысл делать быстрое умножение на 10 тысяч? Это десятичное число?

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

litwr
01.02.2017, 18:51
Приведен пример красивого алгоритма. Если посмотреть на него в контексте расчета π, то мне кажется, что уважаемый blackmirror реализовал не самый быстрый расчёт. Деление в двоичной системе все же быстрее, чем в любой другой. Будут, конечно, издержки при печати, но там линейный расчет, а не квадратичный. Ещё будут бóльшие издержки (процентов на 80) по памяти. Если вы не в теме, то приведу более конкретное объяснение, например, нужно считать 10000*d/b. Если использовать BCD (что требует почти мифических CIS инструкций) или 100-чную систему, то мы выиграем на умножении и потом при печати, но добавочноые издержки на деление должны быть выше.
Классная у вас коллекция, даже с TI99/4A. Не подскажите, а Амигу-1230M можно использовать просто как А1200, т.е. с 68020 на 14 МГц?

MacBuster
01.02.2017, 21:51
Приведен пример красивого алгоритма. Если посмотреть на него в контексте расчета π, то мне кажется, что уважаемый blackmirror реализовал не самый быстрый расчёт. Деление в двоичной системе все же быстрее, чем в любой другой.

Ну да, ну да, ещё Жванецкий как-то об этом говорил:

«Если других туфлей не видел, наши вот такие! Если других машин не видел, «Запорожец» вот такой! И все! Живи не тужи. Всем рекомендую.»

Выходите из плоскости, чтобы умножить 1 на 10000 или разделить 10 на 1 вообще не надо никаких действий выполнять.


Будут, конечно, издержки при печати, но там линейный расчет, а не квадратичный. Ещё будут бóльшие издержки (процентов на 80) по памяти. Если вы не в теме, то приведу более конкретное объяснение, например, нужно считать 10000*d/b. Если использовать BCD (что требует почти мифических CIS инструкций) или 100-чную систему, то мы выиграем на умножении и потом при печати, но добавочноые издержки на деление должны быть выше.
Переходите на симметричные системы счисления (негабинарную или троичную симметричную, например), вас там ждёт «сурпрыз».


Не подскажите, а Амигу-1230M можно использовать просто как А1200, т.е. с 68020 на 14 МГц?
Запросто, плата ускорителя легко вынимается и машина опять становится стандартной А1200. Можно отдельно добавить фаст-памяти, оставив процессор таким-же.

litwr
02.02.2017, 19:17
Ну да, ну да, ещё Жванецкий как-то об этом говорил:
«Если других туфлей не видел, наши вот такие! Если других машин не видел, «Запорожец» вот такой! И все! Живи не тужи. Всем рекомендую.»
Выходите из плоскости, чтобы умножить 1 на 10000 или разделить 10 на 1 вообще не надо никаких действий выполнять.
Переходите на симметричные системы счисления (негабинарную или троичную симметричную, например), вас там ждёт «сурпрыз».

Делить-то надо на всё нечетное. :( И показали бы как надо на настоящем честном железе, а не в горе-эмуляторах как мне приходится.

Запросто, плата ускорителя легко вынимается и машина опять становится стандартной А1200. Можно отдельно добавить фаст-памяти, оставив процессор таким-же.
Если собиретесь сделать профилактический техосмотр, то просьба на прогон пи-теста. 68020 эмуляторами не очень точно поддерживается. Больно сложная там архитектура с несколькими конвейерами инструкций.

MacBuster
02.02.2017, 20:49
Если собиретесь сделать профилактический техосмотр, то просьба на прогон пи-теста.
Хорошо, попробую в выходные.

MacBuster
04.02.2017, 16:13
Хм, посмотрел исходник - он вроде по умолчанию собирается для 68k. Тот исполняемый файл, который скачивается, для чего собран - 68к или для 68020? Или вам без разницы?

MacBuster
05.02.2017, 08:08
К сожалению возникли некоторые сложности - перестал работать внешний USB-дисковод, и пока не удается перенести файлы на Амигу :(

Судя по всему, пришло время ставить в Амигу эмулятор дисковода...

goodboy
05.02.2017, 11:16
посмотрел исходник - он вроде по умолчанию собирается для 68k.
как я понял итоговый/запускаемый вариант этого теста в adf ?

litwr
06.02.2017, 22:56
Там два файла pi-amiga и pi-amiga1200. Они исполнимые. Они в архиве и отдельными файлами и в ADF. Pi-amiga должна запускаться в шелле воркбенча как на 500-й так и на 1200-й, а pi-amiga1200 может работать только на 1200-й. Можно оба файла и собрать из прилагаемых исходников, малюсенький сценарий для сборки там тоже есть.
Жаль, что техника ломается. :( У меня старый комодорчик работает минут 10-20 и ломается, надо конденсаторы кругом менять, а паять не умею. :(

Hunta
30.09.2021, 11:36
что требует почти мифических CIS инструкций
ГЫ :)

Manwe
01.10.2021, 08:27
Аппаратное умножение на ВМ1Г длится около 256 тактов (чуть больше или меньше в зависимости от аргументов)

Black Cat / Era CG
01.10.2021, 17:46
Можно "0000" пририсовать. В играх так делали. Очень быстро)))

litwr
02.10.2021, 11:19
Можно "0000" пририсовать. В играх так делали. Очень быстро)))
Если использовать BCD, то так примерно и получится. Но поддержка CIS - это штука редкостная. У Хунты монополия на всю Европу и Азию...

BlaireCas
02.10.2021, 17:43
В одном из журналов про БК-0010/0011 была на полном серьезе схема подключения "математического сопроцессора". Оный сопроцессор представлял собой обычный калькулятор с обвязкой электронными компонентами так что БК-шка могла "нажимать" на нем кнопки и считывать информацию с дисплея калькулятора.
Вообщем программа "нажимала" кнопки, калькулятор считал, результат считывался :) (скорость сами понимаете какая должна быть)
Смех-смехом, но утверждалось что весь этот колхоз мол экономит драгоценную память. (чтобы не тратить ее на кодинг арифметических операций)

Lethargeek
02.10.2021, 18:41
Смех-смехом, но утверждалось что весь этот колхоз мол экономит драгоценную память.
но... как же так... ведь нам тут так долго доказывали, что 15 килобайт хватит всем... :rolleyes:

litwr
03.10.2021, 11:23
В одном из журналов про БК-0010/0011 была на полном серьезе схема подключения "математического сопроцессора". Оный сопроцессор представлял собой обычный калькулятор с обвязкой электронными компонентами так что БК-шка могла "нажимать" на нем кнопки и считывать информацию с дисплея калькулятора.
Вообщем программа "нажимала" кнопки, калькулятор считал, результат считывался :) (скорость сами понимаете какая должна быть)
Смех-смехом, но утверждалось что весь этот колхоз мол экономит драгоценную память. (чтобы не тратить ее на кодинг арифметических операций)

Анекдот какой-то. :) Хорошо бы ссылку или хотя бы название и номер журнала.

Hunta
03.10.2021, 11:46
Анекдот какой-то
Ну да, это же не ТС написал, тогда было бы истиной в последней инстанции

SuperMax
03.10.2021, 11:47
2Lethargeek прекращаем оффтопить

BlaireCas
03.10.2021, 12:55
Анекдот какой-то. :) Хорошо бы ссылку или хотя бы название и номер журнала.
Даже нашел. Журнал Персональный Компьютер БК-0010-БК-0011м 04-1995.
http://retropc.org/BK_0010-01_s_4.html (тут целый набор этих журналов). Разумеется ускорению умножения на 10000 данный девайс не поможет.

Hunta
03.10.2021, 13:10
Анекдот какой-то.
Как тебе такое, "Илон Маск" ?


аже нашел. Журнал Персональный Компьютер БК-0010-БК-0011м 04-1995
Хм.. Несмотря на всю фееричность предлагаемого решения, вычисления всякого рода мат функций, по сравнению с простыми операциями, может оказаться не таким уж и более медленным вариантом. Ради интереса, надо будет глянуть - сколько занимает их вычисление из стандартных библиотек, типа фортрановской. Ну и в разделе - от редакции - есть вторая интересная мысль - реализовать интерфейс непосредственно к микросхеме (микросхемам) калькулятора.

CodeMaster
03.10.2021, 19:39
вторая интересная мысль - реализовать интерфейс непосредственно к микросхеме (микросхемам) калькулятора.
И если бы из этой м/с можно бы было убрать всякие задержки от дребезга контактов и преобразования для вывода на дисплей (тут правда не уверен, насколько они значительны), то вот он бюджетный матпроцессор на аутсорсинге, некий аналог PhysiX для восьмибиток ;-)

Hunta
03.10.2021, 19:48
И если бы из этой м/с можно бы было убрать всякие задержки от дребезга контактов и преобразования для вывода на дисплей (тут правда не уверен, насколько они значительны)
Возможно, есть микросхемы (тут не спец, так что это только предположение), где этого добра нет.

А в принципе, что то похожее (конечно, не настолько тормозное, на и не для таких сложных операций) в PDP-11 уже было :)

Lethargeek
03.10.2021, 20:00
Хм.. Несмотря на всю фееричность предлагаемого решения, вычисления всякого рода мат функций, по сравнению с простыми операциями, может оказаться не таким уж и более медленным вариантом. Ради интереса, надо будет глянуть - сколько занимает их вычисление из стандартных библиотек, типа фортрановской. Ну и в разделе - от редакции - есть вторая интересная мысль - реализовать интерфейс непосредственно к микросхеме (микросхемам) калькулятора.
а смысл? всё равно через прокладку работает, няп в таких калькуляторах однобитовый последовательный доступ к памяти, потому всё очень медленно, тыщи тактов на простейшую операцию

CodeMaster
03.10.2021, 20:36
а смысл?
Ну, на практике, только для экономии той самой памяти. По скорости, да не факт, что быстрее даже для сложных операций.

есть микросхемы (тут не спец, так что это только предположение), где этого добра нет
Если и не было, то можно было бы сделать, но чем ближе мы будем приближаться по скорости к матпроцессору, тем дальше отдаляться от смысла использования по экономике.

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

К тому же, во время ожидания результата от мат-со-процессора можно сделать чёнть ещё полезное.

Похожий аналог, доведённый до совершенства по параметру скорости - FPA от J11, пусть он всякую тригонометрию и иже с ней и не умеет считать. Зато те же FP операции, что и J11, делает на порядок быстрее.

- - - Добавлено - - -

Кстати, технические можно и FPA прикрутить к 1801вмX - получим сопр, работающий быстрее основного проца :D

Lethargeek
03.10.2021, 22:27
Ну, на практике, только для экономии той самой памяти.
я про

интерфейс непосредственно к микросхеме (микросхемам) калькулятора.
вместо виртуального кнопкодавства

CodeMaster
04.10.2021, 15:02
вместо виртуального кнопкодавства
Ну, я писал, что если нельзя при этом отключить задержки HID, то ускорения не будет, но добавится относительная компактность. Но, вообще, вроде выяснили, что "смысла" там не будет в любом случае. Это из той же серии, как и видеопроцессор Dandy для Спектрума, приставка Бортника для БК, Ниппель для Агата - идея прикольная, но практического смысла нет.

litwr
04.10.2021, 20:51
Ниппель для Агата - идея прикольная, но практического смысла нет.
А чем плох Ниппель для Агата?

SuperMax
05.10.2021, 06:34
2litwr 2CodeMaster
тут Ниппель для Агата - оффтопик

CodeMaster
05.10.2021, 10:02
тут Ниппель для Агата - оффтопик
В сравнении мёртворожденных концепций вполне себе в теме, БК же не в вакууме существовала и я не предлагал добавить Ниппеля в БК для умножения на 10000.

А по существу: тема очередная провокация от уважаемого ТС, но нет смысла повторяться.

litwr
09.10.2021, 09:18
Аппаратное умножение на ВМ1Г длится около 256 тактов (чуть больше или меньше в зависимости от аргументов)
Попробовал подсчитать такты в приведенном коде и получил примерно 360, т.е. ВМ1Г явно быстрее. Интересно, что подобный код для 68000 также медленнее аппаратного умножения, а на 68020/30 всё наоборот - этот код быстрее.

Lethargeek
09.10.2021, 20:36
Решил поделиться. Как никак, а красота.
вот где настоящая красота ;)


https://www.youtube.com/watch?v=_DeqaepYokY

(для 10000 аналогично, плюс пара тактов)

- - - Добавлено - - -

в голове вертелось, вспомнить всё никак не мог, где видал :)

axe_chita
30.11.2021, 11:55
Зашел я в эту тему не за этим, но KILLкулятор в БК в качестве математического сопроцессора зацепил.
Раз пошла такая пьянка, режь последний огурец!
В качестве бреда, предложу подцепить к БК в качестве сопроцессора/ускорителя/умного контроллера с часами и кукушкой - Black pill на Arm Cortex-M4F STM32F401CCU6 или STM32F411CEU6
На борту платки контроллера для мотороллеров имеется ;)
"STMicro STM32F401CCU6 Arm Cortex-M4F MCU с тактовой частотой 84 МГц и флэш-памятью 256 Кб, SRAM 64 Кб
STMicro STM32F411CEU6 Arm Cortex-M4F MCU с тактовой частотой 100 МГц и флэш-памятью 512 Кб, SRAM 128 Кб
Математический сопроцессор (одинарной точности) присутствует. Производительности 1,25 DMIPS/МГц
Таймеры: 11 таймеров + RTC
Возможность подключения:
USART (3x до 12.5 Мб/с)
SPI (5x до 50 Мб/с)
I²C (3x до 1 Мб/с)
SDIO (3x до 1 Мб/с)
USB 2.0 OTG (1x)
I²S (2x до 32 бит/192 кГц дуплексный)
I²S (3x до 32 бит/192 кГц односторонний)
АЦП: 12-бит 2.4 MSPS"
Чем не убердевайс, за сущие копейки? Ну, всяко разно, побыстрей калькулятора будет;)

Manwe
03.12.2021, 16:52
предложу подцепить к БК в качестве сопроцессора/ускорителя/умного контроллера с часами и кукушкой - Black pillЕсть аутентичное решение из середины 90-ых: так называемая "приставка Бортника" (процессор ВМ3 + память + Covox, подключается к параллельному порту, содержит маленькую ПЗУ с протоколом обмена данными с БК). Вот её бы собрать, только на современном ВМ5.

tnt23
03.12.2021, 17:47
Есть аутентичное решение из середины 90-ых: так называемая "приставка Бортника" (процессор ВМ3 + память + Covox, подключается к параллельному порту, содержит маленькую ПЗУ с протоколом обмена данными с БК). Вот её бы собрать, только на современном ВМ5.

Если схема есть и комплектующие доступны, то вполне можно засетапить открытый проект на KiCad.

Manwe
03.12.2021, 23:43
Если схема есть и комплектующие доступны, то вполне можно засетапить открытый проект на KiCad.Да, всё есть: https://zx-pk.ru/threads/33585-pristavka-s-fleshkoj-1638rr1-k-bloku-kngmd-bk11m.html?p=1136008&viewfull=1#post1136008
Было бы круто!

А ещё лучше сделать новодел на более современных микросхемах памяти

tnt23
06.12.2021, 23:24
Да, всё есть: https://zx-pk.ru/threads/33585-pristavka-s-fleshkoj-1638rr1-k-bloku-kngmd-bk11m.html?p=1136008&viewfull=1#post1136008
Было бы круто!

А ещё лучше сделать новодел на более современных микросхемах памяти

Совсем новодел уже лучше на CPLD или FPGA делать, с DDR памятью. А так - рассыпную память наверняка можно заменить на еще доступные в природе модули SIMM.

А есть список микросхем к классической схеме? процессор я более-менее угадал, да и то неточно.

ЗЫ список деталей оригинальной схемы есть тут http://forum.pk-fpga.ru/viewtopic.php?f=18&t=227

ЗЗЫ и схема на сайте Сергея 'vak' Вакуленко более целостная: https://vak.ru/lib/exe/fetch.php/proj/bk/vm3-page1.png

ЗЗЗЫ полез искать, что за нога такая 34, нашел полезные окаменелости в (ну еще бы) MO.DEC (https://groups.google.com/g/fido7.mo.dec/c/idbC-Kgd110/m/4glnLXgVtCgJ)

21 Sep 05 13:06, Michael I. Shestyrev ga All ni tegami wo okutta...
MS> - Какие еще ноги у нее для земли-питания?

Земля: 9,32,38,42
Питание: 43,64

MS> - Что за ноги 34, 35, 36, 37?

34 o BS(L) выбор страницы ввода/вывода

- yстанавливается в "0" в адpесной части цикла, если виpтyальный адpес
смаплен на физический адpес стаpшего банка памяти:
1. пpи выключенном ДП выставляется в диапазоне адpесов 0160000-0177777
2. пpи 18-битной адpесации 0760000-0777777
3. пpи 22-битной адpесации 017760000-017777777

35 o SEL(L) признак обpащения к пpостpанствy пyльтовой пpогpаммы

- для yпpощения микpопpогpаммных матpиц пpогpамма "MicroODT"(c)DEC y ВМ3
pазмещена вне кpисталла пpоцессоpа, для ее pеализации (т.е. пyльтового
отладчика) отведено 32кб, пpи этом младший банк поделен на две части -
младшая половина должна содеpжать ПЗУ с кодом, эмyлиpyющим поведение
PDP-пpооцессоpа в pежиме останова/отладки, а начиная с адpеса 020000 и вниз
pаспостpаняется системный стек. Его глyбина может быть любой, однако сам
пpоцессоp аппаpатно использyет только 4 байта, кyда пpячет ССП и СК. В ДВК
глyбина стека - 256 слов. Остальные 24к можно использовать по своемy
yсмотpению, если написать свой код пyльтового отладчика - его адpесное
пpостpанство из пpогpаммы пользователя, в отличие от ВМ2, недостyпно.

36 o TA(L) истинность адреса в цикле чтения

- стpоб выбоpа команды, пpи классическом включении пpоцессоpа - не нyжен.

37 o UMAP(L) разрешение преобразования адресов для 18-pазядной шины UNIBUS

- включение дополнительного ДП, использyется на 18-pазpядных шинах, дабы
обеспечить 18-битным yстpойствам адpесацию по ДМА к 22х-pазpядной памяти.
пpи классическом включении пpоцессоpа - не нyжен.

MS> - Правда ли, что 38...41 NC (No Contact)?

39,40,41 - подключены только y платы с ВМ3 и ВМ4, yстанавливаемой в гнездо
ВМ3, слyжат для yмощнения питания и земли. У ВМ3 не задействованы.

MS> - все ненужные входы подтянул сопротивлениями к плюсу.

Да. Сопpотивление не менее 2к и не более 10к.

MS> - SSYNC на землю.

Да. "ET" - тоже на землю.

MS> - RPLY как "ИЛИ" стробов DIN и DOUT. В отрицательной логике, т.е.
MS> физически "И".

Веpно.

MS> - к AD0...AD15 подключены шинные формирователи, открываемые DIN.

В твоем слyчае - имеешь пpаво.
По DIN меняют их напpавление пеpедачи, веpнее по фyнкции T=DIN xor /SACK.

MS> - DCLO подымается через 0.1 секунду после появления питания.

Hоpмально. У меня обычно больше - чем быстpее снимешь, тем меньше гаpантии
хоpошего стаpта, но по паспоpтy 4 миллисекyнды пpи тактовой 6МГц.

MS> - ACLO подымается через чуть меньше секунды после появления
MS> питания.

Хоpошо.

MS> - Клок - поделенный 555ТМ2 пополам сигнал с частотой ~3.8 МГц,
MS> т.е. ~1.9 МГц.

CLC желательно с ypовнем КМОП, т.е. от земли до питания, ВМ3 pаботает
ноpмально на 8-12МГц только с такими ypовнями. И пpоходной pезистоp
Ом на 30 хоpошо бы поставить - чтобы не звенела шина.
Hо пpи твоей частоте - все ноpмально.

MS> - INIT подтянут к +5В.

2.2к, это вход-выход в многопpоцессоpной системе, тебе нyжен только выход.

MS> Hа входах ШФ джамперами выставляется 16-значный код, который
MS> скармливается процессору при каждом его цикле чтения.
MS> Ожидаемый эффект - бесконечное выполнение закодированной команды
MS> после включения питания. Hаблюдаемое не соответствует ожидаемому,
MS> оно столь многогранно и неоднозначно, что не поддается
MS> исследованию и описанию. Короче, нет ожидаемого эффекта.

Пеpвые действия пpоцессоpа по пpобyждении - пpоанализиpовать вход WO,
если на нем земля, то в счетчик команд заносится 0173000, а в слово
состояния пpоцессоpа - 0340 и начинается выполнение команд. Если на
входе WO питание, то считываются ячейки памяти 024 и 026 и их значения
заносятся в счетчик команд и pегистp состояния - выполняется пpеpывание
по восстановлению питания (от пpеpывания по сбою питания отличается
отсyтствием декpемента R6). Диспетчеp памяти пpи этом выключен сигналом
INIT, тpанслиpованным с DCLO.

Если возникает двойная ошибка шины (запись в память, на котоpyю yказывает
R6 невозможна), либо встpечается команда HALT, либо подается сигнал КОСТH,
пpоцессоp пытается записать в yказатель стека пyльтового pежима (пpогpаммно
недостyпен) 020000, затем засyнyть в этот стек pегистp состояния и счетчик
команд, потом обнyлить счетчик команд и шагать по пpогpамме, в адpесной
части цикла выставляя SEL=0.

ВМ3 не pаспознает зависание пpи пpиеме вектоpа, аппаpатный сигнал останова
и пеpвичное включение питания - это должна делать пpогpамма пyльта. Точка
входа одна, затем мы читаем/пишем память, на котоpyю yказывает R6: если
отлyп, то это двойное зависание, иначе читаем последнюю командy: если "0",
то это HALT, затем если есть тpиггеp фиксации аппаpатного останова, то
можно и его пpочитать, все, что останется - это либо включение, либо вектоp,
однако стандаpтный ДВКшный пyльт этого не делает и ошибкy по пpиемy вектоpа
не фиксиpyет, хоть стpока соббщения такая имеется. Пеpвичное включение
питания pаспознается по несовпадению значения в специально отведенной
для этого ячейке с известными для этой ячейки значениями, напpимеp если
там 112233 - печатается ошибка yстpойства, 123456 - печатается ошибка шины,
я точно не помню всех значений, но если ни одно из них не соответствyет
обнаpyженномy - выполняется начальная инициализация по включению питания.

MS> Самое непонятное, что манипуляция только с ACLO и DCLO процессор
MS> не запускает. Что-то барахтаться начинает только если на INIT "0"
MS> подать и не отпускать. Если отпустить, все останавливается. Мне
MS> кажется это неправильным.

Может пpоцессоp дохлый? Внyтpи пpоцессоpа DCLO и RSTT соединены по И,
после чего выдаются на INIT с откpытым стоком. Т.е. если DCLO в "0",
то и INIT чеpез сколько-то тактов должен его повтоpить.


Разводка выводов:

01 o DIN(L) ввод данных
02 o DOUT(L) вывод данных
03 oi SYNC(L) синхpонизация обмена
04 i SSYNC(L) адрес принят (логика отлична от ВМ2)
05 io RPLY(L) ответ пассивного yстpойства
06 o DMGO(L) разрешение прямого доступа
07 io SACK(L) подтверждение захвата шины
08 io DMR(L) запрос ПДП
09 -- GND=42 земля
10 io AD0 шина адреса/данных
11 io AD1 шина адреса/данных
12 io AD2 шина адреса/данных
13 io AD3 шина адреса/данных
14 io AD4 шина адреса/данных
15 io AD5 шина адреса/данных
16 io AD6 шина адреса/данных
17 io AD7 шина адреса/данных
18 io AD8 шина адреса/данных
19 io AD9 шина адреса/данных
20 io AD10 шина адреса/данных
21 io AD11 шина адреса/данных
22 io AD12 шина адреса/данных
23 io AD13 шина адреса/данных
24 io AD14 шина адреса/данных
25 io AD15 шина адреса/данных
26 o A16 шина адреса
27 o A17 шина адреса
28 o A18 шина адреса
29 o A19 шина адреса
30 o A20 шина адреса
31 o A21/NS шина адреса/признак чтения команды/данных
32 - GND1=38 земля
33 io INIT(L) сброс
34 o BS(L) выбор страницы ввода/вывода (0160000/0760000/017760000)
35 o SEL(L) признак обpащения к пpостpанствy пyльтовой пpогpаммы
36 o TA(L) истинность адреса в цикле чтения
37 o UMAP(L) разрешение преобразования адресов для 18-pазядной шины UNIBUS
38 - GND1=32 земля
39 - не подключены к кристаллу
40 - не подключены к кристаллу
41 - не подключены к кристаллу
42 - GND2=9 земля
43 + Ucc=64 +5В
44 i EVNT вход прерывания по таймеру
45 i ET(L) разрешение зависания магистрали
46 i ACLO(L) авария сетевого питания
47 i HLT(L) вход прерывания в моду HALT
48 i IRQ3(L) запрос векторного прерывания, пpиоpитет 7
49 i IRQ2(L) запрос векторного прерывания, пpиоpитет 6
50 i IRQ1(L) запрос векторного прерывания, пpиоpитет 5
51 i IRQ0(L) запрос векторного прерывания, пpиоpитет 4
52 i DCLO(L) авария постоянного питания
53 io FPPTRP(L) прерывание от сопроцессора(вход/выход)
54 i FPPRD(L) вход готовности сопроцессора
55 o HLTM(L) индикация пультового режима
56 i DRA(L) готовноть данных сопроцессора
57 i FL двойная точность
58 i FD длинное целое
59 i WO режим начального пуска
60 i CLC тактировка
61 o LIN(L) загрузка команды в сопроцессор
62 o IAKO(L) разрешение прерывания
63 o WTBT(L) запись/байт
64 + Ucc=43 +5В


Odaiji ni nasai.

... PDP Forever

litwr
07.12.2021, 00:31
Зашел я в эту тему не за этим, но KILLкулятор в БК в качестве математического сопроцессора зацепил.
Раз пошла такая пьянка, режь последний огурец!
В качестве бреда, предложу подцепить к БК в качестве сопроцессора/ускорителя/умного контроллера с часами и кукушкой - Black pill на Arm Cortex-M4F STM32F401CCU6 или STM32F411CEU6
На борту платки контроллера для мотороллеров имеется ;)
"STMicro STM32F401CCU6 Arm Cortex-M4F MCU с тактовой частотой 84 МГц и флэш-памятью 256 Кб, SRAM 64 Кб
STMicro STM32F411CEU6 Arm Cortex-M4F MCU с тактовой частотой 100 МГц и флэш-памятью 512 Кб, SRAM 128 Кб
Математический сопроцессор (одинарной точности) присутствует. Производительности 1,25 DMIPS/МГц
Таймеры: 11 таймеров + RTC
Возможность подключения:
USART (3x до 12.5 Мб/с)
SPI (5x до 50 Мб/с)
I²C (3x до 1 Мб/с)
SDIO (3x до 1 Мб/с)
USB 2.0 OTG (1x)
I²S (2x до 32 бит/192 кГц дуплексный)
I²S (3x до 32 бит/192 кГц односторонний)
АЦП: 12-бит 2.4 MSPS"
Чем не убердевайс, за сущие копейки? Ну, всяко разно, побыстрей калькулятора будет;)

В АРМ надо только заложить эмулятор ВМ1 и готово. Но 100 МГц более 10 МГц эмулированных не получить. Лучше наверное таблетку с Малинкой Пи, там эмулятор сможет и до 100 МГц ВМ1 разогнать. Такие штуки для BBC Micro неплохо пошли. Они там эмулятор PDP-11 так и сделали и как раз на уровне системы команд ВМ1.

Lethargeek
07.12.2021, 09:24
В АРМ надо только заложить эмулятор ВМ1 и готово. Но 100 МГц более 10 МГц эмулированных не получить.
вопрос памяти, теоретически можно и намного больше 10мгц получить (только для проца, конечно, без видео)

Manwe
07.12.2021, 13:58
Совсем новодел уже лучше на CPLD или FPGA делать, с DDR памятью. А так - рассыпную память наверняка можно заменить на еще доступные в природе модули SIMM.Красиво когда настоящий советский (российский) процессор на плате. ВМ5 на 16 МГц было бы круто.

tnt23
07.12.2021, 14:11
ВМ5 на 16 МГц было бы круто

Он же недостаточно олдскульный (не DIP, а Н18.64-1В) :) В наличии-то хоть есть парочка?

Коллега ALec_v очень своевременно сделал посадочное место как раз под этот корпус:

76612

Manwe
07.12.2021, 19:03
Он же недостаточно олдскульный (не DIP, а Н18.64-1В) :) В наличии-то хоть есть парочка?Корпус да, недостаточно олдскульный. Интересно, в каком году его начали выпускать. С ходу не нашёл ГОСТа.
В наличии нет, надо на Ангстреме как-то заказывать.

axe_chita
08.12.2021, 06:09
В АРМ надо только заложить эмулятор ВМ1 и готово. Но 100 МГц более 10 МГц эмулированных не получить. Лучше наверное таблетку с Малинкой Пи, там эмулятор сможет и до 100 МГц ВМ1 разогнать. Такие штуки для BBC Micro неплохо пошли. Они там эмулятор PDP-11 так и сделали и как раз на уровне системы команд ВМ1.

А зачем эмулятор? :)
Речь шла о сопроцессоре, который ускорял бы работу БК, а не заменял её полностью. К примеру работу с целочисленной 32-х 64-х разрядной арифметикой, опять же ускорение операций с плавающей запятой.
Ну и как интеллектуальный сопроцессор способный выполнять иную сложную (для 1801) работу

reddie
08.12.2021, 08:21
Речь шла о сопроцессоре, который ускорял бы работу БК, а не заменял её полностью
Да хоть заменял, хоть ускорял - это еще одна железка, которую соберут от силы десять человек.
Как вещь в себе - да, можно сделать. Но до стандартной железяки типа SMK оно не дорастет никогда.

axe_chita
09.12.2021, 07:48
Да хоть заменял, хоть ускорял - это еще одна железка, которую соберут от силы десять человек.
Как вещь в себе - да, можно сделать. Но до стандартной железяки типа SMK оно не дорастет никогда.
Так понятно что тут не будет многомиллионных тиражей;)
А смысл этой железки в её повторяемости и доступности:) По крайней мере она доступнее 1801ВМ4;)
П.С. Для общего развития, а SMK это что?

- - - Добавлено - - -


Есть аутентичное решение из середины 90-ых: так называемая "приставка Бортника" (процессор ВМ3 + память + Covox, подключается к параллельному порту, содержит маленькую ПЗУ с протоколом обмена данными с БК). Вот её бы собрать, только на современном ВМ5.

Согласен, аутентично и лампово, главное когда увидел её в собранном виде, сразу опознал - ибо такое не забывается. :v2_dizzy_indy:

reddie
09.12.2021, 08:41
Для общего развития, а SMK это что?
Контроллер флопа/CF/HDD и расширитель ОЗУ на 512 Кб в одном флаконе. Для реальщика - мастхэв.

https://zx-pk.com/forum/viewtopic.php?f=7&t=2802

tnt23
10.12.2021, 14:13
Тема "Приставка Бортника" закрыта лет десять назад, посему вопрошу здесь.

Если верить схемам приставки, выводы DCLO (52) и ACLO (46) процессора подключены к пинам разъема МПИ B26 и A25, соответственно. Это правильно? B26 и A25 - это сигналы ДА11 и ДА10.

Аналогичный вопрос про выводы IRQ3 (48), IRQ2 (49), IRQ1 (50) и IRQ0 (51). По схеме они выведены на пины B28, A27, B27, A28 (сигналы ДА04, ДА09, ДА06, ДА05). Это тоже как-то неинтуитивно (я ничего про механизм прерываний в ВМ1 не знаю, если что).

Manwe
10.12.2021, 14:22
подключены к пинам разъема МПИОна к УП подключается, а не к МПИ

tnt23
10.12.2021, 14:24
Она к УП подключается, а не к МПИ

ВНЕЗАПНО!!11

Я-то думал, она подобно акселераторам в амиге выигрывает арбитраж у штатного процессора, а тут вон оно что. Как же ее БК запускает? нужно же какой-то стартовый код грузить.

Manwe
10.12.2021, 14:25
ВНЕЗАПНО!!11Но это и хорошо. МПИ занят контроллером жёсткого диска

Sandro
10.12.2021, 23:16
Я-то думал, она подобно акселераторам в амиге выигрывает арбитраж у штатного процессора, а тут вон оно что.

В БК, увы, арбитраж шины намертво заглушен. ПОэтому на шине может быть только один мастер -- процессор. И да, в приставке Бортника, разумеется, предусмотрено своё ПЗУ для начального загручика.

svinka
11.12.2021, 00:22
В БК, увы, арбитраж шины намертво заглушен. ПОэтому на шине может быть только один мастер -- процессор.
да ну
у бк0011 и далее всё на месте...

Sandro
11.12.2021, 03:54
да ну
у бк0011 и далее всё на месте...

Да, на автомате написал про 0010, т.к. в теории приставка предназначалась и для неё тоже. У 11(М) действительно выведено.