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:
cuz 2003-08-12 13:58:17 +00:00
parent 8bfaa09b77
commit 6fcf735744
2 changed files with 17 additions and 9 deletions

View file

@ -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

View file

@ -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