Nedo-трансляторы для i8080

8-битные микроконтроллеры и микропроцессоры от Intel и их клоны, а также компьютеры на них построенные

Moderator: Shaos

Post Reply
User avatar
Lavr
Supreme God
Posts: 16659
Joined: 21 Oct 2009 15:08
Location: Россия

Nedo-трансляторы для i8080

Post by Lavr »

Задача написать свой компилятор для PIC8080 показалась мне весьма интересной,
viewtopic.php?t=9310
поскольку была в некотором роде триединой: я сам мог ввести нужные мне ассемблерные команды в PIC8080, на основе этих команд писалась программа Теннис, которую своим же компилятором я и переводил в коды.
Ну и чтоб не изобретать на этом пути древних велосипедов, я слегка обозрел материалы в Инете на вопрос - как написать компилятор.
Честно говоря, меня это повергло в некоторое сомнение, ибо, если бы я учился писать компиляторы на этом материале - я, наверное, осилить такую задачу не смог бы...
Хотя встретились вещи и совершенно удивительные - компилятор, который может скомпилировать сам себя на GW-Basic, к примеру, и некоторые другие интересные проекты...

http://www.soft-info.ru/downloads/cat207
http://www.vbnet.ru/articles/showarticle.aspx?id=131
http://www.kulichki.net/kit/
http://exmortis.narod.ru/
последний сайт мне асабливо понравился, хотя конечно накопать можно еще много чего.

Основная мысль меня просто убила - написать компилятор тяжело, противно, и трудно довести это дело до победного конца, а лучше всего написать транслятор в мнемоники какого либо другого известного и распространенного языка, а уж потом готовым компилятором всё и компилить.
Может, конечно, это и не везде так, но такова основная мысль распространенного материала - Компилятор пишется так...
http://www.cast.h1.ru/Articles/compiler_writes_as.shtml

В общем, я плюнул на эти источники и написал компилятор PIC ASSM i8080 так, как умел сам, как учился сам, проводя в древние времена реверс-разработки программ-Ассемблеров для 8-битных процессоров.

А теперь - основное о чем я, собственно, хотел сказать в этом топике.
На путях обзора различных компиллеров, попалась мне интересная программулина

EDUCATIONAL ASSEMBLER I8080 VERSION 2.0 for MS Windows 95/98
Copyright 1995-2000 by Konstantin Zheludev

попробовать её можно отсюда:
http://sgu-wap.narod.ru/PIC8080/Assm80.rar

я думаю, автор не обидится на меня, ибо откуда я её взял - не запомнил, значит будем считать, что я бесплатно делаю ему рекламу. :lol:
Ничего потрясающего в этом EDUCATIONAL ASSEMBLER не было, и мои программы от Специалиста_MX, пусть тот же Теннис,
http://sgu-wap.narod.ru/Tennis/PONG.rar
этот EDUCATIONAL ASSEMBLER скомпилировать не смог, поскольку сразу не нравилось ему слово ORG, а потом он ругался на длину программы и т.д.

Короче, ничего кроме собственных примеров EDUCATIONAL ASSEMBLER я на нём не скомпилировал, но удивила меня одна опция - перевести коды ассемблера i8080 в мнемоники Z80 (что вполне не фантастично) и в мнемоники i8086 - что уже более интересно!
Свои примеры он действительно переводит, хотя несколько по-своему. И поскольку скопилировать его текст сразу не получится, нет обрамления типа

Code: Select all

сode_seg    SEGMENT PARA 'CODE' 
            ASSUME  CS:code_seg, DS:code_seg, SS:code_seg
;
            ORG  100H 
BEGIN_COD:

...
code_seg    ENDS 

            END  BEGIN_COD

то я и не могу сказать ничего о качестве перевода.

А сам вопрос весьма интересен, поскольку Intel всегда утверждала, что программы под i8080 можно практически безболезненно перекомпилировать под x86, переписав их в новых мнемониках.
То что это правда - я знаю, сам так делал, когда еще только осваивал IBM PC XT и перетаскивал под него всё что было наработано на Специалисте, но специальных программ мне ни попадалось ни одной.
Год назад я обсуждал этот вопрос с Витей Пыхониным, он таких программ тоже не видел, но хотел бы что-то подобное приделать к своему эмулятору.
Я тогда загорелся идеей и набросал небольшой проект, который ни протестировать ни довести до ума в то время не случилось. Но, встретив этот EDUCATIONAL ASSEMBLER, я свой проект раскопал и скомпилировал на нём компилятор ассемблера :D ASSM_MX(4К) от Специалиста_МХ, расковыривая который, я в своё время, собственно и учился как писАть компиляторы. Каково же было удивление, когда этот весьма крупный исходник после трансляции в коды x86, совершенно безошибочно скомпилировался под Tasm !
Я не помню, что я еще хотел добавить тогда в этот проект, зачем-то там 3 поля внизу задействованы... но, на мой взгляд, основную задачу этот софт выполняет.

Интерфейс понятный интуитивно,

Image

хелп есть,

http://sgu-wap.narod.ru/PIC8080/Help.HLP

чего еще надо - не знаю, а поэтому выкладываю его здесь

http://sgu-wap.narod.ru/PIC8080/ASMWizard.rar

для тестирования и битья, вдруг что хорошее получилось, а может и ашыпки есть... :wink:

Исходник ASSM_MX там тоже прилагается.

PS. Я кстати решил дотащить его до рабочего варианта под DOS - интересно что выйдет. Коды и алгоритм менять не буду, как доделаю, тоже выложу здесь.
User avatar
Shaos
Admin
Posts: 23894
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Post by Shaos »

Я не совсем понял - речь идёт о компиляторе или об ассемблере?...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16659
Joined: 21 Oct 2009 15:08
Location: Россия

2_Shaos

Post by Lavr »

Я не совсем понял - речь идёт о компиляторе или об ассемблере?...
Я сам не совсем понял, чего ты не совсем понял и в каком месте ?
Компилятор мнемоник ассемблера обычно называют Ассемблер... :wink:
User avatar
fifan
Devil
Posts: 903
Joined: 06 Oct 2006 10:17
Location: г.Лянтор,Сургутского р-на,ХМАО
Contact:

Post by fifan »

А что подразумевается под названием PIC8080?
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 09:28
Location: Abakan

Re: Nedo-трансляторы для i8080

Post by jdigreze »

Lavr wrote:А сам вопрос весьма интересен, поскольку Intel всегда утверждала, что программы под i8080 можно практически безболезненно перекомпилировать под x86, переписав их в новых мнемониках.
То что это правда - я знаю, сам так делал, когда еще только осваивал IBM PC XT и перетаскивал под него всё что было наработано на Специалисте, но специальных программ мне ни попадалось ни одной.
Очень сомнительна полезность оного. В первую очередь из-за специфики устройств ввода-вывода на разных платформах, даже на одном типе процессора. Т.е. реальные программы "перетаскивать" не получится, и единственная область применения - перенос сложных алгоритмов. С другой стороны, алгоритмы все-таки принято записывать не в мнемониках ассемблера... imho.
User avatar
Shaos
Admin
Posts: 23894
Joined: 09 Jan 2003 06:22
Location: Silicon Valley
Contact:

Re: 2_Shaos

Post by Shaos »

Lavr wrote:
Я не совсем понял - речь идёт о компиляторе или об ассемблере?...
Я сам не совсем понял, чего ты не совсем понял и в каком месте ?
Компилятор мнемоник ассемблера обычно называют Ассемблер... :wink:
Ассемблер написать дело нехитрое - я вон свой RASM написал 13 лет назад - и до сих пор юзаю, а вот язык чуть более высокого уровня - вот это уже задача (я с такой несколько лет боролся, пока не получил более менее приемлимый результат в лице RW1P2).
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16659
Joined: 21 Oct 2009 15:08
Location: Россия

Post by Lavr »

2_Shaos

Shaos писал(а):
Ассемблер написать дело нехитрое - я вон свой RASM написал 13 лет назад - и до сих пор юзаю
Я нигде не говорил, что дело хитрое, другой вопрос, что в некоторых статьях Инета говорится противная мысль.
Я не соревновался с "13-летним назад" :wink: Шаосом в написании каких-либо языков, желаю успехов в юзаньи.

2_jdigreze

jdigreze писал(а):
Очень сомнительна полезность оного.
А мне кажется, что полезность очевидна. Обзор Инета показывает, что 80-й проц часто используют в качестве "автомата калашникова" в учебных заведениях. О чем я там в хелпе и упомянул.
...из-за специфики устройств ввода-вывода на разных платформах, даже на одном типе процессора...
Полный автоматический перенос даже в рамках 2-х систем на 80-м
проце, естесственно, может обеспечить только "обыкновенное чюдо". :lol:
...реальные программы "перетаскивать" не получится...
Я хочу рискнуть показать, что с минимальными затратами времени получится. Для этого и перетранслировал ASSM_4k от Специалиста.
...алгоритмы все-таки принято записывать не в мнемониках ассемблера...
А если они были на ассемблере написаны, то в чем? Или в Intel дураки сидели, когда сделали i8086? а потом откатили его до i8088 и заверили всех в лёгком переносе существующего уже софта для 8-битной платформы?

2_fifan

fifan писал(а):
А что подразумевается под названием PIC8080?
Вот тут написано: viewtopic.php?t=9310

Lavr писал(а):
Ну и поскольку к i8080 всё максимально приблизилось, то назовём сий дивайс Pic8080.
User avatar
Lavr
Supreme God
Posts: 16659
Joined: 21 Oct 2009 15:08
Location: Россия

Nedo-транслятор xlt86

Post by Lavr »

Nedo-транслятор xlt86

Случайно мне попался dos-вариант подобной программы. Не знаю - плох он или хорош, не пробовал. Но если кто-то подобное делал, значит оно кому-то было нужно...
http://sgu-wap.narod.ru/PIC8080/xlt86.zip

xlt86.zip (~18.5kb) i8080 to i8086 (c) 1984 by Frank J. Zerilli, ms-dos port by Craig Derouen
http://www.exmortis.narod.ru/comp_src/xlt86.zip

Переводит ассемблерный текст процессора Intel 8080 в ассемблерный текст Intel 8086.
Автор: Фрэнк Церилли; ms-dos адаптация: Крэйг Дёруан
Язык исходника: .asm (Tasm)
Выходной язык: .asm (i8086)
Документация: комментарии на английском
User avatar
Lavr
Supreme God
Posts: 16659
Joined: 21 Oct 2009 15:08
Location: Россия

Post by Lavr »

Джентльмены! У кого Венда-7 есть, не сочтите за труд - попробуйте продукт?

http://sgu-wap.narod.ru/PIC8080/ASMWizard.rar

А то я как-то, может опрометчиво, сказал Shaos-у, что всё, что я пишу под
Вендой-98, пока ещё не вступало в в конфликт со старшими версиями... :-?

Даже самому чрезвычайно интересно! :wink:
iLavr
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 20:41
Location: От туда

Post by HardWareMan »

Доставлено:
Image
User avatar
Lavr
Supreme God
Posts: 16659
Joined: 21 Oct 2009 15:08
Location: Россия

Post by Lavr »

HardWareMan wrote:Доставлено:
http://savepic.net/3335120.png
Спасибо Хардыч! :lol:
Вот я так и думал - шрифты КОИ-8 надо с программой таскать... но не сделал... :(

Но если не повисло - уже хорошо! Хотя там виснуть-то нечему - текстовый
перекодировщик с записью в файл фактически...
iLavr
User avatar
Lavr
Supreme God
Posts: 16659
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Nedo-трансляторы для i8080

Post by Lavr »

Приподниму темку... вдруг допилить захочется, пока ассемблеры еще в голове плотно... :wink:
iLavr
User avatar
Lavr
Supreme God
Posts: 16659
Joined: 21 Oct 2009 15:08
Location: Россия

Re: Nedo-трансляторы для i8080

Post by Lavr »

Lavr wrote:Хотя встретились вещи и совершенно удивительные - компилятор, который может скомпилировать сам себя на GW-Basic, ...
Я про этот компилятор уже много где на форуме писал, и даже выложил его исходники,
но тем не менее он мне на моём HDD частенько попадется, и возникает желание
его код поковырять...

Не то, чтобы я не пытался это делать ранее, но всё упиралось в то, что написан
этот компилятор именно под GW-Basic, с номерами строк, а Quick-Basic, несмотря
на то, что почти совместим с GW-Basic, на некоторые конструкции "ругается". :osad:

Второй неприятный момент, что компилятор написан немцами, и весь текст внути исходника
на "немецком английском" в кодировке DOS, что порой и трансляторы не могут перевести. :-?

В общем решил я откопать GW-Basic, и посмотреть, как под ним заработает этот компилятор.
Интересно, что сам собой скомпилированный в *.EXE (есть в архиве), действительно,
успешно компилирует примеры, что я ему подсовываю!

И тут случилась интересная вещь - под GW-Basic этот исходник стартует, и в первых
же строчках на определении массивов выдаёт Out of memory!
Пришлось хелп к GW-Basic почитать... а нету у него memory больше 64 КБайт!
Причем и сам он отгрызает от memory кусок! :esurprised:

GW323.gif
GW323.gif (3.12 KiB) Viewed 13223 times

Вот тут я просто в тупик вошел... а как же немцы это порешали? :roll:
Но зело подумав, я пришел лишь к одному выводу: у немцев сам GW-Basic был более
стар и меньше размером.

Пришлось поискать старые GW-Basic-и: http://old-dos.ru/files/file_129.html

GW201.gif
GW201.gif (3.67 KiB) Viewed 13223 times

И, действительно, старые GW-Basic-и оставляют программе больше памяти!
Компилятор немцев запустился, но дальше всё пошло хуже...

Код, действительно, "пещерный", как это ругали раньше код Basic-ов, очень
много PEEK-ов и POKE-ов, которые не попадают куда надо по логике программы,
в частности, через PEEK ищут путь к текущей директории, но он не находится,
есть ассемблерные вставки через POKE и вызовы CALL по абсолютным адресам. 8)

В общем с помощью бубна и какой-то матери с ходу не завелось.
Оставлю до следующего творческого порыва... :wink:

GW202.gif
GW202.gif (3.85 KiB) Viewed 13223 times

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

Re: Nedo-трансляторы для i8080

Post by Lavr »

Lavr wrote: 06 Sep 2010 15:45...
A сам вопрос весьма интересен, поскольку Intel всегда утверждала, что программы под i8080 можно практически безболезненно перекомпилировать под x86, переписав их в новых мнемониках.
То что это правда - я знаю, сам так делал, когда еще только осваивал IBM PC XT и перетаскивал под него всё что было наработано на Специалисте, но специальных программ мне ни попадалось ни одной.
Я тогда загорелся идеей и набросал небольшой проект, который ни протестировать ни довести до ума в то время не случилось. Но, встретив этот EDUCATIONAL ASSEMBLER, я свой проект раскопал и скомпилировал на нём компилятор ассемблера :D ASSM_MX(4К) от Специалиста_МХ, расковыривая который, я в своё время, собственно и учился как писАть компиляторы. Каково же было удивление, когда этот весьма крупный исходник после трансляции в коды x86, совершенно безошибочно скомпилировался под Tasm !
Я не помню, что я еще хотел добавить тогда в этот проект, зачем-то там 3 поля внизу задействованы... но, на мой взгляд, основную задачу этот софт выполняет.

Image

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

Исходник ASSM_MX там тоже прилагается.

P.S. Я кстати решил дотащить его до рабочего варианта под DOS - интересно что выйдет. Коды и алгоритм менять не буду, как доделаю, тоже выложу здесь.
Интересно, что эта идея была развита совсем давно, когда перенос софта с 8080 на 8086 был весьма актуален...
Сегодня день, видимо, такой странный: нахожу в поиске совсем не то, что ищу. :wink:
Вот читаю по случаю на одном адресочке..
Помните Гэрри Килдалла (Gary Kildall)? Большинству он известен, как создатель CP/M, но Килдалл был настоящим компьютерным ученым. В частности, он внес очень серьезный вклад в развитие теории компиляторов. Примером практического воплощения его идей являлся, в частности, транслятор XLT86 (8080 to 8086 Assembly Language Translator):
http://www.s100computers.com/Software%20Folder/Assembler%20Collection/Digital%20Research%20XLT86%20Manual.pdf
Никогда я не слышал про транслятор XLT86 (8080 to 8086 Assembly Language Translator)! :o
Даже интересно стало... описание скачал здесь:
http://s100computers.com/Software%20Folder/Assembler%20Collection/Digital%20Research%20XLT86%20Manual.pdf

Но, думаю, сам-то транслятор XLT86 давным-давно канул в Лету... :-?
Нет! Запаслись им поклонники шины S100 ! :lol:
Digital Research CPM86 Assemblers, Linker and Debugger
These are modeled almost exactly after the CPM80 versions. One nice feature was ASM86.COM which is a CPM80 version of the 8086 ASM86.CMD assembler. This allows your to work with your BIOS (and other programs) under CPM80 as you are building up a CPM86 version. Digital Research also supplied a CPM80 XLT-86.COM program that did a decent first pass job of converting your 8080 into 8086 code.

The CPM-86 Programmers Guide & Systems Guide explains how to work with these programs.
They can be obtained here and here.
http://cpmarchives.classiccmp.org/cpm/m ... n83[1].pdf
http://cpmarchives.classiccmp.org/cpm/m ... n83[1].pdf

The manual for the Digital Research XLT-86.COM can be obtained here.
http://cpmarchives.classiccmp.org/cpm/m ... Manual.pdf

The actual SID.CMD, RASM86.CMD, LINK86.CMD, ASM86.COM and XLT-86.COM programs can be obtained here.
http://cpmarchives.classiccmp.org/cpm/m ... %20etc.zip
Ну я себе этот самый XLT-86.COM и obtained there. Может быть, кто ещё захочет... :wink:
iLavr
Post Reply