Ultimate 64 tape improvements

This commit is contained in:
FeralChild64 committed 2020-10-07 15:10:48 +02:00
1 parent 2b9e8650de
commit 166cfabf82
7 files changed
+47 -31

No files matched your search

+7 -3
View File
@@ -1,7 +1,6 @@
Follow these rules, or bad things will happen!
* Don't mix ROMs for different platforms - use generic BASIC with generic KERNAL, Ultimate64 BASIC with Ultimate64 KERNAL, etc.
* Don't mix these ROMs with any other ROMs; exceptions:
@@ -11,9 +10,14 @@ Follow these rules, or bad things will happen!
- chargen_*.rom - these ones are fully interchangeable
- Don't mix ROMs from different builds/versions (again, CHARGEN is an exception).
* Don't mix ROMs from different builds/versions (again, CHARGEN is an exception).
- The generic ROM set should be compatible with any C64-compatible machine; platform-specific ROMs might not work on other platforms.
* The generic ROM set should be compatible with any C64-compatible machine; platform-specific ROMs might not work on other platforms.
For Ultimate 64 the following settinghs are recommended:
* U64 Specific Settings -> Turbo Control -> U64 Turbo Registers
Have fun!
+2 -2
View File
@@ -71,8 +71,8 @@
;; #CONFIG# KEY_REPEAT_DEFAULT NO
;; #CONFIG# KEY_REPEAT_ALWAYS NO
;; #CONFIG# KEY_FAST_SCAN YES
;; #CONFIG# JOY1_CURSOR YES
;; #CONFIG# JOY2_CURSOR YES
;; #CONFIG# JOY1_CURSOR NO
;; #CONFIG# JOY2_CURSOR NO
;; #CONFIG# PROGRAMMABLE_KEYS YES
+1 -1
View File
@@ -121,7 +121,7 @@
!ifndef CONFIG_LEGACY_SCNKEY {
!addr BITTS = $B4 ; -- NOT IMPLEMENTED --
}
!addr NXTBIT = $B5 ; -- NOT IMPLEMENTED --
!addr NXTBIT = $B5 ; -- NOT IMPLEMENTED -- [!] also used by tape routine, we use it only for Ultimate 64 turbo handling
!ifndef CONFIG_LEGACY_SCNKEY {
!addr RODATA = $B6 ; -- NOT IMPLEMENTED --
}
+5 -10
View File
@@ -19,9 +19,8 @@
!ifdef HAS_TAPE {
!addr __MSG_KERNAL_PRESS_PLAY = __msg_kernalplay - __msg_kernal_first
!addr __MSG_KERNAL_FOUND = __msg_kernalfound - __msg_kernal_first
!ifdef CONFIG_MB_M65 {
!addr __MSG_KERNAL_OK_SEARCHING = __msg_kernaloksearching - __msg_kernal_first
} }
!addr __MSG_KERNAL_OK = __msg_kernalok - __msg_kernal_first
}
!ifdef CONFIG_PANIC_SCREEN {
!addr __MSG_KERNAL_PANIC = __msg_kernalpanic - __msg_kernal_first
@@ -70,14 +69,10 @@ __msg_kernalfound:
!pet "found"
!byte $80 + $20 ; end of string mark + space
!ifdef CONFIG_MB_M65 {
__msg_kernaloksearching:
__msg_kernalok:
!pet "ok"
!byte $0D, $0D
!pet "searchin"
!byte $80 + $47 ; end of string mark + 'G'
} }
!byte $80 + $0D ; end of string mark + return
}
!ifdef CONFIG_PANIC_SCREEN {
+1 -1
View File
@@ -72,7 +72,7 @@
;; #ALIAS# print_return = KERNAL_0.proxy_K1_print_return
;; #ALIAS# __MSG_KERNAL_PRESS_PLAY = KERNAL_0.__MSG_KERNAL_PRESS_PLAY
;; #ALIAS# __MSG_KERNAL_OK_SEARCHING = KERNAL_0.__MSG_KERNAL_OK_SEARCHING
;; #ALIAS# __MSG_KERNAL_OK = KERNAL_0.__MSG_KERNAL_OK
;; #ALIAS# __MSG_KERNAL_FOUND = KERNAL_0.__MSG_KERNAL_FOUND
;; #ALIAS# tape_normal_byte_store = KERNAL_0.tape_normal_byte_store
+1 -4
View File
@@ -113,13 +113,10 @@ tape_prepare_reading:
} ; CONFIG_TAPE_HEAD_ALIGN
!ifdef CONFIG_MB_M65 {
; Display confirmation
ldx #__MSG_KERNAL_OK_SEARCHING
ldx #__MSG_KERNAL_OK
jsr print_kernal_message
}
; Prepare for reading
+30 -10
View File
@@ -19,15 +19,21 @@ tape_screen_on_motor_off:
lda COLSTORE
sta VIC_EXTCOL
!ifndef CONFIG_MB_M65 {
jmp screen_on
} else {
!ifdef CONFIG_MB_M65 {
jsr M65_MODEGET
+bcs screen_on ; MEGA65 native mode does not have badlines, no need to enable/disable screen
rts
} else ifdef CONFIG_MB_U64 {
lda NXTBIT
sta U64_TURBOCTL ; restore turbo control settings
jmp screen_on
} else {
jmp screen_on
}
@@ -44,11 +50,7 @@ tape_screen_off_motor_on:
lda VIC_EXTCOL
sta COLSTORE
!ifndef CONFIG_MB_M65 {
jsr screen_off
} else {
!ifdef CONFIG_MB_M65 {
jsr M65_MODEGET
; XXX optimize this
@@ -56,6 +58,24 @@ tape_screen_off_motor_on:
jsr screen_off
@1:
} else ifdef CONFIG_MB_U64 {
lda U64_TURBOCTL
sta NXTBIT
cmp #$FF
beq @1 ; branch if no turbo control available
lda #$8F ; max speed, no badlines
sta U64_TURBOCTL
bne @2 ; branch always
@1:
jsr screen_off
@2:
} else {
jsr screen_off
}
jmp tape_motor_on