ВМ1/ВМ2/ВМ3 и Arduino Mega

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

Moderator: Shaos

megov
Junior
Posts: 6
Joined: 25 Feb 2025 08:31

ВМ1/ВМ2/ВМ3 и Arduino Mega

Post by megov »

Здравствуйте, коллеги. Читаю вас давно, зарегался только что.
Спасибо Shaos'у за площадку, и многим коллегам (Lavr, Случайность, Mixa64 и всем, кого не упомянул тут, за посты).

Вот и я добрался до чудного мира 1801. Цель - та же самая, сделать (почти) минимальную ЭВМ на 1801.
Сам я Векторист-Ынтеловец, что-то в электронике соображаю, кое-какой код писать тоже умею.
Где то в фоне я неторопливо пытаюсь сделать реинкарнацию Вектор-06Ц со всякими плюшками, но это не
тема данного треда. Зато, в процессе этой работы получились 3 платки CPU с унифицированным интерфейсом:
на ВМ80А, на 8085 и на Z80. Идея в том, что остальная система остается такой же и не зависит от типа CPU.

Почесав репку и почитав доки на 1801 я пришел к идее попробовать этот же подход к BM1/ВМ2/ВM3, конечно,
с расширениями для последнего. По наводке Shaоs'а в https://github.com/jaquinn/RetroShield-KR1801VM2
я нашел и повторил этот шилд, но с изменениями - чтобы паять на макетке было проще. Код от Andrew Quinn тоже был
доработан. В результате получилась прикольная игрушка в которой можно программно танцевать вокруг ВМ2.
В частности, стали сильно понятнее запуск, разделение на USER и HALT режимы и общий подход к циклам шины.

Такая же макетка делается и для ВМ1. Понятно, что ВМ2 статический, а ВМ1 - нет, и использовать её также
напрямую с Ардуиной не получится, но потм оба модуля можно будет использовать в одной борде, конечно
научив ее отличиям в CPU. Ну и на BM3 я такой подход попробую адаптировать.
test-front.jpg
test-back.jpg
You do not have the required permissions to view the files attached to this post.
megov
Junior
Posts: 6
Joined: 25 Feb 2025 08:31

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

Post by megov »

Ерундопель продолжается. В ту же установку с подключением км1801вм2 в Ардуино Мега, и в том же стиле, была сделана платка с км1801вм3. Немного посравнивав доступные доки на процы удалось как-то свести в одном минимальном 40 пиновом коннекторе основные сигналы и вм2 и вм3. Не выведены сингалы IRQ, заглушены в пассивном состоянии сигналы DMA. Для вм3 также в пассивном состоянии находится интерфейс с FPU (вм4), дополнительные адресные линии А16-А21 выведены на отдельный коннектор и пока не используются.
Тестовая софтина не менялась относительно вм2 и пока не может полноценно работать с вм3: у него нет фазы /AR и есть отличия в стартовой последовательности. Если вм2 начинает с безадресного чтения стартового вектора, откуда потом извлекаются PC и PSW и процессор стартует в HALT моде, то вм3 при /WO=0 тупо стартует с 173000(oct) и заполняет PSW константой, причем, это, к тому же, происходит в USER моде, если /HALT пассивен при поднятии /ACLO.
Можно в стартовой последовательности со стороны Ардуино сказать /HALT=0 и, по идее, старт должен быть в HALT моде, но тогда первый адрес на шине, выставляемый процом читается не как 173000(oct), а как 17776(oct). Пока, полного понимания стартовой последовательности вм3 в голове нет.
Тем не менее, вм3 запустился и задышал. Белый дым остался внутри и помогает процессору работать. :mrgreen:
You do not have the required permissions to view the files attached to this post.
megov
Junior
Posts: 6
Joined: 25 Feb 2025 08:31

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

Post by megov »

Распиновка плат переходников относительно торцевого разъема Arduino Mega сейчас такая.

Code: Select all

    +--------------------VM1--------------------+
   /     +---------------VM2---------------+     \
  /     /     +----------VM3----------+     \     \
 /     /     /      /---Signals---\    \     \     \
/     /     /      /     Pins      \    \     \     \
|     |     |      |   +-------+   |     |     |     |
+5V   +5V   +5V    +5V | 39 40 | +5V   +5V   +5V   +5V
                       |       |
nAD8  nAD8  nAD8   PA0 | 37 38 | PA1  nAD9  nAD9  nAD9
nAD10 nAD10 nAD10  PA2 | 35 36 | PA3 nAD11 nAD11 nAD11
nAD12 nAD12 nAD12  PA4 | 33 34 | PA5 nAD13 nAD13 nAD13
nAD14 nAD14 nAD14  PA6 | 31 32 | PA7 nAD15 nAD15 nAD15
                       |       |
nAD7  nAD7  nAD7   PC7 | 29 30 | PC6  nAD6  nAD6  nAD6
nAD5  nAD5  nAD5   PC5 | 27 28 | PC4  nAD4  nAD4  nAD4
nAD3  nAD3  nAD3   PC3 | 25 26 | PC2  nAD2  nAD2  nAD2
nAD1  nAD1  nAD1   PC1 | 23 24 | PC0  nAD0  nAD0  nAD0
                       |       |
nSEL1 nSEL  nSEL   PD7 | 21 22 | PG2 nEVNT nEVNT    NC
NC    nHALT nHALT  PG1 | 19 20 | PG0    NC nVIRQ nVIRQ
                       |       |
nINIT nINIT nINIT  PL7 | 17 18 | PL6 nDCLO nDCLO nDCLO
nIAKO nIAKO nIAKO  PL5 | 15 16 | PL4 nACLO nACLO nACLO
NC    nAR   nSSYNC PL3 | 13 14 | PL2 nCLCI  CLCI  CLCI
nRPLY nRPLY nRPLY  PL1 | 11 12 | PL0  nDIN  nDIN  nDIN
                       |       |
nDOUT nDOUT nDOUT  PB3 | 09 10 | PB2 nSYNC nSYNC nSYNC
nBSY  NC    NC     PB1 | 07 08 | PB0 nWTBT nWTBT nWTBT
                       |       |
GND   GND   GND    GND | 05 06 | GND   GND   GND   GND
                       |       |
NC    NC    NC     NC  | 03 04 | NC     NC    NC    NC
NC    NC    NC     NC  | 11 02 | NC     NC    NC    NC
                       +-------+

Отличия:
pin 21 (PD7) - nSEL на ВМ2 и ВМ3, nSEL1 на ВМ1. nSEL2 на ВМ1 не выведен.
pin 22 (PG2) - nEVNT на ВМ2 и ВМ3, NC на ВМ1, т.к. такого сигнала нет.
pin 19 (PG1) - nHALT на ВМ2 и ВМ3, NC на ВМ1, т.к. такого сигнала нет.
pin 20 (PG0) - nVIRQ на ВМ1 и ВМ2, NC на ВМ3, т.к. такого сигнала нет.

pin 13 (PL3) - nAR на ВМ2, nSSYNC на ВМ3, NC на ВМ1 т.к. такого сигнала нет.
               Поведение nSSYNC на ВМ3 и nAR на ВМ2 кажется похожим, как
               ответ на выставление адреса процом.
// OUTDATED AND WRONG!!!
//             На BM2 nAR имеет естественный пуллап, как и у многих других
//             входов CPU и при старте можно вычитывать оттуда высокий уровень
//             для автоопределения ВМ2. На Ардуино Мега пуллдаун резисторов в 
//             чипе нет, поэтому для плат на BM1 и ВМ3 этот пин коннектора
//             подсоединен пуллдауном в 10к на землю.

Автоопределение между ВМ2 и ВМ3 пока основано на отсутствии у ВМ3 nVIRQ.
У ВМ2 оно есть и подтянуто пуллапом, на плате ВМ3 NC от nVIRQ подсоединен
пуллдауном в 10к на землю. Дальнейшее различение между ВМ1 и ВМ2 возможно
сделать аналогично, по отсутствиию на ВМ1 nEVENT (будет пуллдаун).


pin 14 (PL2) - посмотреть на полярность тактового сигнала на разных процах.
pin 07 (PB1) - nBSY на ВМ1, NC на ВМ1 и BM3, т.к. такого сигнала нет.
Софтина на Ардуине учится подсовывать процессорам разные плюхи, в виде кусков
ROM (предопределенных во флеше Ардуины) и пары килобайтов RAM.
Как предполагал Andrew Quinn в https://github.com/jaquinn/RetroShield-KR1801VM2
эмуляция и ромов и периферии будет делаться Ардуиной. Пока, у меня консольный порт не
обрабатывается в адресном пространстве и приходит bus trap, что тоже хорошо.

Первая грабля, на которую наступил - nSSYNC на ВМ3, который был изначально
заглушен, но по факту оказался аналогом nAR у ВМ2 и без него ничего дальше
первовго выставления адреса не двигалось. Сейчас поведение живых ВМ2 и ВМ3
одинаковое - падают в bus trap на обращениии в UART, ибо пока эмуляции его еще нет.

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

PS: Запустится ли в такой остнастке ВМ1 - вопрос. Пока - не должен, ибо тактовая
частота герц так 10, не более.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Если тут уже про всё на свете речь идёт (ВМ1,ВМ2,ВМ3), то может отпочковать беседу в отдельную тему? :roll:
Я тут за главного - если что шлите мыло на me собака shaos точка net
megov
Junior
Posts: 6
Joined: 25 Feb 2025 08:31

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

Post by megov »

Я не против, можно и отпочковать. По крайней мере , направление, которого я придерживаюсь - унифицированная "материнская" плата и отдельные платы CPU на BM1/ВM2/ВМ3.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: ВМ1/ВМ2/ВМ3 и Arduino Mega

Post by Shaos »

Отпочковал
Я тут за главного - если что шлите мыло на me собака shaos точка net
megov
Junior
Posts: 6
Joined: 25 Feb 2025 08:31

Re: ВМ1/ВМ2/ВМ3 и Arduino Mega

Post by megov »

Немного попедалировав, стартовая последовательность для ВМ2 получается следующая:

Code: Select all

21:48:39.328 -> CPU type autodetect: 1801VM2

<--- Initial state for setup is IDLE (IDL)
21:48:39.593 -> CLK:0000 Ao000000 Do000000 IDL/IDL DC/AC:00 INIT:0 SEL:1 SYNC:1->0 AR:1 DI/DO:11 RPLY:1
21:48:39.593 -> Init Complete

<--- First step for setup is to change state from IDLE (IDL) to RESET (RST)
21:48:39.593 -> CLK:0001 Ao000000 Do000000 IDL/RST DC/AC:00 INIT:0 SEL:1 SYNC:0->0 AR:0 DI/DO:11 RPLY:1
21:48:39.593 -> CLK:0002 Ao000000 Do000000 RST/RST DC/AC:00 INIT:0 SEL:1 SYNC:0->0 AR:0 DI/DO:11 RPLY:1

<--- After 20 clocks we set nDCLO inactive (=1): DC power is good
21:48:39.759 -> CLK:0022 Ao000000 Do000000 RST/RST DC/AC:10 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:11 RPLY:1
...
<--- Deasserting nDCLO turns startup phase from RESET(RST) to START2 (ST2)
21:48:39.759 -> CLK:0023 Ao000000 Do000000 RST/ST2 DC/AC:10 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:39.759 -> CLK:0024 Ao000000 Do000000 ST2/ST2 DC/AC:10 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
...
<--- After 20 more clocks we set nACLO inactive (=1): AC power is good
21:48:39.891 -> CLK:0041 Ao000000 Do000000 ST2/ST2 DC/AC:10 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:39.924 -> CLK:0042 Ao000000 Do000000 ST2/ST2 DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1

<--- Deasserting nACLO turns startup phase from START2 (ST2) to STARTED (STD)
21:48:39.924 -> CLK:0043 Ao000000 Do000000 ST2/STD DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:39.924 -> CLK:0044 Ao000000 Do000000 STD/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
...
<--- Some clocks are waiting for CPU attempts to read startup vector via "non-address read"
21:48:39.924 -> CLK:0045 Ao000000 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
...
21:48:39.991 -> CLK:0052 Ao000000 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:39.991 -> Startup vector 165004
21:48:39.991 -> CLK:0053 Ao000000 Do000000 IDL/RVC DC/AC:11 INIT:1 SEL:0 SYNC:1->1 AR:1 DI/DO:01 RPLY:1
21:48:39.991 -> CLK:0054 Ao000000 Do000000 RVC/RVC DC/AC:11 INIT:1 SEL:0 SYNC:1->1 AR:1 DI/DO:01 RPLY:1
21:48:40.024 -> CLK:0055 Ao000000 Do000000 RVC/RVC DC/AC:11 INIT:1 SEL:0 SYNC:1->1 AR:1 DI/DO:01 RPLY:1
21:48:40.024 -> CLK:0056 Ao000000 Do000000 RVC/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.024 -> CLK:0057 Ao000000 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.024 -> CLK:0058 Ao000000 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
...
21:48:40.090 -> CLK:0066 Ao000000 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1

<--- "Set address in halt mode" (SAH) phase: nSEL=0, address=165000
21:48:40.090 -> CLK:0067 Ao000000 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:0 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.090 -> CLK:0068 Ao000000 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:0 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.123 -> CLK:0069 Ao165000 Do000000 IDL/SAH DC/AC:11 INIT:1 SEL:0 SYNC:0->0 AR:0 DI/DO:11 RPLY:1

<--- Data in. First 2 bytes in reset vector is PC value (165004)
21:48:40.123 -> CLK:0070 Ao165000 Do165004 SAH/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.123 -> CLK:0071 Ao165000 Do165004 DIN/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.123 -> CLK:0072 Ao165000 Do165004 DIN/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.156 -> CLK:0073 Ao165000 Do165004 DIN/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.156 -> CLK:0074 Ao165000 Do000000 DIN/IDL DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:11 RPLY:1

21:48:40.156 -> CLK:0075 Ao165000 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.156 -> CLK:0076 Ao165000 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.189 -> CLK:0077 Ao165000 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.189 -> CLK:0078 Ao165000 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.189 -> CLK:0079 Ao165000 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.189 -> CLK:0080 Ao165000 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1

<--- "Set address in halt mode" (SAH) phase: nSEL=0, address=165002
21:48:40.189 -> CLK:0081 Ao165000 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:0 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.222 -> CLK:0082 Ao165000 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:0 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.222 -> CLK:0083 Ao165002 Do000000 IDL/SAH DC/AC:11 INIT:1 SEL:0 SYNC:0->0 AR:0 DI/DO:11 RPLY:1

<--- Data in. Second 2 bytes in reset vector is PSW value (000200)
21:48:40.222 -> CLK:0084 Ao165002 Do000200 SAH/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.222 -> CLK:0085 Ao165002 Do000200 DIN/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.255 -> CLK:0086 Ao165002 Do000200 DIN/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.255 -> CLK:0087 Ao165002 Do000200 DIN/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.255 -> CLK:0088 Ao165002 Do000000 DIN/IDL DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:11 RPLY:1

<--- Something happens inside CPU. Outer signals are just idle.
21:48:40.255 -> CLK:0089 Ao165002 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.288 -> CLK:0090 Ao165002 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.288 -> CLK:0091 Ao165002 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.288 -> CLK:0092 Ao165002 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.288 -> CLK:0093 Ao165002 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.288 -> CLK:0094 Ao165002 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.321 -> CLK:0095 Ao165002 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.321 -> CLK:0096 Ao165002 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.321 -> CLK:0097 Ao165002 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.321 -> CLK:0098 Ao165002 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.355 -> CLK:0099 Ao165002 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.355 -> CLK:0100 Ao165002 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.355 -> CLK:0101 Ao165002 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.355 -> CLK:0102 Ao165002 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1

<--- "Set address in user mode" (SAU) phase: nSEL=1, address=<READ_FROM_STARTUP_VECTOR> (165004)
21:48:40.388 -> CLK:0103 Ao165004 Do000000 IDL/SAU DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:11 RPLY:1

<--- Read the first word from "user ROM" (032737)
21:48:40.388 -> CLK:0104 Ao165004 Do032737 SAU/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.388 -> CLK:0105 Ao165004 Do032737 DIN/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.388 -> CLK:0106 Ao165004 Do032737 DIN/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.388 -> CLK:0107 Ao165004 Do032737 DIN/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.421 -> CLK:0108 Ao165004 Do000000 DIN/IDL DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:11 RPLY:1
21:48:40.421 -> CLK:0109 Ao165004 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.421 -> CLK:0110 Ao165004 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1

<--- "Set address in user mode" (SAU) phase: nSEL=1, address=165006
21:48:40.421 -> CLK:0111 Ao165006 Do000000 IDL/SAU DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:11 RPLY:1

<--- Read the second word from "user ROM" (000200)
21:48:40.454 -> CLK:0112 Ao165006 Do000200 SAU/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.454 -> CLK:0113 Ao165006 Do000200 DIN/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.454 -> CLK:0114 Ao165006 Do000200 DIN/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.454 -> CLK:0115 Ao165006 Do000200 DIN/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.487 -> CLK:0116 Ao165006 Do000000 DIN/IDL DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:11 RPLY:1
21:48:40.487 -> CLK:0117 Ao165006 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.487 -> CLK:0118 Ao165006 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.487 -> CLK:0119 Ao165006 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.487 -> CLK:0120 Ao165006 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.520 -> CLK:0121 Ao165006 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.520 -> CLK:0122 Ao165006 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1

<--- "Set address in user mode" (SAU) phase: nSEL=1, address=165010
21:48:40.520 -> CLK:0123 Ao165010 Do000000 IDL/SAU DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:11 RPLY:1

<--- Read the third word from "user ROM" (177564) - it is a port address, currently unhandled
21:48:40.520 -> CLK:0124 Ao165010 Do177564 SAU/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.553 -> CLK:0125 Ao165010 Do177564 DIN/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.553 -> CLK:0126 Ao165010 Do177564 DIN/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.553 -> CLK:0127 Ao165010 Do177564 DIN/DIN DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:01 RPLY:0
21:48:40.553 -> CLK:0128 Ao165010 Do000000 DIN/IDL DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:11 RPLY:1
21:48:40.553 -> CLK:0129 Ao165010 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.586 -> CLK:0130 Ao165010 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.586 -> CLK:0131 Ao165010 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1
21:48:40.586 -> CLK:0132 Ao165010 Do000000 IDL/IDL DC/AC:11 INIT:1 SEL:1 SYNC:1->1 AR:1 DI/DO:11 RPLY:1

<--- "Set address in user mode" (SAU) phase: nSEL=1, address=177564
21:48:40.586 -> CLK:0133 Ao177564 Do000000 IDL/SAU DC/AC:11 INIT:1 SEL:1 SYNC:0->0 AR:0 DI/DO:11 RPLY:1

<--- Yep. Peripherials is not implemented, so we get a bus trap here.
21:48:40.619 -> Bus Error Trap A177564
21:48:40.619 -> 
21:48:40.619 -> Last state 07
Ao - октальный адрес, Do - октальная шина данных, DC/AC - DCLO/ACLO. DI/DO - DIN/DOUT.
megov
Junior
Posts: 6
Joined: 25 Feb 2025 08:31

Re: ВМ1/ВМ2/ВМ3 и Arduino Mega

Post by megov »

Почитав коллег в разных форумах, оснастку ВМ3 переделываю. Резисторные сборки меняются с 10k на 2k2,
как положено по известным схемам, nWO(pin59) из глухого соединения с общим выносится под перемычку:
можно теперь пускать и с 177300 (nWO=0) и с 000024 (nWO=1) в USER моде.
Дополнительно, если в ардуиновском скетче придавить nHALT, то будет запуск сразу в пультовом режиме.
Итого, пока вырисовываются 3 режима старта:
- nHALT=1, nWO=0 -> пуск в USER c 177300 и константным PSW
- nHALT=1, nWO=1 -> пуск в USER c 000024 и ??? PSW
- nHALT=0, nWO=0 -> пуск в HALT со своими непонятными тараканами и умолчаниями.
Трейсы будут немного позже.