думаю написать отдельный модуль эмуляции z80, на чистом C, чтоб с полпинка вставлялся куда угодно -- библиотека и h-файл. за основу возьму, наверное, код из FUSE.. или US...
вопрос в том, каким делать API, требования -- возможность создания нескольких процессоров, никаких экспортируемых переменных, только функции, ну и поддержка всех фич, ессно
набросал вот чего-то:
Код:/*процессор -- поперто из FUSE*/ typedef struct { regpair af,bc,de,hl; regpair af_,bc_,de_,hl_; regpair ix,iy; byte i; word r; byte r7; /* The high bit of the R register */ regpair sp,pc; byte iff1, iff2, im; int halted; } Z80; /*создание и инициализация процессора. page1/2/3 -- указатели на массивы (длиной 16K), которые будут использоваться как страницы памяти*/ Z80 *z80_create(void *page1, void *page2, void *page3); /*уничтожение процессора -- тешу свою страсть к разрушению ;) */ void z80_destroy(Z80 *cpu); /*замена одной из 3х страниц памяти -- для вещей вроде переключения 128k страниц и тп*/ void z80_set_mempage(Z80 *cpu, int page_num, void *page); /*выполнение очередной команды, возвращает затраченное кол-во тактов*/ int z80_step(Z80 *cpu); /*установка функции-callback'а на чтение из порта*/ void z80_set_pread_cb(Z80 *cpu, z80_pread_cb cb_fn); /*установка callback'а на запись в порт*/ void z80_set_pwrite_cb(Z80 *cpu, z80_pwrite_cb cb_fn); /*установка callback'а на чтение из памяти*/ void z80_set_mread_cb(Z80 *cpu, z80_mread_cb cb_fn); /*установка callback'а на запись в память*/ void z80_set_mwrite_cb(Z80 *cpu, z80_mwrite_cb cb_fn); /*прерывание*/ void z80_int(Z80 *cpu); /*немаскируемое прерывание*/ void z80_nmi(Z80 *cpu); /*сброс*/ void z80_reset(Z80 *cpu) /*функции для получения значений регистров -- чтоб не завязываться на поля struct'уры Z80*/ лень писать ,)





Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
