87 lines
955 B
ArmAsm
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
|