trunk/src/emu/cpu/m6502/m6509.c
| r18919 | r18920 | |
| 46 | 46 | m6502_device(mconfig, M6509, "M6509", tag, owner, clock) |
| 47 | 47 | { |
| 48 | 48 | program_config.m_addrbus_width = 20; |
| 49 | | program_config.m_logaddr_width = 16; |
| 50 | | program_config.m_page_shift = 13; |
| 49 | program_config.m_logaddr_width = 20; |
| 51 | 50 | } |
| 52 | 51 | |
| 53 | 52 | void m6509_device::device_start() |
| r18919 | r18920 | |
| 59 | 58 | |
| 60 | 59 | init(); |
| 61 | 60 | |
| 61 | state_add(STATE_GENPC, "GENPC", XPC).callexport().noshow(); |
| 62 | 62 | state_add(M6509_BI, "BI", bank_i); |
| 63 | 63 | state_add(M6509_BY, "BY", bank_y); |
| 64 | 64 | } |
| r18919 | r18920 | |
| 70 | 70 | bank_y = 0x0f; |
| 71 | 71 | } |
| 72 | 72 | |
| 73 | void m6509_device::state_export(const device_state_entry &entry) |
| 74 | { |
| 75 | switch(entry.index()) { |
| 76 | case STATE_GENPC: |
| 77 | XPC = adr_in_bank_i(NPC); |
| 78 | break; |
| 79 | } |
| 80 | } |
| 81 | |
| 73 | 82 | offs_t m6509_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) |
| 74 | 83 | { |
| 75 | 84 | return disassemble_generic(buffer, pc, oprom, opram, options, disasm_entries); |
| r18919 | r18920 | |
| 83 | 92 | |
| 84 | 93 | UINT8 m6509_device::mi_6509_normal::read(UINT16 adr) |
| 85 | 94 | { |
| 86 | | UINT8 res = program->read_byte(adr); |
| 95 | UINT8 res = program->read_byte(base->adr_in_bank_i(adr)); |
| 87 | 96 | if(adr == 0x0000) |
| 88 | 97 | res = base->bank_i_r(); |
| 89 | 98 | else if(adr == 0x0001) |
| r18919 | r18920 | |
| 123 | 132 | |
| 124 | 133 | void m6509_device::mi_6509_normal::write(UINT16 adr, UINT8 val) |
| 125 | 134 | { |
| 126 | | program->write_byte(adr, val); |
| 135 | program->write_byte(base->adr_in_bank_i(adr), val); |
| 127 | 136 | if(adr == 0x0000) |
| 128 | 137 | base->bank_i_w(val); |
| 129 | 138 | else if(adr == 0x0001) |