Nedo_i8080 on PIC16

8-битные микроконтроллеры PICmicro (ПИКи) от Microchip и совместимые, а также 16-битные PIC24 и 32-битные PIC32

Moderator: Shaos

User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Nedo_i8080 on PIC16

Post by Lavr »

Идея эмуляции 8-битного процессора (i8080, Z80, 6502 или 6800) на платформе PIC неоднократно обсуждалась здесь на форуме:
Z80 -> PIC
viewtopic.php?t=7636
PIC17C4X в режиме микропроцессора (nedoPC-17)
viewtopic.php?t=8303
и др.

Есть ссылки на уже реализованные проекты:
эмулятор Z80 на PIC
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/microchi ... basics.htm
Dontronics - Basic Stamp Divided By Four!
http://www.dontronics.com/bs4.html

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

Я не понял местного юмора, и, возможно, Shaos внесёт ясность:
"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_Cel ... DATED!.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 Том не прикладывал, справедливо заметив:
"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:
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Прикольно! Я в своё время хотел на SX-28 сделать интерпретатор i8080 - причём провёл всю подготовительную работу в тетрадке, но кодить так и не начал...
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 утолкать - было бы ещё меньше...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

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

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

Я в своё время хотел на SX-28 сделать интерпретатор i8080 - причём провёл всю подготовительную работу в тетрадке, но кодить так и не начал...
Ты б это выложил бы где - либо... было бы полезно не изобретать веросипед другим людям, а то труда поклал небось...
Поэтому я и люблю танцевать от прототипа...
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Nedo_i8080 on PIC16

Post by Lavr »

Lavr wrote:Я не понял местного юмора, и, возможно, Shaos внесёт ясность:
"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:
Patrick Stewart.png
Да за использование мема этого приключенческого персонажа Paramount Pictures
действительно удавит по суду! :lol:

Поэтому - лишь намёк: “Picaro.” :wink:
You do not have the required permissions to view the files attached to this post.
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Nedo_i8080 on PIC16

Post by Lavr »

Еле нашел этот проект! В нём шикарнейший софтверный RS-232! :kruto:
Причем, насколько я помню, приём байта идёт по прерыванию, а не по опросу...

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

Я, кстати, потом уже использовал код софтверного RS-232 вот в этом проекте:
viewtopic.php?f=67&t=9310
но там уже прилично отсебятины накручено...
iLavr
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Nedo_i8080 on PIC16

Post by Lavr »

Lavr wrote: 11 Sep 2012 14:33
Lavr wrote:Я не понял местного юмора, и, возможно, Shaos внесёт ясность:
"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:

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

Поэтому - лишь намёк: “Picaro.” :wink:
Попался мне на диске архив со всеми этими материалами, и я чего-то решил открыть и почитать, и снова наткнулся
на эти фразы, вызвавшие в 2012 году непонимание...

Но, видимо, Интернет за прошедшие годы стал насыщеннее, и я вдруг нашел ответы на непонятный ранее текст. :lol:
"Since this little computer would be more adventurous than most, I decided to call it “Picaro.”
Перевод:
"Поскольку этот маленький компьютер был бы более авантюрным, чем большинство других, я решил назвать его «Picaro».”
Picaro.PNG
Вот теперь с авантюрным «Picaro» всё встало на свои места! :roll:
А 12 лет назад Википедия не была такой умной! :ebiggrin:

И ещё одна фраза меня смущала, правда, несколько в меньшей степени...
“Then, inspired by Sojourner, I started designing a computer to control models.”
Перевод:
“Затем, вдохновленный Sojourner, я начал проектировать компьютер для управления моделями.”
Sojourner.PNG
Так вот неожиданно интересные вещи вдруг узнаёшь из текста, который "проехали" 12 лет назад! :kruto:
You do not have the required permissions to view the files attached to this post.
iLavr