Последняя версия либ для Logisim v2.7.1 всегда будет тут: http://nedopc.org/nedopc/files/logisim-nedonand.zip

Последняя версия печатных плат для бесплатного Eagle v5.12.0 всегда будет тут:
http://nedopc.org/nedopc/files/eagle-nedonand.zip
И кое-что нарисовано в pcb (gEDA):
http://nedopc.org/nedopc/files/geda-nedonand.zip
Кроме того голые платы можно заказать через OSHPark.com:
https://oshpark.com/profiles/Shaos
Ввиду того, что получение OR через NANDы выглядит тяжеловато, я решил убрать операцию OR из списка команд (а потом и от AND отказался, заменив его на NAND) - оставшиеся операции отдалённо напоминают систему команд nedoRISC-1:
000 - RRC (сдвиг произвольного регистра вправо через флаг C и сохранение результата в аккумуляторе);
001 - RLC (сдвиг произвольного регистра влево через флаг C и сохранение результата в аккумуляторе);
010 - NAN (побитная операция И-НЕ между аккумулятором и произвольным регистром с сохранением результата в аккумуляторе);
011 - XOR (побитная операция исключающее ИЛИ между аккумулятором и произвольным регистром с сохранением результата в аккумуляторе);
100 - ADC (сложение аккумулятора с произвольным регистром с учётом флага C и сохранение результата в аккумуляторе);
101 - SBC (вычитание из аккумулятора произвольного регистра с учётом флага C и сохранение результата в аккумуляторе);
110 - ADI (сложение аккумулятора с 3-битным числом и сохранение результата в аккумуляторе);
111 - SBI (вычитание из аккумулятора 3-битного числа и сохранение результата в аккумуляторе).
Все инструкции будут однобайтовыми:
0xxxxxxx - A=0xxxxxxx (записать в аккумулятор 7-битное число);
10xxxyyy - xxx=yyy (скопировать значение регистра ууу в регистр xxx - если xxx и yyy это один и тот же регистр, то его содержимое инвертируется, а в случае xxx=0 это работа с подпрограммами RST/RET);
11oooxxx - операция АЛУ ooo (см. выше) над регистром (или числом) xxx и аккумулятором () - результат ВСЕГДА сохраняется в аккумуляторе, а также меняются ВСЕ флаги.
Регистры:
000 - 0 (всегда 0)
001 - A (аккумулятор)
010 - B
011 - C
100 - D
101 - E
110 - F (регистр флагов и старших битов адреса)
111 - G (младшие 8 битов программного указателя)
Чтобы передать управление по какому-то адресу придётся загрузить число в аккумулятор и потом скопировать его в регистр G (если же надо перейти за пределы текущей 256-байтовой страницы, то придётся ещё и в регистре флагов кое-какие биты установить)...
Code: Select all
| x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF |
--+------------------------------------------------------------------------------------------------
0x| A=0 | A=1 | A=2 | A=3 | A=4 | A=5 | A=6 | A=7 | A=8 | A=9 |A=10 |A=11 |A=12 |A=13 |A=14 |A=15 |
---------------------------------------------------------------------------------------------------
1x|A=16 |A=17 |A=18 |A=19 |A=20 |A=21 |A=22 |A=23 |A=24 |A=25 |A=26 |A=27 |A=28 |A=29 |A=30 |A=31 |
---------------------------------------------------------------------------------------------------
2x|A=32 |A=33 |A=34 |A=35 |A=36 |A=37 |A=38 |A=39 |A=40 |A=41 |A=42 |A=43 |A=44 |A=45 |A=46 |A=47 |
---------------------------------------------------------------------------------------------------
3x|A=48 |A=49 |A=50 |A=51 |A=52 |A=53 |A=54 |A=55 |A=56 |A=57 |A=58 |A=59 |A=60 |A=61 |A=62 |A=63 |
---------------------------------------------------------------------------------------------------
4x|A=64 |A=65 |A=66 |A=67 |A=68 |A=69 |A=70 |A=71 |A=72 |A=73 |A=74 |A=75 |A=76 |A=77 |A=78 |A=79 |
---------------------------------------------------------------------------------------------------
5x|A=80 |A=81 |A=82 |A=83 |A=84 |A=85 |A=86 |A=87 |A=88 |A=89 |A=90 |A=91 |A=92 |A=93 |A=94 |A=95 |
---------------------------------------------------------------------------------------------------
6x|A=96 |A=97 |A=98 |A=99 |A=100|A=101|A=102|A=103|A=104|A=105|A=106|A=107|A=108|A=109|A=110|A=111|
---------------------------------------------------------------------------------------------------
7x|A=112|A=113|A=114|A=115|A=116|A=117|A=118|A=119|A=120|A=121|A=122|A=123|A=124|A=125|A=126|A=127|
---------------------------------------------------------------------------------------------------
8x| RET |RST 1|RST 2|RST 3|RST 4|RST 5|RST 6|RST 7| NOP | A=~A| A=B | A=C | A=D | A=E | A=F | A=G |
---------------------------------------------------------------------------------------------------
9x| B=0 | B=A | B=~B| B=C | B=D | B=E | B=F | B=G | C=0 | C=A | C=B | C=~C| C=D | C=E | C=F | C=G |
---------------------------------------------------------------------------------------------------
Ax| D=0 | D=A | D=B | D=C | D=~D| D=E | D=F | D=G | E=0 | E=A | E=B | E=C | E=D | E=~E| E=F | E=G |
---------------------------------------------------------------------------------------------------
Bx| F=0 | F=A | F=B | F=C | F=D | F=E | F=~F| F=G | G=0 | G=A | G=B | G=C | G=D | G=E |SAEFF|SANFF|
---------------------------------------------------------------------------------------------------
Cx|RRC 0|RRC A|RRC B|RRC C|RRC D|RRC E|RRC F|RRC G|RLC 0|RLC A|RLC B|RLC C|RLC D|RLC E|RLC F|RLC G|
---------------------------------------------------------------------------------------------------
Dx|NAN 0|NAN A|NAN B|NAN C|NAN D|NAN E|NAN F|NAN G|XOR 0|XOR A|XOR B|XOR C|XOR D|XOR E|XOR F|XOR G|
---------------------------------------------------------------------------------------------------
Ex|ADC 0|ADC A|ADC B|ADC C|ADC D|ADC E|ADC F|ADC G|SBC 0|SBC A|SBC B|SBC C|SBC D|SBC E|SBC F|SBC G|
---------------------------------------------------------------------------------------------------
Fx|A=A+0|A=A+1|A=A+2|A=A+3|A=A+4|A=A+5|A=A+6|A=A+7|A=A-8|A=A-7|A=A-6|A=A-5|A=A-4|A=A-3|A=A-2|A=A-1|
---------------------------------------------------------------------------------------------------
P.P.S. С февраля веду страничку проекта на Hackaday: https://hackaday.io/project/9795-nedonand-homebrew-computer
P.P.P.S. 19 марта 2016 прикрутил 4-битное АЛУ со схемой сопряжения с 8-битным остальным (см. картинку выше)
P.P.P.P.S. 26 марта 2016 зарелизил NEDONAND LITE, в котором ещё нету SAEFF/SANFF (на их месте всё ещё находятся G=F и G=~G), а RET/RST вводят проц в состояние HALT (надо нажимать на кнопку GO, чтобы оно побежало дальше)