]> git.sur5r.net Git - cc65/commitdiff
Added some accelerator test code.
authorMarco van den Heuvel <blackystardust68@yahoo.com>
Tue, 10 Apr 2018 22:24:15 +0000 (15:24 -0700)
committerMarco van den Heuvel <blackystardust68@yahoo.com>
Tue, 10 Apr 2018 22:24:15 +0000 (15:24 -0700)
testcode/lib/accelerator/Makefile [new file with mode: 0644]
testcode/lib/accelerator/c64-c128-scpu-test.c [new file with mode: 0755]
testcode/lib/accelerator/turbo-test.c [new file with mode: 0644]

diff --git a/testcode/lib/accelerator/Makefile b/testcode/lib/accelerator/Makefile
new file mode 100644 (file)
index 0000000..ece54ec
--- /dev/null
@@ -0,0 +1,9 @@
+CL ?= cl65
+
+all: c64-scpu-test.prg c128-scpu-test.prg
+
+c64-scpu-test.prg: c64-c128-scpu-test.c
+       $(CL) -t c64 c64-c128-scpu-test.c -o c64-scpu-test.prg
+
+c128-scpu-test.prg: c64-c128-scpu-test.c
+       $(CL) -t c128 c64-c128-scpu-test.c -o c128-scpu-test.prg
diff --git a/testcode/lib/accelerator/c64-c128-scpu-test.c b/testcode/lib/accelerator/c64-c128-scpu-test.c
new file mode 100755 (executable)
index 0000000..975244d
--- /dev/null
@@ -0,0 +1,8 @@
+/* C64/C128 SuperCPU accelerator test code. */
+
+#define ACC_DETECT      detect_scpu
+#define ACC_GET_SPEED   get_scpu_speed
+#define ACC_SET_SPEED   set_scpu_speed
+#define ACC_NAME        "SuperCPU"
+
+#include "turbo-test.c"
diff --git a/testcode/lib/accelerator/turbo-test.c b/testcode/lib/accelerator/turbo-test.c
new file mode 100644 (file)
index 0000000..8c854c0
--- /dev/null
@@ -0,0 +1,57 @@
+/* Accelerator test code. */
+
+#ifndef ACC_DETECT
+#error This file cannot be used directly (yet)
+#endif
+
+#include <time.h>
+#include <accelerator.h>
+#include <stdio.h>
+#include <conio.h>
+#include <stdlib.h>
+
+static void print_time_taken(void)
+{
+    clock_t curtime = clock();
+    clock_t newtime;
+    unsigned long i;
+    char buffer[10];
+
+    printf("Doing a speed test, please wait\n");
+    for (i = 0; i < 0x1000; i++) { }
+    newtime = clock() - curtime;
+    ultoa(newtime, buffer, 10);
+    printf("Time taken : %s\n", buffer);
+}
+
+static void print_current_speed(void)
+{
+    unsigned char status;
+
+    status = ACC_GET_SPEED();
+    printf("Current "ACC_NAME" speed : %d\n", status + 1);
+}
+
+void main(void)
+{
+    unsigned char status;
+    unsigned char speed = 0;
+
+    status = ACC_DETECT();
+    clrscr();
+    if (status == 0) {
+        printf("No "ACC_NAME" detected\n");
+    } else {
+        status = ACC_GET_SPEED();
+        print_current_speed();
+
+        /* cycle through all the speeds */
+        for (speed = SPEED_1X; speed <= SPEED_20X; ++speed) {
+            printf("Setting "ACC_NAME" speed to %d\n", speed + 1);
+            ACC_SET_SPEED(speed);
+            print_current_speed();
+            print_time_taken();
+        }
+        ACC_SET_SPEED(status);
+    }
+}