diff --git a/libsrc/apple2/initcwd.s b/libsrc/apple2/initcwd.s index c17e081e3..77aa1442f 100644 --- a/libsrc/apple2/initcwd.s +++ b/libsrc/apple2/initcwd.s @@ -4,16 +4,21 @@ .export initcwd .import __cwd + .import subysp, addysp .include "zeropage.inc" .include "mli.inc" - .segment "INIT" - + .segment "INIT" + initcwd: - ; Use imported buffer - lda #<__cwd - ldx #>__cwd + ; Alloc prefix buffer + ldy #1 + 64+1 ; Length byte + max pathname length+trailing slash + jsr subysp + + ; Use allocated prefix buffer + lda sp + ldx sp+1 sta mliparam + MLI::PREFIX::PATHNAME stx mliparam + MLI::PREFIX::PATHNAME+1 @@ -21,19 +26,24 @@ initcwd: lda #GET_PREFIX_CALL ldx #PREFIX_COUNT jsr callmli + bcs done - ; Check length byte - ldx __cwd + ; Check for null prefix + ldy #$00 + lda (sp),y beq done - ; Replace trailing slash with zero - sta __cwd,x ; A = 0 - - ; Remove length byte - tax -: inx - lda __cwd,x - sta __cwd-1,x + ; Set current working directory + ; - omit trailing slash and length byte + ; - terminating zero already in place + tay + dey +: lda (sp),y + sta __cwd-1,y + dey bne :- -done: rts + ; Cleanup stack +done: ldy #1 + 64+1 ; Length byte + max pathname length+trailing slash + jmp addysp +