1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309
|
/*****************************************************************************/
/* */
/* accelerator.h */
/* */
/* Accelerator specific definitions */
/* */
/* */
/* */
/* (C) 2018 Marco van den Heuvel */
/* EMail: blackystardust68@yahoo.com */
/* */
/* */
/* This software is provided 'as-is', without any expressed or implied */
/* warranty. In no event will the authors be held liable for any damages */
/* arising from the use of this software. */
/* */
/* Permission is granted to anyone to use this software for any purpose, */
/* including commercial applications, and to alter it and redistribute it */
/* freely, subject to the following restrictions: */
/* */
/* 1. The origin of this software must not be misrepresented; you must not */
/* claim that you wrote the original software. If you use this software */
/* in a product, an acknowledgment in the product documentation would be */
/* appreciated but is not required. */
/* 2. Altered source versions must be plainly marked as such, and must not */
/* be misrepresented as being the original software. */
/* 3. This notice may not be removed or altered from any source */
/* distribution. */
/* */
/*****************************************************************************/
#ifndef _ACCELERATOR_H
#define _ACCELERATOR_H
/*****************/
/* Speed defines */
/*****************/
#define SPEED_SLOW 0x00
#define SPEED_FAST 0xFF
#define SPEED_1X SPEED_SLOW
#define SPEED_2X 2 - 1 /* C64 Chameleon, C64DTV, C128, PET 65816, Apple2 Fast Chip, Apple2 TransWarp, Apple2 Zip Chip */
#define SPEED_3X 3 - 1 /* C64 Chameleon, C65, PET 65816, Apple2 Booster, Apple 2 Fast Chip, Apple2 Titan, Apple2 TransWarp, Apple2 Zip Chip */
#define SPEED_4X 4 - 1 /* C64 Chameleon, C64 TurboMaster, C64 TurboProcess, PET 65816, Apple2 Fast Chip, Apple2 Zip Chip */
#define SPEED_5X 5 - 1 /* C64 Chameleon, PET 65816, Apple2 Fast Chip */
#define SPEED_6X 6 - 1 /* C64 Chameleon, PET 65816, Apple2 Fast Chip */
#define SPEED_7X 7 - 1 /* PET 65816, Apple2 Fast Chip */
#define SPEED_8X 8 - 1 /* C64 Flash8, PET 65816, Apple 2 Fast Chip */
#define SPEED_10X 10 - 1 /* PET 65816, Apple2 Fast Chip */
#define SPEED_12X 12 - 1 /* Apple2 Fast Chip */
#define SPEED_16X 16 - 1 /* Apple2 Fast Chip */
#define SPEED_20X 20 - 1 /* C64/C128 SuperCPU */
/***********************************/
/* Accelerator function prototypes */
/***********************************/
/* C64/C128 SuperCPU cartridge */
unsigned char __fastcall__ set_scpu_speed (unsigned char speed);
/* Set the speed of the SuperCPU cartridge, using SPEED_SLOW will switch to
* 1 Mhz mode, SPEED_20X or SPEED_FAST will switch to 20 Mhz mode.
*
* Note that any value lower than SPEED_20X will switch to 1 Mhz mode, and
* any value higher or equal to SPEED_20X will switch to 20 Mhz mode.
*
* This function will return the actual speed the CPU is at after trying
* to set the requested speed, if this is not the speed that was requested
* then possibly the hardware speed switch prevented any software speed
* switching.
*
* This function does not check for the presence of the SuperCPU cartridge,
* make sure you use 'detect_scpu();' before using.
*/
unsigned char get_scpu_speed (void);
/* Get the speed of the SuperCPU cartridge.
*
* Possible return values:
* SPEED_1X : 1 Mhz mode
* SPEED_20X : 20 Mhz mode
*
* This function does not check for the presence of the SuperCPU cartridge,
* make sure you use 'detect_scpu();' before using.
*/
unsigned char detect_scpu (void);
/* Check for the presence of the SuperCPU cartridge.
*
* Possible return values:
* 0x00 : SuperCPU cartridge not present
* 0x01 : SuperCPU cartridge present
*/
/* C64DTV */
unsigned char __fastcall__ set_c64dtv_speed (unsigned char speed);
/* Set the speed of the C64DTV, using SPEED_SLOW will switch to
* slow mode, SPEED_2X or SPEED_FAST will switch to 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 switch should not fail.
*
* This function does not check for the presence of the C64DTV,
* make sure you use 'detect_c64dtv();' before using.
*/
unsigned char get_c64dtv_speed (void);
/* Get the speed of the C64DTV.
*
* Possible return values:
* SPEED_1X : slow mode
* SPEED_2X : fast mode
*
* This function does not check for the presence of the C64DTV,
* make sure you use 'detect_c64dtv();' before using.
*/
unsigned char detect_c64dtv (void);
/* Check for the presence of the C64DTV.
*
* Possible return values:
* 0x00 : C64DTV not present
* 0x01 : C64DTV present
*/
/* C128 8502 CPU */
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.
*
* This function does not check if the C128 CPU is the current CPU, make sure
* you use 'detect_c128();' before using.
*/
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
*
* This function does not check if the C128 CPU is the current CPU, make sure
* you use 'detect_c128();' before using.
*/
unsigned char detect_c128 (void);
/* Check if the C128 CPU is the current CPU.
*
* Possible return values:
* 0x00 : C128 CPU is not the current CPU
* 0x01 : C128 CPU is the current CPU
*/
/* C64 Chameleon cartridge */
unsigned char __fastcall__ set_chameleon_speed (unsigned char speed);
/* Set the speed of the C64 Chameleon cartridge, the following inputs
* are accepted:
* SPEED_SLOW : 1 Mhz mode
* SPEED_1X : 1 Mhz mode
* SPEED_2X : 2 Mhz mode
* SPEED_3X : 3 Mhz mode
* SPEED_4X : 4 Mhz mode
* SPEED_5X : 5 Mhz mode
* SPEED_6X : 6 Mhz mode
* SPEED_FAST : Maximum speed mode
*
* Note that any value higher or equal to SPEED_7X will switch to maximum
* speed 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 the C64 Chameleon cartridge,
* make sure you use 'detect_chameleon();' before using.
*/
unsigned char get_chameleon_speed (void);
;/* Get the speed of the C64 Chameleon cartridge.
; *
; * Possible return values:
; * SPEED_SLOW : Slow mode
; * SPEED_2X : 2Mhz mode
; * SPEED_3X : 3Mhz mode
; * SPEED_4X : 4Mhz mode
; * SPEED_5X : 5Mhz mode
; * SPEED_6X : 6Mhz mode
; * SPEED_FAST : Maximum speed mode
; *
; * This function does not check for the presence of the C64 Chameleon cartridge,
; * make sure you use 'detect_chameleon();' before using.
; */
unsigned char detect_chameleon (void);
/* Check for the presence of the C64 Chameleon cartridge.
*
* Possible return values:
* 0x00 : C64 Chameleon cartridge not present
* 0x01 : C64 Chameleon cartridge present
*/
/* C65/C64DX in C64 mode */
unsigned char __fastcall__ set_c65_speed (unsigned char speed);
/* Set the speed of the C65/C64DX CPU, using SPEED_SLOW will switch to
* 1 Mhz mode, SPEED_3X or SPEED_FAST will switch to 3.5 Mhz (fast) mode.
*
* Note that any value higher or equal to SPEED_3X 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 C65/C64DX in C64 mode,
* make sure you use 'detect_c65();' before using.
*/
unsigned char get_c65_speed (void);
/* Get the speed of the C65/C64DX CPU.
*
* Possible return values:
* SPEED_SLOW : Slow mode
* SPEED_3X : Fast mode
*
* This function does not check for the presence of a C65/C64DX in C64 mode,
* make sure you use 'detect_c65();' before using.
*/
unsigned char detect_c65 (void);
/* Check for the presence of a C65/C64DX in C64 mode.
*
* Possible return values:
* 0x00 : C65/C64DX in C64 mode not present
* 0x01 : C65/C64DX in C64 mode present
*/
/* C64 Turbo Master cartridge */
unsigned char __fastcall__ set_turbomaster_speed (unsigned char speed);
/* Set the speed of the Turbo Master cartridge, using SPEED_SLOW will switch to
* 1 Mhz mode, SPEED_4X or SPEED_FAST will switch to 4 Mhz mode.
*
* Note that any value higher or equal to SPEED_4X will switch to 4 Mhz mode,
* any value lower than SPEED_4X will switch to 1 Mhz mode.
*
* This function will return the actual speed the CPU is at after trying
* to set the requested speed, if the speed is different it might indicate
* that the hardware switch has locked the speed.
*
* This function does not check for the presence of a Turbo Master cartridge,
* make sure you use 'detect_turbomaster();' before using.
*/
unsigned char get_turbomaster_speed (void);
/* Get the speed of the Turbo Master cartridge.
*
* Possible return values:
* SPEED_SLOW : 1 Mhz mode
* SPEED_4X : 4 Mhz mode
*
* This function does not check for the presence of a Turbo Master cartridge,
* make sure you use 'detect_turbomaster();' before using.
*/
unsigned char detect_turbomaster (void);
/* Check for the presence of a C64 Turbo Master cartridge.
*
* Possible return values:
* 0x00 : C64 Turbo Master cartridge not present
* 0x01 : C64 Turbo Master cartridge present
*/
/* End of accelerator.h */
#endif
|