Fixes to the code just written
git-svn-id: svn://svn.cc65.org/cc65/trunk@2276 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
8bfaa09b77
commit
6fcf735744
2 changed files with 17 additions and 9 deletions
|
@ -2,7 +2,9 @@
|
|||
; Ullrich von Bassewitz, 2003-08-12
|
||||
;
|
||||
; Place to store the current working directory.
|
||||
;
|
||||
; NOTE: Some of the code working with directories is not able to handle
|
||||
; strings longer than 255 chars, so don't make __cwd_buf_size larger than 256
|
||||
; without checking the other sources.
|
||||
|
||||
.export __cwd
|
||||
.export __cwd_buf_size
|
||||
|
|
|
@ -37,17 +37,18 @@ loop: inc ptr2
|
|||
inc ptr2+1
|
||||
beq overflow
|
||||
|
||||
; Copy one character, end the loop if the zero terminator is reached
|
||||
; Copy one character, end the loop if the zero terminator is reached. We
|
||||
; don't support directories longer than 255 characters for now.
|
||||
|
||||
@L1: lda __cwd,y
|
||||
sta (ptr1),y
|
||||
beq done
|
||||
iny
|
||||
bne loop
|
||||
|
||||
; Current working dir copied ok, A contains zero
|
||||
|
||||
tax ; Return zero in a/x
|
||||
rts
|
||||
|
||||
; For some reason the cwd is longer than 255 characters. This should not
|
||||
; happen, we handle it as if the passed buffer was too short.
|
||||
;
|
||||
; String overflow, return ERANGE
|
||||
|
||||
overflow:
|
||||
|
@ -55,8 +56,13 @@ overflow:
|
|||
sta __errno
|
||||
lda #>ERANGE
|
||||
sta __errno+1
|
||||
lda #$FF
|
||||
tax ; Return -1
|
||||
tax ; High byte of ERANGE is zero, return zero
|
||||
rts
|
||||
|
||||
; Success, return buf
|
||||
|
||||
done: lda ptr1
|
||||
ldx ptr1+1
|
||||
rts
|
||||
|
||||
.endproc
|
||||
|
|
Loading…
Add table
Reference in a new issue