changeset 1760:95e36a227c9d

Add emulated MHz output to blastcpm
author Michael Pavone <pavone@retrodev.com>
date Tue, 19 Feb 2019 22:51:53 -0800
parents 6e4faa10f9ee
children 873a1330c3a9
files blastcpm.c
diffstat 1 files changed, 14 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/blastcpm.c	Tue Feb 19 22:51:33 2019 -0800
+++ b/blastcpm.c	Tue Feb 19 22:51:53 2019 -0800
@@ -2,6 +2,7 @@
 #include <stdlib.h>
 #include <stddef.h>
 #include <string.h>
+#include <time.h>
 #include <sys/select.h>
 
 #ifdef NEW_CORE
@@ -61,8 +62,18 @@
 	return select(fileno(stdin)+1, &read_fds, NULL, NULL, &timeout) > 0; 
 }
 
+time_t start;
+uint64_t total_cycles;
 void *exit_write(uint32_t address, void *context, uint8_t value)
 {
+	time_t duration = time(NULL) - start;
+	z80_context *z80 = context;
+#ifdef NEW_CORE
+	total_cycles += z80->cycles;
+#else
+	total_cycles += context->current_cycle;
+#endif
+	printf("Effective clock speed: %f MHz\n", ((double)total_cycles) / (1000000.0 * duration));
 	exit(0);
 	return context;
 }
@@ -109,13 +120,16 @@
 	z80_context *context;
 	init_z80_opts(&opts, z80_map, 1, io_map, 3, 1, 0xFF);
 	context = init_z80_context(&opts);
+	start = time(NULL);
 	for(;;)
 	{
 #ifdef NEW_CORE
 		z80_execute(context, 1000000);
+		total_cycles += context->cycles;
 		context->cycles = 0;
 #else
 		z80_run(context, 1000000);
+		total_cycles += context->current_cycle;
 		context->current_cycle = 0;
 #endif