A new behavior was added between v1.0 and 1.1: jasmin auto-boot but unfortunately it does not work as expected.
With oric-1, the "Ready" prompt is replaced by "Printer error" and with atmos some commands end with "Syntax error" (NEW, RUN, ...)
After some tests and thanks to the memory change breakpoint and the CPU_TRACE option, I think the issue is calcpc and calcop aren't updated before the ay_ticktock function returns to the caller (frameloop_overclock or frameloop_normal).
So here is a patch proposal (tested):
Code: Select all
--- 8912.c (révision 617)
+++ 8912.c (copie de travail)
@@ -514,6 +514,8 @@
ay->oric->cpu.write( &ay->oric->cpu, 0x3fb, 1 ); // ROMDIS
setromon( ay->oric );
m6502_reset( &ay->oric->cpu );
+ ay->oric->cpu.calcpc = ay->oric->cpu.pc;
+ ay->oric->cpu.calcop = ay->oric->cpu.read( &ay->oric->cpu, ay->oric->cpu.calcpc );
via_init( &ay->oric->via, ay->oric, VIA_MAIN );
ay->oric->auto_jasmin_reset = SDL_FALSE;
}
@@ -526,6 +528,8 @@
ay->oric->cpu.write( &ay->oric->cpu, 0x3fb, 1 ); // ROMDIS
setromon( ay->oric );
m6502_reset( &ay->oric->cpu );
+ ay->oric->cpu.calcpc = ay->oric->cpu.pc;
+ ay->oric->cpu.calcop = ay->oric->cpu.read( &ay->oric->cpu, ay->oric->cpu.calcpc );
via_init( &ay->oric->via, ay->oric, VIA_MAIN );
ay->oric->auto_jasmin_reset = SDL_FALSE;
}
Personaly, I think the jasmin auto boot could be an option to keep the real Oric+Jasmin behavior.
Anyway, oricutron is a very useful tool.