PDA

Просмотр полной версии : 8-битный дисплейный модуль



rw6hrm
18.08.2016, 12:35
Немножко адаптировал конструкцию Гранта Сирла для параллельной шины и встроил в свою конструкцию (http://qsl.net/rw6hrm/html/z80.htm). Вещь получилось достаточно простая, может быть подключена к любой восьмибитной конструкции (к тому же ЮТ-88), а также к LPT любого компа. Кратко-сумбурное описание тут, http://qsl.net/rw6hrm/html/8bitdisp.htm Пока ещё не поддерживается кириллица, но ковыряю исходники для переделки под альтернативную кодировку (СР866 емнип) насколько позволяет время. Прошу не рассматривать как окончательный вариант, а только как направление движения ;)

Ewgeny7
18.08.2016, 13:15
rw6hrm, Бейсик и двустрочник - наше всё! :)

http://savepic.ru/10986246.jpg

rw6hrm
18.08.2016, 13:19
двустрочник
Хорошо, но мало! ;)

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

Ewgeny7
18.08.2016, 13:28
Удивительное, вообще говоря, ходит рядом. Я как раз второй день прикидываю, как мне видеоадаптер из Меги8 прикрутить к плате с 8088. Вариант на TQFP-ПЛИС мне не понравился, эстетика не устраивает. Мега в ДИПе - самое оно.
И тут ты как раз тоже эту тему поднял :)

- - - Добавлено - - -


тут злая мысль была, чтобы именно эту конструкцию к ЮТу подключить
Хорошая мысль. Только уж не к КР580ВМ80, а лучше к КР1821ВМ85А. Оно так сохранит всё антикварное, зато проще с генератором, питанием, и буферами на шинах. Достаточно одной 580ИР82 (1533ИР22).

rw6hrm
18.08.2016, 13:38
Кстатеговоря, можно будет обратиться за помощью скомпилировать переработанные исходники для Меги? А то АВРстудио в наличии нет, только в тетрадке перелопачиваю...

Кмк, ютовцы не будут использовать эту схему:), ибо неканонiчно

Ewgeny7
18.08.2016, 13:55
Я вот не уверен, что не будут. Там схема уже изрядно переделывалась, а тут вырисовывается комп на пяти микросхемах всего....
Да можно, конечно.
А что не поставишь, раз перелопачиваешь? ;)

rw6hrm
18.08.2016, 14:03
Перелопачиваются файлы, ответственные за "картинки" символов. Тут всё просто - посмотрел на картинку, нарисовал в клеточках, перевёл в хекс (просто..., проблема со свободным временем). Т.е. основная программа не трогается никоим образом. Ставить прогу и разбираться ради одной компиляции... можно, конечно, но лень же велика и необъятна ;)

shoorick
18.08.2016, 18:24
Кстатеговоря, можно будет обратиться за помощью скомпилировать переработанные исходники для Меги? А то АВРстудио в наличии нет, только в тетрадке перелопачиваю...
AVR-студия целиком не нужна, достаточно avrasm2 и инклуд(ы) под конкретную модельку.
----------
На худой конец можно fasm g применить: у него и такое есть, для больших проектов не порекомендую, но лучше, чем в тетрадке - это однозначно ;)

Andrey_Korabelev
25.08.2016, 15:01
Где можно подробнее узнать про
В помощь ему подключён сдвиговый регистр отображаемого символа D21 (чтобы убрать известный в подобных конструкциях джиттер первой строки формируемого изображения).

Error404
25.08.2016, 15:21
Прелестно! Я это соберу для Юзикса Ориона-ПРО. :) Но есть доп. хотелки, для которых уже нужна Мега32. Оно в исходниках?

rw6hrm
25.08.2016, 19:29
Оно в исходниках?
Исходники лежат на странице Гранта Сирла, ссылка в статье была. Оригинал можно использовать без переделки кодовой таблицы.



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

UPD: что-то было тут, http://www.batsocks.co.uk/readme/art_SerialVideo_3.htm

Ewgeny7
25.08.2016, 20:21
Я не наблюдаю никаких недостатков в изображении. Всё ровно и красиво... Это всё же от реализации зависит, "я так думаю!"(С)Мимино.

Andrey_Korabelev
26.08.2016, 15:40
...про джиттер было тут, http://www.batsocks.co.uk/readme/art_SerialVideo_3.htm
Ага, значит дело в невозможности(или сложности) обеспечить одинаковое количество тактов AVR на каждую скан-линию, если использовать прерывания. Правда не очень понятно каким образом внешний регистр выруливает ситуацию, ведь его установку надо тоже синхронно производить...

rw6hrm
26.08.2016, 20:27
В регистр главное запихнуть байт, после чего он сам будет далее выдаваться, чем разгрузит контроллер, хоть немного. Лучше использовать в качестве внешнего регистра именно ИЕ10, поскольку он синхронный, но , по бедности пойдет и ИЕ9, но тогда можно ожидать разноширинность получаемых точек.



не наблюдаю никаких недостатков в изображении
Это хорошо, вот только повнимательнее надо быть ;), ибо при заполнении всего экрана верхняя строчка слегка подёргивается, это хорошо видно на ЖКИ-ТВ. И чем меньше скорость общения с контроллером, тем подёргивания заметнее. Если смотреть через ТВ-тюнер, то эта железка исправляет полученный сигнал, убирая джиттер. Но в общем согласен - это не влияет на общее состояние дел, конструкция реально кульная ;)

Andrey_Korabelev
27.08.2016, 01:36
...Нахмурило. Не в обиду, но вижу несколько противоречий. Но... Пусть лучше рассудят гуру...

Error404
29.08.2016, 00:42
Задумался на тему что встроенных 2к ОЗУ (на одну экранную плоскость) мне мало.
Интересно, сложно ли перепилить проект под, к примеру, Мегу128 или Мегу32 с внешней памятью (http://www.scienceprog.com/adding-external-memory-to-atmega128/)?
В Меге328 под это (внешнюю память) как я понимаю возможности нет.

CodeMaster
29.08.2016, 21:28
Бейсик и двустрочник - наше всё!

Сначала подумал, что это (http://www.sintech.cn/post%20card/ST-MT35%20DDR2%20DDR3%20memory%20card%20tester.html) миникомп, но это оказался двухдисплейный терминал в PCI. Да, не 8-ми битный, а 32-х, но на вырост может интересно будет ;-)

rw6hrm
06.04.2018, 15:42
Прошло два года :v2_dizzy_vodka:, файло доделал. Поскольку Грант Сирл на своей страничке выложил не все нужные для компиляции файлы (понадеялся на новые версии программы у юзверей, а у него стоит AVR Studio 7), то пришлось обратиться к народу и с помощью уважаемого пользователя ВКонтакта Nable80 проблема была решена, за что я публично приношу свою благодарность. Архив прошивки в прицепе.
Итак, что очень неспешно сделано - переделана вторая часть кодовой таблицы на альтернативную кодировку, большей своей частью совместимой с СР866. Можете пользоваться.
Замечание для тех, у кого чешутся ручки, кому не понравится мой шрифт, либо хочется КОИ-ХХ - скачиваете архив со странички Гранта, затем переделываете файлы под названием CGAxxxx.inc под требуемую кодировку или шрифт. Можно использовать два типа шрифтов - альтернативный и КОИ, для этого можно пожертвовать болдом, записав вместо него вторую таблицу. Мало того, можно при старте задать тип таблицы по умолчанию, либо изменив .org'и в начале таблиц, либо поправив несколько строчек в .asm'овском файле (что и как править - читайте на страничке Гранта). Архив переделанных таблиц для опытов также прилагаю (а может я где и скосячил, но не углядел :v2_dizzy_botan: и требуется правка).
Отсутствующий в архиве Гранта заголовочный файл можно скачать тут. (https://raw.githubusercontent.com/DarkSector/AVR/master/asm/include/m328def.inc)

rw6hrm
14.04.2018, 20:04
Дошли руки, завёл с новым знакогенератором. Всё нормально, всё работает. Из одного резистора собрал "эмулятор компа", подсоединил давно собранную ASCII-клаву, потыкал символы (защиты от звона пока нет, посему и куча повторов на экране). Можно присоединять к компику, тем более что с этой платы на него пойдут и тактирующие импульсы в 4 МГц.
Разумеется, что если кому мой вариант клавы не нужен, то одну микросхему можно не ставить. А можете обойтись PS/2-ASCII - адаптером, ссылки ранее давались (но у меня 8-битный выход с клавы).
Если у компа свой такт, то минус ещё одна микросхема. Итого получится всего 7 микросхем.
Фоточки:
https://pp.userapi.com/c844724/v844724228/2a3e3/tXFskqYMQOI.jpg
https://pp.userapi.com/c844724/v844724228/2a3ed/gSsYMwF--U8.jpg
Страничку на сайте подновил.

rw6hrm
16.05.2018, 21:56
Семь из восьми текстовых режимов (40 символов, нормальный, двойной высоты, лениво было делать;), но он симпатичный), если кому-то ещё эта конструкция интересна:
- 40 символов в строке, жирный (25 строк в экране)
- 40 символов в строке, жирный, двойной высоты (12 строк в экране)
- 40 символов в строке, нормальный
- 80 символов в строке, жирный
- 80 символов в строке, жирный, двойной высоты
- 80 символов в строке, нормальный, двойной высоты
- 80 символов в строке, нормальный
Разумеется, что во время работы мы можем свободно построчно переключать режимы отображения.

Shumadan
21.05.2018, 20:30
Эту штуковину как подцепить к Аюше 6502? Управляющий сигнал с GS1 там отсутствует. Или в видеотерминале подцепить его на минус?

rw6hrm
21.05.2018, 20:41
В Аюше свободных чипселектов на D17 начиная с /CS1 и до /CS12, судя по таблице, http://www.qsl.net/rw6hrm/html/6502_sch.htm . Остаётся только выбрать, я бы выбрал /CS12. В этом случае получится адрес BF00H - данные в дисплей (и из клавиатуры), BF01H - проверка регистра занятости дисплея (нажатия клавиши).
Разумеется, что в этом случае придётся делать две правки:
- подпрограммы ввода/вывода символа в дисплейный модуль;
- добавить подпрограмму ввода/вывода в последовательный порт, в том числе и подправить Бейсик (ввести LOAD/SAVE, скажем). Либо, если последовательный порт использоваться не будет, как-то сделать дисковую/карточную память с использованием того же ВВ55.

Но я бы попробовал цеплять эту штуковину не к Аюше, а к ЮТу, но последнего у меня нет ;)

Shumadan
23.05.2018, 14:38
У меня тоже нет ЮТ. Но с ним тоже нужно будет писать подпрограмму.

rw6hrm
28.05.2018, 19:47
Откорректировал схему ввода с клавиатуры (хоть это никому и не нужно). Оно было рабочее "в принципе", теперь работает реально, без сбоев и излишних чтений буфера.

rw6hrm
09.06.2018, 22:35
По поводу графики. Если кто-то думает, что 160х100 - это мало, то для данного адаптера - это полный экран. Да, "пиксели" получаются жирненькие и сочные. Да, курсор надо перед выводом графики отключать (чего я не сделал, записывая видео).
Ссылка на видео - https://vk.com/doc117527293_468090753
В 40 строке программы как раз и сделан попиксельный вывод полной закраски, а потом и стирания экрана. Середина убыстрена в пять раз, чтобы не было печально смотреть на работу Бейсика ;)
Ничто не мешает, скажем, иметь графику в верхней части экрана, а в нижней - текст. Чуть попозже попробую наваять аналогичную прогу на асме и запустить из-под СР/М. А можно и нарисовать что-нить, но я не кульный маляр ;)

Shumadan
09.06.2018, 23:54
Видео недоступно

rw6hrm
10.06.2018, 09:41
Да ладно... Проверил с телефона, планшета и ИЕ8 без реги в ВК - файл скачивается. Ну разве что не скачается у соседей из UA, увы...
Оказывается можно и спрайтиками ворочать, нужно время, чтобы понять и опробовать.

siemensC35
10.06.2018, 10:39
f

Ну разве что не скачается у соседей из UA, увы...
без коментариев
https://s19.postimg.cc/klvohigb3/image.jpg (https://postimg.cc/image/klvohigb3/)
а штука интересная, попала в руки трубка 3ло1и на которой я когда-то видел терминал и вспомнил я тут ЭВМ одного гражданина
здесь трубка не задействована была хотя в то время терминал был бы сопоставми по размерам с этим гробиком
https://s19.postimg.cc/62ojg601r/P5080021a.png (https://postimg.cc/image/62ojg601r/)
можно былобы собирать компьютер аля ЮТ-88 в дипломате

rw6hrm
10.06.2018, 11:14
У меня лежит для таких целей микротелевизор типа Юность с кинескопом в 7 см диагональю (на фотке ЮТа из приложения к ЮТу xD как раз такой), но глазята уже не те...
Тут соседи собрались, посмотрели и требуют комп в аренду попробовать написать демку ;)

Shumadan
10.06.2018, 11:33
Да ладно... Проверил с телефона, планшета и ИЕ8 без реги в ВК - файл скачивается. Ну разве что не скачается у соседей из UA, увы...
Оказывается можно и спрайтиками ворочать, нужно время, чтобы понять и опробовать.
С айпада не скачивает. Просмотрел на компе. Получается попиксельно закрашивается каждое знакоместо?

siemensC35
10.06.2018, 11:36
микротелевизор типа Юность с кинескопом в 7 см
11ЛК трубка ? были такие агрегаты типа Электроника-450 и Мара но живьем не видел
Кстати прототип РКшки имел вроде как видеотоновский терминал, интересно было бы это все состыковать для тестов

rw6hrm
10.06.2018, 11:58
Получается попиксельно закрашивается каждое знакоместо?
Да, это первое, что пришло мне в голову для проверки. Со "спрайтами" там интересней, но нужно время, чтобы понять и осмыслить. Надо будет перевести на русский документацию для удобства.

siemensC35, именно 450-я моделька лежит. Требует замены электролитов, но ещё живая.

siemensC35
10.06.2018, 12:46
rw6hrm, как по мне так ВЛ-100 еще хороший вариант напоминающий 15иэ , корпус металический, хорошо вписываеться в идеологию
Еще ранние шилялисы 40х тоже были в метале но их днем с огнем

rw6hrm
16.06.2018, 12:38
Поскольку дело движется к практическому применению, возникают два взаимосвязанных вопроса. Итак, есть видеоадаптер с разрешением 160х100 в графике, имеющий только команды закрашивания/стирания точек по заданным координатам.
Вопрос первый: по каким формулам рассчитать поточечное рисование линии, окружности и прямоугольника?
Вопрос второй: то же самое, применительно к ассемблеру Z80? ;)
Хочется в имеющуюся версию BBCBASIC'а добавить процедуры рисования применительно к имеющемуся железу. Просто из версии для Z80 графические команды исключены разработчиком, да и не подошли бы они...
Другого Басика просьба не предлагать, ибо именно эта версия настолько заморочена по своим возможностям, что все остальные тупо курят в сторонке.

LeoN65816
16.06.2018, 13:59
Вопрос первый: по каким формулам рассчитать поточечное рисование линии, окружности и прямоугольника?
Алгоритм Брезенхема (https://www.yandex.ru/search/?text=%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D 0%BC+%D0%91%D1%80%D0%B5%D0%B7%D0%B5%D0%BD%D1%85%D0 %B5%D0%BC%D0%B0&clid=9403&lr=11091).

HardWareMan
16.06.2018, 14:00
siemensC35, у ВЛ100 (http://www.rw6ase.narod.ru/00/twcb/elektronika_wl100.html) 16см, у Э-450 (http://www.rw6ase.narod.ru/00/twcb/elektronika450.html) - 11. А у вот у Мары-2 (http://www.rw6ase.narod.ru/00/twcb/mara2.html) всего 8. У меня есть такой, и когда я принес его 20 лет назад в мастерскую где работал, чтобы показать пацанам, они со смехом предлагали померить анодное напряжение обычной Ц-шкой... :)

rw6hrm
16.06.2018, 16:52
Алгоритм Брезенхема.
Угу, спасибо, как раз на Коде Розетты нашлось в полном объёме. Спасибо.

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

rw6hrm
17.06.2018, 22:40
Упс, блин... я-то думаю, почему у меня ESC-последовательности не обрабатываются..., оказывается в обработчике на них стоит заглушка и пока мы не ANSI-совместимы (хотя и декларируемы). Написал автору прошивки, жду ответа...

siemensC35
17.06.2018, 23:35
siemensC35, у ВЛ100 16см, у Э-450 - 11. А у вот у Мары-2 всего 8. У меня есть такой, и когда я принес его 20 лет назад в мастерскую где работал, чтобы показать пацанам, они со смехом предлагали померить анодное напряжение обычной Ц-шкой...
вот самый удобный вариант портативизации слизаный из шарпея каково-то
http://www.rw6ase.narod.ru/00/komb/elektronika8tmb02d.html
я такую руками щупал, но дорого она тогда была

HardWareMan
18.06.2018, 07:59
siemensC35, я такой только на картинках видел. Ну и цитату исправь, а то не понятно .

siemensC35
18.06.2018, 18:39
Ну и цитату исправь, а то не понятно
поправил, кстати есть трубка от Осцилографа где-то таких размеров но задница аля 61ЛК5ц . ожет поробовать терминалировать ее к потрохам ВЛ100/Ц407 или затея марная для терминала ?

HardWareMan
19.06.2018, 07:33
У осциллотрубок отклонение электростатическое. А нужно электродинамическое. Пластины внутри будут мешать. С другой стороны, если доработать модуль развертки, то все получится. ;)

rw6hrm
19.06.2018, 23:07
...мож лучше подскажете по теме алгоритм обработчика ANSI-последовательностей?

TomaTLAB
20.06.2018, 00:12
Пластины внутри будут мешать. И с фокусировкой у них не ахти. Без хорошего магнитного экрана луч в кляксу размывает.

siemensC35
29.06.2018, 15:26
А не подскажете если повторять на базе ардуины то поидеи генератор на рассыпушке не делаеться ( в ардуине он там на платке есть свой) и как это дело отвяываеться от клавиатуры непойму ( д3.4 4.3 4.4 2.2 4.1 5.1 убрать ? ) и можно например ИР13 привязать выходя из наличия онных в кармане ?

rw6hrm
29.06.2018, 16:43
Если на базе ардуины (если не ошибаюсь - Nano), то программируется внутренний генератор и убираются все бутлоадеры. В этом случае желательно, чтобы ИР10 была из серии 74HCT, иначе напряжения на её раскачку не хватает. Или ставить между атмегой и ИР10 буферный каскад до ТТЛ-уровня. Просто тут косяк был в том, что на 16 МГц генерация встроенного генератора Атмеги была не очень устойчивая и слабая по уровню, рука пролетела - и сорвалось. Или не запустилось при подаче питания. Вообще в первоначальном оригинале Риктора стоял внешний одночиповый генератор, так что проблема, скорее всего, известна, ибо атмега разработана как малопотребляющий чип, не обязанный дополнительно тянуть внешние схемы.
Отвязаться от ненужного - просто не собирать части схемы, обведённые голубым и жёлтым квадратами. Останутся свободные элементы в чипах. Либо на оставшихся элементах ЛА8 и ЛЛ4 сделать аналог одного триггера ТМ2 для экономии (по сути нужен обычный делитель на 2, тактируемый по сбросу).
Входной регистр может быть любой, позволяющий записать и защёлкнуть данные на выходе по высокому уровню.
ИР10 можно заменить на ИР9 (с переделкой ножек), но возможна разноширинность получаемых точек (поскольку ИР9 асинхронная), что повлияет на "красоту" изображения.

- - - Добавлено - - -


( д3.4 4.3 4.4 2.2 4.1 5.1 убрать ? )
Вот как раз на всех них собрано определение занятости видеовыхода. Если чип занят обработкой/выводом изображения, то на выходе Д3.4 при его опросе будет низкий уровень. Т.е., прежде чем кинуть байт в регистр Д7, сначала надо опросить занятость, иначе байт пропадёт.
У меня на Z80 это реализовано примерно так:

conoutB1: IN A,(SIOB_C) ; Читаем статус байт из Д3.4 - D1=1 передача закончена
AND 00000010B ; маска проверки бита 1
JR Z,conoutB1 ; лупим, пока результат маски 0
POP AF ; Вытаскиваем нужный байт из стека
OUT (SIOB_D),A ; Выдаем его в видеоадаптер в Д7
RET

rw6hrm
01.01.2020, 19:50
...в общем, народ,... хотел тут запилить вам подарок к НГ, но понял, что поставленная задача на сегодняшний момент не решается, ибо понимания не хватает. А задача в принципе проста - впихать обработчик ANSI последовательностей в Атмегу для более быстрой обработки и освобождения места в биосе процессорной платы, ну и чтоб была некая аппаратная независимость и получился бы однокорпусный железный VT-100 эмулятор дисплея. Может даже ценой исключения из существующей прошивки части (или всех) неиспользуемых знакогенераторов и доп. функций (ну действительно, зачем нужны 40 символов в строке, двойная высота, NTSC-стандарт сигнала, 2/4-битный интерфейс и т.п). Сишный код простого обработчика есть, но вот совместить его с ассемблером основной программы я ниасилил. Мож кто подскажет, как это сделать? Спинным мозгом чувствую, что дело в инклудах, но как...

С цветом пока решать рановато, одной атмегой не обойтись, поэтому это не обсуждаемо.

Tronix
01.01.2020, 21:02
А задача в принципе проста - впихать обработчик ANSI последовательностей в Атмегу для более быстрой обработки и освобождения места в биосе процессорной платы, ну и чтоб была некая аппаратная независимость и получился бы однокорпусный железный VT-100 эмулятор дисплея

Странно, у Гранта на странице написано, что основные ASCII-последовательности поддерживаются. Я ради интереса качнул сорцы - а там никакой поддержки нет.

PS: А из Аюши их точно надо выпилить, и записать в ПЗУ CP/M BIOS, чтоб ОЗУ не кушала...

rw6hrm
01.01.2020, 21:31
У Гранта обработчик АНСИ работает в первом чипе, ответственном за клаву и связь (и вот там-то как раз сорцы на Сях!). В видеочипе свои команды, в которые первый чип и перекодирует АНСИ. В Аюше как раз таки преобразование управляющих кодов и включено в биос (только VT-52), и оно работает, однако 5 МГц Z80 ни в какое сравнение не идут с 16 МГц атмеги, форматированный вывод всё же на глаз подтормаживает, ну и дополнительный килобайт памяти контроллера лишним не будет в случае перекодировки в атмеге. Фишка в том, что в этом случае терминал будет самодостаточным и не требовать каких-либо движений со стороны контроллера, поэтому станет применимым в любой 8-битной конструкции.
Конечно, можно поставить ещё один чип-перекодировщик, но это же не в нашем стиле, верно? ;)

Tronix
01.01.2020, 22:06
Конечно, можно поставить ещё один чип-перекодировщик, но это же не в нашем стиле, верно?

Конечно. Лично я не вижу абсолютно никаких сложностей впилить обработчик пары-тройки самых популярных ESC' последовательностей в ProcChr.inc (ну типа переместить курсор, очистить экран и что там еще, третье). С виду - все просто как пять копеек, можно сделать. Но я у себя на Аюше спустя полгода пока еще не проверил видеовыход, то есть это хороший показатель, насколько он мне нужен -) Сегодня уже поздновато, а завтра если дела не навалятся можно попробовать, но тестировать придется Вам, у меня Аюша на работе, считает число Пи до миллионного знака -)

rw6hrm
01.01.2020, 22:14
считает число Пи до миллионного знака -)
...вах... Потом поделитесь, сколько времени это дело заняло и на каком знаке пошло расхождение ;) Но в соответствующей теме.
Спешить не надо, поскольку надо определиться со списком перекодируемых последовательностей. Стартово можно взять у Гранта, но просятся к добавлению ещё несколько. Второе - там, смотрю, ORG'ами прибиты адреса нахождения знакогенераторов, возможно потребуется их подкорректировать. Или что-то из них убрать, если не будет хватать места. Третье, связанное - если не трогать знакогенераторы, то из текста можно выкинуть переключение в НТСЦ, 4-бит интерфейс и I2C...

Tronix
02.01.2020, 17:13
Второе - там, смотрю, ORG'ами прибиты адреса нахождения знакогенераторов, возможно потребуется их подкорректировать. Или что-то из них убрать, если не будет хватать места. Третье, связанное - если не трогать знакогенераторы, то из текста можно выкинуть переключение в НТСЦ, 4-бит интерфейс и I2C...

Вообщем, вкурил немного сорцы. Там значит так - во-первых, почти вся свободная SRAM занята. 2000 байт отводится на видео-память, 25 байт отводится на память аттрибутов. Это уже 2025 байт. Всего у атмеги 2048 байт. Оставшиеся 23 байта отводятся под стек. Далее, все рабочие переменные хранятся в регистрах, благо что их 32 штуки, что офигеть как много после x86. Но они вообщем-то все тоже заняты, все 32 регистра. Там есть три регистра или переменных, коли угодно, Temp, Temp1 и Temp2, которые можно использовать не боясь порушить всю остальную логику, но этого по грубым прикидкам маловато для парсера ESC-последовательностей.
Из хорошего - памяти для программы много, чуть меньше половины из 32 Кб свободно, *****кодить можно от души, с размахом, так сказать. Поэтому шрифты нисколько не мешают, можно наоборот туда еще всяких напихать для кучи.

Возвращаясь все-таки к парсеру ESC-последовательностей. Для стека я думаю очень жирно 23 байта, поэтому под себя можно запросто байт 10 отобрать. Этого должно хватить на переменные, и что бы не лезть и не пересекаться с оригинальным обработчиком кодов управления. Еще надо конвертить строковые числа в десятичные, для разбора ESC-установить курсор в X,Y.

Вообщем, с виду то просто, но с нюансами как всегда -)

rw6hrm
02.01.2020, 18:05
Парсер для Z80 у меня использует две дополнительные ячейки ОЗУ для VT-52 и три для VT-100, как раз для хранения переменных. А вот стопорнулся как раз с переделкой позиционирования курсора. Если с перекодировкой строки в десятичные сложности не было (в ПЗУ есть кусок аналогичный, использовал его как подпрограмму), то далее пошли нюансы ;). К примеру, установка курсора в домашнее место может быть как Esc[H, так и Esc[0;0H, так и Esc[00;00H, а также f вместо Н. И все варианты нужно предусмотреть. Тут меня и поплющило...

Tronix
03.01.2020, 09:56
К примеру, установка курсора в домашнее место может быть как Esc[H, так и Esc[0;0H, так и Esc[00;00H, а также f вместо Н

Да это то ничего, подозреваю что еще может быть Esc[12; или Esc[12H и тому подобные приколы. Но, в целом, вроде набросал как мог. Ни о какой культуре и изяществе кода речи не идет, ни о какой оптимизации тоже, это просто должно работать, вот и все. Ассемблер AVR первый раз в жизни вижу, чего вы от меня хотите. Должно работать это:

Esc[Line;ColumnH or Esc[Line;Columnf moves cursor to that coordinate
Esc[J=clear from cursor down
Esc[1J=clear from cursor up
Esc[2J=clear complete screen
Esc[K = erase to end of line
Esc[1K = erase to start of line
Esc[L = scroll down
Esc[M = scroll up
Мог попутать столбцы и колонки в команде установке курсора. Проверять как я уже говорил не на чем, поэтому без претензий -)

rw6hrm
03.01.2020, 18:45
Ок, спасибо. Только биос мне надо будет переписать, чтобы выкинуть внутренний обработчик...

UPD. Вчерновую работает. Но койчто надо доделать... Остальное в личке.

ВитГо
13.07.2020, 09:34
может быть переписать модуль на stm32 ? там и частота выше и памяти больше

rw6hrm
14.10.2020, 22:25
ВитГо, получилось?

rw6hrm
07.01.2021, 22:10
Анонсирую свою работу по доделке адаптера на ближайшие полгода - использование более "жирного" чипа для цветной картинки. Пока цвет планируется только для отображаемых символов или графических пикселей, без цвета фона. И из-за того, чип выбран ДИПовский (40 ног), он, к сожалению, будет подороже.., но ведь мы платим за видеокарту две трети цены всего компутера? ;)

Error404
07.01.2021, 23:06
У Гранта обработчик АНСИ работает в первом чипе, ответственном за клаву и связь (и вот там-то как раз сорцы на Сях!). В видеочипе свои команды, в которые первый чип и перекодирует АНСИ. В Аюше как раз таки преобразование управляющих кодов и включено в биос (только VT-52), и оно работает, однако 5 МГц Z80 ни в какое сравнение не идут с 16 МГц атмеги, форматированный вывод всё же на глаз подтормаживает, ну и дополнительный килобайт памяти контроллера лишним не будет в случае перекодировки в атмеге. Фишка в том, что в этом случае терминал будет самодостаточным и не требовать каких-либо движений со стороны контроллера, поэтому станет применимым в любой 8-битной конструкции.
Конечно, можно поставить ещё один чип-перекодировщик, но это же не в нашем стиле, верно? ;)

Как вариант, сдернуть (например, из Chibi-term (https://github.com/mastmees/STM32F030F4-VGA/blob/master/STM32F030F4/Firmware/ChibiTerm/ansi.c)) готовую реализацию ANSI/VT52, и уже по аналогии расширить до VT100.

PS. Кажется, вышел некропостинг, попутал январь 2020 с 2021 по привычке. :)

kotsergoff
13.04.2023, 18:53
Все-таки попробую поднять тему :)
Загорелся идеей сваять этот адаптер для своих нужд.
Использую платку ARDUINO Pro MINI как переходник (нету у меня в дипе АТМЕГИ), благо у нее все нужные ноги выведены наружу, только для клока ИР10 кинул перемычку с платы.
С небольшими бубнами с фьюзами и выходным каскадом появилася картинка (ура!). Но... почему-то выход идет в NTSC, в PAL никак не хочет. И резистор на 13 ногу пробовал ставить, и уже в исходнике выбор и установку NTSC закомментировал, без изменений :(
И еще как-будто дрожание по строкам идет (четные-нечетные дублируются)
Телек использую ЖК, он мультисистемный, на обычном чб кадры прыгают, не разберешь текст(оно и понятно, нету в чб поддержки NTSC)
Можете пнуть в каком-нибудь правильном направлении, что может быть?
Исходники смотрел, вроде больше обработки PAL/NTSC не нашел. Но в асме для авр пока еще не очень силен, тока разбираюсь...
Буду благодарен за любую помощь :-)

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

kotsergoff
14.04.2023, 18:46
сегодня попробовал поменял кварц на проце, откинул клок от ИР10, внешний генератор на 16МГц подключал, все равно телек пишет NTSC, и на китайском чб кадры скачут....
Где же собака порылась? Намекните хотя бы....

rw6hrm
15.04.2023, 17:53
<offtop>...хрен зайти на форум из-за этой грёбаной проверки... Всё у нас через задницу делается, как обычно,..</offtop>
Может проблемы от того, что ардуина по своей сути работает на 3.3 Вольта (не ардуинщик, но предположу)? И при запуске программе что-то не нравится, она ж сначала опрашивает пины установок, а потом запускается в майн... И 10 кОм установочных резисторов при старте относятся только к 5-Вольтовой версии контроллера.
ДИПовские чипы, кстати, спокойно покупаются, от 200 руб у кетайцев до 400-450 руб в России.
Но меня больше интересует замена на
lgt8f328p, оно вроде бы по напряжениям совместимо. Но не в дипе...
Не гарантирую, что смогу вновь зайти на форум в ближайшее время, так что дальнейших ответов следует подождать ;)

kotsergoff
15.04.2023, 20:10
\\Может проблемы от того, что ардуина по своей сути работает на 3.3 Вольта (не ардуинщик, но предположу)?\\
От ардуины там только плата, использованная как переходник(я тоже не ардуинщик :-)), чип я запаивал новый(ATMEGA328P TQFP), он 5 вольтовый и питание подается напрямую на него(прозвонил на всякий случай)
\\ И 10 кОм установочных резисторов при старте относятся только к 5-Вольтовой версии контроллера.\\
Резистор она видит, судя по изменению картинки, но ведь по умолчанию, без резистора должен быть PAL, я так понимаю...
\\ДИПовские чипы, кстати, спокойно покупаются, от 200 руб у кетайцев до 400-450 руб в России.\\
У кетайцев долго ждать, и кстати, как-то брали у них, оказались перемаркированные ATMEGA8 :-(, а тут что было в наличии, на том и попытался сделать
Но это ладно, чуть не по теме.. Поищу в дипе, попробую на нем собрать...
Но все равно спасибо!

rw6hrm
15.04.2023, 20:33
Так и 328-е попадались с косым ID, вроде работает, но не так, ребята... Почему и посматриваю на лгбт328 xD
UPD. Почти тот же код пробовал на Атмеге32 (переназначал порты) - всё работало идеально ( и 32-я оказалась вполовину дешевле 328-й).

А, а делитель на 8 фьюзами отключали?

kotsergoff
16.04.2023, 10:06
А, а делитель на 8 фьюзами отключали?

Да, конечно. Единственное, шью по ISP, этот фьюз у меня включен

- - - Добавлено - - -


Так и 328-е попадались с косым ID, вроде работает, но не так, ребята...
Да вот, к сожалению 328 у меня одна, проверить больше не на чем :-(
Найду еще, попробую на другом чипе

kotsergoff
22.04.2023, 13:58
В общем купил новую Атмегу в дипе, собрал пока без ир10, только синхра, подключаю к телеку и опять NTSC... :v2_dizzy_facepalm:
А есть разница между 328 и 328Р? У Гранта в схеме указана 328, у вас в схеме стоит 328Р и у меня 328Р. В программере пробовал прошить как 328, он ругается на ID...
Может тут где-то подводный камешек?

- - - Добавлено - - -

По даташиту вроде они одинаковые...

vegapiratradio
22.04.2023, 20:54
А есть разница между 328 и 328Р?
P это pico power т.е. низкое энергопотребление.