Comments (3)
Hi,
I have attached two patches to the chips-test and the chips repositories.
The two new test runs a small program with branches and asserts nmi/irq at different cycles. The interrupts can either be pulsed for a single cycle or stay asserted.With the chips-patch either configuration passes, without it the NMI test fails.
/Mathias
chips_test_nmi.patch.txt
chips_nmi.patch.txt
from chips.
I fixed this before bothering to look here, so here's an alternative solution. Since the 'pip' variables are 16-bit and only use 3 of those bits, I just shifted everything left 8 bits, which is probably 7 more than necessary, and also I don't know that I needed to do the same with the IRQ 'pip' variables, but it seemed like it couldn't hurt, so I did just in case the same problem affects the IRQ.
--- old/m6502.h 2021-10-22 09:40:10.797447442 -0400
+++ new/m6502.h 2021-10-22 09:40:32.946032197 -0400
@@ -654,11 +654,11 @@
// NMI is edge-triggered
if (0 != ((pins & (pins ^ c->PINS)) & M6502_NMI)) {
- c->nmi_pip |= 1;
+ c->nmi_pip |= 0x100;
}
// IRQ test is level triggered
if ((pins & M6502_IRQ) && (0 == (c->P & M6502_IF))) {
- c->irq_pip |= 1;
+ c->irq_pip |= 0x100;
}
// RDY pin is only checked during read cycles
@@ -681,10 +681,10 @@
// - RES behaves slightly different than on a real 6502, we go
// into RES state as soon as the pin goes active, from there
// on, behaviour is 'standard'
- if (0 != (c->irq_pip & 4)) {
+ if (0 != (c->irq_pip & 0x400)) {
c->brk_flags |= M6502_BRK_IRQ;
}
- if (0 != (c->nmi_pip & 0xFFFC)) {
+ if (0 != (c->nmi_pip & 0xFC00)) {
c->brk_flags |= M6502_BRK_NMI;
}
if (0 != (pins & M6502_RES)) {
@@ -694,8 +694,8 @@
c->io_inp = 0;
c->io_pins = 0;
}
- c->irq_pip &= 3;
- c->nmi_pip &= 3;
+ c->irq_pip &= 0x3FF;
+ c->nmi_pip &= 0x3FF;
// if interrupt or reset was requested, force a BRK instruction
if (c->brk_flags) {
from chips.
Oki, better late then never, I have added the test from @mathias110, but used the fix from @Moosfet, it's currently in the branch z80-ticked, but this will soon-ish be merged back into master.
Many thanks!
from chips.
Related Issues (20)
- Q: page-cross behaviour on 6502 SHY opcode HOT 3
- Unable to use the space bar when there's a CPC_JOYSTICK_DIGITAL attached HOT 2
- Cycle-stepped Motorola 68K HOT 2
- m6569: c accesses half a cycle too late? HOT 2
- Caps Shift doesn't work on ZX Spectrum
- Z80: having _wait() before _mwrite(addr, data) looks incorrect. HOT 3
- Z80 XOR Malfunction HOT 12
- Glitch after snapshot save and load HOT 1
- CPC: Implement Version 3 Snapshots
- [c1541] State of 1541 emulation? HOT 1
- Please consider adding the i8259 interrupt controller HOT 2
- Reminder: Check and fix 6502 decimal mode. HOT 1
- Unable to load uncompressed Z80 snapshot taken on ZX Spectrum Next
- Emulation of Fairlight 2 (128k) fails on 128K Spectrum HOT 1
- Poor Man's cycle-ticked emulation framework?
- [zx.h] Sending space key code when Kempstone joystick is enabled. HOT 3
- Wrong behavior for VIC-20 joystick HOT 4
- VIC chip addressing fix
- VIC-20 keyboard mapping
- Z80 idea: get rid of instruction start lookup table
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from chips.