You are here
Система микрокоманд ИК130x
От редакции. Продолжение публикаций серии "Парк периода ЕГГОГологии" об устройстве калькулятора МК-61 от Алексея Сугоняева.
Для мнемокода выбрана архитектура ТТА, как наиболее подходящая для описания регистровых пересылок внутри ИК130х. Операции следующие через запятую (слоты) выполняются параллельно строго по фронту синхросигнала, поэтому пересылки вида S -> S1, S1 -> S имеют смысл (обмен значениями регистров S, S1) и не являются описанием последовательности действий.
Каждый слот может выполняться условно, для этого он префиксируется набором признаков для сравнения. Признак W - явно не выражен в микрокоманде, он задается полем инструкции (см.статью о реверсе МК-61) действующей 42 такта. Однако он имеет смысл если используются разряды 15,16,17 машинного слова отличные от 0. Поля содержащее эти разряды выделены в микрокоде точками с обеих сторон. Кроме того старшие 8 разрядов микрокоманды отделены подчеркиванием.
Так как ни в одной микрокоманде не встречаются установленные в единицу биты 24 и 25, поле с ними выделено жирным шрифтом. В версии эмулятора Ф.Лазарева данные биты используются для формирования еще одной операции пересылки IK1302_S1 |= IK1302_key_y требуемой для обработки клавиатуры. Коды ?3_??????, ?7_??????, ?F_?????? не встречаются в таблице микрокода. Таким образом вышеуказанная пересылка в ИК1302 не используется.
SF! - префикс сохранения переноса операции в флаг CARRY (в коде IK1302_L). Префиксы условного исполнения (могут быть сгруппированы по логическому “И”):
- W - флаг разрешения записи
- C - флаг CARRY == 1
- NC - флаг CARRY == 0
ИК1302
N | Микрокод 32 р-р |
Мнемоническое обозначение в терминах многопоточного TTA (транспортно-триггерная архитектура) |
---|---|---|
0 | 00_0.00.000 | NULL (NOP) |
1 | 00_8.00.001 | 0(R) -> S |
2 | 00_A.00.820 | SF! S + 1 -> S |
3 | 00_0.40.020 | W? S -> -1(R) |
4 | 00_A.03.120 | 0 -> S, 1 -> CARRY |
5 | 00_2.03.081 | SF! 0(R) + S + 1 -> NULL |
6 | 00_A.00.181 | SF! 0(R) + 0x0F -> S |
7 | 00_8.03.800 | 2 -> S |
8 | 00_8.18.001 | W? S -> 0(R), 0(R) -> S |
9 | 00_8.00.400 | 6 -> S |
10 | 00_A.00.089 | SF! S + 0x0F -> S |
11 | 00_A.03.C20 | SF! S + 7 + 1 -> S |
12 | 00_8.00.820 | S + 1 -> S |
13 | 00_0.80.020 | W? S -> -2(R) |
14 | 00_8.00.120 | 0x0F -> S |
15 | 01_4.00.020 | S -> S1, S1 -> S |
16 | 00_8.00.081 | 0(R) + S -> S |
17 | 00_2.10.801 | SF! W? 0(R) + 1 -> 0(R) |
18 | 00_0.40.000 | W? 0 -> -1(R) |
19 | 00_0.58.001 | W? 0(R) -> -1(R), W? S -> 0(R) |
20 | 00_8.08.001 | 0(R) -> S, W? (-3)R -> 0(R) |
21 | 00_A.03.081 | SF! 0(R) + S + 1 -> S |
22 | 00_A.01.081 | SF! 0(R) + S + CARRY -> S |
23 | 00_A.01.181 | SF! 0(R) + 0x0F + CARRY -> S |
24 | 00_0.40.090 | WC? 0x0A + S -> -1(R), WNC? S -> -1(R) |
25 | 00_8.00.401 | 0(R) + 6 -> S |
26 | 00_A.00.081 | SF! 0(R) + S -> S |
27 | 00_0.40.001 | W? 0(R) -> (-1)R |
28 | 00_8.00.801 | 0(R) + 1 -> S |
29 | 01_0.00.000 | 0 -> S1 |
30 | 00_8.00.100 | ~S -> S |
31 | 01_2.00.801 | SF! 0(R) + 1 -> S1 |
32 | 00_0.13.C01 | W? 0(R) + 8 -> 0(R) |
33 | 00_8.00.008 | ~0(R) -> S |
34 | 00_A.00.088 | SF! ~0(R) + S -> S |
35 | 00_0.10.200 | W? S1 -> 0(R) |
36 | 00_8.00.040 | 4 -> S |
37 | 00_8.00.280 | S | S1 -> S |
38 | 01_8.01.200 | S1 + CARRY -> S, S1 + CARRY -> S1 |
39 | 01_0.00.208 | ~0(R) + S1 -> S1 |
40 | 00_0.80.001 | W? 0(R) -> -2(R) |
41 | 00_A.00.082 | SF! 0(M) + S -> S |
42 | 00_A.01.008 | SF! ~0(R) + CARRY -> S |
43 | 01_0.00.001 | 0(R) -> S1 |
44 | 00_A.00.808 | SF! ~0(R) + 1 -> S |
45 | 00_9.00.001 | (0)R -> S, S -> (0)M |
46 | 0.10.004 | W? ST[0] -> 0(R), 1(ST) -> 0(ST),2(ST) -> 1(ST),0(ST) -> 2(ST) |
47 | 00_0.80.820 | W? S + 1 -> -2(R) |
48 | 00_8.00.002 | (0)M -> S |
49 | 00_1.40.002 | W? 0(M) -> -1(R), S -> 0(M) |
50 | 00_0.08.000 | W? -(3)R -> 0(R) |
51 | 00_A.00.090 | SF! NC? 0x0A + S -> S |
52 | 00_A.00.220 | SF! S + S1 -> S |
53 | 00_8.01.001 | 0(R) + CARRY -> S |
54 | 01_2.03.200 | SF! S1 + 1 -> S1 |
55 | 04_8.00.001 | 0(R) -> S, 1(ST) -> 2(ST), 0(ST) -> 1(ST), 0(R) -> 0(ST) |
56 | 00_0.11.801 | W? 0(R) + 1 + CARRY -> 0(R) |
57 | 01_0.08.001 | 0(R) -> S1, W? 3(R) -> 0(R) |
58 | 00_A.04.020 | SF! S + ~T -> S |
59 | 04_8.00.801 | 0(R) + 1 -> S, 2(ST) -> 1(ST),1(ST) -> 0(ST), 0(R) + 1-> 0(ST) |
60 | 00_8.40.801 | W? 0(R) + 1 -> -1(R), 0(R) + 1 -> S |
61 | 00_8.40.020 | W? S -> -1(R) |
62 | 00_0.13.081 | W? 0(R) + S + 1 -> 0(R) |
63 | 00_0.10.801 | W? 0(R) + 1 -> 0(R) |
64 | 00_8.18.180 | W? S -> 0(R), 0x0F -> S |
65 | 00_8.00.180 | 0x0F -> S |
66 | 00_A.00.081 | SF! 0(R) + S -> S |
67 | 00_8.00.001 | 0(R) -> S |
ИК 1303
N | Микрокод 32 р-р |
Мнемоническое обозначение в терминах многопоточного TTA (транспортно-триггерная архитектура) |
---|---|---|
0 | 00_0.00.000 | NOP |
1 | 00_8.00.001 | 0(R) -> S |
2 | 00_0.40.020 | W? -1(R) = S |
3 | 01_4.40.090 | W? NC? 0x0A + 0 + S -> -1(R), W? C? S -> -1(R), S1 -> S |
4 | 00_A.00.081 | SF! 0(R) + S -> S |
5 | 01_0.00.000 | 0 -> S1 |
6 | 01_4.00.020 | S -> S1, S1 -> S |
7 | 00_8.00.008 | ~0(R) -> S |
8 | 00_A.03.180 | 0 -> S, 1 -> CARRY |
9 | 01_0.02.200 | S1 + ~CARRY -> S1 |
10 | 00_8.00.400 | 6 -> S |
11 | 01_4.18.001 | W? S -> 0(R), 0(R) -> S1, S1 -> S |
12 | 00_0.80.020 | W? S -> -2(R) |
13 | 00_8.41.020 | W? S + CARRY -> -1(R), S + CARRY -> S |
14 | 00_2.03.100 | SF! ~S + 1 -> NULL |
15 | 00_2.03.088 | SF! ~0(R) + S + 1 -> NULL |
16 | 00_A.00.820 | SF! S + 1 -> S |
17 | 00_8.00.120 | 0x0F -> S |
18 | 00_8.00.1C0 | 3 -> S |
19 | 00_8.10.081 | W? 0(R) + S -> 0(R), 0(R) + S -> S |
20 | 00_A.00.089 | SF! S + 0x0F -> S |
21 | 00_8.00.401 | 0(R) + 6 -> S |
22 | 00_A.01.0A0 | SF! S + S + CARRY -> S |
23 | 00_A.01.081 | SF! 0(R) + S + CARRY -> S |
24 | 00_8.18.001 | W? S) -> 0(R), 0(R) -> S |
25 | 01_A.00.220 | SF! S + S1 -> S, S + S1 -> S1 |
26 | 00_2.01.100 | SF! ~S + CARRY -> NULL |
27 | 00_2.03.420 | SF! S + 6 + 1 -> NULL |
28 | 00_0.08.000 | 0 -> {P,sg} |
29 | 00_8.01.020 | S + CARRY -> S |
30 | 00_2.01.420 | SF! S + CARRY + 6 -> NULL |
31 | 00_8.01.190 | NC? 9 -> S, C? 0 -> S |
32 | 00_0.40.000 | W? 0 -> -1(R) |
33 | 00_0.80.820 | W? S + 1 -> -2(R) |
34 | 00_8.00.002 | 0(M) -> S |
35 | 00_1.40.002 | W? 0(M) -> -1(R), S -> 0(M) |
36 | 00_8.00.100 | ~S -> S |
37 | 00_A.03.C20 | SF! S + 8 -> S |
38 | 00_A.00.808 | SF! ~0(R) + 1 -> S |
39 | 00_A.01.008 | SF! ~0(R) + CARRY -> S |
40 | 00_2.00.540 | SF! (~S | 6) + 4 -> NULL |
41 | 00_6.01.209 | SF! 0x0F + S1 + CARRY -> NULL, S1 -> S |
42 | 00_0.83.100 | W? ~S + 1 -> -2(R) |
43 | 00_A.03.081 | SF! 0(R) + S + 1 -> S |
44 | 08_8.00.004 | 0(ST) -> S, 1(ST) -> 0(ST), 2(ST) -> 1(ST), 0(ST) -> 2(ST) |
45 | 00_0.58.001 | W? 0(R) -> -1(R), W? S -> 0(R) |
46 | 01_0.01.280 | (S | S1) + CARRY -> S1 |
47 | 01_0.08.001 | W? 3(R) -> 0(R), 0(R) -> S1 |
48 | 01_2.00.209 | SF! 0x0F + S1 -> S1 |
49 | 04_0.18.001 | W? S -> 0(R), 1(ST) -> 2(ST), 0(ST) -> 1(ST), 0(R) -> 0(ST) |
50 | 00_0.40.002 | W? 0(M) -> -1(R) |
51 | 01_.00.0001 | 0(R) -> S1 |
52 | 00_0.10.200 | W? S1 -> 0(R) |
53 | 00_8.00.840 | 5 -> S |
54 | 00_A.01.181 | SF! 0(R) + 0x0F + CARRY -> S |
55 | 04_0.18.801 | W? S -> 0(R),1(ST) -> 2(ST), 0(ST) -> 1(ST), 0(R) + 1 -> 0(ST) |
56 | 00_A.10.181 | SF! 0(R) + 0x0F -> S |
57 | 00_8.00.801 | 0(R) + 1 -> S |
58 | 00_0.40.001 | W? 0(R) -> -1(R) |
59 | 00_0.11.190 | W? NC? 9 -> 0(R), W? C? 0 -> 0(R) |
60 | 00_8.58.001 | W? 0(R) -> -1(R), W? S -> 0(R), 0(R) -> S |
61 | 00_0.40.020 | W? S -> -1(R) |
62 | 03_2.00.209 | SF! (S1 + 0x0F) | S1 -> S1 |
63 | 00_8.00.0C0 | S + 4 -> S |
64 | 04_0.00.020 | 1(ST) -> 2(ST), 0(ST) -> 1(ST), S -> 0(ST) |
65 | 00_6.00.081 | SF! S + 0(R) -> NULL , S1 -> S |
66 | 01_0.00.000 | 0x00 -> S1 |
67 | 01_0.00.180 | 0x0F -> S1 |
ИК 1306
N | Микрокод 32 р-р |
Мнемоническое обозначение в терминах многопоточного TTA (транспортно-триггерная архитектура) |
---|---|---|
0 | 00_0.00.000 | NOP |
1 | 00_8.00.008 | ~0(R) -> S |
2 | 00_0.40.020 | W? S -> -1(R) |
3 | 00_8.00.001 | 0(R) -> S |
4 | 00_8.00.021 | 0(R) | S -> S |
5 | 00_0.80.020 | W? S -> -2(R) |
6 | 00_A.00.028 | ~0(R) | S -> S, 0 -> CARRY |
7 | 00_0.40.100 | ~S -> -1(R) |
8 | 04_0.00.100 | 1(ST) -> 2(ST), 0(ST) -> 1(ST), ~S -> 0(ST) |
9 | 00_0.10.100 | ~S -> 0(R) |
10 | 00_A.00.101 | SF! ~S | 0(R) -> S |
11 | 00_2.01.089 | SF! S + 0x0F + CARRY -> NULL |
12 | 00_2.13.201 | SF! W? 0(R) + S1 + 1 -> 0(R) |
13 | 00_8.00.004 | 0(ST) -> S |
14 | 00_8.00.800 | 1 -> S |
15 | 00_8.00.820 | S + 1 -> S |
16 | 00_2.00.088 | SF! ~0(R) + S -> NULL |
17 | 04_8.10.002 | W? 0(M) -> 0(R), S1 -> S, 1(ST) -> 2(ST), 0(ST) -> 1(ST), 0(M) -> 0(ST) |
18 | 00_A.00.820 | SF! S + 1 -> S |
19 | 00_8.00.400 | 6 -> S |
20 | 00_8.01.000 | CARRY -> S |
21 | 00_1.00.000 | S -> 0(M) |
22 | 08_8.00.004 | 0(ST) -> S, 1(ST) -> 0(ST), 2(ST) -> 1(ST), 0(ST) -> 2(ST) |
23 | 00_0.08.000 | W? -(3)R -> 0(R) |
24 | 01_4.00.020 | S -> S1, S1 -> S |
25 | 00_8.00.005 | 0(R) | 0(ST) -> S |
26 | 04_0.00.020 | 1(ST) -> 2(ST), 0(ST) -> 1(ST), S -> 0(ST) |
27 | 00_A.00.180 | 0x0F -> S, 0 -> CARRY |
28 | 00_1.00.000 | S -> 0(M) |
29 | 04_0.00.001 | 1(ST) -> 2(ST), 0(ST) -> 1(ST), 0(R) -> 0(ST) |
30 | 08_2.41.004 | SF! W? 0(ST) + CARRY -> -1(R), 1(ST) -> 0(ST), 2(ST) -> 1(ST), 0(ST) -> 2(ST) |
31 | 00_4.00.000 | S1 -> S |
32 | 00_0.80.001 | W? 0(R) -> -2(R) |
33 | 00_0.40.001 | W? 0(R) -> (-1)R |
34 | 00_2.12.801 | SF! W? 0(R) + 1 + ~L -> 0(R) |
35 | 00_2.00.808 | SF! ~0(R) + 1 -> NULL |
36 | 00_8.00.000 | 0 -> S |
37 | 00_0.10.020 | W? S -> 0(R) |
38 | 00_A.00.808 | SF! ~0(R) + 1 -> S |
39 | 00_0.40.090 | WC? 0x0A + S -> -1(R), WNC? S -> -1(R) |
40 | 00_A.01.008 | SF! ~0(R) + CARRY -> S |
41 | 00_8.00.401 | 0(R) + 6 -> S |
42 | 00_A.00.081 | SF! 0(R) + S -> S |
43 | 00_A.01.081 | SF! 0(R) + S + CARRY -> S |
44 | 00_8.03.400 | 7 -> S |
45 | 00_A.01.001 | SF! 0(R) + CARRY -> S |
46 | 00_A.11.801 | SF! W? 0(R) + 1 + CARRY -> 0(R), 0(R) + 1 + CARRY -> S |
47 | 00_0.11.001 | W? 0(R) + CARRY -> 0(R) |
48 | 00_A.10.801 | SF! W? 0(R) + 1 -> 0(R), 0(R) + 1 -> S |
49 | 00_2.13.801 | SF! W? 0(R) + 1 + 1 -> 0(R) |
50 | 00_0.98.001 | W? S -> 0(R), W? 0(R) -> -2(R) |
51 | 00_8.18.001 | W? S -> 0(R), 0(R) -> S |
52 | 00_8.00.420 | S + 6 -> S |
53 | 00_8.80.090 | NC? 0x0A + S -> S, NC? 0x0A + S -> -2(R), C? S -> -2(R) |
54 | 00_2.03.C08 | SF? 1 + 6|1 + ~0(R) -> NULL |
55 | 00_2.00.809 | SF! 1 + 0x0F -> NULL ; 1 -> CARRY |
56 | 00_A.00.089 | SF! S + 0x0F -> S |
57 | 00_2.03.090 | SF! NC? 0x0A + S + 1 -> NULL, C? S + 1 -> NULL |
58 | 00_8.40.090 | NC? W? 0x0A + S -> -1(R), NC? 0x0A + S -> S, C? W? S -> -1(R) |
59 | 00_8.10.002 | 0(M) -> 0(R), 0(M) -> S |
60 | 00_2.10.801 | SF! W? 0(R) + 1 -> 0(R) |
61 | 00_2.10.081 | SF! W? 0(R) + S -> 0(R) |
62 | 00_2.10.081 | SF! W? 0(R) + S -> 0(R) |
63 | 00_0.10.000 | W? 0 -> 0(R) |
64 | 00_2.00.090 | SF! NC? 0x0A + S -> NULL, C? S -> NULL |
65 | 00_2.12.801 | SF! NC? W? 0x0A + S + ~CARRY-> 0(R), C? W? S + ~CARRY-> 0(R) |
66 | 00_A.01.020 | SF! S + CARRY -> S |
67 | 00_A.01.020 | SF! S + CARRY -> S |
- site_editor's blog
- Log in or register to post comments
- 5311 просмотров
Комментарии
Уточнение
Можно добавить кратко назначение каждой из микросхем и в каких ПМК какая использовалась?
Назначение смутно
Могу сказать только про ИК1306 и то довольно нечетко - логика ИНВ,И,ИЛИ,Иск.ИЛИ, переводы по градусным мерам. ИК1302 и ИК1303 используются очень интенсивно во всех операциях. Возможно ИК1302 больше нагружена вводом-выводом (клавиатура и дисплей) чем ИК1303 (только переключатель ГР-ГРД-РД).
Для выяснения кто и что именно делает - нужен очередной этап разбирательств, по "синхро-программам". Там очень много работы, я его проделал и то не целиком, а по тестовому набору операций 3, 1, П1, 3, / и это огромнейший объем лога в 200 - 300 Мб. Честно скажу я мало что понял из того что там происходит, боюсь что это мне уже не доступно. По крайней мере развернуть синхропрограмму в набор микрокоманд для ИК1302 и частично ИК1303 можно, я это сделал, но я алгоритма не увидел. Видимо тут нужен совсем другой подход. Для микроконтроллеров эта тема будет уже бесполезна, так как объем кода превысит все возможные рамки МК.
Итого
Попробую подытожить.
ИК 1302 (Б3-34, МК-54, МК-56 и МК-61, МК-52)
Диспетчер, контроллер дисплея и клавиатуры.
ИК 1303 (Б3-34, МК-54, МК-56 и МК-61, МК-52)
Арифметический процессор, переключатель Г-ГРД-Р.
ИК 1306 (только МК-61, МК-52)
Процессор дополнительных функций МК-61 и МК-52.
Кстати, для публикации микрокода, результатов расследований и формулировки-структурирования своих предположений можно использовать нашу Вики по ЭКВМ и ПМК. Также туда можно выкладывать большие объёмы текстового материала, иллюстрации — в форме, пригодной для чтения человеком, разумеется.