1

Тема: Принципиальные схемы в стиле ASCII-дизайн

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

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

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

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

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

Post's attachments

Иконка вложений ascii-radio.gif 93.38 Кб, 318 скачиваний с 2017-04-21 



2

Re: Принципиальные схемы в стиле ASCII-дизайн

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

     =        +--------------------*---*-----
     !        !     =   =   !      !   =
     !/       \     !   !   !     R\   !C
    C=       R\     !/  !/  =C     \   =
  C  !      R !    C=  C=   !    R ! C
<-:--)   +-\\-*-+   ! C !   ! +-\\-*-:-*-+
     ) C !    ! ! C (-:-) C ! !    !   ! !
     )-:-*---/} +-:-(   )-:-*-*---/}  C= )/+-
     !      T !     (   )     !  T !   ! )!!
     !        !     !   !    C=    !   ! ) (
     !        !     !   !     !    !   ! ! !
     +--------*-----*---*-----*----*---*-*-*-
C1:2,2 C2:4..15 C3:82 C4:82 C5:4..15 C6:5,1 C7:4..15 C9:10 C8:3,9 C10:15 C11:22 C13:82 C12:0,068
T1:GT329A T2:GT329B
L1 L2 L3 L4 L5
R1:15K R2:2,2K R3:75K R4:2,2K

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

     ┌────< +U
     │
     │
    ┌┴┐10k
    │ ├<──┐
    └┬┘   │ 1.5 Bольт
     │   ┌┴┐▌ M1   0.1
     │   │ │▌───┬──┤├──< к усилителю
     │   └┬┘▌  ┌┴┐
     │    │    │ │ 470 Ом
     │    │    └┬┘
     └────┴─┬───┘
           ─┴─

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


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



3

Re: Принципиальные схемы в стиле ASCII-дизайн

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-совместим, а с другой - для реализации "вживую" на транзисторах тоже достаточно годен…

Отредактировано Alikberov (22-04-2017 23:30:20)

Post's attachments

Иконка вложений radio199309.gif 109.56 Кб, 367 скачиваний с 2017-04-22 



4

Re: Принципиальные схемы в стиле ASCII-дизайн

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

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



5

Re: Принципиальные схемы в стиле ASCII-дизайн

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)…

Отредактировано Alikberov (23-04-2017 07:19:25)

Post's attachments

Иконка вложений 0_7x80.gif 177.97 Кб, 305 скачиваний с 2017-04-23 



6

Re: Принципиальные схемы в стиле ASCII-дизайн

По поводу эмулятора...

Alikberov пишет:

Кaк ни крути, а вина - программиста… Выходит, в новых скриптах я что-то не то сделал.
А консоль ошибки какие выдаёт? Напротив, вот как раз на старом Хроме хорошо было бы тоже добиться запуска.

Консоль JavaScript при каждом нажатии на Trace выдаёт:

Uncaught TypeError: Object . has no method 'repeat' (program):440



Alikberov пишет:

Но, главное же - это генерируемая в canvas схема! Или, простите, парсер тоже ошибку даёт и ничего, кроме самих ASCII-схем не видно?

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



7

Re: Принципиальные схемы в стиле ASCII-дизайн

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

Отредактировано Alikberov (25-04-2017 23:47:28)



8

Re: Принципиальные схемы в стиле ASCII-дизайн

Надо было мне сразу дать ссылку на вариант эмулятора с самопальной реализацией повтора строки. Эта версия у меня для проверки в Opera 12…

Да, этот вариант работает, в том числе и у меня на Опера 12.18.

Думаю, если открыть отдельную тему о моей концепции процессора (не реализации или идеи - они крайне безобразные) и попытаться в дискуссии обсудить некоторые "тонкие" моменты - не очень плохо?)

Открывайте, конечно. Только тут народа мало - постоянных посетителей всего несколько человек. Можете ещё где-нибудь на http://iforum.pro/forum.php , http://phantom.sannata.ru/forum/ , http://nostalgy.net.ru/forum/ попытать счастья, там контингент побольше.