Свещеният сметач - списание и за стъклария...
БРОЙ - 26 (септември 2003) и БРОЙ 5 (март 2001)
Брой 26  Свещеният сметач
 
30 години микропроцесори
i4004

Първото вършаче е било изписано върху стъклена пластинка с площ 12mm2. Схемата му е съдържала около 2250 транзистора (плътност ~190 елемента на mm2) и е работела на 108kHz. Използвал се е 10-микронен технологичен процес метал-окис-полупроводник с дупчеста проводимост (PMOS).

Цената на стъкълцето е била $200 - повече отколкото на Athlon 1GHz сега [3.2001]...



Инструкции на i4004
Мнемоничен код W1W2T
Действие
NOP00 EПразна операция
JCM c,aa1caaGПреход към адрес от ROM с адрес "aa", в зависимост от "c"
FIM Rm,dd2sddIПрехвърля dd в регистърният чифт s
SRC Rm2t CИзпраща регистров контрол *1
FIN Rm3s BПрехвърля клетка от ROM на адрес @R0R1 в s
JIN Rm3t CНепряк преход към @t
JUN aaa4aaaBБезусловен преход към адрес от ROM
JMS aaa5aaaFПреход към подпрограма на адрес ааа от ROM
INC Rn6r AУвеличава с едно регистър r
ISZ Rn aa7raaHУвеличава регистър r и преминава на адрес aa при нула
ADD Rn8r AПрибавя регистър r към акумулатора с пренос
SUB Rn9r AИзважда регистъра r от акумулатора със заем
LD RnAr AЗарежда акумулатора със съдържанието на r
XCH RnBr AРазменя съдържанието на r и акумулатора
BBL dCd DВръща се една стъпка назад в стека и зарежда непосредствения операнд d в акумулатора
LDM dDd DЗарежда непосредствения операнд d в акумулатора
WRME0 EЗаписва съдържанието на акумулатора в RAM
WMPE1 EЗаписва съдържанието на акумулатора в изход от RAM (порт)
WRRE2 EЗаписва съдържанието на акумулатора във входно-изходната шина на ROM
WPME3 EЗаписва акумулатора в избрания полубайт (*2)
WR0E4 EЗаписва знак на състоянието 0 в акумулатора(*1)
WR1E5 EЗаписва знак на състоянието 1 в акумулатора(*1)
WR2E6 EЗаписва знак на състоянието 2 в акумулатора(*1)
WR3E7 EЗаписва знак на състоянието 3 в акумулатора(*1)
SBME8 EИзважда стойостта на избрана клетка от РП от акумулатора
RDME9 EПрехвърля избраната клетка от паметта в акумулатора (*1)
RDREA EПрехвърля съдържанието на входно/изходната шина на ROM в акумулатора (*1)
ADMEB EСъбира съдържанието на клетка от RAM и акумулатора с пренос
AD0EC EПрочита знак на състоянието 0 от акумулатора (*1)
AD1ED EПрочита знак на състоянието 1 от акумулатора(*1)
AD2EE EПрочита знак на състоянието 2 от акумулатора(1*)
AD3EF EПрочита знак на състоянието 3 от акумулатора(1*)
CLBF0 EНулира акумулатора и флага за пренос
CLCF1 EНулира преноса
IACF2 EУвеличава акумулатора с единица
CMAF3 EДопълва преноса
CMCF4 EДопълва акумулатора
RALF5 EРотация наляво на акумулатора и преноса
RARF6 EРотация надясно на акумулатора и преноса
TCCF7 EЗапомня преноса в акумулатора, след което нулира преноса
DACF8 EНамалява акумулатора с единица
TCSF9 EПрехвърля преноса и го изчиства(?)
STCFA EВдига флага за пренос
DAAFB EДесетична корекция на акумулатора
KBPFC EОбработва клавиатурата (*3)
DCLFD EОбозначава командна линия


Формат на инструкциите
Дума-1Дума-2ВидЗабележки
----rrrr Arrrr=R0/R1/.../RE/RF (4 бита )
----rrr0 Brrr=R0R1/.../RERF ( 3 бита )
----rrr1 Crrr=четни регистрови чифта (виж по-горе)
----dddd Ddddd = 4 бита непосредствена информация
-------- E 
----xxxxXXFaaaa = старши 4 бита на адреса; XX = младши 8 бита от адреса
----ccccXXGcccc = регистър на състоянието ; XX = младши 8 бита от адреса
----rrrrXXHrrrr=R0/R1/.../RE/RF ; XX=младши 8 бита от адреса
----rrr0DDIDD=Данни


Шестнадесетична променливаОписание
rR0/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
d4 бита непосредствени данни
dd8 бита непосредствени данни
cРегистър на състоянието c1c2c3c4 (*4)


Мнемонична променливаОписание
RnR0/R1/R2/R3/.../RD/RE/RF (4 бита)
RmРегистърна двойка R0R1/R2R3/R4R5/...RERF (3 бита)
dd8 бита непосредствени данни
d4 бита непосредствени данни
aa8 битов адрес
aaa12 битов адрес
cрегистър на състоянието c1c2c3c4 (*4)
    (*1) Източника на адреса (и клетките от RAM) за входно-изходни инструкции (всички инструкции с "Е")
    (*2) За използване със схемите 4008/4009
    (*3) Превръща съдържанието на акумулатора в двоичен код
    (*4) Битове от регистъра на състоянието
    c1:Обръща условието за преход (ако c1==1)
    c2:Акумулатор==0
    c3:Флаг за пренос==1
    c4:Проверка на Сигнала (TST - Pin 10) за Нула

Всичко 46 инструкции. Адресируемата работна памет е общо 640 байта (5120 бита). Програмата се чете от ПЗУ (постоянно запомнящо у-во) до 4КБ. Достатъчни са за автоматична пералня и светофар, та дори и за сметалка. ;-)


Диаграмата е нарисувана от Тош; информацията за набора с казби е събрана и преведена(без гаранции) също от Тодор Арнаудов (Тош). (Хе-хе, неговият пощенски код е 4004. :-)

  • Списание "Свещеният сметач": http://eim.hit.bg
  • Българска компютърна история от Българските сметачи

    Пиши на Тош: dzbe@mail.bg, todprog@yahoo.com