|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Arduino Nano - эмулятор компьютера под управлением ОС CP/M
Author |
Message |
Клапауций
Banned
Joined: 29 Jun 2018 08:48 Posts: 413
|
не знаю - на тебе ссылко, читай интересное https://en.wikipedia.org/wiki/Robinson_R66
|
10 Aug 2018 14:10 |
|
|
FoxyLab
Retired
Joined: 21 Mar 2017 06:37 Posts: 73
|
Наверно то, что это единственный Робинсон, посетивший эти места за много лет )))
Last edited by FoxyLab on 02 Jan 2020 12:31, edited 1 time in total.
|
12 Aug 2018 05:08 |
|
|
FoxyLab
Retired
Joined: 21 Mar 2017 06:37 Posts: 73
|
Естественно, работают Я напрямую опрашиваю и пишу в регистры UART и I2C, без лишних библиотек, к тому же юзающих прерывания и кушающих память. Дело не в номере таймера, а в том, что теперь ничто не прервет генерацию пикселей ТВ-строки. P.S. Добавил поддержку протокола XMODEM, так что теперь можно загружать файлы и диски в эмулятор из терминальной программы (например, Tera Term). P.P.S. Причешу код и обновлю на гитхабе.
Last edited by FoxyLab on 02 Jan 2020 12:31, edited 1 time in total.
|
12 Aug 2018 05:21 |
|
|
FoxyLab
Retired
Joined: 21 Mar 2017 06:37 Posts: 73
|
Ардуино запускает загруженный через XMODEM монитор (turnmon) от "Альтаир 8800" (я сделал эмулятор совместимым по портам с ним) - выполнена команда дампа памяти: Восьмеричная система... компьютер на год старше меня
Last edited by FoxyLab on 02 Jan 2020 12:31, edited 1 time in total.
|
12 Aug 2018 10:57 |
|
|
FoxyLab
Retired
Joined: 21 Mar 2017 06:37 Posts: 73
|
Нахально похвастаюсь Я научил свой «нанокомпьютер» выводить на экран ТВ без джиттера (!) 20 строк текста по 40 колонок в каждой. На "скриншоте" экрана ТВ показаны результаты выполнения команды DIR и тестов процессора: На текущий момент в проекте cpm4nano одна (!) Arduino Nano (!): — эмулирует процессор i8080; — загружает ОС CP/M и выполняет ее программы; — обменивается информацией по последовательному порту; — выводит изображение на экран ТВ. P.S. Шрифт, конечно, подправлю, на мониторе "Байта" спектрумовский сжатый шрифт смотрелся получше.
Last edited by FoxyLab on 02 Jan 2020 12:30, edited 1 time in total.
|
23 Aug 2018 12:14 |
|
|
FoxyLab
Retired
Joined: 21 Mar 2017 06:37 Posts: 73
|
Она натурально греется Ей маленький радиатор на корпус меги не помешает. А с тестами - та еще тема, особенно с флагом AC Вот для 8080 набор тестов под CP/M: http://altairclone.com/downloads/cpu_tests/
Last edited by FoxyLab on 02 Jan 2020 12:30, edited 1 time in total.
|
23 Aug 2018 13:42 |
|
|
FoxyLab
Retired
Joined: 21 Mar 2017 06:37 Posts: 73
|
Текущая схема проекта: В минимальной конфигурации требуется: Arduino Nano 3.0; SD-карточка с адаптером; преобразователь USB-UART.
Last edited by FoxyLab on 02 Jan 2020 12:30, edited 1 time in total.
|
26 Aug 2018 12:44 |
|
|
FoxyLab
Retired
Joined: 21 Mar 2017 06:37 Posts: 73
|
С добавление интерфейса PS/2 для подключения клавиатуры мой "нанокомпьютер" стал самодостаточным:
Last edited by FoxyLab on 02 Jan 2020 12:30, edited 1 time in total.
|
29 Aug 2018 23:35 |
|
|
FoxyLab
Retired
Joined: 21 Mar 2017 06:37 Posts: 73
|
Верно! Но у STM-ки есть два выхода с открытым коллектором (стоком) для I2C, вот их я и использую в дальнейшем для этого. P.S. Мигать STM-ка будет сама, без участия Arduino, так же как она сама режим строчные/заглавные переключает.
Last edited by FoxyLab on 02 Jan 2020 12:31, edited 1 time in total.
|
30 Aug 2018 01:06 |
|
|
FoxyLab
Retired
Joined: 21 Mar 2017 06:37 Posts: 73
|
Просекаем make-код SCROLL (0x7E), переключаем флаг языка, и в большом switch вместо Q для скан-кода клавиши Q (0x15) посылаем Й. Такие дела
Last edited by FoxyLab on 02 Jan 2020 12:32, edited 1 time in total.
|
30 Aug 2018 02:43 |
|
|
Alekcandr
Doomed
Joined: 01 Oct 2007 10:30 Posts: 665 Location: Ukraine
|
Интересный проект А почему бы не навесить ps2 на nano? Вроде ножки свободные есть. Или у nano уже ресурсов не осталось? Алгоритм там не сложный. Опрашиваем в цикле 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 03:11, edited 1 time in total.
|
30 Aug 2018 02:49 |
|
|
FoxyLab
Retired
Joined: 21 Mar 2017 06:37 Posts: 73
|
Спасибо! В PS/2 клок генерит клавиатура, а прерывания нельзя использовать - нарушится генерация ТВ-сигнала. Можно замутить на регистрах сдвига etc, но "что-то лень". А 8-я слабее 328-й, поэтому в логику проекта укладывается. Это, все конечно, так, но вопрос был связан с тем, что те две ноги работают на вход, а пуш-пул выход низзя, клавиатура может раньше успеть клок к земле прижать.
Last edited by FoxyLab on 02 Jan 2020 12:34, edited 1 time in total.
|
30 Aug 2018 02:56 |
|
|
Alekcandr
Doomed
Joined: 01 Oct 2007 10:30 Posts: 665 Location: Ukraine
|
Да, тут надо реал тайм для видео, хотя 2 int вроде свободен (занят на выход vsync). Я конечно не специалист, но может его использовать для синхронизации с ps2 (clock). В той библиотеке которую использую не используется прерывание. Вот тут вообще ни в зуб ногой. Не знаком с STM.
_________________Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
|
30 Aug 2018 03:27 |
|
|
FoxyLab
Retired
Joined: 21 Mar 2017 06:37 Posts: 73
|
На активных участках кадра счет идет на машинные циклы, там ни зря две ноги объединены у ардуинки, приходится учитывать даже то, что прерывание может произойти в середине команды, и команда будет довыполняться, поэтому и используется вход захвата первого таймера, чтобы скорректировать различие между началом генерации синхроимпульса от таймера и входом в прерывание. При этом на обработку прерывания может уйти до 50 мкс, за это время клавиатура может что-нибудь замутить.
Last edited by FoxyLab on 02 Jan 2020 12:34, edited 1 time in total.
|
30 Aug 2018 03:33 |
|
|
Alekcandr
Doomed
Joined: 01 Oct 2007 10:30 Posts: 665 Location: Ukraine
|
Жуть. Надо очень быстро и четко. Как предложение может вынести «модуль» видео за скобки. А на nano допиливать не быстрые плюшки (периферию)? Просто мысли Сдвиговый регистр, решит проблему отчасти быстрой подачи данных. Но им тоже надо четко рулить во времени. Я о видео. И самое интересное буфера то нет. Закончились данные? Будь добр выставь новые строго по таймингу. Отличная штука бы вышла, скармливай внешнему модулю видео по последовательной шине данные, а там он пускай сам шустрит для формирования сигнала видео, четко по таймингам.
_________________Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
|
30 Aug 2018 03:45 |
|
|
Who is online |
Users browsing this forum: No registered users and 63 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
|
|