nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 18 Mar 2024 21:52



Reply to topic  [ 5 posts ] 
Nedo_i8080 on PIC16 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Идея эмуляции 8-битного процессора (i8080, Z80, 6502 или 6800) на платформе PIC неоднократно обсуждалась здесь на форуме:
Z80 -> PIC
http://www.nedopc.org/forum/viewtopic.php?t=7636
PIC17C4X в режиме микропроцессора (nedoPC-17)
http://www.nedopc.org/forum/viewtopic.php?t=8303
и др.

Есть ссылки на уже реализованные проекты:
эмулятор Z80 на PIC
http://www.nedopc.org/forum/viewtopic.php?t=9278

Мне эта идея также близка, но с одной поправкой - выполнить эмулятор конкретно на одном-двух корпусах PIC16F84.
Во-первых, у меня они в достаточном количестве есть (и как говаривал Наполеон своим артиллеристам - "… всё остальное не имеет значения" ;-) ). Но, во-вторых, эмулятор i8080, выполненный на 40-выводном корпусе, вызывает какой-то внутренний протест. :-)

Понятно, что в случае PIC придется создать фактически интерпретатор кодов команд i8080, и в этой связи меня заинтересовали интерпретаторы BASIC Stamp, разработанные как отдельными любителями, так и целыми ассоциациями. В отличие от Паралакса, джентльмены добиваются фактически спортивного результата, упихивая интерпретатор BASIC конкретно в PIC16F84 и не иначе. Среди таких проектов интересны BASIC ST1-64 и BS/4.
BS Club - PIC Interpreters Club
http://webspace.webring.com/people/hu/um_3829/
PIC Micro Controller BASIC Languages
http://www.piclist.com/techref/microchip/language/basics.htm
Dontronics - Basic Stamp Divided By Four!
http://www.dontronics.com/bs4.html

И тут мне попался замечательный проект from Tom Napier - “Picaro”.
Image

Я не понял местного юмора, и, возможно, Shaos внесёт ясность:
Quote:
"Since this little computer would be more adventurous than most, I decided to call it “Picaro.” (I was tempted to call it “Picard” but decided I couldn’t afford a fight with Paramount’s lawyers.)",

но джентльмен Tom Napier удачно реализовал прототип интерпретатора кодов команд, близких к набору i8080, на одном корпусе PIC16, что, собственно, он и поставил своей задачей.
О подробностях можно прочитать здесь:
http://i.cmpnet.com/edtn/ccellar/e023pdf1.pdf
и взять оригинальные исходники...
ftp://ftp.circuitcellar.com/Circuit_Cellar/1998/Issue_93/picaro_UPDATED!.ZIP

А здесь - копия документа в формате Word, в которой мне пришлось подчистить некоторые выявленные опечатки:
http://sgu-wap.narod.ru/Picaro/Picaro_Controller.doc
ибо, если на заборе написано слово из трёх букв - не верь, там могут быть и дрова. :)
С учётом того, что кроме, собственно, самогО интерпретатора, Tom Napier упихал в PIC16C56 ещё и тест–мониторную программу, очень похожую на ранний Монитор от "Специалиста", он убедил меня, что i8080-совместимый компьютер в принципе можно реализовать на одном-двух корпусах PIC16F84, поскольку места в памяти программ у Тома еще и осталось!

Схемотехника Picaro весьма проста:
Image
http://sgu-wap.narod.ru/Picaro/Scheme.gif

и это сподвигло меня попробовать девайс в среде 'Протезуса':
Image
http://sgu-wap.narod.ru/Picaro/Picaro.gif

Выяснилось, что отладка интерпретатора, выполняющего интерпретирующую программу - это не фунт изюма, поэтому я вывел на индикаторы текущий адрес интерпретируемого кода, чтобы видеть соответствие между кодами PIC16F84 и программой на псевдо-i8080.
Пришлось также адаптировать коды PIC16C56 к PIC16F84, и на этом этапе выяснились некоторые опечатки в исходниках Тома, которые я и подправил по ходу дела. Не скажу, что кочевряжился очень серьёзно, поскольку всё равно придётся для себя многое переписать и изменить, но тест проходит успешно, и опции все работают корректно, хотя наличие ошибок не исключаю.

Проект 'Протезуса' (6 Pro) выкладываю:
http://sgu-wap.narod.ru/Picaro/Picaro.rar

Рабочий вариант - Picaro_1.DSN (в Picaro_2.DSN я смотрел протокол работы с EEPROM, ибо глючило в одном месте, но вроде подправил.)

Когда всё заработало, ей богу, испытал редкую ностальгию и опустился до удовольствия попрограммировать в кодах под Монитором, благо 'Виндавоз' позволяет сделать это без бумажки, а процесс так напоминает спартанский способ общения с древним 'Специалистом'. :-)
Параллельный интерфейс, вероятно, нужен для отладки программ при общении с инструментальной машиной, а так всё вполне работоспособно через консоль RS-232.
Компиляторов в коды псевдо-i8080 Том не прикладывал, справедливо заметив:
Quote:
"I do this by hand, which is a strong motivation for keeping the language simple. It would be easy to write an assembler for this language. I didn’t need to myself, and in any case, my software runs on an Amiga and wouldn’t be much use to WIntel users. Perhaps you can fill the gap."

Мне кажется, что Picaro - достойный прототип для создания собственных эмуляторов 8-битных компьютеров, тем паче, что можно начинать не с нуля, а пробовать всё на работающем экземпляре, благо Том не пожадничал исходники, а я внёс тест-программу в EEPROM, так что сразу всё работает, и нет нужды ничего записывать. Хотя можно менять программу с консоли побайтно опцией E Монитора, а также записывать её в память EEPROM директивой U, синтаксис которой несколько непривычен, но работает сугубо так, как написано у Тома. Это позволяет заносить программу через окно консоли методом Copy-Paste строками по 16 байт в HEX-коде, не забывая заканчивать их [Enter].
Замечу, что остальные директивы Монитора заканчивать [Enter] не надо, но синтаксис следует соблюдать полностью: адрес - три символа, байт - два символа, регистр - прописные символы латиницы, иначе Picaro не понимает. [Enter] позволяет прервать интерпретацию, как и любую команду, хотя бывает и не так. [Space] в директиве E позволяет пропустить редактируемый байт. Все директивы интуитивно понятны, хотя и приводится их подробное описание.
Надеюсь, материал будет полезным для тех, кто хочет сам замутить эмулятор i8080 на PIC.

PS. Shaos - удали с аплоудера файлы:
http://www.nedopc.org/nedopc/upload/Picaro.bmp
http://www.nedopc.org/nedopc/upload/Picaro0.bmp
http://www.nedopc.org/nedopc/upload/Picaro1.bmp
они меньше по размеру, чем PNG, но .BMP движок не счел за [img] :wink:


07 Jun 2010 05:07
Profile
Online
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22381
Location: Silicon Valley
Reply with quote
Post 
Прикольно! Я в своё время хотел на SX-28 сделать интерпретатор i8080 - причём провёл всю подготовительную работу в тетрадке, но кодить так и не начал...

Quote:
PS. Shaos - удали с аплоудера файлы:
http://www.nedopc.org/nedopc/upload/Picaro.bmp
http://www.nedopc.org/nedopc/upload/Picaro0.bmp
http://www.nedopc.org/nedopc/upload/Picaro1.bmp
они меньше по размеру, чем PNG, но .BMP движок не счел


Странно - попробовал преобразовать в PNG и получил файлы в 4-6 раза меньше :)
А вообще они у тебя после уменьшения размылись, т.е. вполне можно было и в JPG утолкать - было бы ещё меньше...

_________________
:dj: https://mastodon.social/@Shaos


07 Jun 2010 05:38
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
2_Shaos

Quote:
А вообще они у тебя после уменьшения размылись,


Вот потому я их и не ковертнул в ГИФ или ДЖИПЕГ - там вапще позор был...

В чем юмор переклички Пикаро - Пикард и причем тут студия Парамаунт - просвети... ?


Quote:
Я в своё время хотел на SX-28 сделать интерпретатор i8080 - причём провёл всю подготовительную работу в тетрадке, но кодить так и не начал...


Ты б это выложил бы где - либо... было бы полезно не изобретать веросипед другим людям, а то труда поклал небось...
Поэтому я и люблю танцевать от прототипа...


07 Jun 2010 05:42
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Я не понял местного юмора, и, возможно, Shaos внесёт ясность:
Quote:
"Since this little computer would be more adventurous than most, I decided to call it “Picaro.” (I was tempted to call it “Picard” but decided I couldn’t afford a fight with Paramount’s lawyers.)",

В чем юмор переклички Пикаро - Пикард и причем тут студия Парамаунт - просвети... ?

Да уж... :wink: Не прошло и два года - как суть "юмора" до меня дошла... :lol:

Это же Patrick Stewart - Star Trek's Captain Picard! Любимый герой нашего MC68k. :roll:

Attachment:
Patrick Stewart.png
Patrick Stewart.png [ 142.98 KiB | Viewed 3528 times ]

Да за использование мема этого приключенческого персонажа Paramount Pictures
действительно удавит по суду! :lol:

Поэтому - лишь намёк: “Picaro.” :wink:

_________________
iLavr


11 Sep 2012 14:33
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Еле нашел этот проект! В нём шикарнейший софтверный RS-232! :kruto:
Причем, насколько я помню, приём байта идёт по прерыванию, а не по опросу...

Пошарил сначала по интернету поисковиками - все норовят PIC16F628 заюзать,
с аппаратным RS-232... :-?
https://radiolaba.ru/microcotrollers/podklyuchenie-mikrokontrollera-k-pk.html

Я, кстати, потом уже использовал код софтверного RS-232 вот в этом проекте:
http://www.nedopc.org/forum/viewtopic.php?f=67&t=9310
но там уже прилично отсебятины накручено...

_________________
iLavr


10 Jul 2022 00:05
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 5 posts ] 

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.