90 lines
1.3 KiB
ArmAsm
90 lines
1.3 KiB
ArmAsm
;; #LAYOUT# STD * #TAKE
|
|
;; #LAYOUT# * BASIC_0 #TAKE
|
|
;; #LAYOUT# * * #IGNORE
|
|
|
|
|
|
!ifdef CONFIG_TAPE_WEDGE {
|
|
|
|
|
|
wedge_tape:
|
|
|
|
; Prepare for execution
|
|
|
|
jsr prepare_direct_execution
|
|
jsr fetch_character
|
|
|
|
; First character is a 'left arrow', we can ignore it - determine the command
|
|
|
|
jsr fetch_character
|
|
|
|
cmp #$4C ; 'L'
|
|
beq wedge_arrow_L
|
|
|
|
!ifndef HAS_SMALL_BASIC {
|
|
|
|
cmp #$4D ; 'M'
|
|
beq wedge_arrow_M
|
|
}
|
|
|
|
!ifdef CONFIG_TAPE_HEAD_ALIGN {
|
|
|
|
cmp #$48 ; 'H'
|
|
beq wedge_arrow_H
|
|
}
|
|
|
|
; FALLTROUGH
|
|
|
|
wedge_tape_syntax_error:
|
|
|
|
jmp do_SYNTAX_error
|
|
|
|
!ifdef CONFIG_TAPE_HEAD_ALIGN {
|
|
|
|
wedge_arrow_H:
|
|
|
|
; Make sure the syntax is correct
|
|
|
|
jsr fetch_character_skip_spaces
|
|
|
|
cmp #$00
|
|
beq wedge_arrow_H_or_HF
|
|
cmp #$46 ; 'F'
|
|
bne wedge_tape_syntax_error
|
|
|
|
jsr fetch_character_skip_spaces
|
|
|
|
cmp #$00
|
|
bne wedge_tape_syntax_error
|
|
|
|
wedge_arrow_H_or_HF:
|
|
|
|
jsr tape_head_align
|
|
|
|
jsr print_return
|
|
jmp do_BREAK_error
|
|
}
|
|
|
|
wedge_arrow_L:
|
|
|
|
jsr wedge_tape_prepare_load
|
|
|
|
; Perform loading
|
|
|
|
jmp cmd_load_got_params
|
|
|
|
|
|
!ifndef HAS_SMALL_BASIC {
|
|
|
|
wedge_arrow_M:
|
|
|
|
jsr wedge_tape_prepare_load
|
|
ldy #$00
|
|
sty SA ; for MERGE secondary address has to be 0!
|
|
|
|
; Perform merging
|
|
|
|
jmp cmd_merge_got_params
|
|
}
|
|
|
|
} ; CONFIG_TAPE_WEDGE
|