Първото вършаче е било изписано върху стъклена пластинка с площ 12mm2. Схемата му е съдържала около 2250 транзистора (плътност ~190 елемента на mm2) и е работела на 108kHz. Използвал се е 10-микронен технологичен процес метал-окис-полупроводник с дупчеста проводимост (PMOS).
Цената на стъкълцето е била $200 - повече отколкото на Athlon 1GHz сега [3.2001]...
Инструкции на i4004 | Мнемоничен код | W1 | W2 | T |
NOP | 00 |   | E | Празна операция |
JCM c,aa | 1c | aa | G | Преход към адрес от ROM с адрес "aa", в зависимост от "c" |
FIM Rm,dd | 2s | dd | I | Прехвърля dd в регистърният чифт s |
SRC Rm | 2t |   | C | Изпраща регистров контрол *1 |
FIN Rm | 3s |   | B | Прехвърля клетка от ROM на адрес @R0R1 в s |
JIN Rm | 3t |   | C | Непряк преход към @t |
JUN aaa | 4a | aa | B | Безусловен преход към адрес от ROM |
JMS aaa | 5a | aa | F | Преход към подпрограма на адрес ааа от ROM |
INC Rn | 6r |   | A | Увеличава с едно регистър r |
ISZ Rn aa | 7r | aa | H | Увеличава регистър r и преминава на адрес aa при нула |
ADD Rn | 8r |   | A | Прибавя регистър r към акумулатора с пренос |
SUB Rn | 9r |   | A | Изважда регистъра r от акумулатора със заем |
LD Rn | Ar |   | A | Зарежда акумулатора със съдържанието на r |
XCH Rn | Br |   | A | Разменя съдържанието на r и акумулатора |
BBL d | Cd |   | D | Връща се една стъпка назад в стека и зарежда непосредствения операнд d в акумулатора |
LDM d | Dd |   | D | Зарежда непосредствения операнд d в акумулатора |
WRM | E0 |   | E | Записва съдържанието на акумулатора в RAM |
WMP | E1 |   | E | Записва съдържанието на акумулатора в изход от RAM (порт) |
WRR | E2 |   | E | Записва съдържанието на акумулатора във входно-изходната шина на ROM |
WPM | E3 |   | E | Записва акумулатора в избрания полубайт (*2) |
WR0 | E4 |   | E | Записва знак на състоянието 0 в акумулатора(*1) |
WR1 | E5 |   | E | Записва знак на състоянието 1 в акумулатора(*1) |
WR2 | E6 |   | E | Записва знак на състоянието 2 в акумулатора(*1) |
WR3 | E7 |   | E | Записва знак на състоянието 3 в акумулатора(*1) |
SBM | E8 |   | E | Изважда стойостта на избрана клетка от РП от акумулатора |
RDM | E9 |   | E | Прехвърля избраната клетка от паметта в акумулатора (*1) |
RDR | EA |   | E | Прехвърля съдържанието на входно/изходната шина на ROM в акумулатора (*1) |
ADM | EB |   | E | Събира съдържанието на клетка от RAM и акумулатора с пренос |
AD0 | EC |   | E | Прочита знак на състоянието 0 от акумулатора (*1) |
AD1 | ED |   | E | Прочита знак на състоянието 1 от акумулатора(*1) |
AD2 | EE |   | E | Прочита знак на състоянието 2 от акумулатора(1*) |
AD3 | EF |   | E | Прочита знак на състоянието 3 от акумулатора(1*) |
CLB | F0 |   | E | Нулира акумулатора и флага за пренос |
CLC | F1 |   | E | Нулира преноса |
IAC | F2 |   | E | Увеличава акумулатора с единица |
CMA | F3 |   | E | Допълва преноса |
CMC | F4 |   | E | Допълва акумулатора |
RAL | F5 |   | E | Ротация наляво на акумулатора и преноса |
RAR | F6 |   | E | Ротация надясно на акумулатора и преноса |
TCC | F7 |   | E | Запомня преноса в акумулатора, след което нулира преноса |
DAC | F8 |   | E | Намалява акумулатора с единица |
TCS | F9 |   | E | Прехвърля преноса и го изчиства(?) |
STC | FA |   | E | Вдига флага за пренос |
DAA | FB |   | E | Десетична корекция на акумулатора |
KBP | FC |   | E | Обработва клавиатурата (*3) |
DCL | FD |   | E | Обозначава командна линия |
Формат на инструкциите | ||||
Дума-1 | Дума-2 | Вид | Забележки | |
----rrrr |   | A | rrrr=R0/R1/.../RE/RF (4 бита ) | |
----rrr0 |   | B | rrr=R0R1/.../RERF ( 3 бита ) | |
----rrr1 |   | C | rrr=четни регистрови чифта (виж по-горе) | |
----dddd |   | D | dddd = 4 бита непосредствена информация | |
-------- |   | E |   | |
----xxxx | XX | F | aaaa = старши 4 бита на адреса; XX = младши 8 бита от адреса | |
----cccc | XX | G | cccc = регистър на състоянието ; XX = младши 8 бита от адреса | |
----rrrr | XX | H | rrrr=R0/R1/.../RE/RF ; XX=младши 8 бита от адреса | |
----rrr0 | DD | I | DD=Данни |
Шестнадесетична променлива | Описание | |
r | R0/R1/R2/R3/.../RD/RE/RF | |
s | Регистрови двойки R0R1/.../RERF следвани от bin 0 | |
t | Регистрови двойки R0R1/.../RERF следвани от bin 1 | |
a | Старши адрес A11,A10,A9,A8 | |
aa | Среден и Младши адрес A7,A6,..,A1,A0 | |
d | 4 бита непосредствени данни | |
dd | 8 бита непосредствени данни | |
c | Регистър на състоянието c1c2c3c4 (*4) |
Мнемонична променлива | Описание | |
Rn | R0/R1/R2/R3/.../RD/RE/RF (4 бита) | |
Rm | Регистърна двойка R0R1/R2R3/R4R5/...RERF (3 бита) | |
dd | 8 бита непосредствени данни | |
d | 4 бита непосредствени данни | |
aa | 8 битов адрес | |
aaa | 12 битов адрес | |
c | регистър на състоянието c1c2c3c4 (*4) |
Диаграмата е нарисувана от Тош; информацията за набора с казби е събрана и преведена(без гаранции) също от Тодор Арнаудов (Тош). (Хе-хе, неговият пощенски код е 4004. :-)
Пиши на Тош: dzbe@mail.bg, todprog@yahoo.com