Andrei88 пишет:

а делалась ли поддержка QWERTY-раскладки?

Года три тому назад я переписал родной Монитор на 80% и планировал ввести QWERTY-раскладку.
Но, так руки и не дошли.

Начал переписывать ПЗУ с того, что сделал поддержку изменяемого текстового окна в подпрограмме вывода символа на экран.
Потом переписал директивы D, L и M. Доработал директиву R для поддержки внешних ПЗУ до 16 Мб.

Осталось переписать подпрограммы ввода-вывода магнитофона для прозрачного подсчёта контрольной суммы. А также, клавиатуры, внедрив в неё поддержку переключения между задачами (подобно Alt+Tab).

Однако, силы природы решили меня остановить майским днём, спалив мой тюнер СТВ и мониторы.

P.S.: Исходники того Монитора не утеряны, но недоступны по причине неожиданных BSOD'ов.
Хотя, протестировать мой Монитор и запустить на нём игру "Жизнь" с поддержкой светового пера (мышки) можно по ссылке (нажать G и Enter не забудьте).
(Если после этого запустить из списка Built-in снизу файл "okoshki-demo.rkr", можно ознакомиться с его возможностями.)
Однако, текстовый редактор любителям куда нужнее, чем непонятный переписанный Монитор.


uav1606 пишет:

Выглядит вполне удобно.

Один знакомый подал идею, так как всякие демонстрации и игры сейчас многими делаются, а редакторов текста - совсем мало. Тем более пригодных для работы в ПЗУ.

uav1606 пишет:

Интересно бы на реальном железе проверить, но у меня нет "Радио-86РК" (всё как-то больше "Спектрумы" попадались).

Всё руки не доходят заняться восстановлением своего. Опасаюсь, что РФ2 там могла затереться за давностью лет.

И ещё несколько игр никак в сети не найду, а с плёнки (15 лет назад) вводились с ошибками. Нужно будет найти кассету и попробовать вновь.

  • BALL

  • SKYTHE

  • РАЛЛИ

  • САД

uav1606 пишет:

Кстати, а не хотели бы написать статью в журнал про "Радио-86РК"? Компьютер интересный, но про него практически не писали в журнале... (Разве что о портировании "Охоты на лис" на него.)

Если предлагаете, то можно, в перспективе.

Спасибо!



За весь период использования РЛК мне было известно, как минимум, два редактора:

  • ED.МИКРОН - входящий в состав транслятора ассемблера/дизассемблера (2Кб)

  • WEL - довольно объёмный редактор (5.5Кб)

Однако, все эти интрументы имеют один общий недостаток - посадка на нулевой адрес и низкоуровневая (RST командами) привязка к нему: Просто так их не переместишь!

Некогда прозвучавшая идея (не моя), что не плохо было бы иметь простой экранный редактор прямо в дополнительном ПЗУ (адреса F000-F7FF) не требующий загрузки и с быстрым запуском (директива U Монитора совершает переход на F000), заставил поразмышлять на тему.

Наконец-то, этим месяцем апрелем мне удалось найти в себе отголоски былого 8-битного опыта и тряхнуть стариной.
За основной рабочий инструмент был выбран онлайн-эмулятор РЛК rk86.ru со встроенным ассемблером и поддержкой т.н. светового пера, эмулируемым указателем мыши.

Всегда было интересно, как устроен текстовый редактор оболочки Norton Commander (Volcov Commander) с его функцией Wrap/UnWrap. И с чистого листа пришлось набивать текст листинга на ассемблере под вывод текста из памяти и его прокруткой на длинных строчках (до 255 символов).
Отображение корректных отступов табуляции оказалось очень интересной и сложной темой. А с горизонтальной прокруткой эта табуляция отняла у меня пару дней жёсткой отладки.

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

Запустить всё это безобразие можно по этой ссылке (буфер текста уже предустановлен и есть обращение к коду отладчика, который тестирует работу ввода целых и дробных 24-битных, а также - распознаёт токены).

  • Клавиша F1 или Двойной клик мышью (световым пером) по позиции вызывает контекстное меню с опциями передачи управления пользовательскому коду или компилятору

  • Клавиши F2 и F3 прокручивают текст на экране назад и вперёд

  • Если мышью (световым пером) назад вне области редактирования текста, будет производиться горизонтальная или вертикальная прокрутка

  • Клавиши Delete/End/Home работают стандартно (в конкретном онлайн-эмуляторе)

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

Как сказанно выше, код адаптирован и транслирован в область F000-F7FF и запускается директивой U Монитора.
Перед началом он запросит адрес буфера с редактируемым текстом и следует корректно его ввести директивой X Монитора.

P.S.: Надеюсь, кому-то и пригодится.



29

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

Нa просторах всемирной сети можно найти множество интересных простейших утилит, работающих прямо на странице браузера и не требующих установки.

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

Решил я для собственных потребностей набросать простенький движок по отладке узких мест в MMX-цепочках, так как в том же «Visual Studio» всегда не хватало отката во времени значений регистров.

Предлагаемый здесь отладчик (ссылка не является полноценным ассемблером/эмулятором x86-архитектуры, а лишь собирает журнал изменения регистров (контекст процессора) построчно.
Тем самым, перемещая каретку по строкам листинга, в окошках с регистрами «x64»/«MMX»/«SSE» и «Canvas» синхронно будут отображаться все изменения, соответствующие действию конкретной инструкции на конкретной строке…

Интерфейс утилиты разрабатывался с максимальным акцентом на журналирование всего. Так, открытые пункты меню и выбранный стиль после перезагрузки страницы активируются вновь. Сохраняется содержимое редактируемого листинга (при условии наличия метки «revision ДАТА») и позиция каретки / выделение в нём.
Имеется поддержка подгрузки внешних листингов и стилей (ссылка на пример подгрузки вырви глаз стиля №10), которые также можно редактировать (двойной клик по любому пункту меню стилей загружает их в редактор).

Псевдо-ассемблер имеет собственные особенности и не транслирует текст инструкций в промежуточный псевдо-код, а симулирует исполнение сам на месте. Тем самым, имеются жёсткие ограничения на операциях работы с ОЗУ (которого нет) и циклы.

  • «MOVQ MM1,[high],[low]» имеет два указателя на переменные «high» и «low», которые загружаются в старшую и младшую половины соответственно. Это может быть полезным исключительно для предварительной инициализации регистров. Трюк работает со всеми операциями включительно

  • «.LOG "Any remark or comment"» заносит в журнал любую ремарку или комментарий

  • «.LOG "Specific for_mat_for_mmx_regs» предопределяет форматированный вывод MMX-регистров и заносит запись в журнал

  • «.LOG MM1» или «.LOG MM1,"Specific for_mat_for_mmx_regs"» печатает значение MMX-регистра, разделяя его шестнадцатеричные разряды знаком подчёркивания в указанных позициях

  • «.LOG CLEAR» очищает журнал

  • «.REPEAT» задаёт позицию начала макроцикла

  • «.REPEAT constant» или «.REPEAT variable» с числовой константой или именем переменной производит очередную итерацию макроцикла, пока их количество не достигнет определённой величины

  • «.CANVAS CLEAR» очищает графический холст

  • «.CANVAS MM1» ставит на графическом холсте очередной пиксель в позиции, определяемой в младших 16-битных словах рагистра MM1 как «X=LOWORD(MM1)» и «Y=HIWORD(MM1)», используя цвет из старших 32 бит MM1

  • «.CANVAS MM1,width» ставит на графическом холсте очередной пиксель в позиции, определяемой в младшем 32-битном слове регистра MM1 как виртуальный вектор на адрес пикселя в видеобуфере, с шириной строки, определяемой величиной width

Позицией ползунка можно выбирать конкретную итерацию макроцикла и отслеживать показания регистров в конкретный момент.
Зажимая клавиши «Home»/«End» в любом месте листинга можно прокручивать позицию ползунка и отслеживать историю отрабатывания инструкций внутри каждой итерации макроцикла…

P.S.: Надеюсь, тематически данная поделка отвечает критериям форума и заинтересует любителей старины как концепт к отладке MMX-кода…
В будущем неплохо бы разместить этот симулятор/отладчик в github-репозитории и купить отдельное доменное имя, чтобы наглядно и быстро демонстрировать работу MMX-технологии молодому поколению программистов…



30

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

Здeсь просто концептуальный приём.
Если на любительской практике наиболее доступными контроллерами периферии были ИМС серии i82xx, то ничто не мешает применять и триггеры/регистры серии sn74xx. Однако, концептуально я настоятельно рекомендую не коверкать карту дешифрации портов УВВ и назначать строгие адреса.
Например:

╔════╤════════╤════════════════════════════════════════════════════════════════╗
║ D9 │  ИМС   │ Описание доступа к ресурсам микросхемы через РОН процессора    ║
╠════╪════════╪════════════════════════════════════════════════════════════════╣
║0x06│ KS58006│ D0…D7 - Порты доступа к DTMF                                   ║
║    │1008ВЖ16│                                                                ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x31│ UM91531│ D0…D7 - Порты доступа к DTMF                                   ║
║    │1008ВЖ19│                                                                ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x70│ CMS8870│ D0…D7 - Порты доступа к DTMF                                   ║
║    │1008ВЖ18│                                                                ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x73│  74373 │ D0…D7 - Порты доступа к регистрам                              ║
║    │ 555ИР22│                                                                ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x74│  7474  │ D0…D7 - Порты доступа к триггерам                              ║
║    │ 155ТМ2 │                                                                ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x10│AY3-8910│ D0…D7 - Порты доступа к Синтезатору звука                      ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x49│ YM2149 │ D0…D7 - Порты доступа к Синтезатору звука                      ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x51│TDA5051A│ D0…D7 - Порты доступа к AC-Модему                              ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x06│ DS2406 │ D0…D7 - Порты доступа к 1-Wire                                 ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x08│ DS2408 │ D0…D7 - Порты доступа к 1-Wire                                 ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x20│ DS18S20│ D0…D7 - Порты доступа к 1-Wire                                 ║
╟────┼────────┼────────────────────────────────────────────────────────────────╢
║0x90│ DS9490R│ D0…D7 - Порты доступа к 1-Wire                                 ║
╚════╧════════╧════════════════════════════════════════════════════════════════╝

То есть, использовать можно любые ИМС, но при развязке дешифрации код из индекса конкретной ИМС должен отражаться и в индексе доступа.

Сегодня продолжил разработку эмулятора.
Добавил «Классический Режим» - режим работы ТТЛ-схемы в Logisim, где операция собирается из байтов не целым машинным циклом, а серией циклов.
В этим режиме в дизассемблере наглядно видно, как представлена та или иная команда в реальности.

Автозапуск
Классический режим

P.S.: На данный момент, из-за мелких неполадок ПК, заниматься разработкой получается раз в неделю…

31

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

Тут всё очень просто.

Говоря на языке z80/x86 с командами in/out, мы в регистр «B»/«DH» помещаем индекс ИМС конкретной серии, а в «C»/«DL» уже порт самой ИМС:

DH__DL
_B_ _C_
55h 00h|Порт A i8255 №1
55h 01h|Порт B i8255 №1
55h 02h|Порт C i8255 №1
55h 03h|Режим i8255 №1
55h 04h|Порт A i8255 №2
55h 05h|Порт B i8255 №2
55h 06h|Порт C i8255 №2
55h 07h|Режим i8255 №2
... ... ...
55h FCh|Порт A i8255 №64
55h FDh|Порт B i8255 №64
55h FEh|Порт C i8255 №64
55h FFh|Режим i8255 №64
-----------------------
53h 00h|Канал 0 i8253 №1
53h 01h|Канал 1 i8253 №1
53h 02h|Канал 2 i8253 №1
53h 03h|Режим i8253 №1
53h 04h|Канал 0 i8253 №2
53h 05h|Канал 1 i8253 №2
53h 06h|Канал 2 i8253 №2
53h 07h|Режим i8253 №2
... ... ...
53h FCh|Канал 0 i8253 №64
53h FDh|Канал 1 i8253 №64
53h FEh|Канал 2 i8253 №64
53h FEh|Режим i8253 №64

У меня в роли регистра «B»/«DH» выступает D₉, а D₈ выбирает порядковый номер в системе:

    MOV D9,0x55     ; Выбираем ИМС i8255/К580ВВ55
    MOV D8,1        ; Если в системе несколько i8255, указываем индекс
    MOV [BC1+1],D1  ; Считываем "Порт B" ИМС i8255 и сохраняем в память
    MOV D9,0x53     ; Выбираем ИМС i8253/К580ВИ53
    MOV D8,3        ; Если таймеров много, укажем индекс (1 из 256 штук)
    MOV D3,0xB6     ; Канал #2 в режим №3
    MOV D2,[BC1+1]  ; Младший байт коэффициента
    MOV D2,[BC1+2]  ; Старший байт коэффициента

Если по такой схеме к z80/x86 можно подключить до 64 штук i8253/i8255, то здесь можно подключить до 512 ИМС типа i8253/i8255, до 1024 ИМС типа i8275/i8279, до 128 ИМС типа i8257. То есть, суммарно - примерно до 25 тысяч различных периферийных интерфейсов. Думаю, хватит с лихвой!
Не так ли? roll



32

(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.

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



33

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

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

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

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

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

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

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

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

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



34

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

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

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


uav1606 пишет:

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

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

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


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



ASCII-Демка



37

(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