From: Greg King Date: Thu, 26 Apr 2018 09:37:27 +0000 (-0400) Subject: Improved the accelerator code. Fixed an infinite loop. X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=c92a3c5bd53724d13194930beeb310fb49c3757b;p=cc65 Improved the accelerator code. Fixed an infinite loop. Removed the execute permissions from some files. --- diff --git a/libsrc/c128/acc_c128_speed.s b/libsrc/c128/acc_c128_speed.s old mode 100755 new mode 100644 index c3012b2c8..a104aad1a --- a/libsrc/c128/acc_c128_speed.s +++ b/libsrc/c128/acc_c128_speed.s @@ -1,21 +1,22 @@ ; -; Marco van den Heuvel, 2018-04-23 +; 2018-04-23, Marco van den Heuvel +; 2018-04-26, Greg King ; ; extern unsigned char __fastcall__ set_c128_speed (unsigned char speed); ; -;/* Set the speed of the C128 8502 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 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 +; * 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. +; * For C128 programs, no detect function call is needed. ; */ ; extern unsigned char get_c128_speed (void); @@ -26,10 +27,10 @@ ; * SPEED_SLOW : Slow mode ; * SPEED_2X : Fast mode ; * -; * For C64 programs a check for a C128 in C64 mode is needed, make sure you +; * 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. +; * For C128 programs, no detect function call is needed. ; */ .export _set_c128_speed @@ -39,18 +40,12 @@ _set_c128_speed: cmp #SPEED_2X - bcs high_speed -store_speed: + lda #$00 ; clear VIC-IIe test bit + rol a ; carry flag is speed bit 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 + ldx #>$0000 rts - diff --git a/libsrc/c128/acc_detect_c128.s b/libsrc/c128/acc_detect_c128.s old mode 100755 new mode 100644 diff --git a/libsrc/c128/acc_detect_scpu.s b/libsrc/c128/acc_detect_scpu.s old mode 100755 new mode 100644 diff --git a/libsrc/c128/acc_scpu_speed.s b/libsrc/c128/acc_scpu_speed.s old mode 100755 new mode 100644 diff --git a/libsrc/c64/acc_c128_speed.s b/libsrc/c64/acc_c128_speed.s old mode 100755 new mode 100644 index bdd559412..678f52d0c --- a/libsrc/c64/acc_c128_speed.s +++ b/libsrc/c64/acc_c128_speed.s @@ -3,4 +3,3 @@ ; .include "../c128/acc_c128_speed.s" - diff --git a/libsrc/c64/acc_c64dtv_speed.s b/libsrc/c64/acc_c64dtv_speed.s old mode 100755 new mode 100644 diff --git a/libsrc/c64/acc_detect_c128.s b/libsrc/c64/acc_detect_c128.s old mode 100755 new mode 100644 index 71996730e..12817001a --- a/libsrc/c64/acc_detect_c128.s +++ b/libsrc/c64/acc_detect_c128.s @@ -1,5 +1,6 @@ ; -; Marco van den Heuvel, 2018-04-20 +; 2018-04-20, Marco van den Heuvel +; 2018-04-26, Greg King ; ; unsigned char detect_c128 (void); @@ -16,21 +17,17 @@ .include "accelerator.inc" _detect_c128: - lda #$00 - tax + ldx #>$0001 + lda #<$0001 -; Make sure the CPU is a 8502 - .byte $1A ; NOP on 8502, INA on 65(S)C(E)02, 4510 and 65816 - beq found - .byte $3A ; decrement A again, so a #$00 can be returned - rts - -found: +; Make sure the CPU is an 8502. + .byte $3A ; NOP on 8502, DEA on 65(S)C(E)02, 4510, and 65816 + beq detect_end -; Make sure a C128 VICIIe is present +; Make sure a C128 VIC-IIe is present. ldy C128_VICIIE_CLK cpy #$FF - beq not_found - lda #$01 -not_found: + bne detect_end + txa ; return zero when not VIC-IIe +detect_end: rts diff --git a/libsrc/c64/acc_detect_c64dtv.s b/libsrc/c64/acc_detect_c64dtv.s old mode 100755 new mode 100644 diff --git a/testcode/lib/accelerator/c64-c128-scpu-test.c b/testcode/lib/accelerator/c64-c128-scpu-test.c old mode 100755 new mode 100644 diff --git a/testcode/lib/accelerator/c64-c128-test.c b/testcode/lib/accelerator/c64-c128-test.c old mode 100755 new mode 100644 diff --git a/testcode/lib/accelerator/c64dtv-test.c b/testcode/lib/accelerator/c64dtv-test.c old mode 100755 new mode 100644