Mercurial > repos > simple16
comparison src/cpu.c @ 26:083347ccd508
Implemented vblank interrupts and fixed a bug in exception vector address calculation
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 01 Apr 2016 21:34:38 -0700 |
parents | fb14515266f4 |
children | 5683d9ba9acc |
comparison
equal
deleted
inserted
replaced
25:fb14515266f4 | 26:083347ccd508 |
---|---|
127 void vector_fetch(cpu *context) | 127 void vector_fetch(cpu *context) |
128 { | 128 { |
129 context->exception_pc = context->regs[REG_PC] - 2; | 129 context->exception_pc = context->regs[REG_PC] - 2; |
130 context->exception_sr = context->regs[REG_SR]; | 130 context->exception_sr = context->regs[REG_SR]; |
131 context->regs[REG_SR] &= ~(STATUS_INT0_ENABLE | STATUS_INT1_ENABLE); | 131 context->regs[REG_SR] &= ~(STATUS_INT0_ENABLE | STATUS_INT1_ENABLE); |
132 context->regs[REG_PC] = cpu_read_16(context, context->vector_base + context->exception); | 132 context->regs[REG_PC] = cpu_read_16(context, context->vector_base + context->exception * 2); |
133 context->state = STATE_NEED_FETCH; | 133 context->state = STATE_NEED_FETCH; |
134 } | 134 } |
135 | 135 |
136 uint16_t sign_extend(uint16_t val) | 136 uint16_t sign_extend(uint16_t val) |
137 { | 137 { |