Files
open-roms/c64/kernal/tape/tape_common.s
T

87 lines
955 B
ArmAsm

//
// Common routines for tape support
//
#if CONFIG_TAPE_NORMAL || CONFIG_TAPE_TURBO
tape_ditch_verify:
lda VERCKK
bne !+
rts
!:
pla
pla
jmp lvs_device_not_found_error
tape_motor_off:
lda CPU_R6510
ora #$20
sta CPU_R6510
rts
tape_motor_on:
lda CPU_R6510
and #($FF - $20)
sta CPU_R6510
rts
tape_ask_play:
sei // timing is critical for tape loading
jsr tape_motor_off
ldx #__MSG_KERNAL_PRESS_PLAY
jsr print_kernal_message
tape_wait_button_loop:
jsr udtim_keyboard
jsr STOP
bcc !+
// Stop key pressed
pla
pla
cli
jmp kernalerror_ROUTINE_TERMINATED
!:
lda CPU_R6510
and #$10 // check for pressed button
bne tape_wait_button_loop
jsr screen_blank
jsr tape_motor_on
rts
tape_load_success:
jsr screen_show
jsr tape_motor_off
jmp lvs_success_end
tape_load_error:
jsr screen_show
jsr tape_motor_off
jmp lvs_load_verify_error
#endif