nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 24 Feb 2021 13:57



Reply to topic  [ 86 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next
Gigatron (компьютер на рассыпухе) 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
b2m wrote:
Lavr wrote:
непонятно, что хотел показать своим эмулятором автор...
Насколько я понимаю, отлаживал формирование видеосигнала.
Вполне похоже на то...
Но если бы я "отлаживал формирование видеосигнала" картинка всё же была хотя бы статична,
пусть и текстовый вывод. По кадровому гасящему хотя бы стирать текстовый экран...

_________________
iLavr


24 Aug 2020 06:49
Profile
Devil

Joined: 26 May 2003 07:57
Posts: 715
Reply with quote
Lavr wrote:
Но если бы я "отлаживал формирование видеосигнала" картинка всё же была хотя бы статична,
пусть и текстовый вывод. По кадровому гасящему хотя бы стирать текстовый экран...

Ты бы тогда не увидел полный кадр, а так - перенаправить вывод в файл, и смотри сколько хочешь. Хоть один кадр, хоть сотню.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


24 Aug 2020 07:35
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Lavr wrote:
Репозиторий я тоже скачал 28 июля 2020 г., ...
Есть там такой файл: gtemu.c - это вроде (как пишут) эмулятор Gigatron-а, ...

В статье Programming the Gigatron автор переписал этот файл, чтобы распечатать действие машинных
кодов Gigatron-а на С-подобном псевдо-языке:

 Коды Gigatron-а на С-подобном языке
Attachment:
Gigatron code_1.gif
Gigatron code_1.gif [ 52.31 KiB | Viewed 2021 times ]


Напомню, что машинные коды Gigatron-а дешифруются согласно следующей таблице:

Image

по следующему принципу (как у 6502): XXX.YYY.ZZ(b)

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

 Таблица ассемблерных мнемоник кодов Gigatron-а
Attachment:
Gigatron code_2.gif
Gigatron code_2.gif [ 51.45 KiB | Viewed 2021 times ]


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

Shaos, кстати, посмотри, может быть в исходник твоего RASM (или как его там) удачно ляжет?

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

_________________
iLavr


28 Aug 2020 14:11
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 19441
Location: Silicon Valley
Reply with quote
Не - мой RASM тупой как валенок - никаких тебе квадратных скобок или плюсиков :obye:

_________________
:eugeek: https://twitter.com/Shaos1973


28 Aug 2020 23:45
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Ну я могу попытаться адаптировать какой-то из своих ассемблеров...
Просто пока немного непонятно, как трактовать дублирующиеся коды.

К примеру, если упорядочить, то увидим:
Attachment:
dup.gif
dup.gif [ 3.07 KiB | Viewed 2003 times ]

И таких участков в таблице кодов прилично...

Значит LDA $0P трактуем при компиляции как 00h, а если вдруг понадобится другой код,
то вставляем его как DB 0CH; к примеру?

_________________
iLavr


29 Aug 2020 05:18
Profile
Supreme God
User avatar

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

Но тормознулся со схемотехникой АЛУ на мультиплексорах... :osad:
На мой взгляд в схеме АЛУ есть ошибка, приводящая к его неработоспособности.

 Схемотехника АЛУ на мультиплексорах
Attachment:
00061.gif
00061.gif [ 33.93 KiB | Viewed 1938 times ]

Приведу также краткое описание принципа работы этого АЛУ от автора:
Attachment:
ALU.gif
ALU.gif [ 26.48 KiB | Viewed 1938 times ]

Ошибка в схеме на мой взгляд состоит в том, что в нижней части схемы все выводы 7 мультиплексоров
74НСТ153 должны поступить на входы А сумматора, а все выводы 9 мультиплексоров должны поступить
на входы В сумматора. Тогда схема будет работать согласно приведенному описанию.
На приведенном выше оригинале схемы у двух мультиплексоров подключение к сумматору выводов 9 и 7
перепутано.
:-?

Кроме того, есть несостыковка с приведенной в описании таблицей сигналов таблицы истинности,
расположенной в устройстве управления (AR0:3). На мой взгляд, эти сигналы совершенно
напрасно инвертированны перед подачей в схему АЛУ.

_________________
iLavr


02 Sep 2020 11:53
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Правильная схема АЛУ на мультиплексорах, на мой взгляд, должна быть следующая:

 Исправленная схема АЛУ на мультиплексорах
Attachment:
ALU2.gif
ALU2.gif [ 29.22 KiB | Viewed 1929 times ]


Правда, при этом сигналы управления AR0:3 инверсные, но они соответствуют таблице,
описывающей принцип работы АЛУ:
AR0 - это сигнал Cin. По таблице при инструкции LD сигнал Cin = 0.
Также при этом один из мультиплексоров выключен (= 0), второй - повторяет входы Bus.

На выходе сумматора и ALU получается А = 0 + Bus = Bus, не зависимо от Ain.

Надо будет проверить, как при этом ведут себя другие операции ALU...

_________________
iLavr


02 Sep 2020 13:18
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Да, похоже, что исправленная схема АЛУ на мультиплексорах работает верно...

Для управления АЛУ на мультиплексорах необходимы следующие сигналы AR0:3 и AL :
Attachment:
00AR_TAB.gif
00AR_TAB.gif [ 12.96 KiB | Viewed 1812 times ]

Также показано, как формируются столбцы таблицы для операций LD и AND.

Аппаратно сигналы данной таблицы в схеме устройства управления Gigatron-а формирует вот такой
шифратор с диодной матрицей:
Attachment:
Coder.gif
Coder.gif [ 11.64 KiB | Viewed 1921 times ]

Принцип его построения следующий: там, где в таблице 1, на схеме должен быть диод.
На приведенной выше оригинальной схеме несколько диодов придётся поменять местами, чтобы было
соответствие таблице.

Первоначально я предполагал ошибку в инверсии, но тут подвела модель буфера 74хх240 в Proteus -
инверсия в ней ошибочно отсутствует... :-?

Прилагаю также модель АЛУ на мультиплексорах в Proteus и надеюсь, что больше ошибок нет.
Attachment:
ALU_Gig.zip [30.43 KiB]
Downloaded 52 times

_________________
iLavr


02 Sep 2020 16:50
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Lavr wrote:
Shaos, кстати, посмотри, может быть в исходник твоего RASM (или как его там) удачно ляжет?
Не - мой RASM тупой как валенок - никаких тебе квадратных скобок или плюсиков :obye:

А если заменить мнемоники на похожие от i8080? Тогда получится?

Я тут читал один материал от автора, команду, где Х++, он сам назвал иначе: STIX, то есть,
STore & Increment X.
Можно и другие команды со скобками переименовать похожим образом, обходились же в ассемблере
i8080 без скобок! :wink:

Проект практически заработал, но тестировать в кодах без ассемблера зело утомительно... :-?

_________________
iLavr


04 Sep 2020 11:52
Profile
Supreme God
User avatar

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

 Gigatron в Proteus
Attachment:
GIG_10.gif
GIG_10.gif [ 78.76 KiB | Viewed 1867 times ]

Свободный угол оставлен под LCD индикатор типа LM016L (2 строки по 16 символов),
но пока я с этим тормознулся, поскольку с ним довольно точно надо временнЫе интервалы
в протоколе инициализации выдержать, а я в данный момент запускаю проект либо в
пошаговом режиме, либо на низкой частоте 100 Гц, чтобы успевать видеть процесс работы.
Т.е. все интервалы у меня заведомо больше, чем это необходимо... :wink:


P.S. И оригинальный альбом схем здесь выложу, чтобы можно было сравнить с тем, что я исправил.
Attachment:
GigSchematics.zip [1.35 MiB]
Downloaded 55 times

_________________
iLavr


04 Sep 2020 14:06
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 19441
Location: Silicon Valley
Reply with quote
Lavr wrote:
Shaos wrote:
Lavr wrote:
Shaos, кстати, посмотри, может быть в исходник твоего RASM (или как его там) удачно ляжет?
Не - мой RASM тупой как валенок - никаких тебе квадратных скобок или плюсиков :obye:

А если заменить мнемоники на похожие от i8080? Тогда получится?

Я тут читал один материал от автора, команду, где Х++, он сам назвал иначе: STIX, то есть,
STore & Increment X.
Можно и другие команды со скобками переименовать похожим образом, обходились же в ассемблере
i8080 без скобок! :wink:

Проект практически заработал, но тестировать в кодах без ассемблера зело утомительно... :-?

Дык у них вроде ж был ассемблер, не?

_________________
:eugeek: https://twitter.com/Shaos1973


04 Sep 2020 21:02
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Lavr wrote:
Shaos wrote:
Lavr wrote:
Shaos, кстати, посмотри, может быть в исходник твоего RASM (или как его там) удачно ляжет?
Не - мой RASM тупой как валенок - никаких тебе квадратных скобок или плюсиков :obye:
А если заменить мнемоники на похожие от i8080? Тогда получится?
Дык у них вроде ж был ассемблер, не?
Да там ассемблер, как пишут, "трое в одном флаконе". Неохота с ним заморачиваться...
Не хочу ничего плохого сказать про автора, но как-то сложно он всё замутил для довольно простой
железки. Если внимательно присмотреться, то это практически 8-битный Nibbler по идее.

Оригинальный ассемблерный код в ПЗУ там вобще на "питоне" собирают... :-?

Ну в общем хотелось бы простенький ассемблер даже DOS-овский подошел бы.

Пока надумал сделать так - в ассемблере от i8080 писать программу Gigatron-а через DB XXh.
В WINHEX, на котором я сейчас пишу в кодах, раздвигать и вставлять в код неудобно... :wink:

_________________
iLavr


05 Sep 2020 03:19
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Урааааааа!
Модель Gigatron-а в Proteus с LCD-индикатором LM016L заработала!

Attachment:
TheGIG.gif
TheGIG.gif [ 45.82 KiB | Viewed 1812 times ]

Вот вроде мелочь, а приятно! И самое приятное, что заработала не сразу...
Немного поупрямилась, от этого обычно результат приятен вдвойне! :wink:
Lavr wrote:
Пока надумал сделать так - в ассемблере от i8080 писать программу Gigatron-а через DB XXh.
Я так и поступил, и получилось весьма удачно! По крайней мере и писать программу
было удобнее, чем через WINHEX, и метки вычислял сам ассемблер, хотя приходилось
делит адрес метки попалам, но это легче, чем считать метки вручную... 8)

Как-то так этот процесс выглядел:
Code:
;--------------------------------;
;   Gigatron + LCD_LM016L.ASM    ;
;          05.09.2020            ;
;                                ;
;  CLC = 100Hz, T = 0,01S = 10mS ;
;  .                             ;
; 0FFH - Фиктивный параметр...   ;
;--------------------------------;

;0123456789012345
;> The Gigatron <
;Press any key...

    ORG  0000H;
START:
    DB    08H, 00H;  LDA 00H
    DB    1AH, 0FFH; LD  AC,OUT - clear port
;-------------
    DB    0EH, 0FFH; NOP - Delay
    DB    0EH, 0FFH; NOP - 20 mS
    DB    0EH, 0FFH; NOP
;-------------
    DB    08H, 30H;  LDA 30H
    DB    1AH, 0FFH; LD  AC,OUT
    DB    0EH, 0FFH; NOP - pause
    DB    4CH, 04H;  ORA 04H = 0000.0100 STB UP
    DB    1AH, 0FFH; LD  AC,OUT
    DB    0EH, 0FFH; NOP - pause
    DB    2CH, 0FBH; ANI 0FBH = 11111011 STB DN
    DB    1AH, 0FFH; LD  AC,OUT
    DB    0EH, 0FFH; NOP - pause
;-------------
    DB    08H, 30H;  LDA 30H
    DB    1AH, 0FFH; LD  AC,OUT
    DB    0EH, 0FFH; NOP - pause
    DB    4CH, 04H;  ORA 04H = 0000.0100 STB UP
    DB    1AH, 0FFH; LD  AC,OUT
    DB    0EH, 0FFH; NOP - pause
    DB    2CH, 0FBH; ANI 0FBH = 11111011 STB DN
    DB    1AH, 0FFH; LD  AC,OUT
    DB    0EH, 0FFH; NOP - pause
;-------------
    DB    0EH, 0FFH; NOP - Delay
    DB    0EH, 0FFH; NOP - 20 mS
    DB    0EH, 0FFH; NOP
    DB    0EH, 0FFH; NOP - Delay
    DB    0EH, 0FFH; NOP - 20 mS
    DB    0EH, 0FFH; NOP
;-------------
   ...

По RTF-файлу искал нужный мнемокод, записывал его в комментарий, а в DB XXh вставлял
код этого оператора.
После компиляции разбивал *.bin-файл на четные и нечетные байты для двух ПЗУ с помощью
утилиты romsplit.exe (отдельное спасибо - Шурику!) :kruto:

Проект работает на частоте 100 Гц - под эту частоту ориентировочно подобраны интервалы
для LCD-индикатора LM016L, причем выбраны они заведомо большими.

Если кто захочет поднять частоту и допилить проект до работы с "дисплеем" следует
обратить внимание на следующее: Gigatron тактируется двумя фазами, причем вторая
фаза получается задержкой на конденсаторе.
Attachment:
00021.gif
00021.gif [ 12.58 KiB | Viewed 1812 times ]

Ёмкость конденсатора (и задержка фазы 2) зависит как от рабочей частоты, так и от
быстродействия примененных логических элементов.
В Proteus вместо конденсатора я поставил цифровую задержку, её величина подобрана
для частоты 100 Гц и микросхем серии 74LS.
Критерий подбора задержки следующий: в Gigatron данные всегда проходят через АЛУ,
и после АЛУ попадают в регистры или память в фазе 2, отсюда задержка должна быть
такой, чтобы в фазе 2 в регистр-аккумулятор четко записывалось значение на выходе
АЛУ, в противном случае задержку следует увеличить.
При выбранной задержке следует протестировать запись в микросхему ОЗУ - сбоев быть
не должно!

Ну и, как обычно - архив с проектом Proteus:
Attachment:
Gigatron.zip [181.24 KiB]
Downloaded 62 times

В нём всё, что нужно, кроме компилятора ассемблера для i8080, его я давным-давно
выкладывал здесь на форуме в ветке Proteus DLL.

_________________
iLavr


06 Sep 2020 06:56
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
И оригинальный альбом схем здесь выложу, чтобы можно было сравнить с тем, что я исправил.

А теперь выложу набор схем, которые я правил, и по которым собирал проект Gigatron-а в Proteus :
Attachment:
GIGSchems.zip [261.45 KiB]
Downloaded 61 times

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

Кстати, именно поэтому я и применил в проекте серию 74LS - серия 74НСТ в моём устаревшем
Proteus-е довольно бедна... :-?

_________________
iLavr


06 Sep 2020 07:09
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
b2m wrote:
... а вот формировать видео-сигнал и паралельно делать что-либо полезное у тебя вряд-ли получится.

Так вот, когда читаешь интернет, представляется просто какое-то чюдо! :o
Не, ну надо же! - Программная генерация VGA-видеосигнала процессором на 6.25 МГц! :roll:
Это в то время, как у "Специалиста" была аппаратная генерация TV-видеосигнала 384х256
при частоте обновления пикселей 8 МГц!

А когда разберёшься и внимательно присмотришься, то чюда-то никакого и нет...
Просто в схеме Gigatron-а реализован зачаточный ПДП в командах типа:
LD [Y,X++],OUT
это пересылка байта из памяти (ОЗУ) непосредственно в порт вывода с аппаратным
инкрементом адреса! :lol:

А я еще смотрю и думаю, почему ж нет аналогичной команды для чтения массива в аккумулятор?
А вот нет её! Только под формирование видеосигнала и стробирования звука команда расточена! :wink:

_________________
iLavr


07 Sep 2020 15:36
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 86 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next

Who is online

Users browsing this forum: No registered users and 2 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.