nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 18 Mar 2024 19:12



Reply to topic  [ 47 posts ]  Go to page Previous  1, 2, 3, 4  Next
EDUC-8 Microcomputer 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Сразу скажу, что автор - Jamieson Rowe - вовсю подсматривал в PDP-8,
поскольку других примеров перед глазами было немного. И это, безусловно,
наложило отпечаток как на схемотехнику, так и на систему команд...


Three augmented input-output transfer (IOT) instructions are provided, each of which
may be arranged to specify either an input or output device, and one of two possible devices
in each category.

The IOT instructions are


skip on device flag (SKF, SDF),
transfer data between device buffer and accumulator (KRS, LDS), and
reset device flag (RKF, RDF).

The second and last of these may be combined, for programming economy.

Я довольно подробно ознакомился с системой ввода/вывода PDP-8, которая послужила автору
EDUC-8 образцом для подражания, и пришел к выводу, что команды IOT реализованы здесь
довольно-таки искусственно, в отличие от оригинальной PDP-8.

Не всякое устройство способно сообщать флагом о своей готовности, и в авторском наборе УВВ,
это, пожалуй, только БИС УАПП.
Во всех остальных случаях эти "флаги" реализуются схемотехнически совершенно независимо от
работы устройства по принципу "чтобы було" - сам взвел, сам и послушал флаг, иначе просто часть
из и без того скромного набора команд IOT работать не будет. :(

Если глянуть на следующую схему, то видно, что часть её, работающая с флагом, с основной
схемой вывода вовсе никак не связана! :lol:

Image

А вообще знакомство с принципами построения PDP-8 заслуги автора EDUC-8 только подчеркивает!
PDP-8 стала дешевой и популярной моделью, поскольку разработчики нищебродски
сумели снизить число ТТЛ корпусов в ней с ~15000 до 500 с мелочью...
Автор EDUC-8 решил задачу на ~100 корпусах, что весьма неплохо, поскольку сам я в своих
4-битниках
как раз стараюсь за "магическое" число 100 не вылезти... и пока у меня в этом
успеха не наблюдается... :(

_________________
iLavr


27 Sep 2013 04:55
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
Я довольно подробно ознакомился с системой ввода/вывода PDP-8, которая послужила автору
EDUC-8 образцом для подражания, и пришел к выводу, что команды IOT реализованы здесь
довольно-таки искусственно, в отличие от оригинальной PDP-8.

Ну и пока я с системой ввода/вывода PDP-8 разбирался, я потихоньку отрисовал
узел интерфейса логики для EDUC-8.

Image
Посмотреть: EDUC8-IOT_INTERFACE

Основные узлы здесь просматриваются неплохо - это дешифратор УВВ на мелкой логике,
выбирающий одно из 4-х устройств (два на ввод, два на вывод).
Это вентили, пропускающие сигналы управления и данные, и это 4 исполнительных устройства,
которые суть - тоже ключи, которые по выборке дешифратора и логике команды, организуют
направление передачи данных, стробы и состояния признаков (флагов).

Image

На отрисованой схеме не проставлены некоторые номера выводов edge-коннектора, поскольку
просто неразборчиво видны в оригинале.
Ну и поскольку в оригинале нет нумерации элементов, то на схеме они условно пронумерованы
по ГОСТ-у: сверху-вниз, слева-направо.

_________________
iLavr


30 Sep 2013 01:15
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Я, наконец, добрался до подробного разбора системы команд и примеров программирования.

Это, я вам скажу, что-то! :o

Если хочешь, чтобы человек возненавидел ассемблер - подсунь ему EDUC-8 в качестве
учебного компьютера! :lol:

Теперь я понял, откуда пошли слухи о неимоверной страшности ассемблера - от PDP-8! :wink:

В общем, кто хочет развлечь себя экстремальным программированием, при нехватке
привычных команд - EDUC-8 - рекомендую! :wink:
Благо и эмулятор есть... :roll:

Чтобы вы не подумали, что я вас гнусно пугаю, приведу пример:

Code:
MVI A,33H
- в мнемонике i8080

Как это делается в EDUC-8 ну и в PDP-8:
1. В ячейку памяти с меткой CONST0 предварительно положить 33Н.
2. Очистить аккумулятор АС.
3. Сложить содержимое аккумулятора АС с содержимым ячейки памяти CONST0, результат - в АС.


И при этом следить, чтобы константа и сама эта программа были в одной странице памяти,
размером в параграф (16 байт) для EDUC-8 и 128 байт для PDP-8!

Для последней - легче... константы могут быть в 0-странице, доступной отовсюду.

Так что ассемблер здесь вам не хухры-мухры! :D

Если всё-же кто-то захочет рискнуть - вот тут есть компилятор с языка ассемблера
EDUC-8 --- E8ASY
- с примерами программ и исходниками.

_________________
iLavr


01 Oct 2013 09:37
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
возможно, потихоньку начну пробовать моделировать эту конструкцию... :wink:

Потихоньку начал... И начать решил с блока клавишных переключателей...
Получилось вот так:

Image

Довольно-таки похоже на оригинал. Ну и я сдвинул группы чутка, чтобы RESET добавить...
Автор его не ввел, хотя цепи RESET-а есть и срабатывают при включении питания.

Предыдущие мои опыты с такими конструкциями показали, что делать клавиатуру вот так:

Image

схемотехнически нагляднее, но очень неудобно при симуляции... :(

_________________
iLavr


07 Oct 2013 08:31
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Теперь виртуальный EDUC-8 обзавелся собственной интерактивной "мордой" на основе активной VSM-модели Proteus.

Image

Пришлось, правда, написать отдельную динамическую библиотеку, обслуживающую интерактивную "морду",
но поскольку я хочу попробовать попрограммировать на этом виртуальном EDUC-8 - затея того стОит...

На оригинал - весьма даже похоже... Как говорится - "близко к тексту"... :wink:

----Image

_________________
iLavr


21 Oct 2013 09:30
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
Я, наконец, добрался до подробного разбора системы команд и примеров программирования.
Это, я вам скажу, что-то! :o

Честно говоря, сам по себе этот EDUC-8 работает красиво, но бестолково - стоИт
коробка, лампочками моргает и ничего не делает... :lol:
Читал я, что из "Саратов-2" (aka PDP-8 ) так делали светомузыку и даже заставляли
эти коробки музыкально звучать - гремя (вы не поверите! :o ) ферритовыми
колечками памяти!!! :o

Я уже пробовал программировать на эмуляторе EDUC-8, но всё пошло гораздо веселее,
когда я нашел в его коде закомментированные автором эмуляторы устройств ввода-
вывода
: клавиатуры и принтера "Philips 60SR"!

Так что - вот вам мой первый опыт программирования УВВ в системе команд EDUC-8: :wink:
Так сказать, некий "Hello, world!" предпразничной тематики...

Image
Увеличить
Code:
/" HAPPY NEW 2014 YEAR" EDUC-8 test printer programm /

WRITE,     CLA         /AC = 0
           TAD I MESSP /Get Char
           SZA         /Skip on Zero AC
           JMP PRINT   /Print non Zero char
           HLT         /Halt if string Zero-end
PRINT,     LDB 1       /Print symbol
TESTP,     SDF 1       /Printer ready?
           JMP TESTP   /No, keep testing
           ISZ MESSP   /Increment string pointer
           JMP WRITE   /Print next value
           JMP WRITE   /Print next value if Zero pointer
           HLT         /Printing stop
MESSP,     MESSG
MESSG,     052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           040         /
           010         /H
           001         /A
           020         /P
           020         /P
           031         /Y
           040         /
           016         /N
           005         /E
           027         /W
           040         /
           062         /2
           060         /0
           061         /1
           064         /4
           040         /
           031         /Y
           005         /E
           001         /A
           022         /R
           040         /
           006         /F
           017         /O
           022         /R
           040         /
           001         /A
           014         /L
           014         /L
           040         /
           016         /N
           005         /E
           004         /D
           017         /O
           020         /P
           003         /C
           056         /.
           017         /O
           022         /R
           007         /G
           040         /
           040         /
           040         /
           040         /
           040         /
           040         /
           015         /M
           005         /E
           015         /M
           002         /B
           005         /E
           022         /R
           023         /S
           040         /
           041         /!
           041         /!
           041         /!
           040         /
           040         /
           040         /
           040         /
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           052         /*
           000         /  ACZII-Z sring end

_________________
iLavr


30 Dec 2013 07:58
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
Я, наконец, добрался до подробного разбора системы команд и примеров программирования.

Ну и поскольку я действительно разбирался весьма подробно, думаю, будет правильным
описание системы команд EDUC-8, так сказать, русским по белому здесь выложить.

Image

Image

Image

Image

Если кого-либо это заинтересует более подробно, то примеры программирования есть в кратком
дайджесте по EDUC-8 от sir Steven Pietrobon
.
Ну и в моем переводе этого документа можно прочитать о возможностях раширения памяти на
примере контроллера расширенной памяти PDP-8.
В эмулятор я этот механизм приделаю сразу - на 256 байтах ОЗУ не сильно-то разгонишься
программировать! :wink:



PS. Мы тут обсуждали, что в нищебродских системах команд основной набор
выбирается таким, чтобы на его основе можно было реализовать все недостающие команды.
При наличии в этом наборе AND и CMA логическое OR получается довольно-
таки несложно программным путём. А вот для XOR - простой реализации програмно
особо и не видно...


И зря всё-таки Jim Rowe уволил при разработке EDUC-8 флаг С. В PDP-8 флаг Carry
под названием Link всё же присутствовал...


PPS. Посмотрел в сети - у PDP-8 инструкцию XOR действительно реализуют программно
и довольно неудобно
...
:-?

_________________
iLavr


02 Jan 2014 12:35
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Сразу скажу, что автор - Jamieson Rowe - вовсю подсматривал в PDP-8...
И это, безусловно, наложило отпечаток как на схемотехнику, так и на систему команд...

Ну теперь уж я точно знаю, куда этот автор подсматривал! :o Он подсматривал в PDP-8/S ! 8)

Image

Была, оказывается, и такая разновидность в семействе PDP-8 для совсем оголтелых нищебродов.
У неё было однобитное АЛУ и последовательная (serial) архитектура, PDP-8/S не была шустрой,
но была зато недорогой и полностью PDP-8-совместимой.

Я, честно говоря, глазам не поверил, хотя и читал при этом документ F-85S_PDP-8S_usersManual.pdf от DEC.


Увеличить

Но 1 BIT ADDER - красноречиво говорит сам за себя! А потом я уже и в поиске этот факт стопудово уточнил...

Судьба PDP-8/S, как пишут, не сложилась удачно, не смотря на дешивизну. Она получилась СЛИШКОМ медленной.
Там где PDP-8/Е использовала 2 такта, PDP-8/S укладывалась в 14.


P.S. А автор - Jamieson Rowe - даже и не скрывает, что не то, чтобы подглядывал в PDP-8/S,
а просто передирал её один к одному, укорачивая до 8 бит...
:(
Jamieson Rowe wrote:
The signals generated directly by the timing circuitry for use throughout the rest of the machine comprise T0-OR-T12 (L), T0.5 (L), T1, T13, T2-9, T14-21, and T22.5. A further signal T23 is also generated, but this is used solely by the major state generator. Note that there are actually two T2-9 signals and two T14-21 signals, with duplicated logic. This is a carryover from the original 32-word memory version of the machine, where the second sets of gating were required to produce T5-9 and T17-21 signals. Rather than redesign the board completely, the gates have simply been swung over to operate in tandem with the original T2-9 and T14-21 logic.

RUS wrote:
Эти сигналы, непосредственно сформированные электрической схемой синхронизации для использования для всех остальных цепей машины, включают T0-OR-T12(L), T0.5 (L), T1, T13, T2–9, T14–21 и T22.5. Дальнейший сигнал T23 также формируется, но он используется исключительно генератором основных состояний. Отметим, что в схеме действительно есть два сигнала T2–9 и два сигнала T14–21, с дублирующейся логикой. Это позаимствовано из оригинальной версии машины (PDP-8/S) с памятью в 32 слова, где вторые комплекты вентилей требуется для формирования сигналов T5–9 и T17–21. Чтобы не перерабатывать схему полностью, вентили были просто повторены, чтобы обслуживать сигналы T2–9 и T14–21 в тандеме с основной логикой их формирования.

_________________
iLavr


Last edited by Lavr on 29 May 2014 09:40, edited 1 time in total.



24 Apr 2014 16:52
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Ну, наконец-то, проклевав мне изрядно мозг, заработала эта красивая псевдосенсорная клавиатура Протезуса... :D

Image

Самое неприятное в том, что Протезус позволяет нарисовать модель клавиатуры любой сложности, вот только
кнопки у него - на замыкание и без фиксации... (или же я чего-то так и не узнал) :( .
Поэтому переключатели панели EDUC-8 пришлось моделировать из двух кнопок, ну и, соответственно, обслуживать
всё это через RS-триггеры и прочие приблуды.

Так что Keyboard Driver получился весьма немаленький... :o

Image

Но, мне думается, игра стоила свеч... В процессе отладки драйвера потыкал я в обычные кнопочки Протезуса и пришел
к выводу, что это было бы очень уныло и некомфортно... :-?

Image

Скорости процессора хватает пока с лихвой. Максимальная загрузка 4-6% при старте, пока идет начальная установка
состояний всех элементов и переходные процессы.
В дальнейшей работе - загрузка процессора всего 1%. Так что на остальную схему ресурса хватит... Что значит - чисто
цифровое моделирование! :kruto:

Ну и последнее... может это кого-либо выручит, поскольку у меня убило более суток времени при совсем готовом проекте.

В ряде случаев внешнюю шину необходимо подписать через опцию "лэйбл" (на рисунке RB[0..27]).
В противном случае - по шине могут не проходить сигналы! Я себе чуть извилины мозга не выпрямил - ну не идут сигналы
сквозь шину - и всё! :o И не в одном хелпе Протезуса - хелпА на этот повод нет... :(

Совсем уже нечайно нагуглил на Казусе.ру вот такой рисунок:

Image

Чисто эмпирически промаркировал у себя шину аналогичным образом - RB[0..27] - и вдруг всё заработало как из пушки!!! :wink:

_________________
iLavr


23 May 2014 19:41
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Ну и смоделированная авторская схема, на мой взгляд, либо отрисована с ошибками, либо как-то
не так я читаю эти нерусские УГО... :(

----------------------Image

Затрудняет также понимание, что автор не пронумеровал хотя-бы выводы одновибраторов.
Ну и, как он сам пишет, что нравится ему отрисовывать схемы, чтобы был понятен активный
входной уровень, отсюда в схемах вот такие интересности:

Image

Но как-бы то ни было, нижний по схеме одновибратор запуститься не должен никогда, поскольку
насмерть закрыт подключением вывода к общему проводу.

Верхний одновибратор тоже не работает так, как объясняется в тексте.

Схема, которая реально работает согласно описанию, на мой взгляд, выглядит следующим образом:

Image

_________________
iLavr


24 May 2014 10:33
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Я думаю, что 40-ю годовщину создания одной из первых любительских
мини-ЭВМ на мелкой логике, разработанной в 1974 год Джимом Роу
, в
нашем, 2014 году, мы сможем встретить весьма достойно! :kruto:

Я практически закончил этот проект в среде Proteus, и он великолепно
заработал! Это базовая версия с 256 байт памяти и с 2 устройствами
ввода-вывода. 8)

Image

Я обозначил его как EDUC-8M, поскольку многое мне пришлось Модернизировать,
поисправлять некоторые явные опечатки в опубликованных схемах, позаменять
детали и элементы, которых нет в среде Proteus, на современные, которые
есть в наличии в библиотеках симулятора.
Местами пришлось обходить глюки самого Proteus с помощью грязных схемотехнических
трюков... :oops: Но - тем не менее, это всё заработало, и на скриншоте модель выполняет
следующую коротенькую программу:
Code:
00 604; C4 - RES 0
01 601; C1 - SKF
02 501; A1 - JMP 01
03 602; C2 - INP 0
04 621; D1 - SDF
05 504; A4 - JMP 04
06 622; D2 - OUT 0
07 624; D4 - SEND
08 500; A0 - JMP 00

это ввод символа с клавиатуры через терминал и вывод на LCD с последовательным
интерфейсом.
Не думаю, что Джим Роу предполагал, что к EDUC-8 прицепят LCD в 2014 году...
Тем более в России... :lol:

В общем-то я тщился повторить свой трюк с теннисом и хотел заставить виртуальную
машину поуправлять реальным индикатором в программе какой-либо игрушки.
Но 256 байт памяти меня пока несколько смущают, хотя кардинальных препятствий
я не вижу. Расширение памяти страницами до 4...32 Кбайт я уже предусмотрел.

И прежде чем что-либо из программ написать, я собираюсь доделать в проект
загрузку из ПЗУ по интерфейсу, предусмотренному для перфоленты.
Набирать программу переключателями - конечно же экзотика! Но я её вдоволь
накушался за последний месяц, пока отлаживал эту модель EDUC-8М.

Если разработка вам интересна, то могу со временем выложить проект Proteus-а,
хотя, как я заметил, последний у нас здесь не в почете... :-?

_________________
iLavr


17 Jun 2014 18:07
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Но Proteus - Proteus-ом, а схемотехника всё же здесь интересная, и поскольку
интерес к самодельным процессорам имеется, а этот EDUC-8 действительно
весьма прост для повторения, то рабочие схемы симуляции я решил выложить.

Сразу скажу, что интересное в них я для себя почерпнул, и в частности -
это смелое использование АЛУ (здесь сумматора), в качестве одного из путей
для прохождения сигнала.
Второй момент заключается в том, что построение дешифратора на жесткой
логике, пожалуй, даже более выигрышно в сравнении со схемой на ПЗУ микро-
команд, тем что нет ограничений на количество управляющих выводов, а
нужные сигналы в привязке ко временнОй диаграмме сформировать легко.

Собственно, "пощупать" простой hardwared процессор и была одна из причин,
сподвинувших меня смоделировать этот древний гаджет...

Начнем по порядку...

Схема обслуживания клавиш передней панели.

Image
Увеличить

Так распухла, поскольку захотелось мне красивую клавиатуру, а у Proteus
эти кнопки без фиксации, что и вынудило насовать сюда RS-триггеров, а также
пришлось изменить несколько оригинальную схему, так как всё срабатывает
теперь по отпусканию. Всё-таки это модель и трудно быть уверенным, что
длительности клика достаточно, чтобы за его время сработала потактовая
цепь - есть все же отличия от реального времени. Кто не хочет клавиатурных
красот, всё можно сделать как в оригинале - на переключателях с фиксацией
и без...


Логика тактового генератора.

Image
Увеличить

Ну вот это и было довольно интересно на конкретном примере, хотя в общем
плане я себе это и представлял. Здесь добавил лишний одновибратор, чтобы
RS-триггер не срабатывал практически почти через запрещенное состояние.
В реальности это срабатывает, когда одновременно снимается R и подается S,
а вот Proteus может и в ступор впасть.


Логика дешифратора команд.

Image
Увеличить

Здесь пришлось заменить хитрый сразу-и-регистр-и-дешифратор. В Proteus он
есть для разводки плат, но элекрически не симулируется. Заменил на обычные
регистр и дешифратор, но поскольку дешифратор активный низкими уровнями -
то вентили пришлось заменить на ИЛИ. Ну а в остальном - дешифруются 3 стар-
ших бита на 6 команд, работающих с памятью, плюс 2 группы команд: специальные
и команды ввода-вывода. Эти 2 группы не дешифруются а учитываются побитно.
Отсюда в PDP-8 ну и в EDUC-8 можно выполнить несколько этих команд за такт.

Аккумулятор.

Image
Увеличить

В общем-то это и сразу часть АЛУ без сумматора. Часть функций исполняется здесь
прямо над аккумулятором. И только сумматор вынесен в отдельный блок, поскольку
он в схеме еще и инкрементирует программный счетчик и даже счетчик-ячейку памяти!


Логика последовательного сумматора.

Image
Увеличить

Ну то что однобитный пришлось соорудить из 2-битного я уже писал вот здесь.
Полностью эмулировать сумматор на логике я не стал, опасаясь снижения
скорости симуляции. Но зря, видимо. Т.к. я не использовал "аналоговых"
компонент, симуляция чисто цифровая, и даже на моем дохлом древнем ноуте -
P-II 360 MHz загрузка процессора при симуляции всей схемы - около 47-50%.
Интересно пришлось повозиться с триггером переноса. Оригинального JK у меня
модели не окзалось - сделал из двух D-триггеров. 1-й защелкивает текущий
перенос, а второй уже - выдает перенос С в следующий сдвиг, когда 1-й опять
должен перенос сохранить.


Блок ОЗУ.

Image
Увеличить

Вот тут пришлось повыкаблучиваться, так как оригинальное статическое ОЗУ схемы
уже и в жизни-то трудно найти (именно статическое, динамическое-то есть).
А я рассчитывал на 573РУ10 (хотя у Proteus их тоже нет), но вставил то, что есть,
тут особых требований нет, но растактовку пришлось подправить, т.к. в схеме было,
что когда память выдает, то регистры в схеме работают один по фронту - другой по
спаду, по которому происходит и переключение адресов, а в моей схеме - сдвиг из
или в ОЗУ - по спаду. Пришлось вводить схему формирования короткого импульса -
чтобы разнести по времени мометы записи и сдвига.

Я не применял RC-цепей для чисто цифровой симуляции, так что схема формирования
короткого импульса
вот такая:

Image
Увеличить

В принципе, лучше было бы ввести повышенную частоту генератора, которая делится
пополам до тактовой частоты. Тогда б такую дичь делать не пришлось. Но это было
уже по пути, схемы плотные и менять уже сделанное мне не захотелось...


Интерфейс ввода-вывода.

Image
Увеличить

Я его практически не менял, только я не захотел чтобы выходной сигнал был инверсным.
И далее оказалось, что так действительно лучше для построения приемника и передатчика
стандарта RS-232.

Приемник и передатчик стандарта RS-232.

Image
Увеличить

Image
Увеличить

В отличие от автора у меня не было его БИС приёмопередатчика UART, да и так вышло
спортивнее - всё на мелкой логике. Ну а о приемнике и передатчике - ничего говорить
не буду, т.к. я тут целый топик с ними тренировался:
И вот их время - пришло! 8)


Загрузчик программы из ПЗУ.

Image
Увеличить

Его не было в оригинальной схеме, и по сути он заменяет устройство ввода с перфоленты.
Причем используется тот же принцип - схема загрузчика как бы "нажимает" на клавиши
передней панели. Весь процесс действует по принципу мультивибратора на триггере:
загрузчик периодически дает внешнюю команду DEP - ЗАПИСЬ, а компьютер окончанием
записи сдвигает счетчик байт и запускает одновибратор, который снова дает внешнюю
команду DEP - ЗАПИСЬ - и так до совпадения адреса с 1111.1111 включительно.


Далее идут схемы сборки блоков:

Основной блок - по сути это весь законченный компьютер без ОЗУ и УВВ.
На нем можно вполне провести большинство тестов, чтобы убедиться, что
ошибок нет. Аргумент удобно брать с клавиш ввода передней панели.

Image
Увеличить

Блок памяти (ОЗУ) и УВВ с ПЗУ-загрузчиком.

Image
Увеличить

Ну и, собственно, сама передняя панель в сборе.

Image
Увеличить

На сборочных схемах есть некий INVERTOR - это вот что:

Image
Увеличить

Здесь нет стремления почудить или пооригинальничать. Я бы поставил здесь что-то типа
580ИР83 (он с инверсией), но все его аналоги в моей старенькой глючной версии Proteus
отказались делать инверсию! Ну такое уже со мной и Proteus-ом было, так что я просто
сгруппировал 8 "честных" инверторов в под-схему. :D

Вот такая схемотехника у Proteus-модели EDUC-8. Саму модель выложу позже, т.к.
схемы мной уже довольно тщательно проверены, а вот написанная мной dll-библиотека
для "оживления" светодиодной передней панели ещё немного в тестах нуждается.

Но всё, что уже выложено, спокойно и честно без этой dll-библиотеки работать будет,
только на схеме передней панели надо будет расположить либо светодиоды, либо цветные
логические пробники - есть такие в Proteus.
Сам я такого делать не стал - ну не за этим же я сам себе написал dll-библиотеку
для LED-панелей! :wink:

_________________
iLavr


26 Jun 2014 14:36
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Ну и поскольку "кормить соловьёв баснями" - не самое благодарное занятие 8) , я выкладываю,
собственно, и сам проект эмуляции EDUC-8M в среде моделирования Proteus.

Несколько слов о том, как с виртуальной моделью EDUC-8M работать.

По старту симуляции мы видим изображение идентичное следующему рисунку:

Image

Поскольку я избегал аналогвых RC-цепей, "Сброс" по старту не срабатывает, и хотя в прог-
раммном счетчике PC
нулевое значение, в регистр адреса MA забрасывает по старту единицу
слева. В этом ничего необычного нет, т.к. в реальном EDUC-8 в регистрах и вовсе случайные
значения. PC и MA можно обнулить, нажав круглый красный "Reset". Я для этого его и ввел,
поскольку в оригинальном EDUC-8 сброс выполнялся выключением питания, а старт/рестарт
проекта в Proteus - процедура не быстрая.
Регистр-аккумулятор AC содержит по старту значение 0AAH - 10101010b - это специально сделано
предустановкой его регистров, поскольку сигнатура 0AAH - 10101010b - удобна для наблюдения
различных операций над аккумулятором в процессе тестирования исполнения инструкций.

Состояние клавиш ввода значений 7...0 отображается нижними маленькими прямоугольными инди-
каторами (как, впрочем, и остальных клавиш): "красный" = "1" клавиша поднята вверх, "синий"=
"0" - клавиша отпущена вниз. Но состояние клавиш ввода значений 7...0 дублируется вверху
листа проекта на семисегментных индикаторах в коде 7-3-7, в котором принято программировать
реальный EDUC-8, значение также дублируется в привычном HEX-коде, ибо в нём Proteus показы-
вает содержимое своей памяти. Код 7-3-7 - похож на октальный - где max значение - 7, просто в
средней позиции у него всего 2 разряда, отсюда - 3. Наследство PDP-8.

Чтобы EDUC-8 начал что-то делать, ему надо ввести программу с передней панели.
Довольной короткий, но эффектный пример ввода с клавиатуры, я специально расположил в нижнем
углу. Нажимаем круглый красный "Reset", PC и MA сбрасываются в нулевые значения, и с клавиш
ввода, глядя на 7-сегментные индикаторы, начинаем вводить программу по одному байту, нажимая
после набора на индикаторах каждого числа клавишу "DEP" - "депонирование" или запись в память
по адресу, указанному в программном счетчике PC.
Code:
604
601
501
602
621
504
622
624
500

После каждого нажатия "DEP" PC переписывается в MA, а сам PC = PC + 1.
По адресу в MA записывается байт с клавиш 7...0 и модель вновь готова принять следующий код
по следующему адресу.
Если есть необходимость загружать коды не с позиции PC = 00H, то значение PC можно изменить в
любой момент, набрав нужный адрес на клавишах 7...0, и записав это значение в PC нажатием клавиши
"LOAD ADDR". Это и есть её назначение - загрузка в программный счетчик PC.
Состояние памяти можно в любой момент проконтролировать с нужного адреса, введя его в PC, и,
далее, последовательно нажимая клавишу "EXAM", после чего значение из ячейки памяти, указанной
в PC, отобразится на "светодиодном" экране EDUC-8 в регистре буфера памяти MB.
При этом сам PC = PC + 1 - инкрементируется, и ячейки памяти можно просмотреть одну за одной.
Всего их в этом базовом варианте EDUC-8 - 256 байт.

Поскольку это модель Proteus, то состояние памяти можно просмотреть и иначе - нажать паузу
смуляции и в верхнем меню Proteus - 'Debug' выбрать опциию просмотра содержимого микросхемы
памяти
, где все изменения можно увидеть в HEX-виде. Памяти там я поставил - 2Кбайт, но исполь-
зуются только первые 256 байт. Proteus версий 7.хх ещё и подсвечивает изменения в памяти.

Image

Ну, процедура набора программы с клавиш может быть интересна пару раз, чтобы почувствовать,
как это раньше было. А потом это начинает утомлять, поэтому я ввел загрузку в ОЗУ из ПЗУ
кнопкой "/Load" справа над экземпляром программы.
В ПЗУ в данный момент хранится та же самая программа, и чтобы её загрузить, необходимо в PC
установить начение 00H, нажав "Reset" или введя значение в PC посредством клавиши "LOAD ADDR"
с переключателей 7...0.
После этого переключатели 7...0 ОБЯЗАТЕЛЬНО УСТАНОВИТЬ В ПОЛОЖЕНИЕ "1" - ВСЕ КРАСНЫЕ ИНДИКАТОРы.
Далее - нажимаем кнопку "/Load" и начинается процесс загрузки кодов из ПЗУ, который, по сути,
256 раз автоматически выполняет набор на клавишах кода и сопровождения его нажатием "DEP".
Поэтому переключатели 7...0 должны быть в "1", т.к. и они, и загрузчик из ПЗУ работают об-
щими коллекторами на общую резистивную нагрузку.

Если нет желания смотреть загрузку всех 256 байт, из них у нас пока только 9 полезных, то
загрузку из ПЗУ можно прервать в любой момент клавишей "HALT" на передней панели, либо её
дубликатом - кнопкой "/HLT" справа. Сразу скажу, что кнопка "/HLT" справа дублирует исполне-
ние инструкции "HLT" в программе - это программный останов исполнения, как и в i8080.
Саму программу можно скомпилировать и загрузить в ПЗУ заранее из bin-файла, Proteus дает
такую возможнось. Жаль нет возможности загрузить содержимое ОЗУ, тогда бы и загрузчик был
бы не нужен, но зато всё очень близко к реальности! ;)

Image

Наконец, программа введена. Нажав "Reset", или введя значение в PC = 00H, устанавливаем адрес
начала её исполнения. После чего, наконец-то, можно запустить программу на исполнение клавишей
передней панели "RUN". Понятно уже, что и остановить исполнение призванна клавиша "HALT",
расположенная рядом.

По умолчанию после нажатия "RUN" программа выполняется с максимальной скоростью и непрерывно,
поскольку клавиши "SINGLE/CONT" и "SLOW/FAST" - в нижнем положении и индикация их - "синяя".

Если клавиша "SINGLE/CONT" - в верхнем, "красном" положении, то программа выполняется пошагово:
по одной инструкции на каждое нажатие "RUN". Все фазы исполнения программы отображает передняя
панель: выбор инструкции "FETCH", её исполнение - "EXEC", или же вставка дополнительного цикла
"DEFER" при косвенной адресации.
Сами команды также отображаются на передней панели: "AND", "TAD", "ISZ, "DCA", "JMS", "JMP",
"IOT" и "OPR". Расшифровку группы "OPR" я вывел справа на маленькие логические индикаторы.
Передняя панель также отражает все пересылки между регистрами PC, MA, MB и AC в процессе
исполнения кодов операций (инструкций).
Что делают отдельные инструкции я уже подробно описал в этом топике ранее и сам пользовался
уже этим удобным документом
.

Для компиляции программы из текстового ассемблерного файла можно воспользоваться компилятором,
встроенным в эмулятор EDUC-8, обсужавшийся в этом топике выше. Он компилирует ассемблерный
файл прямо при загрузке, а результат можно получить в виде файла, сохранив область памяти,
можно все 256 байт - не столь уж и большой объём! Я этим компилятором пользовался и смотрел
его текст в исходниках, они есть в том архиве.
Можно попробовать и компилятор E8ASY - но я посмотрел, он в режиме командной строки работает,
поэтому пользоваться им не стал, хотя в архиве есть и исходники и примеры программ...

Если подробности исполнения программы даже в пошаговом режиме не ясны, можно включить медленную
скорость исполнения программы клавишей "SLOW/FAST". Оба генератора вынесены также на основной
лист - справа от LEDPANEL. Частота "SLOW" составляет 10 Hz, а частота "FAST" - 1 KHz. Модель,
как и сам EDUC-8, работоспособна на 500 KHz и выше, но при этом индикатор LEDPANEL становится
совершенно бессмысленным - мешанина моргающих индкаторов, воспринимаемых беспорядочно, хотя это
на самом деле и не так.
На частоте 1 KHz еще видна структура исполнения программы и этой частоты достаточно, чтобы пример
программы работал в реальном времени.
Кликнув по пиктограммам генераторов (треугольнички "G_Hi" и "G_Lo"), рабочие частоты режимов
"FAST" и "SLOW" можно изменить.
Если надоело моргание всех индикаторов "как в цирке" - их можно выключить переключателем "Led
Off
" справа.

С этим разобрались, ну а введённая нами и исполняемая непрерывно программа вводит символ из окна
виртуального терминала, который воспринимает нажатие кнопок клавиатуры, если в его окно поместить
курсор, после чего полученный программой символ выводится на ЖК символьный дисплей 4 строки по 20
символов
. И дисплей и виртуальный терминал работают по протоколу RS-232S без инверсии с частотой
передачи 2400 бод - 8 бит, без контроля четности, 1(2) стоп-бита.
Оригинальный дисплей Milford c последовательным интерфейсом не имеет в наборе символов кириллицы,
но проблему его руссификации давно разрешили заменой таблицы символов в библиотеке LCDALPHA.DLL.
Обычно её оригинал переименовывают в LCDALPHA.BAK и подгружают в папку MODELS Proteus
библиотеку LCDALPHA.DLL с русскими символами (я её в проекте приложил).

Файлы в архиве поекта разложены по тем папкам, в которые их надо поместить в той директории где,
собственно, сам Proteus и установлен.

Я выложил проект EDUC-8M в базовой версии так, как всё было в оригинале мини-компьютера в 1974 г.
Если кто-либо хочет усовершенствований, то можно ввести "нулевую страницу" (Zero Page) как у 6502,
хотя это у 6502 ввели Zero Page, как у PDP-8. Можно также расширить память страничной адресацией.

Но я этого всего делать в этом проекте не стал, поскольку у меня несколько другие планы...
И я думаю, если это кому-либо интересно, то небольшие модификации приятнее сделать самому.

Все выложенные мной материалы свободны для некоммерческого использования.
Все замечания вопросы и пожелания, если таковые будут, - направляйте в личку, поскольку я ухожу
в отпуск, и в реале у меня накопилось множество неотложных дел, так что я не планирую заглядывать
сюда часто, но в личку при случае постараюсь ответить...

73!

_________________
iLavr


29 Jun 2014 09:39
Profile
Senior

Joined: 25 Jan 2015 11:38
Posts: 165
Location: 109.225.59.224
Reply with quote
Post 
Едва продрался сквозь схемотехнику этого чуда из 70-х. Как их разрабатывали вручную (оригинал то вообще от DEC) ?

Quote:
Ну разве что автор довольно фривольно оставляет по 2-3 неиспользованных элемента
в корпусах логики...

Похоже, что автор компьютера тогда банально сломал голову при разводке односторонних плат, поэтому быстро сдался и немного увеличил количество однотипных микросхем. Зато не надо стало вводить полноценные дорожки на стороне деталей.

_________________
Просто Александр.


06 Feb 2015 10:06
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Александр А. wrote:
Похоже, что автор компьютера тогда банально сломал голову при разводке односторонних плат, поэтому быстро сдался и немного увеличил количество однотипных микросхем. Зато не надо стало вводить полноценные дорожки на стороне деталей.

Я думаю, он старался сделать это "чудо 70-х" максимально доступным для повторения любителями.
"Electronics Australia" - это у них что-то типа нашего "Радио"...

Так что он и разнес микросхемы максимально широко, и поверху провода бросил.
У меня любимый магнитофон "Электроника 323" из тех времен - тоже с односторонней
печаткой и с перемычками со стороны деталей, хотя и промышленного производства аппарат.

А так, на мой взгляд, это "чудо 70-х" зело поддается ужатию, как схемотехнически,
так и конструктивно.

_________________
iLavr


06 Feb 2015 10:18
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 47 posts ]  Go to page Previous  1, 2, 3, 4  Next

Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.