Важная информация

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 23

Тема: Z80 => 8080 адаптация

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    512 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    Arrow Z80 => 8080 адаптация

    Собственно так как старые средства адаптации z80 кода к 8080 полностью морально устарели заведена эта тема

    мне известны ~2 средства адаптации z80 кода:

    макросы для tasm (которые надо поискать)
    Набор макросов для перевода z80 -> i8080 для ассемблера tasm 3.01
    http://sensi.org/~retrocomp/vector06c/z80trans.zip
    http://www.mediafire.com/file/g3jc5r...trans.zip/file
    в котором не все команды и который подозревается в наличии очепяток

    и старый досовский рекомпилятор\дизассемблер нето DAO нето PROGRAM RECOMPILE SYSTEM

    DAO 08-10-30 (PROGRAM RECOMPILE SYSTEM v1.15)
    http://www.mediafire.com/file/59xo9s...10-30.rar/file
    который вроде бы как успешно не работает в win15 х64
    и содержит ошибке как в самом себе (например раз тупо пропустил sub (hl) (который шел после нормальной 8080 команды))
    так и в реализации z80 команд
    а так же v1.12 с сорцами
    https://zx-pk.ru/threads/8712-rekomp...=1#post1104179



    ну а так как все нормальные люди кодят в sjasm-е
    и мнемониками z80 а не пиктограммами 8080
    а дизассемблируюут идой а не самописными досовскими утилитами
    то эти 2 средства сейчас полностью и апсолютно бесполезны...


    так же разовая замена всех z80 команд не лучший вариант для большого количества кода
    z80 команды имитируются не сильно точно
    и получаемый глюкокод состоит из тучи ошибок которые потом требуется долго вылавливать

    так что правильнее адаптировать ручками (ну и так жо интересней и в 10 раз дольше : ) плавно и постепенно
    при помощи макросов и автозамены
    заменяя отдельные группы команды и промежуточно тестируя что отвалилось и из за чего

    методику опишу потом она на этапе разработки




    на данный момент повторно выдрал все опкоды из DAO и оформил в текстовичек
    сверил с макросами ivagor-а и позаимствовал от туда некоторые каменты и другие реализации команд

    z80_2_8080 r0021
    http://www.mediafire.com/file/ylmco5..._r0021.7z/file

    старые версии


    z80_2_8080 r0019
    http://www.mediafire.com/file/q1ec5k..._r0019.7z/file
    [свернуть]


    перевел все на читаемый z80 возможно с косяками
    8080 мнемоники оставил рядом в коментах (возможно в процессе их слегка похерил автозаменой)
    кому надо легким движением руки (по крайней мере в npp) превратят оно обратно в 8080 only

    в комплекте закинул список соответствия 8080 команд командам z80
    и список z80 команд отдельно посортированных не то по алфавиту не то по назначению в том же порядке что и основной сорец


    пометки в коментах:
    mod code - само модифицируемый код (тот что нашёлся при беглом просмотре)


    из todo
    теперь нужно найти кривые реализации опкодов
    и задокументировать какие флаги они не ставят какие они ставят когда не должны

    заменить совсем не правильные типа sbc hl,hl

    так же есть косяки в командах работающих с SP

    еще нужно найти команды которые не могут вызываться при помощи call
    и все пометить

    в принципе для меньшего думания головой можно сделать включение im2 режима с обработчиком на rst38
    который будет читать вектор прерываний и запускать нужный код...

    и конечно все это нужно сравнить с макросами tasm-а



    так же в тему призываются наши программертролли на подобии Sayman-оа и goodboy-ев
    которые глянув одним глазом на 5К строк кода сразу скажут
    "а вот тут флаг не так ставится"
    Последний раз редактировалось NEO SPECTRUMAN; 13.02.2021 в 13:55.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    512 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    в тасме тоже не без ошибок

    все set и res пушат af а потом восстанавливают в hl...


    Код:
    ;.ADDINSTR	SET 4,H		F16710F67CF5 6 NOP 1; push psw\ mov a,h
    				\ ori 10h\ mov h,a\ pop h
    
    ;.ADDINSTR	RES 0,H		F167FEE67CF5 6 NOP 1; push psw\ mov a,h
    				\ ani 0feh\ mov h,a\ pop h


    хотя видимо это ошибка в коментариях
    hex значения вроде бы делают push af pop af

    еще OTIR OTDR пишут в память...
    Последний раз редактировалось NEO SPECTRUMAN; 12.02.2021 в 05:08.

  4. #3
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,860
    Спасибо Благодарностей отдано 
    656
    Спасибо Благодарностей получено 
    1,847
    Поблагодарили
    1,055 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    еще OTIR OTDR пишут в память...
    Там много кто пишет в память, главное, что otir и otdr пишут в порт

  5. #4
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    512 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Там много кто пишет в память, главное, что otir и otdr пишут в порт
    нет

    это скорей всего сложность в понимании своих 8080 клинописей

    Код:
    : OTIR	
    		ld (TMP8),a		;sta TMP		; otir
    		ld a,c			;mov a,c		;
    		ld ($+5),a		;sta $+5		;
    		ld a,(hl)		;mov a,m		;
    		out ($00),a		;out 0			;
    		inc hl			;inx h			;
    		dec b			;dcr b			; DAO
    		jp nz,$-9		;jnz $-9		;
    		ld a,(TMP8)		;lda TMP		; mod code
    			
    ;		ret			;ret	
    	
    ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -			
    : OTIR (TASM Version)
    ;		ld (TMP8),a		;sta TMP8		;
    ;		ld a,c			;mov a,c		;
    ;		ld ($+4),a		;sta $+4		;
    ;		out ($00),a		;out 0			;
    ;		ld (hl),a		;mov m,a		; ERROR
    ;		inc hl			;inx h			;
    ;		dec b			;dcr b			; TASM
    ;		jp nz,$-9		;jnz $-9		;
    ;		ld a,(TMP8)		;lda TMP8		; mod code
    		
    ;		ret			;ret

    тупо перепутана mov m.a и mov a,m (для меня вообще это выглядит как 2 одинаковых строчки и нужно всматриваться)
    и не в том месте
    в z80 четка видно ld (hl),a и ld a,(hl) и перепутать чтение и запись физически нельзя
    и не сливается в сплошной столб мракобесия как на 6502 и 8080 за который глазу не как заципится
    Код:
    mvx 5
    ewr y
    fje w 
    rfi f
    hwe l 
    rjf n 
    ewr f
    мало того это во всей INIR, INDR, OTIR, OTDR, INI, IND, OUTI, OUTD группе....
    и видимо ошибка скопипастилась потом еще 6 раз и даже не заметилась...
    ну и в данном случае реабилитирующих hex значений рядом найдено не было
    Последний раз редактировалось NEO SPECTRUMAN; 12.02.2021 в 10:55.

  6. #5
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,860
    Спасибо Благодарностей отдано 
    656
    Спасибо Благодарностей получено 
    1,847
    Поблагодарили
    1,055 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    мало того это во всей INIR, INDR, OTIR, OTDR, INI, IND, OUTI, OUTD группе....
    Неправильные: OTIR, OTDR, OUTI, OUTD; правильные: INIR, INDR, INI, IND.
    Последний раз редактировалось ivagor; 12.02.2021 в 11:12.

  7. Этот пользователь поблагодарил ivagor за это полезное сообщение:

    NEO SPECTRUMAN (12.02.2021)

  8. #6
    Guru Аватар для Sayman
    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,280
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    так же в тему призываются
    8080 не интерисует. делай как хошь...
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  9. #7
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    512 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    до вроде так

    значит otir-ы делались из inir-оа
    а суть прозевали...
    но не важно это io часть и она скорей всего будет меняться при адаптации
    и наверно по этому и прозевалось


    в dao вон вообще прозевали
    Код:
    : SBC HL,HL
    		ld hl,$0000		;lxi h,$0000		; sbc HL,HL
    вот это может закончится фиаском....
    ...конечно эта команда может использовать и для быстрого зануления hl
    но для этого нужно иметь подготовленный carry флаг...
    Последний раз редактировалось NEO SPECTRUMAN; 12.02.2021 в 11:20.

  10. #8
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,860
    Спасибо Благодарностей отдано 
    656
    Спасибо Благодарностей получено 
    1,847
    Поблагодарили
    1,055 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Несмотря на некоторый негатив мне все же приятно, что кто-то заинтересовался, не не только dao Tim0xи (к которому я тоже немного приложил руку), но даже моей поделкой 20 летней давности, но думаю стоит добавить небольшой исторический экскурс для прояснения ситуации с трансляцией z80->8080 и с багами.
    В 2000 у Tim0xи и у меня решение заняться рекомпиляцией z80->8080 дошло до практической стадии, но мы сначала пошли немного разными путями. Он взял рекомпилятор z80->8086 Валерия Бостана и стал переделывать его с использованием макросов из игр рекомпилированных на Вектор, Корвет, ПК8000 и ПК8002 в московском Счетмаше. А я сделал таблицу для tasm. Можно проследить по датам, что свой вариант я поддерживал несколько месяцев, потом полностью переключился на dao Tim0xи. Поэтому в тасмовской табличке не исправлены в частности outi, outd, otir, otdr, которые исправлены в dao. И возможно у меня там есть еще ошибки. И в dao есть ошибки. Но надо отметить, что выложенная версия 1.15 не является последней, была следующая версия (а может не одна, я уже не помню) с серьезной переработкой, которая понадобилась при рекомпиляции очередной игры. Проект (dao) по ретрокомпьютерным меркам сравнительно большой и сложный, поэтому ошибки в нем были и есть, исправляли их по мере нахождения, когда пользовались этим пакетом. Когда находил ошибки в dao сообщал Tim0xе, пока сотрудничали с ним, потом просто исправлял вручную. О полезности проекта говорит и то, что несмотря на недостатки, ты не стал делать все с нуля, а воспользовался dao, значит в нем до сих пор есть некоторый толк.

  11. #9
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    512 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    О полезности проекта говорит и то, что несмотря на недостатки, ты не стал делать все с нуля, а воспользовался dao, значит в нем до сих пор есть некоторый толк.
    ну толк есть только в его командах
    и к сожалению они проста так с него не вырываемые

    лучше б это был адаптер уже готовых текстовых сорцов а не все в одном
    после тупого проглатывания одной команды
    я ему теперь полностью не доверяю как дизасму

    ivagor а не осталось более новой версии dao? сорцов?

    версия твоих макросов последняя? (в первом посте ссылка)

    я сверяю оба варианта и добавляю отличающийся себе

    - - - Добавлено - - -

    Цитата Сообщение от ivagor Посмотреть сообщение
    но даже моей поделкой 20
    в отличии от DAO тут есть коменты
    в которых указаны отличия

    а dao мы получаем голый сорец без намеков где могут быть косяки

    - - - Добавлено - - -

    Цитата Сообщение от ivagor Посмотреть сообщение
    Проект (dao) по ретрокомпьютерным меркам сравнительно большой и сложный,
    кстате обращаю внимание что этот проект теряется во времени
    и его бывает тяжело нагуглить опять...
    ...ну а твои макросы вообще попадаются чисто случайно
    в этот раз их подкинул zx_
    Последний раз редактировалось NEO SPECTRUMAN; 12.02.2021 в 12:44.

  12. #10
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,860
    Спасибо Благодарностей отдано 
    656
    Спасибо Благодарностей получено 
    1,847
    Поблагодарили
    1,055 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    лучше б это был адаптер уже готовых текстовых сорцов
    С самого начала агитировал Tim0xу именно за этот вариант, но он не сагитировался, а я сам так и не занялся.

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    не осталось более новой версии dao? сорцов?
    Последней версии dao у меня нет, что немного иронично, т.к. я тогда нашел проблему и предложил решение. Сорцы были только у Tim0xи.

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    в отличии от DAO тут есть коменты
    в которых указаны отличия
    Подход был правильный, но комменты к сожалению не исчерпывающие, их надо было дополнять.

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    версия твоих макросов последняя?
    Да, последняя, дальше занимался только dao. Макросы в таком виде имеют только историческую ценность (и то сомнительную), для практического использования надо пройтись, найти и исправить ошибки, внести доработки, дополнить комментарии.

Страница 1 из 3 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. TS адаптация
    от Voxel в разделе Музыка
    Ответов: 206
    Последнее: 15.05.2023, 21:43
  2. Адаптация 2048
    от Yprit в разделе Игры
    Ответов: 3
    Последнее: 25.12.2019, 10:33
  3. схема АОН на 8080/z80
    от sergey2b в разделе Разный софт
    Ответов: 7
    Последнее: 07.02.2010, 22:43
  4. An 8080/Z80 C Compiler
    от breeze в разделе Программирование
    Ответов: 1
    Последнее: 18.08.2005, 06:54

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •