]> git.sur5r.net Git - cc65/commitdiff
Changed c128 accelerator code and documention to include both C64 and C128 support. 629/head
authorMarco van den Heuvel <blackystardust68@yahoo.com>
Tue, 24 Apr 2018 02:25:11 +0000 (19:25 -0700)
committerMarco van den Heuvel <blackystardust68@yahoo.com>
Tue, 24 Apr 2018 02:25:11 +0000 (19:25 -0700)
doc/c128.sgml
doc/funcref.sgml
include/accelerator.h
libsrc/c128/acc_c128_speed.s [new file with mode: 0755]
libsrc/c128/acc_detect_c128.s [new file with mode: 0755]
libsrc/c64/acc_c128_speed.s
testcode/lib/accelerator/Makefile
testcode/lib/accelerator/c64-c128-test.c

index 9af66d62bc529b49153f1cafbe5516db347558d8..1bdcf01f58cd809e443553d03cb80ba93ee50b2b 100644 (file)
@@ -94,9 +94,12 @@ The functions listed below are accelerator functions for the C128. See the <url
 url="funcref.html" name="function reference"> for declaration and usage.
 
 <itemize>
+<item>detect_c128
 <item>detect_scpu
-<item>scpu_get_speed
-<item>scpu_set_speed
+<item>get_c128_speed
+<item>get_scpu_speed
+<item>set_c128_speed
+<item>set_scpu_speed
 </itemize>
 
 
index 75028b7b64995e2b396252e1b83aaec41ef2a8ad..55701cf55d9bad493208389b004bec13c35a7690 100644 (file)
@@ -2930,12 +2930,12 @@ used in presence of a prototype.
 
 <quote>
 <descrip>
-<tag/Function/Check for the presence of a C128 in C64 mode.
+<tag/Function/Check if a C128 CPU is the current CPU.
 <tag/Header/<tt/<ref id="accelerator.h" name="accelerator.h">/
 <tag/Declaration/<tt/unsigned char detect_c128 (void);/
-<tag/Description/The function returns a 1 if a C128 in C64 mode has been detected.
+<tag/Description/The function returns a 1 if a C128 CPU is the current CPU.
 <tag/Notes/<itemize>
-<item>The function is specific to the C64.
+<item>The function is specific to the C64 and C128.
 </itemize>
 <tag/Availability/cc65 (not all platforms)
 <tag/See also/
@@ -3529,13 +3529,13 @@ header files define constants that can be used to check the return code.
 
 <quote>
 <descrip>
-<tag/Function/Get the current speed of the C128 in C64 mode.
+<tag/Function/Get the current speed of the C128 CPU.
 <tag/Header/<tt/<ref id="accelerator.h" name="accelerator.h">/
 <tag/Declaration/<tt/unsigned char get_c128_speed (void);/
-<tag/Description/The function returns the current speed of the C128 in C64 mode.
+<tag/Description/The function returns the current speed of the C128 CPU.
 <tag/Notes/<itemize>
-<item>The function is specific to the C64.
-<item>The function does not check for the presence of a C128 in C64 mode.
+<item>The function is specific to the C64 and C128.
+<item>The function does not check if the C128 CPU is the current CPU.
 <item>See the accelerator.h header for the speed definitions.
 </itemize>
 <tag/Availability/cc65 (not all platforms)
@@ -6146,13 +6146,13 @@ clean-up when exitting the program.
 
 <quote>
 <descrip>
-<tag/Function/Set the current speed of a C128 in C64 mode.
+<tag/Function/Set the current speed of a C128 CPU.
 <tag/Header/<tt/<ref id="accelerator.h" name="accelerator.h">/
 <tag/Declaration/<tt/unsigned char __fastcall__ set_c128_speed (unsigned char speed);/
-<tag/Description/The function returns the speed after trying to set the speed of the C128 in C64 mode.
+<tag/Description/The function returns the speed after trying to set the speed of the C128 CPU.
 <tag/Notes/<itemize>
-<item>The function is specific to the C64.
-<item>The function does not check for the presence of a C128 in C64 mode.
+<item>The function is specific to the C64 and C128.
+<item>The function does not check if the C128 CPU is the current CPU.
 <item>See the accelerator.h header for the speed definitions.
 </itemize>
 <tag/Availability/cc65 (not all platforms)
index 0e3ba6e36391304edd8429be114e637062b805e3..0fa202bc6048eea272b9df75b2b50337229a3339 100644 (file)
@@ -137,11 +137,11 @@ extern unsigned char detect_c64dtv (void);
  */
 
 
-/* C128 in C64 mode */
+/* C128 8502 CPU */
 
 extern unsigned char __fastcall__ set_c128_speed (unsigned char speed);
 
-/* Set the speed of the C128 CPU, using SPEED_SLOW will switch to
+/* Set the speed of the C128 8502 CPU, using SPEED_SLOW will switch to
  * 1 Mhz (slow) mode, SPEED_2X or SPEED_FAST will switch to 2Mhz (fast) mode.
  *
  * Note that any value higher or equal to SPEED_2X will switch to fast mode.
@@ -149,29 +149,29 @@ extern unsigned char __fastcall__ set_c128_speed (unsigned char speed);
  * This function will return the actual speed the CPU is at after trying
  * to set the requested speed, to my knowledge the switching should not fail.
  *
- * This function does not check for the presence of a C128 in C64 mode,
- * make sure you use 'detect_c128();' before using.
+ * This function does not check if the C128 CPU is the current CPU, make sure
+ * you use 'detect_c128();' before using.
  */
 
 extern unsigned char get_c128_speed (void);
 
-/* Get the speed of the C128 CPU.
+/* Get the speed of the C128 8502 CPU.
  *
  * Possible return values:
  * SPEED_SLOW  : Slow mode
  * SPEED_2X    : Fast mode
  *
- * This function does not check for the presence of a C128 in C64 mode,
- * make sure you use 'detect_c128();' before using.
+ * This function does not check if the C128 CPU is the current CPU, make sure
+ * you use 'detect_c128();' before using.
  */
 
 extern unsigned char detect_c128 (void);
 
-/* Check for the presence of a C128 in C64 mode.
+/* Check if the C128 CPU is the current CPU.
  *
  * Possible return values:
- * 0x00  : C128 in C64 mode not present
- * 0x01  : C128 in C64 mode present
+ * 0x00  : C128 CPU is not the current CPU
+ * 0x01  : C128 CPU is the current CPU
  */
 
 /* End of accelerator.h */
diff --git a/libsrc/c128/acc_c128_speed.s b/libsrc/c128/acc_c128_speed.s
new file mode 100755 (executable)
index 0000000..c3012b2
--- /dev/null
@@ -0,0 +1,56 @@
+;
+; Marco van den Heuvel, 2018-04-23
+;
+
+; extern unsigned char __fastcall__ set_c128_speed (unsigned char speed);
+;
+;/* Set the speed of the C128 8502 CPU, using SPEED_SLOW will switch to
+; * 1 Mhz (slow) mode, SPEED_2X or SPEED_FAST will switch to 2Mhz (fast) mode.
+; *
+; * Note that any value higher or equal to SPEED_2X will switch to fast mode.
+; *
+; * This function will return the actual speed the CPU is at after trying
+; * to set the requested speed, to my knowledge the switching should not fail.
+; *
+; * For C64 programs a check for a C128 in C64 mode is needed, make sure you
+; * use 'detect_c128();' before using.
+; *
+; * For C128 programs no detect function call is needed.
+; */
+
+; extern unsigned char get_c128_speed (void);
+;
+;/* Get the speed of the C128 8502 CPU.
+; *
+; * Possible return values:
+; * SPEED_SLOW  : Slow mode
+; * SPEED_2X    : Fast mode
+; *
+; * For C64 programs a check for a C128 in C64 mode is needed, make sure you
+; * use 'detect_c128();' before using.
+; *
+; * For C128 programs no detect function call is needed.
+; */
+
+        .export         _set_c128_speed
+        .export         _get_c128_speed
+
+        .include        "accelerator.inc"
+
+_set_c128_speed:
+        cmp     #SPEED_2X
+        bcs     high_speed
+store_speed:
+        sta     C128_VICIIE_CLK
+
+        .byte   $2C              ; skip over the lda #$01
+high_speed:
+        lda     #$01
+        bne     store_speed
+
+_get_c128_speed:
+        lda     C128_VICIIE_CLK
+        and     #$01
+        ldx     #$00
+        rts
+
diff --git a/libsrc/c128/acc_detect_c128.s b/libsrc/c128/acc_detect_c128.s
new file mode 100755 (executable)
index 0000000..f40fe39
--- /dev/null
@@ -0,0 +1,24 @@
+;
+; Marco van den Heuvel, 2018-04-23
+;
+
+; unsigned char detect_c128 (void);
+;
+;/* Check if the C128 8502 CPU is the current CPU.
+; *
+; * Possible return values:
+; * 0x00  : C128 8502 is not the current CPU
+; * 0x01  : C128 8502 is the current CPU
+; */
+
+        .export         _detect_c128
+
+        .include        "accelerator.inc"
+
+_detect_c128:
+        ldx     #$00
+        lda     #$01
+
+; Make sure the CPU is a 8502
+        .byte   $3A                   ; NOP on 8502, DEA on 65(S)C(E)02, 4510 and 65816
+        rts
index 4cb2630fa904a68eaf732f5ddd284a7d6a565e4f..bdd559412eec37e145233dfea07f2cd57279d464 100755 (executable)
@@ -1,52 +1,6 @@
 ;
-; Marco van den Heuvel, 2018-04-20
+; Marco van den Heuvel, 2018-04-23
 ;
 
-; extern unsigned char __fastcall__ set_c128_speed (unsigned char speed);
-;
-;/* Set the speed of the C128 CPU, using SPEED_SLOW will switch to
-; * 1 Mhz (slow) mode, SPEED_2X or SPEED_FAST will switch to 2Mhz (fast) mode.
-; *
-; * Note that any value higher or equal to SPEED_2X will switch to fast mode.
-; *
-; * This function will return the actual speed the CPU is at after trying
-; * to set the requested speed, to my knowledge the switching should not fail.
-; *
-; * This function does not check for the presence of a C128 in C64 mode,
-; * make sure you use 'detect_c128();' before using.
-; */
-
-; extern unsigned char get_c128_speed (void);
-;
-;/* Get the speed of the C128 CPU.
-; *
-; * Possible return values:
-; * SPEED_SLOW  : Slow mode
-; * SPEED_2X    : Fast mode
-; *
-; * This function does not check for the presence of a C128 in C64 mode,
-; * make sure you use 'detect_c128();' before using.
-; */
-
-        .export         _set_c128_speed
-        .export         _get_c128_speed
-
-        .include        "accelerator.inc"
-
-_set_c128_speed:
-        cmp     #SPEED_2X
-        bcs     high_speed
-store_speed:
-        sta     C128_VICIIE_CLK
-
-        .byte   $2C              ; skip over the lda #$01
-high_speed:
-        lda     #$01
-        bne     store_speed
-
-_get_c128_speed:
-        lda     C128_VICIIE_CLK
-        and     #$01
-        ldx     #$00
-        rts
+.include "../c128/acc_c128_speed.s"
 
index c6423e44f40e1ed56517a1efc64242842e1bcb00..121ad57b85278c9a52d3fbcfdf5b392d3994d6f5 100644 (file)
@@ -1,6 +1,7 @@
 CL ?= cl65
 
-all: c64-scpu-test.prg c128-scpu-test.prg c64dtv-test.prg c64-c128-test.prg
+all:   c64-scpu-test.prg c128-scpu-test.prg c64dtv-test.prg \
+       c64-c128-test.prg c128-test.prg
 
 c64-scpu-test.prg: c64-c128-scpu-test.c
        $(CL) -t c64 c64-c128-scpu-test.c -o c64-scpu-test.prg
@@ -13,3 +14,6 @@ c64dtv-test.prg: c64dtv-test.c
 
 c64-c128-test.prg: c64-c128-test.c
        $(CL) -t c64 c64-c128-test.c -o c64-c128-test.prg
+
+c128-test.prg: c64-c128-test.c
+       $(CL) -t c128 c64-c128-test.c -o c128-test.prg
index fd20a665eed8f859b37aaf02adcd9fba11b14ea4..ba212e03d3a472828bf67d01fbd62270d032503b 100755 (executable)
@@ -3,6 +3,6 @@
 #define ACC_DETECT      detect_c128
 #define ACC_GET_SPEED   get_c128_speed
 #define ACC_SET_SPEED   set_c128_speed
-#define ACC_NAME        "C128 in C64 mode"
+#define ACC_NAME        "C128 CPU"
 
 #include "turbo-test.c"