Система микрокоманд ИК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 -> |
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 |
blog comments powered by Disqus