Up to now Contiki for the Apple2 was loaded under DOS 3.3 and it destroyed DOS 3.3 to get as much as possible memory.

Now Contiki for the Apple2 is loaded under ProDOS 8 using a special loader which is available as User Contribution on the cc65 ftp site.

It contains a minimalistic custom file i/o library to support loading modules (aka .prg files) from the ProDOS 8 filesystem.
diff --git a/contiki-apple2/Makefile.apple2 b/contiki-apple2/Makefile.apple2
index 354f31d..63dcb13 100644
--- a/contiki-apple2/Makefile.apple2
+++ b/contiki-apple2/Makefile.apple2
@@ -30,7 +30,7 @@
 #
 # This file is part of the Contiki desktop environment
 #
-# $Id: Makefile.apple2,v 1.4 2004/07/12 21:28:59 oliverschmidt Exp $
+# $Id: Makefile.apple2,v 1.5 2004/12/26 14:13:34 oliverschmidt Exp $
 #
 
 all: contiki
@@ -39,10 +39,10 @@
 
 include $(CONTIKICC65)/Makefile.common
 
-AFLAGS:=-t $(SYS)
+AFLAGS:=-t $(SYS) -I lib -I $(CC65_INC)/../asminc
 
 CFLAGS:=$(CFLAGSCOMMON) \
-        -DWITH_ASCII -DWITH_UIP -DWITH_ETHERNET
+        -DWITH_ASCII -DWITH_UIP -DWITH_LOADER_ARCH -DWITH_ETHERNET
 
 ifeq ($(SYS),apple2enh)
 CTK=ctk.o ctk-mousetext.o
@@ -50,13 +50,16 @@
 CTK=ctk.o ctk-conio.o
 endif
 
-contiki:crt0.o main.o ek.o ek-service.o \
-	timer.o program-handler.o arg.o \
-	$(CTK) $(UIP) \
-	config.o config-dsc.o \
-	$(WWW) www-dsc.o \
-	$(TELNET) telnet-dsc.o \
-	calc.o calc-dsc.o \
-	processes.o processes-dsc.o \
-	about.o about-dsc.o
-	$(LD) -C apple2.cfg -m contiki.map $^ $(SYS).lib
+contiki:crt0.o main.o ek.o ek-service.o timer.o program-handler.o arg.o \
+	$(CTK) $(UIP) loader-arch.o bank.o mli.o \
+	about-dsc.o \
+	calc-dsc.o \
+	configedit-dsc.o \
+	dhcp-dsc.o \
+	email-dsc.o \
+	irc-dsc.o \
+	memstat-dsc.o \
+	processes-dsc.o \
+	telnet-dsc.o \
+	www-dsc.o
+	$(LD) -C apple2.cfg -Ln contiki-labels -m contiki.map $^ $(SYS).lib