а, это мелочь. хранить массив из 16 регистров, они же не меняются со стороны самой AY
а, это мелочь. хранить массив из 16 регистров, они же не меняются со стороны самой AY
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
а, крутоСообщение от SMT
![]()
очередной вариант api для z80, с учетом недоработок предыдущего:
Код:enum Z80_REG_T {regAF,regBC,regDE,regHL,regAF_,regBC_,regDE_,regHL_,regIX,regIY,regPC,regSP,regIR,regIM/*0,1 или 2*/,regIFF1,regIFF2}; typedef void (*z80_tstate_cb)(); /*последующие 4 callback'a первым аргументом принимают номер такта в шаге, на котором производится ввод/вывод*/ typedef unsigned char (*z80_pread_cb)(unsigned char t_state, unsigned port); typedef void (*z80_pwrite_cb)(unsigned char t_state, unsigned port, unsigned char value); typedef unsigned char (*z80_mread_cb)(unsigned char t_state, unsigned addr); typedef void (*z80_mwrite_cb)(unsigned char t_state, unsigned addr, unsigned char value); struct _z80_cpu_context; typedef struct _z80_cpu_context Z80; /*создание и инициализация процессора.*/ Z80 *z80_create(); /*уничтожение процессора -- тешу свою страсть к разрушению ;) */ void z80_destroy(Z80 *cpu); /*выполнение очередной команды, возвращает затраченное кол-во тактов*/ int z80_step(Z80 *cpu); /*установка callback'a, который будет вызываться на каждом такте эмуляции*/ void z80_set_tstate_callback(Z80 *cpu, z80_tstate_cb cb_fn); /*установка функции-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); /*прерывание, второй аргумент - код операции для IM0 %)*/ void z80_int(Z80 *cpu, unsigned char op); /*немаскируемое прерывание*/ void z80_nmi(Z80 *cpu); /*генерация w_states WAIT-циклов. (при этом будет w_states раз вызван тактовый callback) для использования в callback'ах обращения к памяти и портам*/ void z80_w_states(Z80 *cpu, unsigned w_states); /*сброс*/ void z80_reset(Z80 *cpu) /*функция для получения значения регистра*/ unsigned z80_get_reg(Z80 *cpu, enum Z80_REG_T reg); /*функция для установки значения регистра*/ unsigned z80_set_reg(Z80 *cpu, enum Z80_REG_T reg, unsigned value); /*возвращает 1 если z80 ждет на halt'e*/ int z80_is_halted(Z80 *cpu);
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)