X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=simavr%2Fsim%2Favr_flash.c;h=2a17839530a75b4a28a210c6760c9861038e04ee;hb=69b8d265acdd5d01114b2444bc2aa177e00a9c91;hp=05f3e87b96fdf72e2bfc6b80ddab34b8a4350a4d;hpb=a69c6da93a2eb6f4c182789b64ee73f50b2577a0;p=simavr diff --git a/simavr/sim/avr_flash.c b/simavr/sim/avr_flash.c index 05f3e87..2a17839 100644 --- a/simavr/sim/avr_flash.c +++ b/simavr/sim/avr_flash.c @@ -32,13 +32,6 @@ static avr_cycle_count_t avr_progen_clear(struct avr_t * avr, avr_cycle_count_t return 0; } -static uint8_t avr_flash_read(struct avr_t * avr, avr_io_addr_t addr, void * param) -{ - avr_flash_t * p = (avr_flash_t *)param; - uint8_t v = avr_core_watch_read(avr, addr); - printf("avr_flash_read %02x\n", v); - return v; -} static void avr_flash_write(avr_t * avr, avr_io_addr_t addr, uint8_t v, void * param) { @@ -61,6 +54,8 @@ static int avr_flash_ioctl(struct avr_io_t * port, uint32_t ctl, void * io_param avr_t * avr = p->io.avr; uint16_t z = avr->data[R_ZL] | (avr->data[R_ZH] << 8); + if (avr->rampz) + z |= avr->data[avr->rampz] << 16; uint16_t r01 = avr->data[0] | (avr->data[1] << 8); // printf("AVR_IOCTL_FLASH_SPM %02x Z:%04x R01:%04x\n", avr->data[p->r_spm], z,r01); @@ -75,11 +70,11 @@ static int avr_flash_ioctl(struct avr_io_t * port, uint32_t ctl, void * io_param z &= ~1; printf("Writing page %04x (%d)\n", (z / p->spm_pagesize), p->spm_pagesize); } else if (avr_regbit_get(avr, p->blbset)) { - printf("Settting lock bits (ignored)\n"); + printf("Setting lock bits (ignored)\n"); } else { z &= ~1; avr->flash[z++] = r01; - avr->flash[z++] = r01 >> 8; + avr->flash[z] = r01 >> 8; } return 0; } @@ -92,12 +87,11 @@ static avr_io_t _io = { void avr_flash_init(avr_t * avr, avr_flash_t * p) { p->io = _io; - printf("%s init SPM %04x\n", __FUNCTION__, p->r_spm); +// printf("%s init SPM %04x\n", __FUNCTION__, p->r_spm); avr_register_io(avr, &p->io); avr_register_vector(avr, &p->flash); avr_register_io_write(avr, p->r_spm, avr_flash_write, p); -// avr_register_io_read(avr, p->r_spm, avr_flash_read, p); }