summary refs log tree commit diff
path: root/src/pico1541.c
diff options
context:
space:
mode:
authorMaxwell Beck <max@rastertail.net>2024-12-30 17:44:29 -0600
committerMaxwell Beck <max@rastertail.net>2024-12-30 17:44:29 -0600
commitd48c0668da0f319b57b1fb47f93843a851d49339 (patch)
tree88c8df53e4bee3667b28f4b2a0d6ca993ee7039e /src/pico1541.c
parent2a3984933e9b39cd37a136dd2a95645bff0d3774 (diff)
Fix byte ready to CPU overflow flag sync HEAD main
Diffstat (limited to 'src/pico1541.c')
-rw-r--r--src/pico1541.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/pico1541.c b/src/pico1541.c
index 3489fee..fec76a3 100644
--- a/src/pico1541.c
+++ b/src/pico1541.c
@@ -18,7 +18,7 @@ const uint8_t DEVICE = 8;
 static uint8_t ram[2048];
 extern uint8_t _binary__Users_max_Documents_c64_roms_dos1541_start[16384];
 // extern uint8_t _binary__Users_max_Downloads_blackbird_1_2_Blackbird_1_2_d64_start[174848];
-extern uint8_t _binary__Users_max_Downloads_Bloodsuckers_StillRising_BSK_StillRising_disk1_d64_start[174848];
+extern uint8_t _binary__Users_max_Downloads_MementoMori_GP_MementoMori_GP_Disk1_d64_start[174848];
 
 uint32_t ts;
 cpu_t cpu;
@@ -138,14 +138,11 @@ void atn_irq_callback(uint pin, uint32_t flags) {
 
 void drive_thread() {
 	drive_init(&drive);
-	drive.image = _binary__Users_max_Downloads_Bloodsuckers_StillRising_BSK_StillRising_disk1_d64_start;
+	drive.image = _binary__Users_max_Downloads_MementoMori_GP_MementoMori_GP_Disk1_d64_start;
 	multicore_fifo_push_blocking(1);
 
-	while (true) {
-		uint32_t cycles = multicore_fifo_pop_blocking_inline();
-		if (drive_cycle(&drive, cycles, true) && (via2.pcr & 0b1110) == 0b1110) {
-			cpu.flags |= 1 << FLAG_V_BIT;
-		}
+	while (multicore_fifo_pop_blocking_inline()) {
+		drive_cycle(&drive);
 	}
 }
 
@@ -192,7 +189,10 @@ int main() {
 		}
 
 		uint8_t cycles = cpu_step(&cpu);
-		multicore_fifo_push_blocking_inline((uint32_t)cycles);
+		if (drive_advance(&drive, cycles) && (via2.pcr & 0b1110) == 0b1110) {
+			cpu.flags |= 1 << FLAG_V_BIT;
+		}
+		multicore_fifo_push_blocking_inline(1);
 
 		via_cycle(&via1, cycles);
 		via_cycle(&via2, cycles);