nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 21 Oct 2017 08:09



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

Joined: 13 Nov 2007 14:09
Posts: 164
Location: Ставрополь
Reply with quote
...если мне кардинально не отшибло память (а вся документация по СР/М сейчас находится далеко), то в описании настройки системы были упоминания о доступной памяти и требуемой коррекции одной или двух переменных в связи с этим. Помню визуально, что это было в начале листа и было три варианта объёма памяти: 47 (или около), 56 и 62 кБайт, соответственно три варианта системной переменной, подставляемой в листинг... Если Ваш вариант позволяет настраиваться на "нестандартный" с точки зрения канонической документации объём - это хорошо.


31 Mar 2017 09:38
Profile WWW
Novelist
User avatar

Joined: 21 Mar 2017 09:37
Posts: 26
Location: BY
Reply with quote
rw6hrm wrote:
...если мне кардинально не отшибло память (а вся документация по СР/М сейчас находится далеко), то в описании настройки системы были упоминания о доступной памяти и требуемой коррекции одной или двух переменных в связи с этим. Помню визуально, что это было в начале листа и было три варианта объёма памяти: 47 (или около), 56 и 62 кБайт, соответственно три варианта системной переменной, подставляемой в листинг... Если Ваш вариант позволяет настраиваться на "нестандартный" с точки зрения канонической документации объём - это хорошо.

Там даже не две, а одна переменная меняется, но затем требуется ... перекомпилирование всей оси. :ebiggrin: Можете мне поверить, это далеко не тривиальная задача... :egeek:
А моя утилитка может сгенерить CCP и BDOS CP/M версии 2.2 для 8080 при любом объеме памяти (от 20 до 64 Кбайт) одной командой.
P.S. На объем там одно ограничение - кратность килобайту. Были системы и с 20, и с 32, и с 62.


31 Mar 2017 10:32
Profile WWW
Senior

Joined: 18 Nov 2013 18:15
Posts: 169
Location: все оттуда ;)
Reply with quote
Чем штатная утилита неугодила ?

- MOVCPM

Название MOVCPM является сокращением от английского "Move СР/М" (переместить СР/М). Команду MOVCPM применяют для модификации операционной системы СР/М с тем, чтобы она либо использовала всю доступную память ЭВМ, либо оставляла часть памяти под специальные системно-независимые программы пользователей.


31 Mar 2017 15:05
Profile
Novelist
User avatar

Joined: 21 Mar 2017 09:37
Posts: 26
Location: BY
Reply with quote
Я нашел и исправил ошибку в эмуляции команд INR N/DCR M. :ebiggrin:
Теперь команда TYPE работает правильно!!! :exclaim:
Эмулятор почти готов к применению, я напишу для интересующихся инструкцию, как "приготовить" SD-карточку.

P.S.
VGrad wrote:
Чем штатная утилита неугодила ?

Для того, чтобы ее запустить, нужно иметь уже работающую систему.
Затем эту утилиту нужно записать на диск.
Затем нужно записать (если не записан) на диск отладчик DDT.
После этого в отладчике исправить код проверки серийного номера (если серийный номер в утилите не совпадает с серийником запущенной системы, то фэйл).
Затем запустить утилиту.
Затем запустить команду SAVE.
Затем извлечь с карточки (эмулирующей диск) сектора с записанным кодом.
Вот всем этим и не угодила. :ebiggrin: Как говорил т. Сухов "лучше конечно помучаться", но настроение на это бывает не всегда :ebiggrin: Так что я все эти операции заменил одной командой, делающей то же самое - getcpm 32 010203040506 (например).


01 Apr 2017 05:09
Profile WWW
Novelist
User avatar

Joined: 21 Mar 2017 09:37
Posts: 26
Location: BY
Reply with quote
Добавил LRC-контрольную сумму для данных памяти при записи/чтении на карточку. Пока сбоев не было :ebiggrin:


02 Apr 2017 02:40
Profile WWW
Novelist
User avatar

Joined: 21 Mar 2017 09:37
Posts: 26
Location: BY
Reply with quote
Сделал ввод с консоли более универсальным - через прерывания - с прицелом на подключение в дальнейшем PS/2-клавиатуры + добавил команду R монитора для сброса ардуинки.


03 Apr 2017 13:15
Profile WWW
Novelist
User avatar

Joined: 21 Mar 2017 09:37
Posts: 26
Location: BY
Reply with quote
Сделал 200 прогонов теста памяти (добавил команду в монитор) - сбоев не обнаружено:
Image


04 Apr 2017 18:03
Profile WWW
Novelist
User avatar

Joined: 21 Mar 2017 09:37
Posts: 26
Location: BY
Reply with quote
С помощью эмуляции шин адреса и данных, а также внутренних регистров (W, Z, ACT, TMP), сделал эмуляцию микроопераций как можно ближе к "железному" процессору + с помощью #define сделал код эмуляции намного более наглядным. Новый код уже выложен на GitHub.


09 Apr 2017 14:03
Profile WWW
Novelist
User avatar

Joined: 21 Mar 2017 09:37
Posts: 26
Location: BY
Reply with quote
По результатам тестов время случайного доступа к эмулируемой картой оперативной памяти составило около 7 миллисекунд.


11 Apr 2017 19:03
Profile WWW
God
User avatar

Joined: 13 Nov 2010 07:06
Posts: 1291
Reply with quote
Любопытно! Всегда проходил мимо всех этих Ардуин, а тут тоже заинтересовался. Жду, когда приедет купленная платка. CP/M меня не очень интересует, но хочу посмотреть на предмет эмуляции ORDOS...


15 Apr 2017 11:41
Profile
Novelist
User avatar

Joined: 21 Mar 2017 09:37
Posts: 26
Location: BY
Reply with quote
VituZz wrote:
Любопытно! Всегда проходил мимо всех этих Ардуин, а тут тоже заинтересовался. Жду, когда приедет купленная платка. CP/M меня не очень интересует, но хочу посмотреть на предмет эмуляции ORDOS...

Если Вас интересует быстродействие, то тогда конечно стоит подключить SPI RAM или FRAM. Но я пока играюсь с эмуляцией памяти карточкой (микросхема ОЗУ терпеливо в коробочке ждет своей очереди :ebiggrin: ).
Вот новые результаты:
из-за применения кэширования среднее время доступа при последовательном доступе к памяти составляет около 80 микросекунд.
Я использовал тест на Бейсике (в интерпретаторе TINYBASIC) для оценки влияния кэша на быстродействие в реальной задаче:
Image
(размер линии кэша составляет 64 байта)
кол-во линий кэша время выполнения теста (секунды)
2 ................................... 345
4 ................................... 155
6 ................................... 80
8 ................................... 60


15 Apr 2017 13:52
Profile WWW
God
User avatar

Joined: 13 Nov 2010 07:06
Posts: 1291
Reply with quote
А почему с карточкой? Разве с ОЗУ не проще?


15 Apr 2017 14:39
Profile
Novelist
User avatar

Joined: 21 Mar 2017 09:37
Posts: 26
Location: BY
Reply with quote
VituZz wrote:
А почему с карточкой? Разве с ОЗУ не проще?

Проще, но мне с карточкой интереснее...


15 Apr 2017 16:03
Profile WWW
Novelist
User avatar

Joined: 21 Mar 2017 09:37
Posts: 26
Location: BY
Reply with quote
Я запустил на моей Ардуинке компилятор языка Ada!!!
Компиляция программы TOWERS.ADA решения задачи о "Ханойской башне":

Image

Запуск скомпилированной программы TOWERS.COM:

Image


19 Apr 2017 15:35
Profile WWW
Novelist
User avatar

Joined: 21 Mar 2017 09:37
Posts: 26
Location: BY
Reply with quote
Изменил подход к эмуляции НГМД — выделил на карточке область для хранения содержимого 100 дискет и командой монитора Z «вставляю» дискету в один из дисководов A, B, C или D
(например, команда ZB02 монтирует дискету с номером 02 в дисковод B)
Image
Номера «вставленных» дискет запоминаются в EEPROM Arduino и восстанавливаются при повторном запуске эмулятора.


24 Apr 2017 03:48
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 36 posts ]  Go to page Previous  1, 2, 3  Next

Who is online

Users browsing this forum: No registered users and 1 guest


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.