Arduino Nano - эмулятор компьютера под управлением ОС CP/M

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

cpm4nano Mk II
(использовал адаптер для подключения microSD-карточки)

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Новый рекорд - я прогнал без сбоев 7400 проходов теста памяти (ардуинка непрерывно молотила больше двух суток):

Так что опасения в быстром выходе из строя карточки немного преувеличены.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

FoxyLab пишет:

Новый рекорд - я прогнал без сбоев 7400 проходов теста памяти (ардуинка непрерывно молотила больше двух суток):

Так что опасения в быстром выходе из строя карточки немного преувеличены.

так у неё разве не 100000 циклов записи?

Это говорит, что ОС правильно написана )))

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

ua6em пишет:

FoxyLab пишет:

Новый рекорд - я прогнал без сбоев 7400 проходов теста памяти (ардуинка непрерывно молотила больше двух суток):

Так что опасения в быстром выходе из строя карточки немного преувеличены.

так у неё разве не 100000 циклов записи?

Это говорит, что ОС правильно написана )))

Было высказано и такое мнение: "без ОЗУ флешка убьется моментально". Стало быть, не моментально )

b707
Онлайн
Зарегистрирован: 26.05.2017

FoxyLab пишет:

Новый рекорд - я прогнал без сбоев 7400 проходов теста памяти (ардуинка непрерывно молотила больше двух суток):

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

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015
Новости проекта:
- подключил два чипа FRAM (32 КБайта каждый), причем сделал автоконфигурацию чипов (их может быть до 8 ) по банкам, так что эти два чипа закрыли нулевой банк ОЗУ
- отвязал при этом аппаратный I2C от прерываний (отказавшись заодно от использования Wire.h)
- отвязал работу с UART от прерываний
- от прерываний я отвязался не зря - таймер 1 после этих ухищрений позволил генерировать частоту строчной развертки для вывода на ТВ; я смог подобрать набор ассемблерных команд, которые позволят выводить пиксел за 7 тактов процессора (причем знаки берутся из знакогенератора - массива во флэш-памяти, а не экранного буфера в ОЗУ), а это при 56 мкс активной части строки даст 128 пикселей, т.е. Arduino Nano (одна!!!) сможет и эмулировать, и выводить на экран через композитный вход ТВ 24 символа в строке (при шрифте 5 x 8), хотя и утратив несколько в производительности (но все же не до такой степени, как ZX80 сэра Клайва :-) )
- переписал код эмуляции, сэкономив несколько килобайт флэша
Продолжение (и новая версия кода на гитхабе, а также дополненное описание на https://acdc.foxylab.com/node/76) следует
FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Ардуино запускает загруженный через XMODEM монитор (turnmon) от «Альтаир 8800» (я сделал эмулятор совместимым по портам с ним) — выполнена команда дампа памяти:
cpm4nano_turnmon_d.png
Восьмеричная система… компьютер на год старше меня :-)

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Докладаю :-) Мой "нанокомпьютер" научился выводить на экран ТВ 20 строк текста по 40 колонок в каждой.
На "скриншоте" экрана ТВ показаны результаты выполнения команды DIR и тестов процессора:

(без джиттера)
На текущий момент в моем проекте одна(!) Arduino Nano(!):
- эмулирует процессор i8080;
- загружает ОС CP/M и выполняет ее программы;
- обменивается информацией по последовательному порту;
- выводит изображение на экран ТВ.

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Текущий вид проекта, без затей :-):


 

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Текущая схема проекта:

В минимальной конфигурации требуется:
Arduino Nano 3.0;
SD-карточка с адаптером;
преобразователь USB-UART.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Интересно, а SSD диск реально прикрутить

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Здорово! примите и мои поздравлялки. :)

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Arhat109-2 пишет:

Здорово! примите и мои поздравлялки. :)

Спасибо :-)

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

ua6em пишет:

Интересно, а SSD диск реально прикрутить

С SATA разъемом напрямую нереально, гигабиты в секунду, как никак :-)

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

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ваша конструкция конечно же вызывает уважуху .. собрать спектур на НАНО .. респект.

Но, смотрели вот эту тему: http://arduino.ru/forum/proekty/samodelnaya-mega2560-128a-s-pamyatyu-512kb?

Там есть вариант самопальной Мега2560 с 512 килами вполне живой SRAM (ОЗУ) .. думаю скорость интерпретатора можно существенно оживить в сравнении с I2C приблудой.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Arhat109-2 пишет:

Ваша конструкция конечно же вызывает уважуху .. собрать спектур на НАНО .. респект.

Но, смотрели вот эту тему: http://arduino.ru/forum/proekty/samodelnaya-mega2560-128a-s-pamyatyu-512kb?

Там есть вариант самопальной Мега2560 с 512 килами вполне живой SRAM (ОЗУ) .. думаю скорость интерпретатора можно существенно оживить в сравнении с I2C приблудой.

Прикрутить еще BB55 и, у меня был софт для такого девайса )))

alex_r61
alex_r61 аватар
Offline
Зарегистрирован: 20.06.2012

ua6em пишет:

Прикрутить еще BB55 и, у меня был софт для такого девайса )))

 Ну тогда ещё и флопы пятидюймовые, чего зря пыляться.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

alex_r61 пишет:

ua6em пишет:

Прикрутить еще BB55 и, у меня был софт для такого девайса )))

 Ну тогда ещё и флопы пятидюймовые, чего зря пыляться.

флоп требует ПДП контроллера однако ))) да и его обслуживание обходится в 1,8 килобайт кода процессора 8080

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Arhat109-2 пишет:

Ваша конструкция конечно же вызывает уважуху .. собрать спектур на НАНО .. респект.

Но, смотрели вот эту тему: http://arduino.ru/forum/proekty/samodelnaya-mega2560-128a-s-pamyatyu-512kb?

Там есть вариант самопальной Мега2560 с 512 килами вполне живой SRAM (ОЗУ) .. думаю скорость интерпретатора можно существенно оживить в сравнении с I2C приблудой.


Спасибо!
В моем проекте я стараюсь обойтись минимальными ресурсами (Нано, макетки и т.п.). 19 ножек для обслуживания памяти - "это не наш метод" :-) Тогда уже проще на ebay купить Z80 и к нему прикрутить память и периферию. Вот, кстати, англоязычное чтиво для ценителей - девушка собрала на макетке компьютер на 6502-м и периферию на AVR (http://quinndunki.com/blondihacks/?page_id=1761).

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

ua6em пишет:

Arhat109-2 пишет:

Ваша конструкция конечно же вызывает уважуху .. собрать спектур на НАНО .. респект.

Но, смотрели вот эту тему: http://arduino.ru/forum/proekty/samodelnaya-mega2560-128a-s-pamyatyu-512kb?

Там есть вариант самопальной Мега2560 с 512 килами вполне живой SRAM (ОЗУ) .. думаю скорость интерпретатора можно существенно оживить в сравнении с I2C приблудой.

Прикрутить еще BB55 и, у меня был софт для такого девайса )))


Расширитель портов (I2C или SPI) может заменить ВВ55.

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

alex_r61 пишет:

ua6em пишет:

Прикрутить еще BB55 и, у меня был софт для такого девайса )))

 Ну тогда ещё и флопы пятидюймовые, чего зря пыляться.

Я свой Teaс разобрал вскоре после гибели "Байта", теперь жалею.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

FoxyLab пишет:

alex_r61 пишет:

ua6em пишет:

Прикрутить еще BB55 и, у меня был софт для такого девайса )))

 Ну тогда ещё и флопы пятидюймовые, чего зря пыляться.

Я свой Teaс разобрал вскоре после гибели "Байта", теперь жалею.

Если покопать по сусекам я думаю у меня можно найти (ставил на Соболя), правда там ПО сейчас переделали под 1.44, но нужны правильные, поддерживающие все 7 режимов
Да и все на импорт перешли и компактнее и по программам возможности на голову выше

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

FoxyLab пишет:

Arhat109-2 пишет:

Ваша конструкция конечно же вызывает уважуху .. собрать спектур на НАНО .. респект.

Но, смотрели вот эту тему: http://arduino.ru/forum/proekty/samodelnaya-mega2560-128a-s-pamyatyu-512kb?

Там есть вариант самопальной Мега2560 с 512 килами вполне живой SRAM (ОЗУ) .. думаю скорость интерпретатора можно существенно оживить в сравнении с I2C приблудой.


Спасибо!
В моем проекте я стараюсь обойтись минимальными ресурсами (Нано, макетки и т.п.). 19 ножек для обслуживания памяти - "это не наш метод" :-) Тогда уже проще на ebay купить Z80 и к нему прикрутить память и периферию. Вот, кстати, англоязычное чтиво для ценителей - девушка собрала на макетке компьютер на 6502-м и периферию на AVR (http://quinndunki.com/blondihacks/?page_id=1761).


6502 очень хороший процессор, у меня на нем фрезерные с ЧПУ были с точностью на фрезеровании 2 микрона

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

ua6em пишет:

FoxyLab пишет:

Arhat109-2 пишет:

Ваша конструкция конечно же вызывает уважуху .. собрать спектур на НАНО .. респект.

Но, смотрели вот эту тему: http://arduino.ru/forum/proekty/samodelnaya-mega2560-128a-s-pamyatyu-512kb?

Там есть вариант самопальной Мега2560 с 512 килами вполне живой SRAM (ОЗУ) .. думаю скорость интерпретатора можно существенно оживить в сравнении с I2C приблудой.


Спасибо!
В моем проекте я стараюсь обойтись минимальными ресурсами (Нано, макетки и т.п.). 19 ножек для обслуживания памяти - "это не наш метод" :-) Тогда уже проще на ebay купить Z80 и к нему прикрутить память и периферию. Вот, кстати, англоязычное чтиво для ценителей - девушка собрала на макетке компьютер на 6502-м и периферию на AVR (http://quinndunki.com/blondihacks/?page_id=1761).


6502 очень хороший процессор, у меня на нем фрезерные с ЧПУ были с точностью на фрезеровании 2 микрона

Да, легендарный процессор, выпускается в CMOS-варианте до сих пор.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

FoxyLab пишет:
Спасибо!
В моем проекте я стараюсь обойтись минимальными ресурсами (Нано, макетки и т.п.). 19 ножек для обслуживания памяти - "это не наш метод" :-) Тогда уже проще на ebay купить Z80 и к нему прикрутить память и периферию. Вот, кстати, англоязычное чтиво для ценителей - девушка собрала на макетке компьютер на 6502-м и периферию на AVR (http://quinndunki.com/blondihacks/?page_id=1761).

Да, 6502 хоть и редкостно-фиговый (аккумуляторный) но достаточно шустрый проц, и в Агате мне нравился тоже.

Мне тот проект (с расширением памяти) нужен для многих целей в процессе обучения, в т.ч. и программирования игр и построения эмуляторов, прототипов ОС и т.д., поэтому и предложил присмотреться и Вам тоже. Приехал последний вариант платы .. соберу - выложу (как только "руки дойдут", но похоже теперь снова не скоро)

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Arhat109-2 пишет:

FoxyLab пишет:
Спасибо!
В моем проекте я стараюсь обойтись минимальными ресурсами (Нано, макетки и т.п.). 19 ножек для обслуживания памяти - "это не наш метод" :-) Тогда уже проще на ebay купить Z80 и к нему прикрутить память и периферию. Вот, кстати, англоязычное чтиво для ценителей - девушка собрала на макетке компьютер на 6502-м и периферию на AVR (http://quinndunki.com/blondihacks/?page_id=1761).

Да, 6502 хоть и редкостно-фиговый (аккумуляторный) но достаточно шустрый проц, и в Агате мне нравился тоже.

Мне тот проект (с расширением памяти) нужен для многих целей в процессе обучения, в т.ч. и программирования игр и построения эмуляторов, прототипов ОС и т.д., поэтому и предложил присмотреться и Вам тоже. Приехал последний вариант платы .. соберу - выложу (как только "руки дойдут", но похоже теперь снова не скоро)

O.K.
Но если стоит цель расширить память, не особо считаясь с использованием ресурсов, то есть и такой вариант - подключить 30-пиновые SIMM-модули, вот библиотека для этого дела: https://github.com/zrafa/30pin-simm-ram-arduino

P.S. Я начинал программировать на МК-61, с тех пор и осталось стремление к минимализму :-)
В этом плане мне golang нравится - современный язык, но никаких классов и прочей фигни :-) В своем проекте "нанокомпьютера" я избавился от всех ардуинских библиотек, кроме SPI, там как раз классы etc, переделаю в несколько функций :-)

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

:) МК-61 у меня и сейчас в рабочем состоянии. Побитый молью временем, но вполне рабочий. :)

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Arhat109-2 пишет:

:) МК-61 у меня и сейчас в рабочем состоянии. Побитый молью временем, но вполне рабочий. :)

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

С добавление интерфейса PS/2 для подключения клавиатуры мой "нанокомпьютер" стал самодостаточным:

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

FoxyLab пишет:

С добавление интерфейса PS/2 для подключения клавиатуры мой "нанокомпьютер" стал самодостаточным:

а у меня такая stm имеется, вот и применение нарисовалось )))

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

ua6em пишет:

FoxyLab пишет:

С добавление интерфейса PS/2 для подключения клавиатуры мой "нанокомпьютер" стал самодостаточным:

а у меня такая stm имеется, вот и применение нарисовалось )))

Я их тоже закупаю потихоньку (сдерживают почтовые ограничения в РБ, в интервью главного-главного по таможне было сказано, что больше 50 (если не изменяет память) посылок в год - подозрительно, однако :-)

Вот тут я описываю, как ее (STM-ку, не Россию ;-) обустроить - https://acdc.foxylab.com/stm8

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Добавлю "Турбо"-кнопку (по мотивам ZX81-го и его FAST/SLOW режимов) - если она нажата, то при исполнении машинных команд (в том числе и команд ОС и программ), если в течение, например, 1000 команд не было запроса статуса консоли, то гасим экран (генерим только синхроимпульсы и не тратим процессорное время на генерацию пикселей). Запрос к консоли сбрасывает счетчик и выключает турбо-режим.

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Вид шрифта на экране ТВ после редизайна и добавления символов псевдографики и русских букв в кодировке КОИ-8:

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Мой симулятор успешно прошел очень подробный тест DIAGNOSTICS II V1.2 - CPU TEST от SUPERSOFT ASSOCIATES:

MaksVV
Offline
Зарегистрирован: 06.08.2015

Я так понял в данном варианте только текст или игры тоже можно запускать? Если только текст, то нужно обязательно прикрутить видяху дуне. 

Такто респект, проект огонь. 

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Спасибо!
Сейчас - только текстовый режим. Nano сама выводит текст на экран телевизора, без дополнительных чипов - двумя постами выше показан вид генерируемых символов на экране ТВ, выводится 20 строк по 45 символов.

Для графического режима планирую использовать SPI RAM в burst- режиме.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

FoxyLab пишет:

ua6em пишет:

FoxyLab пишет:

С добавление интерфейса PS/2 для подключения клавиатуры мой "нанокомпьютер" стал самодостаточным:

а у меня такая stm имеется, вот и применение нарисовалось )))

Я их тоже закупаю потихоньку (сдерживают почтовые ограничения в РБ, в интервью главного-главного по таможне было сказано, что больше 50 (если не изменяет память) посылок в год - подозрительно, однако :-)

Вот тут я описываю, как ее (STM-ку, не Россию ;-) обустроить - https://acdc.foxylab.com/stm8

Хороший сайт! Проверь на троянцы, похоже подломали

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

ua6em пишет:
Хороший сайт! Проверь на троянцы, похоже подломали

Спасибо!
В списке процессов ничего необычного, проверил через https://rescan.pro:
Сканер не выявил проблем безопасности с сайтом.
https://rescan.pro/result.php?49c32ce0cfc623dc995092b8731268c4

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

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

А Касперский так не думает )))
 

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

DrWeb не обнаружил malware, а она ведь была (

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

)))
Сидел вот чистил кэш файрфокса за три года, сейчас зайду проверю )))

Файлик выловил, куда прислать, сделал его в текстовом файле, там вверху переменная, это она

Server: nginx
Date: Mon, 24 Sep 2018 09:39:39 GMT
Content-Type: application/x-javascript
Content-Length: 109759
Last-Modified: Mon, 27 Aug 2018 18:02:17 GMT
Cache-Control: private
Etag: "5b843ca9-1acbf"
X-Powered-By: PleskLin
Accept-Ranges: bytes
X-Firefox-Spdy: h2
 

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

Спасибо еще раз!
Нашел и убил гадость (для справки - майнер загружается с сайта windworld.org - https://windworld.org/vbb/#####.js).
P.S. Написал письмо команде этого сайта, сообщив о майнере.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

FoxyLab пишет:
Спасибо еще раз! Нашел и убил гадость (для справки - майнер загружается с сайта windworld.org - https://windworld.org/vbb/#####.js). P.S. Написал письмо команде этого сайта, сообщив о майнере.

Рад был помочь чем мог )))

 

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

При нынешней сложности майнить XMR в браузере ))) как в том анекдоте - "две старушки - уже рубль"

FoxyLab
FoxyLab аватар
Offline
Зарегистрирован: 10.06.2015

MaksVV пишет:
... игры тоже можно запускать? ...

А вот и игрушка, текстовая, но зато эпическая, да и написан этот вариант на Аде и скомпилирован в самом эмуляторе:

Осталось разобраться с управлением, а по сравнению с играми на МК-61, управлявшимися переключателем угловых единиц, тут же настоящие клавиши :-)

Joiner
Offline
Зарегистрирован: 04.09.2014

FoxyLab пишет:

Приветствую всех любителей Arduino! Ностальгия по восьмибитным временам побудила меня сделать свой CP/M компьютер из ... чего бы Вы думали? Arduino Nano 3.0
............................................

"Не перевелись еще богатыри на земле нашей...."