nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 11:15



Reply to topic  [ 26 posts ]  Go to page 1, 2  Next
Z80 -> PIC 
Author Message
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Вот наткнулся тут в рассылке одной :)

Quote:

> I've occasionally wished for a compiler that would recognize the
> assembly languages from obsolete architectures, as an alternative
> to the the object-code emulators that seem to be popular. I guess
> it's a bit tricky, though...

Do you mean convert the assembler source for architectures A to machine code for architectures B?

e.g.
Code:
    Z80 input
        ld    A,(HL)
        ld    B,C

    PIC output
        movf    z80_reg_L,w
        movwf    FSR
        bsf    STATUS,IRP
        btfsc    z80_reg_H,0
        bsf    STATUS,IRP
        movf    INDF,w
        movwf    z80_reg_A

        movf    z80_reg_C,w
        movwf    z80_reg_B


If so, XCASM can already do this :-)

XCASM is the meta assembler used by the XCSB compiler and the PIC edition of ZMech.

http://www.xcprod.com/titan/XCSB - optimising PIC compiler LITE edition free for personal non-commercial use

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


25 Oct 2004 20:52
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
А вот что если на основе 40-ногова пика сделать программно-аппаратный эмулятор какого-нибудь 80-го проца, например 8085? ;)
Интересно 20-мегагерцовый пик со скольки мегагерцами на 8085 сравнится :)

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


29 Oct 2004 17:28
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
Shaos wrote:
А вот что если на основе 40-ногова пика сделать программно-аппаратный эмулятор какого-нибудь 80-го проца, например 8085? ;)
Интересно 20-мегагерцовый пик со скольки мегагерцами на 8085 сравнится :)


Можно поразмышлять на эту тему. Итак, порт D будет шиной данных, 1 бит порта E будет !WR, 1 бит порта E будет !RD, порт B будет младшими 8 битами адреса, порт C будет старшими 8 битами адреса. Чтобы взять 80-ю команду из внешней памяти, надо:
- установить нужный адрес (как минимум инкрементировать порт B) - это может занять как минимум 2 цикла (увеличить, проверить что не переполнение)
- затем выставляем 0 в !RD - еще один цикл (всего 3)
- читаем с порта D байт - еще 1 цикл ( 4 )
- устанавливаем 1 в !RD ( 5 )
- переход по таблице для выполнения команды - 2 цикла ( 7 )
Если это была пересылка из регистра в регистр, то:
- скопировать данные из регистра в W - 1 ( 8 )
- скопировать данные из W в регистр - 1 ( 9 )
- вернутся к началу - 2 такта ( 11 )
Т.е. команда пересылки регистр-регистр (например MOV A,B) на пике сымитируется как минимум за 11 циклов (44 такта генератора). На реальных процах она занимает 5 тактов на 8080 и 4 такта на 8085. Получается что в этом смысле 20 МГц пик в качестве симулятора 80-го проца будет работать как 1.8 МГц 85-ый или 2.3 МГц 80-ый.

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


06 Nov 2004 08:56
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
Shaos wrote:
Shaos wrote:
А вот что если на основе 40-ногова пика сделать программно-аппаратный эмулятор какого-нибудь 80-го проца, например 8085? ;)
Интересно 20-мегагерцовый пик со скольки мегагерцами на 8085 сравнится :)


Можно поразмышлять на эту тему. Итак, порт D будет шиной данных, 1 бит порта E будет !WR, 1 бит порта E будет !RD, порт B будет младшими 8 битами адреса, порт C будет старшими 8 битами адреса. Чтобы взять 80-ю команду из внешней памяти, надо:
- установить нужный адрес (как минимум инкрементировать порт B) - это может занять как минимум 2 цикла (увеличить, проверить что не переполнение)
- затем выставляем 0 в !RD - еще один цикл (всего 3)
- читаем с порта D байт - еще 1 цикл ( 4 )
- устанавливаем 1 в !RD ( 5 )
- переход по таблице для выполнения команды - 2 цикла ( 7 )
Если это была пересылка из регистра в регистр, то:
- скопировать данные из регистра в W - 1 ( 8 )
- скопировать данные из W в регистр - 1 ( 9 )
- вернутся к началу - 2 такта ( 11 )
Т.е. команда пересылки регистр-регистр (например MOV A,B) на пике сымитируется как минимум за 11 циклов (44 такта генератора). На реальных процах она занимает 5 тактов на 8080 и 4 такта на 8085. Получается что в этом смысле 20 МГц пик в качестве симулятора 80-го проца будет работать как 1.8 МГц 85-ый или 2.3 МГц 80-ый.


А вот если взять и сделать что-нибудь типа клона Радио-86РК на PICе ;)

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


11 Nov 2004 21:05
Profile WWW
Senior

Joined: 28 Feb 2005 02:31
Posts: 159
Location: Krasnodar, Russia
Reply with quote
Post 
Shaos wrote:
А вот что если на основе 40-ногова пика сделать программно-аппаратный эмулятор какого-нибудь 80-го проца, например 8085? ;)
Интересно 20-мегагерцовый пик со скольки мегагерцами на 8085 сравнится :)


Интересно, а для чего это? =)


28 Jul 2005 00:56
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
acidrain wrote:
Shaos wrote:
А вот что если на основе 40-ногова пика сделать программно-аппаратный эмулятор какого-нибудь 80-го проца, например 8085? ;)
Интересно 20-мегагерцовый пик со скольки мегагерцами на 8085 сравнится :)


Интересно, а для чего это? =)

Ну как для чего? Сделать классический компьютер из современных дешевых компонентов (8080/8085 давно не выпускаются).

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


28 Jul 2005 05:27
Profile WWW
Maniac
User avatar

Joined: 29 Mar 2005 06:06
Posts: 304
Location: Krasnodar
Reply with quote
Post 
Shaos wrote:
Ну как для чего? Сделать классический компьютер из современных дешевых компонентов (8080/8085 давно не выпускаются).

ну конечно, эт у вас там не выпускаюца, а у нас все есть :) у нас даже военные этот 1821ВМ85 юзают, гы!


28 Jul 2005 05:37
Profile ICQ
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
Shaos wrote:
Shaos wrote:
Shaos wrote:
А вот что если на основе 40-ногова пика сделать программно-аппаратный эмулятор какого-нибудь 80-го проца, например 8085? ;)
Интересно 20-мегагерцовый пик со скольки мегагерцами на 8085 сравнится :)


Можно поразмышлять на эту тему. Итак, порт D будет шиной данных, 1 бит порта E будет !WR, 1 бит порта E будет !RD, порт B будет младшими 8 битами адреса, порт C будет старшими 8 битами адреса. Чтобы взять 80-ю команду из внешней памяти, надо:
- установить нужный адрес (как минимум инкрементировать порт B) - это может занять как минимум 2 цикла (увеличить, проверить что не переполнение)
- затем выставляем 0 в !RD - еще один цикл (всего 3)
- читаем с порта D байт - еще 1 цикл ( 4 )
- устанавливаем 1 в !RD ( 5 )
- переход по таблице для выполнения команды - 2 цикла ( 7 )
Если это была пересылка из регистра в регистр, то:
- скопировать данные из регистра в W - 1 ( 8 )
- скопировать данные из W в регистр - 1 ( 9 )
- вернутся к началу - 2 такта ( 11 )
Т.е. команда пересылки регистр-регистр (например MOV A,B) на пике сымитируется как минимум за 11 циклов (44 такта генератора). На реальных процах она занимает 5 тактов на 8080 и 4 такта на 8085. Получается что в этом смысле 20 МГц пик в качестве симулятора 80-го проца будет работать как 1.8 МГц 85-ый или 2.3 МГц 80-ый.


А вот если взять и сделать что-нибудь типа клона Радио-86РК на PICе ;)


А если вместо пика взять 75-мегагерцовый SX28, то его еще можно заставить и на экране телевизора что-то рисовать одновременно с эмуляцией системы команд 8080 ;)

По идее и ZX-Spectrum с Z80 можно сэмулировать с минимальными внешними довесками как память и т.д. - но это дольше

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


01 Apr 2006 19:30
Profile WWW
Senior

Joined: 28 Feb 2005 02:31
Posts: 159
Location: Krasnodar, Russia
Reply with quote
Post 
Shaos wrote:
А вот что если на основе 40-ногова пика сделать программно-аппаратный эмулятор какого-нибудь 80-го проца, например 8085? ;)
Интересно 20-мегагерцовый пик со скольки мегагерцами на 8085 сравнится :)

О, как раз я делаю на аврке эмуль 68к, но думаю 68к тяжковато будет, а вот з80 можно попробовать %)
Правда, не планировал точной эмуляции 68к, а простой асм из внешней sram интерпритировать так сказать виртуальная машина :)


02 Apr 2006 04:46
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
acidrain wrote:
Shaos wrote:
А вот что если на основе 40-ногова пика сделать программно-аппаратный эмулятор какого-нибудь 80-го проца, например 8085? ;)
Интересно 20-мегагерцовый пик со скольки мегагерцами на 8085 сравнится :)

О, как раз я делаю на аврке эмуль 68к, но думаю 68к тяжковато будет, а вот з80 можно попробовать %)
Правда, не планировал точной эмуляции 68к, а простой асм из внешней sram интерпритировать так сказать виртуальная машина :)


AVR будет медленноватый я думаю

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


02 Apr 2006 05:41
Profile WWW
Senior

Joined: 28 Feb 2005 02:31
Posts: 159
Location: Krasnodar, Russia
Reply with quote
Post 
Shaos wrote:
acidrain wrote:
Shaos wrote:
А вот что если на основе 40-ногова пика сделать программно-аппаратный эмулятор какого-нибудь 80-го проца, например 8085? ;)
Интересно 20-мегагерцовый пик со скольки мегагерцами на 8085 сравнится :)

О, как раз я делаю на аврке эмуль 68к, но думаю 68к тяжковато будет, а вот з80 можно попробовать %)
Правда, не планировал точной эмуляции 68к, а простой асм из внешней sram интерпритировать так сказать виртуальная машина :)


AVR будет медленноватый я думаю

Так он же риск и делает оп за 1 такт (правда только во внутренней сраме и не все операнды).
Вот ссылк по теме: http://akps.ssau.ru/hardw/hobbit/Fcomp/index.html


02 Apr 2006 06:43
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
acidrain wrote:
Shaos wrote:
acidrain wrote:
Shaos wrote:
А вот что если на основе 40-ногова пика сделать программно-аппаратный эмулятор какого-нибудь 80-го проца, например 8085? ;)
Интересно 20-мегагерцовый пик со скольки мегагерцами на 8085 сравнится :)

О, как раз я делаю на аврке эмуль 68к, но думаю 68к тяжковато будет, а вот з80 можно попробовать %)
Правда, не планировал точной эмуляции 68к, а простой асм из внешней sram интерпритировать так сказать виртуальная машина :)


AVR будет медленноватый я думаю

Так он же риск и делает оп за 1 такт (правда только во внутренней сраме и не все операнды).
Вот ссылк по теме: http://akps.ssau.ru/hardw/hobbit/Fcomp/index.html


За один такт или за один цикл (который 4 такта скорее всего)? К тому же не забывай что тебе придется эмулировать 16-битные операции с 32-битными регистрами на 8-битке - что выльется в невообразимые тормоза.

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


02 Apr 2006 07:03
Profile WWW
Senior

Joined: 28 Feb 2005 02:31
Posts: 159
Location: Krasnodar, Russia
Reply with quote
Post 
Shaos wrote:

За один такт или за один цикл (который 4 такта скорее всего)? К тому же не забывай что тебе придется эмулировать 16-битные операции с 32-битными регистрами на 8-битке - что выльется в невообразимые тормоза.

Вот я и говорю - буду для начала асм z80 мулировать =) мож правда деление и умножение добавлю... но пока все довольно смутно представляю, мыслю так сказать :)


02 Apr 2006 07:06
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
acidrain wrote:
Shaos wrote:

За один такт или за один цикл (который 4 такта скорее всего)? К тому же не забывай что тебе придется эмулировать 16-битные операции с 32-битными регистрами на 8-битке - что выльется в невообразимые тормоза.

Вот я и говорю - буду для начала асм z80 мулировать =) мож правда деление и умножение добавлю... но пока все довольно смутно представляю, мыслю так сказать :)


Z80 тоже нелегко сэмулить - из-за неимоверного количества команд, то ли дело 8080/8085 - один человек вполне справится за разумное время

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


02 Apr 2006 07:14
Profile WWW
Maniac
User avatar

Joined: 29 Mar 2005 06:06
Posts: 304
Location: Krasnodar
Reply with quote
Post 
Shaos wrote:
За один такт или за один цикл (который 4 такта скорее всего)? К тому же не забывай что тебе придется эмулировать 16-битные операции с 32-битными регистрами на 8-битке - что выльется в невообразимые тормоза.


командный цикл у АВР - 3 такта, но есть конвейер, поэтому линейные программы выполняются 1 инструкция/1 такт, да и асм не такой тяжелый "чиста риск", так что АВР одназначно пошустрее будет :D


02 Apr 2006 21:59
Profile ICQ
Display posts from previous:  Sort by  
Reply to topic   [ 26 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: No registered users and 7 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.