nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 01:59



Reply to topic  [ 79 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next
nedoText/SX - вывод текста 80x25 на экран ТВ с помощью SX28 
Author Message
Novelist

Joined: 24 Dec 2004 13:58
Posts: 39
Location: UK
Reply with quote
Post 
Эта плата разработана для другого приложения и я ее взял только как временную макетку для PIC24FJ256DA***. Там есть еще масса всякой периферии которую я не использую.

В принципе задействованных устройств всего три - дисплей, PIC и кварц. Ну и конденсаторы развязки. PIC24 работает на своей штатной тактовой частоте 32МГц т.е. 16MIPS. USB требует фиксированной частоты 96МГц которая жесткой связана с частотой ядра и не дает свободно выбирать скорость процессора. Я использую USB для диагностики и наблюдения за работой i8080.

Хочется замутить или VGA терминал с USB клавиатурой или полноценный CP/M компьютер на одной микросхемке. Пока балуюсь и прикидываю что к чему.

Всегда писал и пишу на ассемблере :D

P.S. Пример разводки PIC24FJ256GA206 скоро выложу - тут один джентельмен нарисовал платку для демо-партии и в ней как раз кроме чипа, резисторной матрицы и VGA и USB разъемов больше ничего нет.


Last edited by lbodnar on 29 Jun 2015 05:12, edited 1 time in total.



27 Sep 2014 14:27
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post Re:
Shaos wrote:
Поучаствовал с этим девайсом в SX конкурсе:

Image

Ничего не получил, зато разместился на сайте Parallax.com ;)


Страничка с конкурсом перестала существовать какое-то время назад - теперь только в архиве (и без картинок):

https://web.archive.org/web/20080906101956/http://www.parallax.com/tabid/591/Default.aspx

_________________
:dj: https://mastodon.social/@Shaos


06 May 2015 18:36
Profile WWW
Senior

Joined: 23 Feb 2015 15:37
Posts: 151
Location: OMS
Reply with quote
Shaos, если использовать твою схему для реализации на PIC32, но и с изменениями, ругать будешь?


29 Jun 2015 05:10
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Odin P. Morgan wrote:
Shaos, если использовать твою схему для реализации на PIC32, но и с изменениями, ругать будешь?


А зачем? ;)

PIC32 и без схемки всё тоже самое умеет делать :)

_________________
:dj: https://mastodon.social/@Shaos


29 Jun 2015 06:11
Profile WWW
Senior

Joined: 23 Feb 2015 15:37
Posts: 151
Location: OMS
Reply with quote
Shaos wrote:
Odin P. Morgan wrote:
Shaos, если использовать твою схему для реализации на PIC32, но и с изменениями, ругать будешь?


А зачем? ;)

PIC32 и без схемки всё тоже самое умеет делать :)

Ну дык по неведению спрашиваю, пока ещё пика на руках нет :)


29 Jun 2015 09:16
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post Re:
Shaos wrote:
Shaos wrote:
2007: Сегодня спаял платку для недотекста с регулятором напряжения 7805 с радиатором, красным светодиодом и всеми необходимыми разъемами - LPT, S-Video и гнездом для внешнего питания. Эта платка втыкается в NedoText и позволяет пользовать девайс не прибегая к помощи бредборд:

Image

2013: Есть мысль реанимировать этот проект, объединив всё запечетлённое на фотке в одну плату (внеся все необходимые иcправления).
Тогда это будет законченный девайс - текстовая видеокарточка nedoText с LPT-интерфейсом ;)

Достал эту кучку платок, сдул пыль, воткнул проводочки и оно заработало (выводя случайные символы из ОЗУ) - как будто и не прошло почти 12 лет с последнего включения :roll:


Attachments:
nedoText-2019-02-23.jpg
nedoText-2019-02-23.jpg [ 189.6 KiB | Viewed 11425 times ]

_________________
:dj: https://mastodon.social/@Shaos
23 Feb 2019 18:56
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post Re:
чото не заводится у меня драйвер параллельного порта на современном линухе - видать пора уже забыть про LPT :(

UPDATE: таки настроил параллельный порт - у меня PCI-ная платка с LPT, так вот ей надо было опции задать в /etc/modprobe.d/parport_pc.conf:
options parport_pc io=0xe030 irq=20
и вручную подгрузить модули parport_pc, parport, ppdev через modprobe (и убрать модуль lp если есть)

Shaos wrote:
Взаимодействие с девайсом предпологается осуществлять по 10 сигналам (плюс земля): D0, D1, D2, D3, D4, D5, D6, D7, IFLAG, OFLAG (из них выходной только OFLAG, а все остальные - входы).

Внешнее устройство ждёт когда OFLAG=0, затем выводит в D0...D7 нужный код и взводит IFLAG=1, далее ждём когда OFLAG=1 и сбрасываем IFLAG=0. Пока не станет OFLAG=0 новый код засылать нельзя.

к системе на Z80 это можно подключить скажем так - IFLAG будет инвертированным сигналом выбора порта, а OFLAG будет инвертироваться и подаваться на !WAIT процессора (если лениво делать програмный опрос занятости)

UPDATE: хотя нет, надо IFLAG защёлкивать пока недотекст не прочитает байт и это может быть дольше цикла обращения от Z80...

P.S. Смотрю на схему недотекста и непонимаю что такое идёт на JP7:



JP6 это IFLAG, OFLAG и земля - возможно JP7 это запасной инвертированный /IFLAG? в текущем подключении этот вход никак не используется (т.е. там всегда "1" т.к. подтянуто резистором к +5В)

Вот описание ног SX-28 из исходника прошивки (порт A это JP1, порт B это JP2 и порт C это JP3):
Code:
I/O pins:
; RTCC - not connected
; RA0 - output SYNC (video synchro)
; RA1 - output OFLAG (device busy flag)
; RA2 - output _LD (load byte to shift register)
; RA3 - output _PE (load zero to counter-divider by 6)
; RB0 - output ADR0 (bit 0 of memory address)
; RB1 - output ADR1 (bit 1 of memory address)
; RB2 - output ADR2 (bit 2 of memory address)
; RB3 - output ADR3 (bit 3 of memory address)
; RB4 - output DADR (0 - memory, 1 - registers)
; RB5 - output _RD (read from memory or input register/buffer)
; RB6 - output _WR (write to memory or address register)
; RB7 - input IFLAG (data ready flag)
; RC0...RC7 - input/output DAT0...DAT7

_________________
:dj: https://mastodon.social/@Shaos


23 Feb 2019 20:29
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Shaos wrote:
Смотрю на схему недотекста и непонимаю что такое идёт на JP7:



JP6 это IFLAG, OFLAG и земля - возможно JP7 это запасной инвертированный /IFLAG? в текущем подключении этот вход никак не используется (т.е. там всегда "1" т.к. подтянуто резистором к +5В)

Вспомнил - это перемычка NTSC/PAL :)

PAL выбирается путём установки перемычки в JP7 - просто в режиме чтения регистров (или всё-таки памяти?) вместо IFLAG внутрь SX-28 идёт состояние этой перемычки

Про это в самом первом сообщении этого топика написано ;)
Shaos wrote:
в окончательной конструкции (с разбиением на две платы - NedoCPU-28+ и непосредственно сам NedoText) будет 9 чипов (добавится ещё один 74LS00 для логики чтения состояния переключателя PAL/NTSC).


P.S. вот про растактовки PAL: http://www.nedopc.org/forum/viewtopic.php?p=82075#p82075

_________________
:dj: https://mastodon.social/@Shaos


24 Feb 2019 10:33
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Shaos wrote:
Вставив в NedoText v1 плату NedoCPU-28+ мы получаем рабочее устройство:

Image

Процесс программирования через SX-Blitz (TTL-осциллятор должен быть вынут):

Image

Тестирование устройства через LPT:

Image

По прошествии 12 лет собираю второй текстовый модуль - на этот раз он будет прямым :roll:


Attachments:
nedoText-2019-02-26.jpg
nedoText-2019-02-26.jpg [ 132.71 KiB | Viewed 11383 times ]

_________________
:dj: https://mastodon.social/@Shaos
26 Feb 2019 23:49
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Надо посмотреть возможно ли в существующий код добавить частичную поддержку команд терминала VT52 и скролл...

https://gitlab.com/nedopc/pix/blob/master/SX/sx-video.asm

P.S. Расшифровываю свой запутанный код 12-летней давности :roll: По-идее скрол сделать несложно - надо просто вместо одного счётчика строк, который одновременно используется при формировании адреса вычитки строки из внешнего ОЗУ, сделать два - один будет считать физические строки в кадре, а второй - использоваться для формирования адреса - в этом случае можно будет начинать видимый кадр с любой строки из памяти (не обязательно первой как сейчас). А вот со спец-символами несколько сложнее - входной байт проверяется в конце каждой строки и сейчас оно укладывается в 20 пикселов (120 тактов). По идее там существует запас ещё тактов 100, ну или перенести приёмку символов из прерывания в основную программу, т.к. она сейчас у меня выглядит вот так (после инициализации периферии):
Code:
loop:   nop
   nop
   nop
   goto   loop


P.P.S. Описываю словами как там в программе всё устроено - прерывание вызывается с частотой строчной развёртки и далее программа смотрит номер текущей строки - если это от 0 до 199, то это видимый кадр, иначе в зависимости от номера строки формруются те или иные синхропоследовательности. В случае видимого кадра - каждая текстовая строка занимает 8 графических строк и первая графическа строка всегда пустая, т.к. во время неё процык лезет во внешнее ОЗУ, чтобы вычерпать оттуда очередные 80 символов, которые будучи запомненными в регистрах данных процессора, используются следующие 7 строк, чтобы нарисовать видимое представление этих 80 символов. Ну и как я чуть выше написал, в конце каждой строки порядка 20 пикселов тратится на вычитку пришедшего символа, отработку команд позиционирования курсора 1 и 2, а также смещение курсора вправо, и если надо - в низ, после "печати" пришедшего символа...

P.P.P.S. Сейчас если слать кучу символов в недотекст, то они будут печататься слева-направо сверху-вниз, заполняя все строки, пока не добегут до правого нижнего угла - потом координаты "курсора" обнулятся и заполнение продолжится опять с левого-верхнего угла. При наличии скрола весь экран при добегании до конца должен будет сдвинуться на одну текстовую строку вверх, при этом снизу появится то, что раньше было сверху (бывшая первая строка) и текст будет "печататься" в этой новой нижней строке слева-направо, затирая собой то, что было там до этого. Это не совсем то, как должен выглядеть настоящий терминал - настоящий терминал должен сдвинуть экран и добавить снизу ПУСТУЮ строку, а не копию первой, поэтому между хостом и этой платкой придётся ставить интеллектуальную прослойку (пик), который будет сам реализовывать терминал V52, общаясь с недотекстом всё тем же самым способом как и сейчас, а после скрола пик пошлёт 80 пробелов, чтобы затереть нижнюю строку и только потом будет посимвольно печатать...

P.P.P.P.S. Вот листинг выложил: https://gitlab.com/nedopc/pix/blob/master/SX/build_1_0_0/sx-video.lst - как видим места в прошивке практически не осталось:
Code:
015E   0000           00601 loop:   nop
015F   0000           00602         nop
0160   0000           00603         nop
0161   0B5E           00604         goto    loop
                      00605
0180                  00606         org     0x180
                      00607 include "sx-font.inc"
                      00001         ; 0x20 ' '
0180   0000           00002         data 0x00
0181   0000           00003         data 0x00
0182   0000           00004         data 0x00
0183   0000           00005         data 0x00
0184   0000           00006         data 0x00
0185   0000           00007         data 0x00
0186   0000           00008         data 0x00
0187   0000           00009         data 0x00
Между кодом и шрифтом (который идёт до самого конца) осталась дырка в 30 байт...

_________________
:dj: https://mastodon.social/@Shaos


01 Mar 2019 20:50
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Вот тест загнал в nedoText, чтобы все символы поглядеть:

Attachment:
nedoText-ASCII.jpg
nedoText-ASCII.jpg [ 112.13 KiB | Viewed 11301 times ]


P.S. Исходник генератора текста под спойлером:
 test.c
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
 int i,j;
 FILE *f = fopen("text","wt");
 if(f==NULL) return -1;
 fprintf(f,
         "nedoText test ASCII table 5x7 font  http://nedoPC.org                           ");
 fprintf(f,
         "=====================================================                           ");
 fprintf(f,
         "      x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF                           ");
 for(j=0;j<16;j++)
 {
   fprintf(f,"0x%2.2X ",j<<4);
   if(j>=2)
   {
      for(i=0;i<16;i++) fprintf(f,"  %c",(j<<4)|i);
      fprintf(f,"                           ");
   }
   else for(i=5;i<80;i++) fputc(' ',f);
 }
 fprintf(f,
         "                                                                                ");
 fprintf(f,
         "Sorry, last line is garbage (and it's expected)");
 fclose(f);
 return 0;
}

_________________
:dj: https://mastodon.social/@Shaos


02 Mar 2019 15:45
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Вместе с телеком это выглядело так:


Attachments:
nedoText-ASCII-TV.jpg
nedoText-ASCII-TV.jpg [ 94.3 KiB | Viewed 11296 times ]

_________________
:dj: https://mastodon.social/@Shaos
02 Mar 2019 17:35
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Shaos wrote:
- HM6116P-7 - статическая память на 2К со скоростью работы 70нс;

У меня было две такие микросхемы, но вторая плохая - там пара битов всегда в 1 выдавалось, а мне надо собирать второй экземпляр (который плоский) - взял другую 2К ОЗУ постарше, которую я использовал в nedoVideo в 2004 году - тошибовская TMM2016AP-12 (которая 120нс) и как оказалось она работает ничуть не хуже чем HM6116P-7 (которая 70нс) т.к. по ногам они абсолютно одинаковые :)

_________________
:dj: https://mastodon.social/@Shaos


02 Mar 2019 19:33
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Вместе с телеком это выглядело так:

Последняя строка - "гарбадж" - это просто выход за знакогенератор?

_________________
iLavr


02 Mar 2019 23:27
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Lavr wrote:
Shaos wrote:
Вместе с телеком это выглядело так:

Последняя строка - "гарбадж" - это просто выход за знакогенератор?

Да - она тупо не влезла в код, если исходник поглядишь ;)
По идее из нее только первые 2 символа были бы полезны (Ё и ё) - остальные кто как делал
P.S. Судя по повторяемости мусора после перезагрузки, оно видимо заворачивается на начало кодовой памяти и оттуда байты берёт при переполнении...

_________________
:dj: https://mastodon.social/@Shaos


03 Mar 2019 01:33
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 79 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6  Next

Who is online

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