nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 15 Nov 2018 01:03



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

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
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

_________________
:eugeek: https://twitter.com/Shaos1973


25 Oct 2004 21:52
Profile WWW
Admin
User avatar

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

_________________
:eugeek: https://twitter.com/Shaos1973


29 Oct 2004 18:28
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
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-ый.

_________________
:eugeek: https://twitter.com/Shaos1973


06 Nov 2004 09:56
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
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е ;)

_________________
:eugeek: https://twitter.com/Shaos1973


11 Nov 2004 22:05
Profile WWW
Senior

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


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


28 Jul 2005 01:56
Profile
Admin
User avatar

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


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

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

_________________
:eugeek: https://twitter.com/Shaos1973


28 Jul 2005 06:27
Profile WWW
Maniac
User avatar

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

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


28 Jul 2005 06:37
Profile ICQ
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
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 можно сэмулировать с минимальными внешними довесками как память и т.д. - но это дольше

_________________
:eugeek: https://twitter.com/Shaos1973


01 Apr 2006 20:30
Profile WWW
Senior

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

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


02 Apr 2006 05:46
Profile
Admin
User avatar

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

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


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

_________________
:eugeek: https://twitter.com/Shaos1973


02 Apr 2006 06:41
Profile WWW
Senior

Joined: 28 Feb 2005 03:31
Posts: 160
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 07:43
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
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-битке - что выльется в невообразимые тормоза.

_________________
:eugeek: https://twitter.com/Shaos1973


02 Apr 2006 08:03
Profile WWW
Senior

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

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

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


02 Apr 2006 08:06
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 17121
Location: Colorado
Reply with quote
Post 
acidrain wrote:
Shaos wrote:

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

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


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

_________________
:eugeek: https://twitter.com/Shaos1973


02 Apr 2006 08:14
Profile WWW
Maniac
User avatar

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


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


02 Apr 2006 22: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 4 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.