improved tape adapter handling
This commit is contained in:
1 parent
9168115679
commit
df00cc507d
2 files changed
+31
-6
No files matched your search
@@ -167,7 +167,7 @@ Needs about 100 more bytes in KERNAL segment.
|
|||||||
|
|
||||||
### `CONFIG_TAPE_NO_KEY_SENSE`
|
### `CONFIG_TAPE_NO_KEY_SENSE`
|
||||||
|
|
||||||
Enable this option if you are using a tape interface adapter with some audio signal source connected. These adapters lack key sense functionality, so the computer is unable to tell whether Play got pressed or not - with this option ROM will assume Play got pressed after impulses start arriving from the tape.
|
Enable this option if you are using a tape interface adapter with some audio signal source connected. These adapters lack key sense functionality, so the computer is unable to tell whether Play got pressed or not - this option changes the ROM behaviour, so that it can detect Play pressed when impulses start arriving from the tape.
|
||||||
|
|
||||||
### `CONFIG_TAPE_NO_MOTOR_CONTROL`
|
### `CONFIG_TAPE_NO_MOTOR_CONTROL`
|
||||||
|
|
||||||
|
|||||||
@@ -61,20 +61,49 @@ tape_wait_play_loop:
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
// The ROM is configured for tape adapter without the key sense - but it is still
|
||||||
|
// possible, that regular Datasette or Tapuino is connected
|
||||||
|
|
||||||
|
lda CPU_R6510
|
||||||
|
and #$10
|
||||||
|
beq tape_wait_first_pulse // branch if button reported pressed, most likely really no key sense
|
||||||
|
|
||||||
|
// We have key sense - perform regular waiting
|
||||||
|
!:
|
||||||
|
jsr STOP
|
||||||
|
bcs tape_break_error
|
||||||
|
|
||||||
|
lda CPU_R6510
|
||||||
|
and #$10
|
||||||
|
beq !-
|
||||||
|
|
||||||
|
tape_wait_first_pulse:
|
||||||
|
|
||||||
// We have no key sense - so just turn the motor on and wait for the first pulse
|
// We have no key sense - so just turn the motor on and wait for the first pulse
|
||||||
|
|
||||||
jsr tape_motor_on
|
jsr tape_motor_on
|
||||||
|
|
||||||
lda #$10
|
|
||||||
!:
|
!:
|
||||||
|
jsr STOP
|
||||||
|
bcs tape_break_error
|
||||||
|
|
||||||
|
lda #$10
|
||||||
bit CIA1_ICR // $DC0D
|
bit CIA1_ICR // $DC0D
|
||||||
bne !-
|
bne !-
|
||||||
!:
|
!:
|
||||||
|
jsr STOP
|
||||||
|
bcs tape_break_error
|
||||||
|
|
||||||
|
lda #$10
|
||||||
bit CIA1_ICR // $DC0D
|
bit CIA1_ICR // $DC0D
|
||||||
beq !-
|
beq !-
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// FALLTROUGH
|
||||||
|
|
||||||
|
tape_wait_play_done:
|
||||||
|
|
||||||
#if CONFIG_MB_MEGA_65
|
#if CONFIG_MB_MEGA_65
|
||||||
|
|
||||||
// Display confirmation
|
// Display confirmation
|
||||||
@@ -84,10 +113,6 @@ tape_wait_play_loop:
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// FALLTROUGH
|
|
||||||
|
|
||||||
tape_wait_play_done:
|
|
||||||
|
|
||||||
// Prepare for reading
|
// Prepare for reading
|
||||||
|
|
||||||
lda #$01
|
lda #$01
|
||||||
|
|||||||
Reference in new issue
Block a user