NedoPC с CP/M на ATMega88 -> РК-шка на Атмеге

Советский компьютер Радио-86РК (1986) и его клоны

Moderator: Shaos

antsnark
Doomed
Posts: 434
Joined: 27 Jan 2010 03:45
Location: 83.149.9.42

NedoPC с CP/M на ATMega88 -> РК-шка на Атмеге

Post by antsnark »

можёт и было где...
Image
Image
Image

страница проекта:
http://spritesmods.com/?art=avrcpm
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

а я на SX-28 хотел сделать CP/M-машину, но остановился из-за нехватки времени
у чувака судя по всему всё закрыто - надо мне свой опен-сорцный вариант чтоли как-нибудь доделать...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

CP_M on AVR

Post by Lavr »

CP_M on AVR

Не скрою, когда вот эта штука здесь у нас пробегала, она мне понравилась.

Z80 -> PIC
viewtopic.php?t=9278
http://hackaday.com/2010/05/22/z80-emul ... -hardware/
viewtopic.php?t=7636
Image
http://sgu-wap.narod.ru/SP_Z80/CP_M/Z80_on_PIC32.jpg
Но автор её спрятался, как секретный физик НАСА, так что схемы и прошивки мне раскопать не удалось.

Упомянутый здесь проект, CP/M on an AVR
http://spritesmods.com/?art=avrcpm&f=had
автор которого запихал Intel 8080 и OS CP/M в ATMega88, тоже интересен и весьма похож на тот.

Описание и документация автора несколько сумбурны, так что сразу я этот проект отложил, но в празднички решил попробовать.
Сначала пришлось привести в божеский вид вот этот "чертёж":

Image

И, надеюсь, я не напортачил лишнего:

Image
http://sgu-wap.narod.ru/SP_Z80/CP_M/SKC_sch88.png

И для начала я решил дать "толчок" проекту в Протезусе. (Обычно у меня это получается, но на AVR до сих пор ничего не пробовал.)
Замечательной авторской памяти – GM71C4 256A 128 KB, 4-bit DRAM chip – у меня в Протезусе не нашлось, поэтому пришлось заменить её двумя чипами половинной ёмкости, разбросав по ним сигналы /OE и /WE согласно состоянию сигнала А8.

Image
http://sgu-wap.narod.ru/SP_Z80/CP_M/AVR_CPM.png

MMC/SD-card сразу не цеплял, поскольку модель, как мне кажется, подглючивает, а может Протезус у меня уже староватый. Но, тем не менее, ожидал я в такой минимальной конфигурации на консоли хотя бы:

Ok, CPU is live!

Для чего, как мне показалось из текста z80.asm, MMC/SD-card и CP/M сразу не требуются.
Но - "от винта"… сразу этого не случилось… :(
Вот такой старт, как у автора, мне на консоли Протезуса лицезреть не удалось.

Image

В общем - некоторое "обломинго" с разбегу… :( Ну что ж - буду посмотреть…
Хотя…сам автор упоминает, что ошибок у него дофига…

Короче, кому это интересно, документацию по проекту можно взять вот здесь,
http://sgu-wap.narod.ru/SP_Z80/CP_M/AVR_CP_M.rar
раз уж я потратил на это время. Может - у кого получится.
Прав автора мы не нарушим - всё это у него licensed under the GPLv3.
pwa75
Novelist
Posts: 27
Joined: 03 Mar 2011 11:51
Location: Адлер

ср м на меге

Post by pwa75 »

Тоже понравился этот проектик. Решил его взять на вооружение. Вот уже пару месяцев ваяю эмулятор РК86 на меге8515. т.к. очень люблю Algorithm Builder то пришлось переписать весь эмулятор z80 под него.
Что уже имею. Есть отдельно отлаженный эмуль z80 (как не странно я его запустил). есть отдельно отлаженный модуль эмуля ВГ75 и ВТ57 , выводит 64символа на 23строки. Теперь хочу все это поженить. В 8кило меги удалось поместить эмуль z80,вг75,вт57,знакогенератор и монитор. И еше осталось 1.5кило свободного места ). Проблема заключается в том ,что эмуль z80 хавает почти все регистры, но и эмуль вг75 тоже их немножко берет (. Короче извращаюсь как могу, но дело движется ).
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

2_pwa75
Ну ты бы поделился проблемами, фотками штоль - мне тоже проект довольно близок...
pwa75
Novelist
Posts: 27
Joined: 03 Mar 2011 11:51
Location: Адлер

Post by pwa75 »

Image
вот плата
Image
это я проверял эмуль вг75
Image
первые извращения
Сейчас дело остановилось на женитбе эмуля вм80 и вг75. уже добился того, что эмуль вм 80 не мешает выводу на экран. Косяки по ходу гдето в эмуле 80го, т.к. код монитора исполняется до определенного момента. картинку пока увы не вижу . Если чесно ,выкинул из проекта все лишнее, оставил только сам код который эмулирует проц. дебаггер,работу с извращенной памятью, карточку ит.д все выкинул, даже rs232, т.к. мне оно даром не надо было :)
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

pwa75 wrote:работу с извращенной памятью, карточку ит.д все выкинул,
В смысле ты DRAM выкинул и статику поставил? А то непонятно - сам говоришь, что регистров едва хватает... Или как?
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

pwa75 wrote:очень люблю Algorithm Builder

Ну и как он на твой взгляд - удобен штоль?
example.gif
http://algrom.net/russian.html

А то у меня друг недавно пересел за визуальный ассемблер.
Говорит - да ну нафиг - смотри как удобно... квадратики
ромбики... почти ни строчки кода...

А я как-то всё больше по-старинке привык... :wink:
You do not have the required permissions to view the files attached to this post.
pwa75
Novelist
Posts: 27
Joined: 03 Mar 2011 11:51
Location: Адлер

победа над разумом!

Post by pwa75 »

Да драм выкинул. Схема стандартная. Статика по стандартному включению. Добавлен только видеовыход как в рк86. АВ удобен мне при отладке,да и писать в нем удобно :wink: . Докладываю что получилось.
Женитьба удалась !! Также обнаружил косяк в эмуле ВМ80 ! После его исправления эмуль заработал. Вот где косяк
; *** Stage 1: Fetch next opcode
mov adrl,z_pcl
mov adrh,z_pch
rcall memReadByte
adiw z_pcl,1
Этой командой происходило увеличение только младшего байта адреса,теперь представте ситуацию когда адрес $50ff, после этой команды будет $5000 , вот и думайте дальше что произойдет.
Исправить также сдесь
do_fetch_dir8:
mov adrl,z_pcl
mov adrh,z_pch
rcall memReadByte
adiw z_pcl,1
mov opl,temp
ret

do_fetch_dir16:
mov adrl,z_pcl
mov adrh,z_pch
rcall memReadByte
mov opl,temp
adiw z_pcl,1
mov adrl,z_pcl
mov adrh,z_pch
rcall memReadByte
adiw z_pcl,1
mov oph,temp
ret
Знающий чел поймет как исправить эту ситуевину,я исправил так. переменным z_pcl и z_pch присвоил номера регисров Х.
pwa75
Novelist
Posts: 27
Joined: 03 Mar 2011 11:51
Location: Адлер

Post by pwa75 »

по поводу регистров, вот что имеем
;Register definitions
.def z_a = r2
.def z_b = r3
.def z_c = r4
.def z_d = r5
.def z_e = r6
.def z_l = r7
.def z_h = r8
.def z_spl = r9
.def z_sph = r10
.def dsk_trk= r11
.def dsk_sec= r12
.def dsk_dmah= r13
.def dsk_dmal= r14
.def parityb= r15
.def temp = R16 ;The temp register
.def temp2 = R17 ;Second temp register
.def trace = r18
.def opl = r19
.def oph = r20
.def adrl = r21
.def adrh = r22
.def insdecl= r23
.def z_pcl = r24
.def z_pch = r25
.def insdech= r26
.def z_flags= r27

ну и что остается под свои нужды? смог только исключить регистры которые были нужны для эмуля жесткого диска r11,r12,r13,r14. Пришлось все остальное пихать в стек, с которым поимел немало гемороя при отладке :( . Проверить на железке смогу только в понедельник,т.к. все осталось на работе. но в отладчике уже все ок.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

pwa75 wrote:все выкинул, даже rs232, т.к. мне оно даром не надо было
Что-то смысл я не сразу осознал... :wink:
А как же у тебя клавиатура теперь с РК общается?
pwa75
Novelist
Posts: 27
Joined: 03 Mar 2011 11:51
Location: Адлер

Post by pwa75 »

По поводу клавы. ее вапще пока нет :D . Пока была задача все это дело запустить. Имею первые продвижения. Вся система запустилась. Даже запустил игруху :) . Но есть первые разочарования. скорости явно не хватает.видно как происходит очистка экрана
вот игра стакан
Image

Идея раскидать эмуль вг75 и вм80 в разные процы была изначальной.
трудность в том что надо организовать общий доступ двух авров к одной срам. попытки были но к удаче не привели.как видно из фото выше, даже есть доп панелька на плате. кто может помоч в этом деле. есть даже идея сделать обмен данными через свободный порт D. а эмуль вг75 могу запихнуть в мегу8.вообще эмуль вг75 могу засунуть в любой проц где spi тактуется на /2 и 16мгц тактовая
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

pwa75 wrote:Идея раскидать эмуль вг75 и вм80 в разные процы была изначальной.
Твоя идея или что-то за прототип брал?
pwa75 wrote:кто может помоч в этом деле. есть даже идея сделать обмен данными через свободный порт D. а эмуль вг75 могу запихнуть в мегу8.вообще эмуль вг75 могу засунуть в любой проц где spi тактуется на /2 и 16мгц тактовая
Ну без схемы помочь в принципе трудно. То есть оба проца у тебя конфликтуют при обращении к СРАМ по spi?
Я почему-то думал, что ты СРАМ по-другому прицепил, исходя из схем здесь - выше...
pwa75
Novelist
Posts: 27
Joined: 03 Mar 2011 11:51
Location: Адлер

Post by pwa75 »

да вроде такой дурости еще нигде не встречал
значит идея моя.Просто в инете не находил еще схемы где срам одна на два проца.SPI юзает вывод на экран, поэтому его использовать нельзя.
ну вот,вроде писал ,что срам по стандартной схеме.
вот вам схема

Image

а вообще хотел вот так

Image
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Поставь вот такую двухпортовую DRAM, делай один цикл чтения строки RAS в порт SIO по запросу эмулятора ВГ75 (сама же ВГ75 так и делает, правда? за одно и проблему регенерации покроешь) и считывай потом строку символов из SIO как тебе надо. Ставятся эти DRAMы в сегах мега драйвах. Сам проц может обращаться как обычный RAS-CAS цикл. Она 4 бита, нужно 2 штуки. Но получаешь сразу 64КБ. Я такие хотел заюзать в спеце, чтобы вывод не конфликтовал. А может еще и заюзаю...

PS Эта DRAM поддерживает и ввод через SIO. :3