diff --git a/libsrc/apple2/initcwd.s b/libsrc/apple2/initcwd.s
index 77aa1442f..6ed914ca6 100644
--- a/libsrc/apple2/initcwd.s
+++ b/libsrc/apple2/initcwd.s
@@ -4,21 +4,14 @@
 
         .export         initcwd
         .import		__cwd
-        .import		subysp, addysp
 
         .include	"zeropage.inc"
         .include        "mli.inc"
 
-        .segment	"INIT"
-
 initcwd:
-        ; 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
+        ; Set static prefix buffer
+        lda	#<__cwd
+        ldx	#>__cwd
         sta     mliparam + MLI::PREFIX::PATHNAME
         stx     mliparam + MLI::PREFIX::PATHNAME+1
 
@@ -26,24 +19,22 @@ initcwd:
         lda     #GET_PREFIX_CALL
         ldx     #PREFIX_COUNT
         jsr     callmli
-        bcs	done
 
         ; Check for null prefix
-        ldy	#$00
-        lda	(sp),y
-        beq	done
+	lda	__cwd
+	beq	done
 
-        ; 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	:-
-
-        ; Cleanup stack
-done:   ldy	#1 + 64+1	; Length byte + max pathname length+trailing slash
-        jmp     addysp
+	; Remove length byte and trailing slash
+	sta	tmp1
+	ldx	#$01
+:	lda	__cwd,x
+	sta	__cwd - 1,x
+	inx
+	cpx	tmp1
+	bcc	:-
 
+	; Add terminating zero
+	lda	#$00
+	sta	__cwd - 1,x
+	
+done:	rts
diff --git a/libsrc/apple2/syschdir.s b/libsrc/apple2/syschdir.s
index 48bbc2eed..7eb67e1ab 100644
--- a/libsrc/apple2/syschdir.s
+++ b/libsrc/apple2/syschdir.s
@@ -6,7 +6,7 @@
 
         .export         __syschdir
         .import		pushname, popname
-	.import		__cwd
+	.import		initcwd
 
 	.include	"zeropage.inc"
 	.include	"mli.inc"
@@ -28,12 +28,8 @@ __syschdir:
         jsr	callmli
 	bcs	cleanup
 
-	ldy	#$01
-:	lda	(sp),y
-	sta	__cwd-1,y
-	beq	cleanup
-	iny
-	bne	:-		; Branch always
+	; Update current working directory
+	jsr	initcwd		; Returns with A = 0
 
         ; Cleanup name
 cleanup:jsr	popname		; Preserves A