MEGA65 tape support fixes, small makefile update

This commit is contained in:
FeralChild64 committed 2020-10-22 18:40:00 +02:00
1 parent 6a04cc52d5
commit 129635daab
4 files changed
+57 -30

No files matched your search

+2 -2
View File
@@ -8,8 +8,8 @@
;
!set NEEDED = 0
!ifdef HAS_TAPE { !set NEEDED = 1 }
!ifdef CONFIG_IEC_JIFFYDOS { !ifndef CONFIG_MEMORY_MODEL_60K { !set NEEDED = 1 } }
!ifdef HAS_TAPE { !ifndef CONFIG_MB_M65 { !set NEEDED = 1 } }
!ifdef CONFIG_IEC_JIFFYDOS_BLANK { !set NEEDED = 1 }
!if NEEDED {
+2 -2
View File
@@ -8,8 +8,8 @@
;
!set NEEDED = 0
!ifdef HAS_TAPE { !set NEEDED = 1 }
!ifdef CONFIG_IEC_JIFFYDOS { !ifndef CONFIG_MEMORY_MODEL_60K { !set NEEDED = 1 } }
!ifdef HAS_TAPE { !ifndef CONFIG_MB_M65 { !set NEEDED = 1 } }
!ifdef CONFIG_IEC_JIFFYDOS_BLANK { !set NEEDED = 1 }
!if NEEDED {
+34 -10
View File
@@ -4,7 +4,7 @@
;; #LAYOUT# * * #IGNORE
;
; Handle screen (visible/blanked) + tape deck motor (on/off),
; Handle screen (visible/blanked; on some hardware disable badlines instead) + tape deck motor (on/off),
; store/restore screen color
;
@@ -23,7 +23,19 @@ tape_screen_on_motor_off:
!ifdef CONFIG_MB_M65 {
jsr M65_MODEGET
+bcs screen_on ; MEGA65 native mode does not have badlines, no need to enable/disable screen
bcc @1
; For compatibility mode, restore normal speed settings and hide VIC-IV
lda #$03
sta MISC_EMU
lda VIC_CTRLB
and #%10111111
sta VIC_CTRLB
sta VIC_KEY
@1:
rts
} else ifdef CONFIG_MB_U64 {
@@ -53,26 +65,38 @@ tape_screen_off_motor_on:
!ifdef CONFIG_MB_M65 {
; On MEGA65 we need to switch banks everytim we retrieve byte to be stored in memory,
; additionally we perform advanced tape speed autocallibration - this is all too expensive
; 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)
jsr M65_MODEGET
; XXX optimize this
bcs @1 ; MEGA65 native mode does not have badlines, no need to enable/disable screen
jsr screen_off
@1:
bcc @2
jsr viciv_unhide
lda VIC_CTRLB
ora #%01000000
sta VIC_CTRLB
lda #$00
sta MISC_EMU
@2:
} else ifdef CONFIG_MB_U64 {
lda U64_TURBOCTL
sta NXTBIT
cmp #$FF
beq @1 ; branch if no turbo control available
beq @2 ; branch if no turbo control available
lda #$8F ; max speed, no badlines
sta U64_TURBOCTL
bne @2 ; branch always
bne @3 ; branch always
@1:
jsr screen_off
@2:
jsr screen_off
@3:
} else {