nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 23 Sep 2018 23:55



Reply to topic  [ 102 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7  Next
Arduino Nano - эмулятор компьютера под управлением ОС CP/M 
Author Message
Maniac

Joined: 01 Oct 2007 11:30
Posts: 268
Location: Ukraine
Reply with quote
Интересный проект :)

А почему бы не навесить ps2 на nano? Вроде ножки свободные есть. Или у nano уже ресурсов не осталось?

rw6hrm wrote:
Если появится режим рус/лат, хотя бы через нажатие ScrollLock - хотелось бы алгоритм посмотреть. Именно алгоритм, программно не нужно.

Алгоритм там не сложный. Опрашиваем в цикле ps2. По нажатию/отпусканию физ кнопки (индекс масива) получаем какой угодно из массива код. И делаем с ним, что нам захочется. Ну, там типо кому то отправляем. Я для этих целей прикупил микруху MT8816 – матрица ключей 8х16.

Светодиоды не как не связаны с получаемым кодом. Зажигать их можно просто отправляя команду ps2. Ну и конечно если нажали модификатор рус/лат (Alt), подменяем массив и получаем коды от туда. И по модификатору светодиод зажигаем.

Как то так общение с ps2 происходит.
 
void kbd_init()
{
unsigned char ack;
unsigned char val;

kbd.write(0xff); // send reset code
ack = kbd.read();
Serial.println(ack, HEX);
val = kbd.read(); // self test is done
Serial.println(val, HEX);

//kbd.write(0xed);
//ack = kbd.read();
//kbd.write(0x07);
//ack = kbd.read();

kbd.write(0xf0); // читаем текущим режим
ack = kbd.read();
kbd.write(0x00);
ack = kbd.read();
Serial.println(ack, HEX);
ack = kbd.read();
Serial.println(ack, HEX);

Serial.println();

kbd.write(0xf0); //устанавливаем режим (mode) 3.
ack = kbd.read();
kbd.write(0x03);
ack = kbd.read();

Serial.println();

kbd.write(0xf0); // читаем текущим режим
ack = kbd.read();
kbd.write(0x00);
ack = kbd.read();
Serial.println(ack, HEX);
ack = kbd.read();
Serial.println(ack, HEX);

kbd.write(0xf8); // Отключаем авто повтор (только для режима 3)
ack = kbd.read();
}

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


Last edited by Alekcandr on 30 Aug 2018 04:11, edited 1 time in total.



30 Aug 2018 03:49
Profile
Fanat
User avatar

Joined: 21 Mar 2017 07:37
Posts: 66
Location: BY
Reply with quote
Alekcandr wrote:
Интересный проект :)

Спасибо!

Alekcandr wrote:
А почему бы не навесить ps2 на nano? Вроде ножки свободные есть. Или у nano уже ресурсов не осталось?

В PS/2 клок генерит клавиатура, а прерывания нельзя использовать - нарушится генерация ТВ-сигнала. Можно замутить на регистрах сдвига etc, но "что-то лень". А 8-я слабее 328-й, поэтому в логику проекта укладывается.

Alekcandr wrote:
Светодиоды не как не связаны с получаемым кодом. Зажигать их можно просто отправляя команду ps2.

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


30 Aug 2018 03:56
Profile WWW
Maniac

Joined: 01 Oct 2007 11:30
Posts: 268
Location: Ukraine
Reply with quote
FoxyLab wrote:
В PS/2 клок генерит клавиатура, а прерывания нельзя использовать - нарушится генерация ТВ-сигнала. Можно замутить на регистрах сдвига etc, но "что-то лень". А 8-я слабее 328-й, поэтому в логику проекта укладывается.

Да, тут надо реал тайм для видео, хотя 2 int вроде свободен (занят на выход vsync). Я конечно не специалист, но может его использовать для синхронизации с ps2 (clock). В той библиотеке которую использую не используется прерывание.

FoxyLab wrote:
Это, все конечно, так, но вопрос был связан с тем, что те две ноги работают на вход, а пуш-пул выход низзя, клавиатура может раньше успеть клок к земле прижать.

Вот тут вообще ни в зуб ногой. Не знаком с STM.

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


30 Aug 2018 04:27
Profile
Fanat
User avatar

Joined: 21 Mar 2017 07:37
Posts: 66
Location: BY
Reply with quote
Alekcandr wrote:
FoxyLab wrote:
В PS/2 клок генерит клавиатура, а прерывания нельзя использовать - нарушится генерация ТВ-сигнала. Можно замутить на регистрах сдвига etc, но "что-то лень". А 8-я слабее 328-й, поэтому в логику проекта укладывается.

Да, тут надо реал тайм для видео, хотя 2 int вроде свободен (занят на выход vsync). Я конечно не специалист, но может его использовать для синхронизации с ps2 (clock). В той библиотеке которую использую не используется прерывания.

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


30 Aug 2018 04:33
Profile WWW
Maniac

Joined: 01 Oct 2007 11:30
Posts: 268
Location: Ukraine
Reply with quote
FoxyLab wrote:
На активных участках кадра счет идет на машинные циклы, там ни зря две ноги объединены у ардуинки, приходится учитывать даже то, что прерывание может произойти в середине команды, и команда будет довыполняться, поэтому и используется вход захвата первого таймера, чтобы скорректировать различие между началом генерации синхроимпульса от таймера и входом в прерывание. При этом на обработку прерывания может уйти до 50 мкс, за это время клавиатура может что-нибудь замутить.

Жуть. Надо очень быстро и четко. Как предложение может вынести «модуль» видео за скобки. А на nano допиливать не быстрые плюшки (периферию)? Просто мысли :)

Сдвиговый регистр, решит проблему отчасти быстрой подачи данных. Но им тоже надо четко рулить во времени. Я о видео. И самое интересное буфера то нет. Закончились данные? Будь добр выставь новые строго по таймингу.

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

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


30 Aug 2018 04:45
Profile
Fanat
User avatar

Joined: 21 Mar 2017 07:37
Posts: 66
Location: BY
Reply with quote
Alekcandr wrote:
FoxyLab wrote:
На активных участках кадра счет идет на машинные циклы, там ни зря две ноги объединены у ардуинки, приходится учитывать даже то, что прерывание может произойти в середине команды, и команда будет довыполняться, поэтому и используется вход захвата первого таймера, чтобы скорректировать различие между началом генерации синхроимпульса от таймера и входом в прерывание. При этом на обработку прерывания может уйти до 50 мкс, за это время клавиатура может что-нибудь замутить.

Жуть. Надо очень быстро и четко. Как предложение может вынести «модуль» видео за скобки. А на nano допиливать не быстрые плюшки (периферию)? Просто мысли :)

Сдвиговый регистр, решит проблему отчасти быстрой подачи данных. Но им тоже надо четко рулить во времени. Я о видео. И самое интересное буфера то нет. Закончились данные? Будь добр выставь новые строго по таймингу.

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


Так с внешним видеомодулем - тема известная, вот пример - девушка (!) - блондинка (!), правда англоязычная, собрала на макетке (!) компьютер на 6502-м, и у нее как раз ATmega для видеовывода используется - http://quinndunki.com/blondihacks/?p=955

Я тут может вот что сотворю (близкое к предложенному Вами регистру сдвига) - у чипов SPI RAM (например, 23K256) есть burst-режим, в котором они гонят на выход бит за битом просто по клоку, без дополнительных установок адреса. Тогда мы получаем полноценный большой битовый видеобуфер. Тут только записывать в него придется на неактивных участках кадра, но, полагаю, 50 символов в секунду будет приемлемая скорость изменения информации на экране.


30 Aug 2018 05:44
Profile WWW
Maniac

Joined: 01 Oct 2007 11:30
Posts: 268
Location: Ukraine
Reply with quote
FoxyLab wrote:
Тут только записывать в него придется на неактивных участках кадра, но, полагаю, 50 символов в секунду будет приемлемая скорость изменения информации на экране.

Жуть. На бланке кадра писать. Как в прошлое вернулся.

Почесал бороду :)

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


30 Aug 2018 05:50
Profile
Fanat
User avatar

Joined: 21 Mar 2017 07:37
Posts: 66
Location: BY
Reply with quote
Alekcandr wrote:
FoxyLab wrote:
Тут только записывать в него придется на неактивных участках кадра, но, полагаю, 50 символов в секунду будет приемлемая скорость изменения информации на экране.

Жуть. На бланке кадра писать. Как в прошлое вернулся.

Почесал бороду :)

Image
Как пишут (я правда, этим изделием не владел, от МК-52 перепрыгнул сразу к Спектруму), поделие сэра Клайва под названием ZX-80 вообще забивало на вывод на экран во время исполнения программ на Бейсике.


30 Aug 2018 05:56
Profile WWW
Maniac

Joined: 01 Oct 2007 11:30
Posts: 268
Location: Ukraine
Reply with quote
До исторические времена ZX, блин.

А копнем глубже. TMS9918 писал спрайты по бланку кадра свои 32 спрайта.

:rotate:

Сегодня отлично доставаемый в версии NTSC и с безумным интерфейсом DRAM. Также есть версия 9928, с вменяемом выхлопом видео. Но я пока не юзал. Только композит, или яркостной сигнал от хх28.

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


30 Aug 2018 06:24
Profile
Maniac

Joined: 01 Oct 2007 11:30
Posts: 268
Location: Ukraine
Reply with quote
Наберусь наглости. Можно схему в стиле Э3. Бо эти тылки-монтажные схеме меня крепко путают.
Просто для меня такая схема не пришей к пуговице чего-то.

Есть nano. Попробую собрать.

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


30 Aug 2018 06:47
Profile
Fanat
User avatar

Joined: 21 Mar 2017 07:37
Posts: 66
Location: BY
Reply with quote
Alekcandr wrote:
До исторические времена ZX, блин.

А копнем глубже. TMS9918 писал спрайты по бланку кадра свои 32 спрайта.

:rotate:

Сегодня отлично доставаемый в версии NTSC и с безумным интерфейсом DRAM. Также есть версия 9928, с вменяемом выхлопом видео. Но я пока не юзал. Только композит, или яркостной сигнал от хх28.


Интересно!


30 Aug 2018 07:30
Profile WWW
Fanat
User avatar

Joined: 21 Mar 2017 07:37
Posts: 66
Location: BY
Reply with quote
Alekcandr wrote:
Наберусь наглости. Можно схему в стиле Э3. Бо эти тылки-монтажные схеме меня крепко путают.
Просто для меня такая схема не пришей к пуговице чего-то.

Для этого мне придется нарисовать символы для Nano и USB-UART преобразователя в sPlan. Но сначала я допишу обработку скан-кодов, а также обновлю основной код на Github.
Quote:
Есть nano. Попробую собрать.

Image


30 Aug 2018 07:35
Profile WWW
Maniac

Joined: 01 Oct 2007 11:30
Posts: 268
Location: Ukraine
Reply with quote
Нафиг. С-план(траву курить). Делай в Eagle Cad. И твой труд смогут прочитать миллионы (80х100 бесплатно).

_________________
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru


30 Aug 2018 07:39
Profile
Fanat
User avatar

Joined: 21 Mar 2017 07:37
Posts: 66
Location: BY
Reply with quote
Alekcandr wrote:
Нафиг. С-план(траву курить). Делай в Eagle Cad. И твой труд смогут прочитать миллионы (80х100 бесплатно).

А что, можно попробовать :idea:


30 Aug 2018 10:38
Profile WWW
Fanat
User avatar

Joined: 21 Mar 2017 07:37
Posts: 66
Location: BY
Reply with quote
Добавлю "Турбо"-кнопку (по мотивам ZX81-го и его FAST/SLOW режимов) - если она нажата, то при исполнении машинных команд (в том числе и команд ОС и программ), если в течение, например, 1000 команд не было запроса статуса консоли, то гасим экран (генерим только синхроимпульсы и не тратим процессорное время на генерацию пикселей). Запрос к консоли сбрасывает счетчик и выключает турбо-режим.


03 Sep 2018 05:06
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 102 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7  Next

Who is online

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