Use BI's general purposes buffer in PATH, and assume it's byte aligned
Also, use BI's GOSYSTEM in PATH since it's using BI structs anyway.
This commit is contained in:
parent
e20c65853d
commit
827d121ef2
|
@ -92,9 +92,7 @@ rts1: rts
|
||||||
bpl :-
|
bpl :-
|
||||||
|
|
||||||
;; Open FN1
|
;; Open FN1
|
||||||
lda HIMEM ; Use BI's general purpose buffer
|
lda HIMEM+1 ; Use BI's general purpose buffer (page aligned)
|
||||||
sta OSYSBUF
|
|
||||||
lda HIMEM+1
|
|
||||||
sta OSYSBUF+1
|
sta OSYSBUF+1
|
||||||
lda #OPEN
|
lda #OPEN
|
||||||
jsr GOSYSTEM
|
jsr GOSYSTEM
|
||||||
|
|
44
path.s
44
path.s
|
@ -254,7 +254,7 @@ sloop: lda (tptr),y ; Scan table looking for a high bit set
|
||||||
inc tptr+1
|
inc tptr+1
|
||||||
: asl
|
: asl
|
||||||
bcc sloop ; High bit clear, keep looking
|
bcc sloop ; High bit clear, keep looking
|
||||||
lda (tptr),y ; End of table?
|
lda (tptr),y ; End of table?
|
||||||
bne next_char ; Nope, check for a match
|
bne next_char ; Nope, check for a match
|
||||||
beq maybe_invoke
|
beq maybe_invoke
|
||||||
|
|
||||||
|
@ -335,7 +335,8 @@ notok: dey
|
||||||
;; Check to see if path exists.
|
;; Check to see if path exists.
|
||||||
lda #$A ; param length
|
lda #$A ; param length
|
||||||
sta SSGINFO
|
sta SSGINFO
|
||||||
MLI_CALL GET_FILE_INFO, SSGINFO
|
lda #GET_FILE_INFO
|
||||||
|
jsr GOSYSTEM
|
||||||
bne compose ; no such file - try next path directory
|
bne compose ; no such file - try next path directory
|
||||||
|
|
||||||
;; Check to see if type is CMD.
|
;; Check to see if type is CMD.
|
||||||
|
@ -360,17 +361,14 @@ notok: dey
|
||||||
dex
|
dex
|
||||||
bpl :-
|
bpl :-
|
||||||
|
|
||||||
;; Reserve buffer for I/O
|
;; Use BI general purpose buffer for I/O (page aligned)
|
||||||
lda #4
|
lda HIMEM+1
|
||||||
jsr GETBUFR
|
sta OSYSBUF+1
|
||||||
bcc :+
|
|
||||||
lda #$C ; NO BUFFERS AVAILABLE
|
|
||||||
rts
|
|
||||||
: sta OSYSBUF+1
|
|
||||||
|
|
||||||
;; Now try to open/read/close and invoke it
|
;; Now try to open/read/close and invoke it
|
||||||
MLI_CALL OPEN, SOPEN
|
lda #OPEN
|
||||||
bne fail_load
|
jsr GOSYSTEM
|
||||||
|
bcs fail_load
|
||||||
|
|
||||||
lda OREFNUM
|
lda OREFNUM
|
||||||
sta RWREFNUM
|
sta RWREFNUM
|
||||||
|
@ -385,11 +383,16 @@ notok: dey
|
||||||
lda #>max_cmd_size
|
lda #>max_cmd_size
|
||||||
sta RWCOUNT+1
|
sta RWCOUNT+1
|
||||||
|
|
||||||
MLI_CALL READ, SREAD
|
lda #READ
|
||||||
bne fail_load
|
jsr GOSYSTEM
|
||||||
|
php ; save C in case it signals failure
|
||||||
|
pha ; if so, A has error code
|
||||||
|
|
||||||
MLI_CALL CLOSE, SCLOSE
|
lda #CLOSE ; always close
|
||||||
jsr FREEBUFR
|
jsr GOSYSTEM
|
||||||
|
pla
|
||||||
|
plp
|
||||||
|
bcs fail_load
|
||||||
|
|
||||||
;; Restore INBUF now that MLI/BI work is done.
|
;; Restore INBUF now that MLI/BI work is done.
|
||||||
ldx #$7F
|
ldx #$7F
|
||||||
|
@ -398,18 +401,13 @@ notok: dey
|
||||||
dex
|
dex
|
||||||
bpl :-
|
bpl :-
|
||||||
|
|
||||||
;; Invoke command
|
;; Invoke command, allow it to return to BASIC.SYSTEM
|
||||||
jsr cmd_load_addr
|
jmp cmd_load_addr
|
||||||
|
|
||||||
rts ; Return to BASIC.SYSTEM
|
|
||||||
|
|
||||||
fail_load:
|
fail_load:
|
||||||
jsr FREEBUFR
|
rts
|
||||||
reloc_point *+2
|
|
||||||
jmp fail_invoke
|
|
||||||
|
|
||||||
;;; ============================================================
|
;;; ============================================================
|
||||||
;;; ============================================================
|
|
||||||
|
|
||||||
execute:
|
execute:
|
||||||
;; Verify required arguments
|
;; Verify required arguments
|
||||||
|
|
|
@ -60,9 +60,7 @@ execute:
|
||||||
rts1: rts
|
rts1: rts
|
||||||
:
|
:
|
||||||
;; Open the file
|
;; Open the file
|
||||||
lda HIMEM ; Use BI's buffer above HIMEM
|
lda HIMEM+1 ; Use BI's general purpose buffer (page aligned)
|
||||||
sta OSYSBUF
|
|
||||||
lda HIMEM+1
|
|
||||||
sta OSYSBUF+1
|
sta OSYSBUF+1
|
||||||
lda #OPEN
|
lda #OPEN
|
||||||
jsr GOSYSTEM
|
jsr GOSYSTEM
|
||||||
|
|
Loading…
Reference in New Issue