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>
<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/
<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)
<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)
*/
-/* 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.
* 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 */
--- /dev/null
+;
+; 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
+
--- /dev/null
+;
+; 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
;
-; 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"
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
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
#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"