fix detection and reporting of FILE NOT FOUND error

This commit is contained in:
Paul Gardner-Stephen committed 2019-05-05 02:02:01 +09:30
1 parent 4ddd31176e
commit 1005ee4952
4 files changed
+35 -24

No files matched your search

+1 -1
View File
@@ -64,7 +64,7 @@ got_filename:
;; error code to X, decrement, and handle normally
tax
dex
jmp do_LOAD_error
jmp do_basic_error
*
;; $YYXX is the last loaded address, so store it
+10 -4
View File
@@ -23,27 +23,33 @@ iec_rx_clk_wait:
rol
bpl not_eoi
dex
cpx #$21
bne not_rx_timeout
;; Time out waiting for CLK to assert again.
;; = error
sec
rts
not_rx_timeout:
cpx #$00
bpl iec_rx_clk_wait
;; Remember EOI condition
lda IOSTATUS
ora #$40
sta IOSTATUS
;; EOI timeout: So pulse DATA line for 60 usec
jsr iec_assert_data
jsr iec_wait60us
jsr iec_release_clk_and_data
;; Assert some kind of flag so that we know if it was EOI = the last byte on offer
;; And still wait for CLK to be asserted
;; XXX - This will cause periodic EOI pulses if the sender takes too long.
;; That is probably ok.
ldx #$7f
jmp iec_rx_clk_wait
not_eoi:
not_eoi:
;; CLK is now low. Latch input bits in on rising edge
;; of CLK, eight times for eight bits.
ldx #7
+11 -12
View File
@@ -18,23 +18,22 @@ iec_turnaround_to_listen:
;; page 8 tells us we should not do anything here after waiting for
;; the clock line to assert.
;; ldx #$ff
;; * lda $dd00
;; and #$40
;; bne +
;; dex
;; bne -
ldx #$ff
* lda $dd00
and #$40
bne +
dex
bne -
;; jsr printf
;; .byte "TURNAROUND FAILED - FILE NOT FOUND?",$0d,$00
jsr printf
.byte "TURNAROUND FAILED - FILE NOT FOUND?",$0d,$00
;; ;; Timeout = file not found error
;; ;; (https://www.pagetable.com/?p=1023)
;; lda #4
;; sec
;; rts
lda #4
sec
rts
*
;; ATN turn around successful
clc
rts
+13 -7
View File
@@ -126,24 +126,23 @@ sent_filename:
jsr iec_turnaround_to_listen
bcs load_error
jsr printf
.byte "LOADING",$0d,0
;; Get load address and store it if secondary address is zero
jsr iec_rx_byte
bcs load_error
bcs file_not_found_error
ldx current_secondary_address
beq +
sta load_save_start_ptr+0
*
jsr iec_rx_byte
bcs load_error
bcs file_not_found_error
ldx current_secondary_address
beq +
sta load_save_start_ptr+1
*
jsr printf
.byte "LOADING",$0d,0
load_loop:
;; We are now ready to receive bytes
jsr iec_rx_byte
@@ -206,10 +205,17 @@ load_error:
;; XXX - Indicate KERNAL (not BASIC) LOAD error condtion
sec
lda #$02
lda #28
;; Re-enable interrupts and return
cli
;; (iec_tx_byte will have set/cleared C flag and put result code
;; in A if it was an error).
rts
file_not_found_error:
;; Indicate KERNAL error condition for file not found
sec
lda #$04
cli
rts