CPU::CPU() { name = "CPU"; debug(2, " Creating CPU at address %p...\n", this); // Chip model chipModel = MOS6510; // Establish callback for each instruction registerInstructions(); // Clear all breakpoint tags for (int i = 0; i < 65536; i++) { breakpoint[i] = NO_BREAKPOINT; } }
CPU::CPU() { setDescription("CPU"); debug(3, " Creating CPU at address %p...\n", this); // Chip model chipModel = MOS6510; // Establish callback for each instruction registerInstructions(); // Clear all breakpoint tags for (int i = 0; i < 65536; i++) { breakpoint[i] = NO_BREAKPOINT; } // Register snapshot items SnapshotItem items[] = { // Lifetime items { &chipModel, sizeof(chipModel), KEEP_ON_RESET }, // Internal state { &A, sizeof(A), CLEAR_ON_RESET }, { &X, sizeof(X), CLEAR_ON_RESET }, { &Y, sizeof(Y), CLEAR_ON_RESET }, { &PC, sizeof(PC), CLEAR_ON_RESET }, { &PC_at_cycle_0, sizeof(PC_at_cycle_0), CLEAR_ON_RESET }, { &SP, sizeof(SP), CLEAR_ON_RESET }, { &N, sizeof(N), CLEAR_ON_RESET }, { &V, sizeof(V), CLEAR_ON_RESET }, { &B, sizeof(B), CLEAR_ON_RESET }, { &D, sizeof(D), CLEAR_ON_RESET }, { &I, sizeof(I), CLEAR_ON_RESET }, { &Z, sizeof(Z), CLEAR_ON_RESET }, { &C, sizeof(C), CLEAR_ON_RESET }, { &opcode, sizeof(opcode), CLEAR_ON_RESET }, { &addr_lo, sizeof(addr_lo), CLEAR_ON_RESET }, { &addr_hi, sizeof(addr_hi), CLEAR_ON_RESET }, { &ptr, sizeof(ptr), CLEAR_ON_RESET }, { &pc_lo, sizeof(pc_lo), CLEAR_ON_RESET }, { &pc_hi, sizeof(pc_hi), CLEAR_ON_RESET }, { &overflow, sizeof(overflow), CLEAR_ON_RESET }, { &data, sizeof(data), CLEAR_ON_RESET }, { &port, sizeof(port), KEEP_ON_RESET }, // Reset in C64Memory::reset { &port_direction, sizeof(port_direction), KEEP_ON_RESET }, // Reset in C64Memory::reset { &external_port_bits, sizeof(external_port_bits), CLEAR_ON_RESET }, { &rdyLine, sizeof(rdyLine), CLEAR_ON_RESET }, { &irqLine, sizeof(irqLine), CLEAR_ON_RESET }, { &nmiLine, sizeof(nmiLine), CLEAR_ON_RESET }, { &nmiEdge, sizeof(nmiEdge), CLEAR_ON_RESET }, { &interruptsPending, sizeof(interruptsPending), CLEAR_ON_RESET }, { &nextPossibleIrqCycle, sizeof(nextPossibleIrqCycle), CLEAR_ON_RESET }, { &nextPossibleNmiCycle, sizeof(nextPossibleNmiCycle), CLEAR_ON_RESET }, { &errorState, sizeof(errorState), CLEAR_ON_RESET }, { &callStack, sizeof(callStack), CLEAR_ON_RESET | WORD_FORMAT }, { &callStackPointer, sizeof(callStackPointer), CLEAR_ON_RESET }, { &oldI, sizeof(oldI), CLEAR_ON_RESET }, { NULL, 0, 0 }}; registerSnapshotItems(items, sizeof(items)); }