fix detection and reporting of FILE NOT FOUND error
This commit is contained in:
1 parent
4ddd31176e
commit
1005ee4952
4 files changed
+35
-24
No files matched your search
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
Reference in new issue
Block a user