26

(12 ответов, оставленных в Всякое разное)

Конечно, наверное немного не в тему.
Администрация, надеюсь, не будет против маленького пиара полёта фантазии…

Имеeтся Страница на Хабре для ознакомления с концептуальной частью идеи.
Ссылки на Эмулятор и некоторые исходники черновых набросков для симуляции/синтеза находятся на странице так же…

Всё это творение появилась в одном из ностальгических приступов на фоне затворничества 2020 года.
Основной целью было попытаться разработать некое устройство процессорного класса, где система команд не имела бы неясных битовых полей эзотерического назначения.
(Для сравнения, у i8080 и i8086 в битовых полях команд прослеживается отголосок восьмеричной системы счисления во всём, от кода команд до полей операндов. И многое там просто эзотерично, пока не ознакомишься с архитектурой достаточно глубоко.)

Основополагающим во всей концепции является максимальная открытость и развёрнутость во всём.
Все команды имеют код, смежный со смысловым значением читаемого визуально в стиле акына: Что видится и читается, то и железом исполняется.

Конечно, за год весь материал успел устареть.
Но базовые принципы не изменились.

Сейчас прорабатывается карта устройств ввода-вывода.
Но, концептуально сохраняется акцент на максимальную развёрнутость, чтобы самой карты УВВ не было вовсе.
Например, для работы с устройствами ввода-вывода выделено 10 архитектурных регистра общего назначения D0…D9:

╔════╤════════╤════════════════════════════════════════════════════════════════╗
║ D9 │  ИМС   │ Описание доступа к ресурсам микросхемы через РОН процессора    ║
╠════╪════════╪════════════════════════════════════════════════════════════════╣
║0x32│ i8232  │ D0 - Регистр Данных                                            ║
║    │1816ВЕ32│ D1 - Регистр Статуса                                           ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x45│ i8245  │ D0 - Данные                                                    ║
║    │        │ D1 - Адрес                                                     ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x53│ i8253  │ D0/D1/D2 - Каналы Счётчиков 0/1/2                              ║
║    │К580ВИ53│ D3 - Регистр Статуса Таймера                                   ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x55│ i8255  │ D0/D1/D2 - Порты A/B/C ППА                                     ║
║    │К580ВИ55│ D3 - Регистр Статуса ППА                                       ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x57│ i8257  │ D0/D2/D4/D6 - Каналы 0/1/2/3: ПДП Адрес                        ║
║    │        │ D1/D3/D5/D7 - Каналы 0/1/2/3: ПДП Счёт                         ║
║    │К580ВТ57│ D8 - Регистр Статуса ПДП                                       ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x72│ i8272  │ D0 - Регистр Статуса                                           ║
║    │FDD Unit│ D1 - Регистр Данных                                            ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x75│ i8275  │ D0 - Регистр Данных                                            ║
║    │К580ВГ75│ D1 - Регистр Статуса                                           ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x79│ i8279  │ D0 - Регистр Данных                                            ║
║    │К580ВВ79│ D1 - Регистр Статуса                                           ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x93│ FD1793 │ D0 - Регистр Команд / Регистр Статуса                          ║
║    │        │ D1 - Регистр Дорожки                                           ║
║    │        │ D2 - Регистр Сектора                                           ║
║    │1818ВГ93│ D3 - Регистр Данных                                            ║
╚════╧════════╧════════════════════════════════════════════════════════════════╝

Тем самым, в D9 помещается серийный индекс номенклатуры микросхемы, а с D0…D8 работают уже как с внутренними регистрами самой микросхемы УВВ.
То есть, разработчику, имеющему опыт работы с конкретной ИМС УВВ не нужно никаких команд типа IN/OUT.

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



27

(19 ответов, оставленных в Всякое разное)

Накoнец-то, свершилось!

Спустя 35 лет после публикации схемы знаменитого РАДИО-86РК, в котором контроллер CRT-дисплея на микросхеме 580ВГ75 мог работать со «световым пером», данная поддержка появилась в онлайн-эмуляторе!
(Как-то не справедливо было, что любители пострелять в уток в NES-эмуляторе могут это делать мышью. Но ни один из имеющихся эмуляторов «Апогея», «Микроши» и «Радио-86РК» не поддерживают подобную фишку… А вот единственная ПЭВМ КРИСТА шла со световым пером в комплекте с программами…)

Автор онлайн-эмулятора подхватил идею поддержки светового пера (моё видео) и реализовал её в своём эмуляторе.

За неделю…
Накидaл кое-как первую игру с использованием «светового пера»…
(Кликайте мышью по звёздочкам…)

Сделал кое-как "Жизнь"» под световое перо…
(Рисуйте мышью клетки… Данная реализация крайне медленная, так как ставилась задача под световое перо сделать хоть что-то и алгоритм просчитывает весь буфер экрана целиком, включая пустые области)

(Запуск этих двух игр: Дождитесь их загрузки с появлением приглашения «->» и наберите «G<Enter>» - нажать «G» и затем «Enter»…)

Адаптировал под световое перо игру, которая на кассете называлась «МАРС-2», но в файлах представлена как «MARS3».
Адаптировал под световое перо игру «МАРС».
(Игра со звуком! Поставьте галочку внизу на «Sound».)

На данный момент дорабатывается Бейсик Микрон для поддержки окон и светового пера.



28

(19 ответов, оставленных в Всякое разное)

Logisim-процессор
Задумывaлся как вполне реализуемый на ТТЛ-рассыпухе RISC-процессор с простой для любителя системой команд…
Хотя, по предварительным подсчётам, потребуется не менее 250 микросхем, но оно того стоило ради досуга… cool

P.S.: Сейчас пытаюсь составить более-менее сносную документацию, чтобы хотя бы гикам была понятна… roll
Опубликовал в Хабр, очень тихо продвигаюсь с эмулятором и моделью под FPGA…


uav1606 пишет:

Что-то вроде "танчиков", как я понимаю? :-)

Дa, было дело…
Типа, аватарку в ASCII-стиле сгенерировать или микрокомикс в gif для форума.
Может, кому сгодится… Там всё редактируется в реальном времени…

Есть вариант посложнее, так сказать, пародия на комикс-студию.
(Тут несколько роликов с демонстрацией работы скрипта: подгонял метки под музыку и готовый мультик…)
Типа GRASP или MS Chat.


P.S.: Относится к демосцене? wink



ASCII-Демка



31

(26 ответов, оставленных в Обсуждение этого форума)

B связи с «коронованной инфекцией» и принудительным интроверт-стримом, форумы нужно развивать и поддерживать! lol

P.S.: Кстати, я вернулся…


uav1606 пишет:

По поводу эмулятора...
Консоль JavaScript при каждом нажатии на Trace выдаёт:
Uncaught TypeError: Object . has no method 'repeat' (program):440

Элементaрную функцию повтора строки n-раз разработчики внедряли в JS более 25 лет! big_smile
Зря я решил отказаться от собственной функции в пользу этой repeat…
Вроде как исправил…

Надо было мне сразу дать ссылку на вариант эмулятора с самопальной реализацией повтора строки. Эта версия у меня для проверки в Opera 12… lol
(Нажмите на Reset и потом на Start. Область дисплея должна начать очищаться, а таблица команд и дизассемблинг должны отображать активность трассировки. Проверял сейчас специально в Opera 12)

uav1606 пишет:

Здесь всё в порядке, схема рисуется. Правда, чтобы она нарисовалась, нужно, после выбора из выпадающего списка названия схемы, нажать Image или Movie, иначе на картинке показана она же в ASCII. Так и стоит, пока я, например, не введу что-нибудь, хотя бы пробел, в текстовое поле, тогда картинка превращается уже в графическую схему. "Жук" в режиме Movie тоже бегает.

Да, проблема наблюдается и в том, что и под Opera 12 не работает. А ведь когда-то проверял - работало! Сейчас - вообще ничего не отображает.
Видимо в GitHub они что-то всё-таки поменяли, раз эмулятор отказал и ascii-схемки.
(Почти всегда проверял в Opera 12: Если в ней работало, значит и в других должно)

P.S.: Спасибо за содействие!
Мелочь, но всё же…
(Смотрю вот, за границей у них сейчас мода типа строить компьютеры на транзисторной рассыпухе. У нас на форумах очень часто относятся, если не скептически, то без особого интереса.
Думаю, если открыть отдельную тему о моей концепции процессора (не реализации или идеи - они крайне безобразные) и попытаться в дискуссии обсудить некоторые "тонкие" моменты - не очень плохо?)


uav1606 пишет:

У меня тоже Chrome, только старый - 24-й. К сожалению, более новые на моём компьютере не работают (нет SSE2).
Старый вариант эмулятора под ним заработал вроде бы нормально, по крайней мере, я вижу трассировку и т.п. А вот новый - ни в какую, ни на какие клавиши не реагирует и т.п.
Чуть позже попробую под более новыми браузерами.

Кaк ни крути, а вина - программиста… Выходит, в новых скриптах я что-то не то сделал.
А консоль ошибки какие выдаёт? Напротив, вот как раз на старом Хроме хорошо было бы тоже добиться запуска. Раньше я старался аккуратно придерживаться правил кроссбраузерности. Но, так как разработки по большей части не покидали просторы моего дискового пространства, я стал "безобразничать". roll
Ниже - гифка с таблицей системы команд эмулируемого процессора. Очень похожа на ту цветную таблицу из журнала РАДИО тех далёких лет. Да, напоминает ту самую от 580ИК80. Так как там многое - то же самое, но перегруппированно в соответствии с концепцией.
Так, команда останова HLT у процессора i8080 имеет код 076h, а у i8086 - 0F4h. Тогда как здесь верное решение - код 00, как в строчках. К сожалению, у x86 код 00 означает ADD и без средств защиты, как под плоским DOS, прыжок на "нулевую" область зацикливалось сложением.
Короче говоря, что с детства "наболело", то и реализовал в эмуляторе (пока) с амбициями прошить всё в DE1.

uav1606 пишет:

Насчёт парсера ASCII-схем - может быть, стоило бы использовать для вертикальных линий "трубопровод" - "|" ?
Мне кажется, они бы так смотрелись лучше, чем из восклицательных знаков, и это не псевдографика, а чистый ASCII.

Знак "!" вместо "|" мною использовался лишь как дань РАДИО-86РК по-привычке. Это не принципиально и можно исправить. smile
Но, главное же - это генерируемая в canvas схема! Или, простите, парсер тоже ошибку даёт и ничего, кроме самих ASCII-схем не видно? А "жук" с символом параграфа по проводам схемы тоже не бегает? smile Консоль что пишет? (Старый вариант с псевдографикой работает?)
Например, выбрав схему АОНа, через секунд 20-40 (в зависимости от производительности ПК) должна появиться схема как в прилагаемой выше гифке (radio199309)…


uav1606 пишет:

В принципе, интересная идея. Только у меня эти схемы больше не с "Радио" ассоциируются, а с FIDO, там часто размещали такие небольшие схемки в эхах.

Вo времена FIDO я только осваивался в Бейсике РК и постигал тайны машинного кода, прогуливая школу wink

uav1606 пишет:

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

Изначально первая версия скрипта обрабатывала схемы с символами псевдографики. Но, на практике требовался специализированный текстовый процессор (как ФОТОН под DOS 3.1) с поддержкой блочного выделения текста и псевдографического рисования. Что выходило за рамки функций встроенных редакторов на форумах и часто превращало схему в груду &#-амперсандов.

uav1606 пишет:

Единственное "но" - мне кажется, что Ваши обозначения в ASCII-вариантах схем как-то не совсем наглядны.

Планировалось, для "сторонних" и ленивых сделать редактор с мышью. А ограничение 96 ASCII-кодами диктуют свои правила также. Тем более, для обмена схемами можно пожертвовать визуальной эстетикой исходника, если требуется стабильность парсинга и экспорта в CAD. Искущённые же могут без особого труда освоиться в специфике символики.

uav1606 пишет:

А нельзя как-то парсер настроить, чтобы он понимал именно такого рода ASCII-схемы? Возможно, с какими-то небольшими модификациями? Т.е. некий гибрид Вашего варианта и "классического"?

Как я уже сказал, первый вариант так и работал. Но небыло стабильности. И это крайне бы затрудняло бы экспорт, что скрипт из инструмента обмена схемами с перспективой их непосредственного экспорта для запуска симулятором превращает в простую эстетическую и бесполезную игрушку.
Однако, ответ положителен: Если заглянете в исходники, найдёте текстовое представление каждого элемента и его регулярное выражение в шаблонах.
Очень открытый пример (меньше 300 скрипт-строк) - должен работать.
Резистор кодируется так:

01    .....    0-угол, 1-палитра
...    .....
.9.    -\\-.    9-очередь прорисовки
...    .....
0,1    .....    0,1-позиция
02    .....
...    .....
.9.    -//-.
...    .....
0,1    .....
11    ..!..
...    ..\..
.9.    ..\..
...    ..!..
1,0    .....
12    ..!..
...    ../..
.9.    ../..
...    ..!..
1,0    .....

И "реагирует" на -\\- или -//-. Если сменить на [//], их и будет парсить.

uav1606 пишет:

Насчёт эмулятора 8080, я, если честно, не понял, как он работает - может, расскажете подробнее? Т.е. я открыл ту ссылку, что Вы дали, а дальше? На Start и Trace он у меня почему-то никак не реагирует.

Так как этот скрипт - потомок, написанный с нуля и пока официально не представляемого, в нём есть некоторые интерфейсные недочёты. Например, отсутствует справка.
Так, клавиша F7 - селектор (FPS, IPS, и т.д.), клавиши F6/F8 - инкремент/декремент (для FPS, IPS и т.д.), F1 - один шаг эмуляции, F4 - старт эмуляции.
Возможно, проблема с браузером? Тестирую всё в Chrome, хотя и FF тянет вполне.
Попробуйте старый вариант. Или в этом варианте нажмите F4. Хм… Ничего не работает?

P.S.: В целом, большое спасибо за замечания… И за то, что позволили здесь "помусорить".
Увидел Мегапроцессор и прослезился.
Считаю и уверен, что даже 8-битные процессоры зря забросили из быта (нету планшетов с Андроидом под 8-битным процессором, например). Как я выше писал, мой проект x80 - попытка встряхнуть i8080 хорошенечко так, чтобы и система команд стала визуально в таблице "ровнее", и появилась перспектива на линейку с обратной совместимостью.
С одной стороны, мнемонически несколько x86-совместим, а с другой - для реализации "вживую" на транзисторах тоже достаточно годен…



Здравствуйтe!

Имея специфическое хобби, занимаюсь разработкой в сфере устаревших технологий. big_smile

Парсер принципиальных ASCII-схем является реализацией идеи описания электрической схемы алфавитно-цифровой текстовой комбинацией (пример схемы усилителя и схемы АОНа), несколько раз публиковавшихся на страницах журнала РАДИО (смотрите в прилагаемом файле). В перспективе, расчитывалось добавить функцию трассировки ascii-схемы для составления полноценного списка узлов с экспортом как в svg, так и netlist под spice. На специализированных форумах используются специальные Java-движки для визуального рисования схем и архивирования. Тогда как ascii-схемы можно экранировать особым bb-тэгом для визуализации, подобно математическим формулам.
На многих форумах эта идея активно критикуется как шаг назад в пещерную эпоху алфавитно-цифровых терминалов.
Думаю, на данном форуме идея найдёт своих сторонников. Возможно, поддержку тоже (в частности, консультирования по части экспорта и редактирования)…

Эмулятор i8080 как часть проекта x80.
Особенность скрипта в том, что ядро процессора описывается не switch-case-древом. Передав функции скрипта шаблон, аналогичный в некоторой степени справочным таблицам по конкретному процессору, генерируются специальные структуры, обеспечивающие функционирование комплекса ассемблер+дизассемблер+эмулятор.
Тем самым, в режиме реального времени можно изменять таблицу системы команд процессора через текстовое поле.
Скрипт разрабатывался с расчётом эмуляции как i8080/z80 или 6502, так и более сложные. На данный момент шаблонного описания i8086 пока не разработано, но вполне возможно в перспективе и в принципе…

P.S.: Надеюсь, что не ошибся с выбором форума и тематика найдёт заинтересовавшихся… roll