User Activity

  • Posted a comment on ticket #2221 on VICE

    is it correct to assume that in this code from mon_breakpoint_check_checkpoint: instpc = new_addr(mem, (monitor_cpu->mon_register_get_val)(mem, e_PC)); loadstorepc = new_addr(mem, lastpc); instpc is $1003 and loadstorepc is $6000 for the second example? Cant check myself without debugging symbols for WinDbg. If this assumption is correct then maybe it can be special cased with something like this: diff --git a/mon_breakpoint.c b/mon_breakpoint.c index a8d2bd4..840b8d6 100644 --- a/mon_breakpoint.c...

  • Posted a comment on ticket #2221 on VICE

    I just noticed it also affects subroutine jumps: a 1000 jmp $6000 rts a 6000 jsr $1003 jmp $1000 r pc = 1000 watch 2000 9fff if (pc >= $1000) && (pc <= $1003) x The monitor thinks that loading the address high byte from $6002 happens when PC == $1003: #1 (Stop on load 6002) 12/$00c, 11/$0b .C:6000 20 03 10 JSR $1003 - A:00 X:00 Y:0A SP:f1 ..-...Z. 5013047

  • Created ticket #2221 on VICE

    Watchpoints get a wrong PC during interrupts

  • Created ticket #2220 on VICE

    Checkpoints for non-default devices are unreliable

  • Posted a comment on ticket #2215 on VICE

    thanks for the fix, it works fine now.

  • Posted a comment on ticket #2217 on VICE

    This is the implementation of read_pra() in /src/drive/iecieee/via2d.c: static uint8_t read_pra(via_context_t *via_context, uint16_t addr) { /* GCR data port */ uint8_t byte; drivevia2_context_t *via2p; via2p = (drivevia2_context_t *)(via_context->prv); /* IF: add bus read delay */ via2p->drive->req_ref_cycles = BUS_READ_DELAY; rotation_byte_read(via2p->drive); byte = ((via2p->drive->GCR_read & ~(via_context->via[VIA_DDRA])) | (via_context->via[VIA_PRA] & via_context->via[VIA_DDRA])); #if 0 printf("(%u)%02x",...

  • Posted a comment on ticket #2217 on VICE

    I've attached a smaller testcase. Monitor commands: dev 8: break f35c if (A == $D6) Then autostart smallertestcase.g64 I don't know what a test program for this would look like. The exact GCR byte the drive is reading isn't deterministic, so you can't write a simple reference file expecting 1c01 to always read 0x52 (for example), it's necessary to compare values at specific positions and verify that they're always the same.

  • Posted a comment on ticket #2217 on VICE

    some useful notes can be found in /src/core/viacore.c: /* return value of a register without side effects */ /* FIXME: this is buggy/incomplete */ uint8_t viacore_peek(via_context_t *via_context, uint16_t addr) { addr &= 0xf; switch (addr) { case VIA_PRA: case VIA_PRA_NHS: /* port A, no handshake */ { uint8_t byte; /* WARNING: this pin reads the voltage of the output pins, not the ORA value as the other port. Value read might be different from what is expected due to excessive load. */ #ifdef MYVIA_NEED_LATCHING...

View All

Personal Data

Username:
rice123
Joined:
2012-12-15 02:19:12

Projects

  • No projects to display.

Personal Tools

MongoDB Logo MongoDB