Для проекта ретро-вычислений мне нужно перевести тело ассемблера 8080-х годов 80-х годов в форму x86. Было время, когда инструмент для этого был ключевой частью маркетинга Intel для внедрения семейства 80x86. Но мои навыки работы с поисковыми системами, похоже, не позволяют найти этот оригинальный инструмент или что-то подобное. Кто-нибудь знает, доступен ли такой инструмент где угодно?
ИЗМЕНИТЬ
Я решил добавить некоторую справочную информацию, чтобы сделать ее более ясной, что я пытаюсь сделать. Это для общего интереса, а также, возможно, для того, чтобы высмеять еще несколько отзывов.
В предыдущем проекте я взглянул на шахматную программу Microchess эпохи 1970-х годов, и по благословению автора Питер Дженнингс начал работать на современных машинах. Питер рассказал историю Microchess на своем сайте и предоставил 6502 язык ассемблера. Мой вклад теперь добавлен в историю и можно найти по адресу:
http://benlo.com/microchess/microchess9.html
То, как я решал этот проект, заключался в том, чтобы минимально преобразовать код вручную, чтобы он соответствовал семантике языка C, например, я преобразовал это:
LDY #$0F ; CALCULATE
LDA SQUARE ; POINTS
ELOOP CMP BK,Y ; CAPTURED
BEQ FOUN ; BY THIS
DEY ; MOVE
BPL ELOOP
FOUN LDA POINTS,Y ;
Для этого
LDYi (0x0F); // CALCULATE
LDA (SQUARE); // POINTS
ELOOP: CMPx (BK,Y); // CAPTURED
BEQ (FOUN); // BY THIS
DEY; // MOVE
BPL (ELOOP);
FOUN: LDAf (POINTS,Y);
Я создал макросы препроцессора C, соответствующие всем требуемым инструкциям 6502, например LDYi() загружает эмулированный регистр Y с (i) средним значением.
Через некоторое время я обнаружил, что немецкий парень, Андре Адриан, взял мой код и добавил интерфейс, позволяющий выводить код из современного графического интерфейса шахмат. Довольно круто, мне жаль, что я не подумал об этом. Это можно увидеть на его веб-сайте;
http://www.andreadrian.de/schach/index.html
На той же странице (я использую google translate) он ссылается на оригинальную версию Sargon, еще одной классической шахматной программы, возможно, классической классики ретро, и выражает желание, чтобы кто-то вернул этот код так же Я сделал это с помощью Microchess (я думаю, что то, что говорит перевод google). Ну, ладно, я здесь, чтобы служить! На этот раз я не буду пренебрегать добавлением интерфейса GUI, или, может быть, я буду сотрудничать с Андре.
Язык ассемблера Саргона находится здесь;
http://web.archive.org/web/20040217034933/madscientistroom.org/chm/Sargon.html
Andre удалил все постороннее и оставил здесь только код языка ассемблера;
http://www.andreadrian.de/schach/sargon.asm
Теперь сюжет сгущается. Андре пытался заставить этот материал работать сам с помощью эмулятора. (Edit 3jan2012 - Andre продвинул это вперед много, и теперь вы можете запустить старый код Sargon на современном ПК - см. Его ответ ниже и его веб-сайт, приведенный выше). Но есть осложнения, которые я не думаю, что он понимает. Код Sargon на самом деле нацелен на Z80. Но язык ассемблера не является нормальным сборщиком Z80, вместо этого он представляет собой сборку 8080, со странной мнемоникой Intel для использования только для Z80. Некоторые предпосылки; Zilog Z80 является сторонним потомком Intel 8080. Он использует двоичную совместимую надмножество набора инструкций 8080. Zilog решил предоставить более чистый, более ортогональный, но совершенно другой (на исходном уровне) язык ассемблера для Z80. Третья (четвертая?) Сторона четко решила, что это было плохое решение, и сделал альтернативный ассемблер Intel Z80, с расширениями Z80, выраженными в Intel как мода. Или, может быть, они просто добавили расширения Z80, используя средство макросов существующего ассемблера 8080. Это не имеет значения; Усложнение состоит в том, что Sargon-код использует этот довольно странный гибридный ассемблер.
Есть несколько причин, по которым я хочу использовать транслятор от 8080 до x86, а не эмуляцию Z80 или повторение подхода C Macro из моего проекта Microchess;
1) На этот раз намного больше кода. Если возможно, мне бы хотелось избежать линейного редактирования, даже если это минимальное преобразование.
2) Я бы хотел, чтобы на этот раз код работал на полной скорости. Мне кажется, что я могу увеличить глубину поиска, что я не мог сделать с Microchess. Шахматный код ест циклы процессора, он принимает столько, сколько вы можете дать, а затем хочет больше.
3) Даже если бы у меня было удобное решение для эмуляции, мне нужно было собрать этот материал, что является проблемой, учитывая странное соглашение ассемблера. Но если я могу перевести все 8080 мнемоники на x86, то я могу работать удобно на земле x86 и просто вручную перевести линии размером до 10% или около того в эквивалентный x86-код.
Извините за этот бессвязный пост. Надеюсь, по крайней мере один человек найдет это интересным. Еще один запрос; Я хотел бы получить благословение Дэна и Кэте Спраклен, легендарных программистов Саргона. Но у них, похоже, нет присутствия в Интернете. Дэн Спраклен находится в LinkedIn, но, похоже, это мертвый, безответственный аккаунт. Если кто-нибудь знает этих людей или как их связаться, пожалуйста, дайте мне знать.