small tape support + turbo mode tweaks
This commit is contained in:
1 parent
c98407bd84
commit
6dc461d184
9 files changed
+84
-29
No files matched your search
@@ -45,6 +45,7 @@ SRCDIR_KERNAL = $(SRCDIR_COMMON) \
|
|||||||
src/kernal/assets \
|
src/kernal/assets \
|
||||||
src/kernal/board_crt \
|
src/kernal/board_crt \
|
||||||
src/kernal/board_m65 \
|
src/kernal/board_m65 \
|
||||||
|
src/kernal/board_u64 \
|
||||||
src/kernal/board_x16 \
|
src/kernal/board_x16 \
|
||||||
src/kernal/extapi_m65 \
|
src/kernal/extapi_m65 \
|
||||||
src/kernal/iec \
|
src/kernal/iec \
|
||||||
|
|||||||
@@ -121,7 +121,7 @@
|
|||||||
!ifndef CONFIG_LEGACY_SCNKEY {
|
!ifndef CONFIG_LEGACY_SCNKEY {
|
||||||
!addr BITTS = $B4 ; -- NOT IMPLEMENTED --
|
!addr BITTS = $B4 ; -- NOT IMPLEMENTED --
|
||||||
}
|
}
|
||||||
!addr NXTBIT = $B5 ; -- NOT IMPLEMENTED -- [!] also used by tape routine, we use it only for Ultimate 64 turbo handling
|
!addr NXTBIT = $B5 ; -- NOT IMPLEMENTED -- [!] also used by tape routine to store CPU turbo settings
|
||||||
!ifndef CONFIG_LEGACY_SCNKEY {
|
!ifndef CONFIG_LEGACY_SCNKEY {
|
||||||
!addr RODATA = $B6 ; -- NOT IMPLEMENTED --
|
!addr RODATA = $B6 ; -- NOT IMPLEMENTED --
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,3 +41,10 @@
|
|||||||
;; #ALIAS# M65_MODEGET = KERNAL_0.M65_MODEGET
|
;; #ALIAS# M65_MODEGET = KERNAL_0.M65_MODEGET
|
||||||
;; #ALIAS# M65_MODESET = KERNAL_0.M65_MODESET
|
;; #ALIAS# M65_MODESET = KERNAL_0.M65_MODESET
|
||||||
;; #ALIAS# M65_SETWIN_Y = KERNAL_0.M65_SETWIN_Y
|
;; #ALIAS# M65_SETWIN_Y = KERNAL_0.M65_SETWIN_Y
|
||||||
|
|
||||||
|
;
|
||||||
|
; Ultimate 64 specific parts
|
||||||
|
;
|
||||||
|
|
||||||
|
;; #ALIAS# U64_SLOW = KERNAL_0.U64_SLOW
|
||||||
|
;; #ALIAS# U64_FAST = KERNAL_0.U64_FAST
|
||||||
@@ -39,22 +39,13 @@ cmd_slow_fast_common:
|
|||||||
|
|
||||||
cmd_slow:
|
cmd_slow:
|
||||||
|
|
||||||
lda #$00 ; for U64_TURBOCTL - badlines, 1MHz
|
|
||||||
sta SCPU_SPEED_NORMAL ; any value will do
|
sta SCPU_SPEED_NORMAL ; any value will do
|
||||||
|
jmp U64_SLOW ; to set turbo in $D031 too
|
||||||
; FALLTROUGH
|
|
||||||
|
|
||||||
cmd_slow_fast_common:
|
|
||||||
|
|
||||||
sta U64_TURBOCTL
|
|
||||||
rts
|
|
||||||
|
|
||||||
cmd_fast:
|
cmd_fast:
|
||||||
|
|
||||||
lda #$0F ; for U64_TURBOCTL - badlines, 48MHz
|
|
||||||
sta SCPU_SPEED_TURBO ; any value will do
|
sta SCPU_SPEED_TURBO ; any value will do
|
||||||
|
jmp U64_FAST ; to set turbo in $D031 too
|
||||||
bne cmd_slow_fast_common ; branch always
|
|
||||||
|
|
||||||
} else ifdef CONFIG_PLATFORM_COMMODORE_64 {
|
} else ifdef CONFIG_PLATFORM_COMMODORE_64 {
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
;; #LAYOUT# M65 KERNAL_1 #TAKE
|
||||||
|
;; #LAYOUT# * * #IGNORE
|
||||||
|
|
||||||
|
;
|
||||||
|
; Tape helper routine
|
||||||
|
;
|
||||||
|
; - unlocks VIC-IV
|
||||||
|
; - switches CPU to fast processing mode and disables badlines
|
||||||
|
; - stores previous VIC_CTRLB in NXTBIN
|
||||||
|
;
|
||||||
|
|
||||||
|
!ifdef HAS_TAPE {
|
||||||
|
|
||||||
|
|
||||||
|
tape_fast_cpu:
|
||||||
|
|
||||||
|
jsr M65_MODEGET
|
||||||
|
bcc @1
|
||||||
|
|
||||||
|
jsr viciv_unhide
|
||||||
|
@1:
|
||||||
|
lda VIC_CTRLB
|
||||||
|
ora #%01000000
|
||||||
|
sta VIC_CTRLB
|
||||||
|
sta NXTBIT
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
sta MISC_EMU
|
||||||
|
|
||||||
|
rts
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
;; #LAYOUT# STD * #TAKE
|
||||||
|
;; #LAYOUT# * KERNAL_0 #TAKE
|
||||||
|
;; #LAYOUT# * * #IGNORE
|
||||||
|
|
||||||
|
|
||||||
|
!ifdef CONFIG_MB_U64 {
|
||||||
|
|
||||||
|
U64_SLOW:
|
||||||
|
|
||||||
|
lda #$00 ; for U64_TURBOCTL - badlines, 1MHz
|
||||||
|
|
||||||
|
+skip_2_bytes_trash_nvz
|
||||||
|
|
||||||
|
; FALLTROUGH
|
||||||
|
|
||||||
|
U64_FAST:
|
||||||
|
|
||||||
|
lda #$0F ; for U64_TURBOCTL - badlines, 48MHz
|
||||||
|
sta SCPU_SPEED_TURBO ; any value will do
|
||||||
|
|
||||||
|
rts
|
||||||
|
}
|
||||||
@@ -32,6 +32,12 @@ hw_entry_reset:
|
|||||||
jsr m65_reset_part
|
jsr m65_reset_part
|
||||||
}
|
}
|
||||||
|
|
||||||
|
!ifdef CONFIG_MB_U64 {
|
||||||
|
|
||||||
|
jsr U64_SLOW
|
||||||
|
sta SCPU_SPEED_NORMAL
|
||||||
|
}
|
||||||
|
|
||||||
!ifdef CONFIG_PLATFORM_COMMODORE_64 {
|
!ifdef CONFIG_PLATFORM_COMMODORE_64 {
|
||||||
|
|
||||||
; The following routine is based on reading the public KERNAL jumptable routine
|
; The following routine is based on reading the public KERNAL jumptable routine
|
||||||
|
|||||||
@@ -30,8 +30,7 @@ tape_screen_on_motor_off:
|
|||||||
lda #$03
|
lda #$03
|
||||||
sta MISC_EMU
|
sta MISC_EMU
|
||||||
|
|
||||||
lda VIC_CTRLB
|
lda NXTBIT
|
||||||
and #%10111111
|
|
||||||
sta VIC_CTRLB
|
sta VIC_CTRLB
|
||||||
|
|
||||||
sta VIC_KEY
|
sta VIC_KEY
|
||||||
@@ -70,18 +69,7 @@ tape_screen_off_motor_on:
|
|||||||
; to be handled by 1 MHz CPU - so in case of compatibility mode, switch CPU to fast speed
|
; to be handled by 1 MHz CPU - so in case of compatibility mode, switch CPU to fast speed
|
||||||
; (and disable badlines, so we will not have to blank the screen)
|
; (and disable badlines, so we will not have to blank the screen)
|
||||||
|
|
||||||
jsr M65_MODEGET
|
jsr tape_fast_cpu
|
||||||
bcc @2
|
|
||||||
|
|
||||||
jsr viciv_unhide
|
|
||||||
|
|
||||||
lda VIC_CTRLB
|
|
||||||
ora #%01000000
|
|
||||||
sta VIC_CTRLB
|
|
||||||
|
|
||||||
lda #$00
|
|
||||||
sta MISC_EMU
|
|
||||||
@2:
|
|
||||||
|
|
||||||
} else ifdef CONFIG_MB_U64 {
|
} else ifdef CONFIG_MB_U64 {
|
||||||
|
|
||||||
@@ -90,10 +78,8 @@ tape_screen_off_motor_on:
|
|||||||
cmp #$FF
|
cmp #$FF
|
||||||
beq @2 ; branch if no turbo control available
|
beq @2 ; branch if no turbo control available
|
||||||
|
|
||||||
lda #$8F ; max speed, no badlines
|
jsr U64_FAST ; max speed, no badlines
|
||||||
sta U64_TURBOCTL
|
|
||||||
bne @3 ; branch always
|
bne @3 ; branch always
|
||||||
|
|
||||||
@2:
|
@2:
|
||||||
jsr screen_off
|
jsr screen_off
|
||||||
@3:
|
@3:
|
||||||
|
|||||||
@@ -45,6 +45,17 @@ tape_head_align:
|
|||||||
|
|
||||||
jsr nmi_lock
|
jsr nmi_lock
|
||||||
|
|
||||||
|
; Switch CPU to fast mode
|
||||||
|
|
||||||
|
!ifdef CONFIG_MB_M65 {
|
||||||
|
jsr tape_fast_cpu
|
||||||
|
}
|
||||||
|
|
||||||
|
!ifdef CONFIG_MB_U64 {
|
||||||
|
jsr U64_FAST
|
||||||
|
sta SCPU_SPEED_TURBO
|
||||||
|
}
|
||||||
|
|
||||||
; Prepare CIA timers
|
; Prepare CIA timers
|
||||||
|
|
||||||
ldx #$02 ; set timer A to 3 ticks
|
ldx #$02 ; set timer A to 3 ticks
|
||||||
|
|||||||
Reference in new issue
Block a user