Reactivated Contiki for the Apple ][

- Adjusted Makefile, main.c and conf files to the current style found in contiki-c64
- Added custom linker config and custom startup for a memory layout that makes most exsisting memory available to Contiki
diff --git a/contiki-apple2/Makefile b/contiki-apple2/Makefile
index 7ede143..33b1874 100644
--- a/contiki-apple2/Makefile
+++ b/contiki-apple2/Makefile
@@ -30,106 +30,30 @@
 #
 # This file is part of the Contiki desktop environment
 #
-# $Id: Makefile,v 1.2 2004/03/02 20:53:20 adamdunkels Exp $
+# $Id: Makefile,v 1.3 2004/06/08 20:28:33 oliverschmidt Exp $
 #
 
-all: contiki
-
 CONTIKI=../contiki
-SYS=apple2
+CONTIKICC65=../contiki-cc65
 
-CC=cc65
-AS=ca65
-CFLAGS=-I ctk -I loader -I uip -I conf -I lib \
-       -I $(CONTIKI)/apps -I $(CONTIKI)/ctk -I $(CONTIKI)/ek \
-       -I $(CONTIKI)/lib -I $(CONTIKI)/uip \
-       -t $(SYS) --add-source 
-OPT=-Or
+usage:
+	@echo "Make sure the Contiki sources is in the directory $(CONTIKI)"
+	@echo 'To compile Contiki, use "'$(MAKE)' target" where target'
+	@echo 'is one of the following:'
+	@echo all
+	@echo apple2
+	@echo apple2enh
+	@echo '(Also check the Makefile for more targets to try...)'
 
-%.o: %.c
-	$(CC) $(CFLAGS) $(OPT) -o $(patsubst %c, %s, $(notdir $<)) $<
-	$(AS) -o $@ $(AFLAGS) $(*).s
+all: clean apple2enh
 
-%.o: apps/%.c
-	$(CC) $(CFLAGS) $(OPT) -o $(patsubst %c, %s, $(notdir $<)) $<
-	$(AS) -o $@ $(AFLAGS) $(*).s
+apple2:
+	$(MAKE) CONTIKI=$(CONTIKI) CONTIKICC65=$(CONTIKICC65) -f Makefile.apple2 SYS=apple2
 
-%.o: ctk/%.c
-	$(CC) $(CFLAGS) $(OPT) -o $(patsubst %c, %s, $(notdir $<)) $<
-	$(AS) -o $@ $(AFLAGS) $(*).s
+apple2enh:
+	$(MAKE) CONTIKI=$(CONTIKI) CONTIKICC65=$(CONTIKICC65) -f Makefile.apple2 SYS=apple2enh
 
-%.o: lib/%.c
-	$(CC) $(CFLAGS) $(OPT) -o $(patsubst %c, %s, $(notdir $<)) $<
-	$(AS) -o $@ $(AFLAGS) $(*).s
+CCDEPFLAGS=
 
-%.o: loader/%.c
-	$(CC) $(CFLAGS) $(OPT) -o $(patsubst %c, %s, $(notdir $<)) $<
-	$(AS) -o $@ $(AFLAGS) $(*).s
+include $(CONTIKICC65)/Makefile.common
 
-%.o: uip/%.c
-	$(CC) $(CFLAGS)  -o $(patsubst %c, %s, $(notdir $<)) $<
-	$(AS) -o $@ $(AFLAGS) $(*).s
-
-%.o: $(CONTIKI)/apps/%.c
-	$(CC) $(CFLAGS) $(OPT) -o $(patsubst %c, %s, $(notdir $<)) $<
-	$(AS) -o $@ $(AFLAGS) $(*).s
-
-%.o: $(CONTIKI)/ctk/%.c
-	$(CC) $(CFLAGS) $(OPT) -o $(patsubst %c, %s, $(notdir $<)) $<
-	$(AS) -o $@ $(AFLAGS) $(*).s
-
-%.o: $(CONTIKI)/ek/%.c
-	$(CC) $(CFLAGS) $(OPT) -o $(patsubst %c, %s, $(notdir $<)) $<
-	$(AS) -o $@ $(AFLAGS) $(*).s
-
-%.o: $(CONTIKI)/lib/%.c
-	$(CC) $(CFLAGS) $(OPT) -o $(patsubst %c, %s, $(notdir $<)) $<
-	$(AS) -o $@ $(AFLAGS) $(*).s
-
-%.o: $(CONTIKI)/uip/%.c
-	$(CC) $(CFLAGS) $(OPT) -o $(patsubst %c, %s, $(notdir $<)) $<
-	$(AS) -o $@ $(AFLAGS) $(*).s
-
-
-%.o: ctk/%.S
-	$(AS) -o $@ $(AFLAGS) $<
-
-%.o: loader/%.S
-	$(AS) -o $@ $(AFLAGS) $<
-
-%.prg:  %.o contiki-labels.o
-	cl65 --module -t $(SYS) -o $@ loader-arch-module.o $^
-
-
-UIP=uip.o uip_arch.o uiplib.o resolv.o
-
-WWW=www.o webclient.o http-strings.o htmlparser.o html-strings.o 
-EMAIL=email.o smtp.o smtp-strings.o
-WEBSERVER=webserver.o http-strings.o 
-TELNET=simpletelnet.o telnet.o
-
-contiki-labels.o: contiki-labels.s
-	ca65 -o contiki-labels.o contiki-labels.s
-contiki-labels.s: contiki
-	./make-labels
-
-contiki: contiki-main.o strncasecmp.o petsciiconv.o \
- ctk-conio.o ctk.o ek.o dispatcher.o \
- program-handler.o clock.o \
- about.o netconf.o processes.o arg.o
-	cl65 -Ln contiki-labels -o contiki -t $(SYS) $^
-
-
-clean:
-	rm -f *.o *~ *core contiki *.s *.prg
-
-depend:
-	gcc -MM -Iapps -Ictk -Iuip -Iconf -Ilib \
-	-I$(CONTIKI)/lib -I$(CONTIKI)/ek \
-	-I$(CONTIKI)/ctk -I$(CONTIKI)/apps -I$(CONTIKI)/uip \
-	*.c */*.c $(CONTIKI)/*/*.c > Makefile.depend
-
-include Makefile.depend
-
-codesize:
-	od65 --dump-segsize *.o | egrep '\.o|CODE'
diff --git a/contiki-apple2/Makefile.apple2 b/contiki-apple2/Makefile.apple2
new file mode 100644
index 0000000..91b3999
--- /dev/null
+++ b/contiki-apple2/Makefile.apple2
@@ -0,0 +1,55 @@
+# Copyright (c) 2002, Adam Dunkels.
+# All rights reserved. 
+#
+# Redistribution and use in source and binary forms, with or without 
+# modification, are permitted provided that the following conditions 
+# are met: 
+# 1. Redistributions of source code must retain the above copyright 
+#    notice, this list of conditions and the following disclaimer. 
+# 2. Redistributions in binary form must reproduce the above copyright 
+#    notice, this list of conditions and the following disclaimer in the 
+#    documentation and/or other materials provided with the distribution. 
+# 3. All advertising materials mentioning features or use of this software
+#    must display the following acknowledgement:
+#      This product includes software developed by Adam Dunkels.
+# 4. The name of the author may not be used to endorse or promote
+#    products derived from this software without specific prior
+#    written permission.  
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
+#
+# This file is part of the Contiki desktop environment
+#
+# $Id: Makefile.apple2,v 1.1 2004/06/08 20:28:33 oliverschmidt Exp $
+#
+
+all: contiki
+
+SYS=apple2enh
+
+include $(CONTIKICC65)/Makefile.common
+
+AFLAGS:=-t $(SYS)
+
+CFLAGS:=$(CFLAGSCOMMON) \
+        -DWITH_ASCII -DWITH_UIP -DWITH_ETHERNET
+
+CTK=ctk.o ctk-conio.o
+
+contiki:crt0.o main.o clock.o dispatcher.o program-handler.o arg.o $(CTK) $(UIP) \
+	netconf.o netconf-dsc.o \
+	$(WWW) www-dsc.o \
+	$(TELNET) telnet-dsc.o \
+	processes.o processes-dsc.o \
+	about.o about-dsc.o
+	$(LD) -C apple2.cfg -m contiki.map $^ $(SYS).lib
diff --git a/contiki-apple2/Makefile.depend b/contiki-apple2/Makefile.depend
deleted file mode 100644
index 5f9434c..0000000
--- a/contiki-apple2/Makefile.depend
+++ /dev/null
@@ -1,142 +0,0 @@
-contiki-main.o: contiki-main.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
- ../contiki/ek/ek.h conf/ek-conf.h lib/clock.h ../contiki/lib/cc.h \
- conf/cc-conf.h ../contiki/ctk/ctk-draw.h ctk/ctk-arch.h \
- ../contiki/ctk/ctk-conio.h ../contiki/ek/dispatcher.h \
- ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
- ../contiki/uip/uip_main.h ../contiki/uip/uip_arp.h \
- ../contiki/uip/resolv.h ../contiki/apps/program-handler.h
-clock.o: lib/clock.c lib/clock.h
-about.o: ../contiki/apps/about.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
- ../contiki/ek/ek.h conf/ek-conf.h lib/clock.h ../contiki/lib/cc.h \
- conf/cc-conf.h ../contiki/ek/dispatcher.h ../contiki/uip/uip.h \
- ../contiki/uip/uipopt.h ../contiki/lib/petsciiconv.h \
- ../contiki/ek/loader.h
-calc.o: ../contiki/apps/calc.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
- ../contiki/ek/ek.h conf/ek-conf.h lib/clock.h ../contiki/lib/cc.h \
- conf/cc-conf.h ../contiki/ek/dispatcher.h ../contiki/uip/uip.h \
- ../contiki/uip/uipopt.h ../contiki/ek/loader.h
-contiki.o: ../contiki/apps/contiki.c ../contiki/uip/uip_main.h \
- ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
- ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
- lib/clock.h ../contiki/lib/cc.h conf/cc-conf.h \
- ../contiki/uip/uip_arp.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
- ../contiki/uip/resolv.h ../contiki/apps/email.h \
- ../contiki/lib/petsciiconv.h
-email.o: ../contiki/apps/email.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
- ../contiki/ek/ek.h conf/ek-conf.h lib/clock.h ../contiki/lib/cc.h \
- conf/cc-conf.h ../contiki/ek/dispatcher.h ../contiki/uip/uip.h \
- ../contiki/uip/uipopt.h ../contiki/apps/smtp.h \
- ../contiki/uip/uip_main.h ../contiki/lib/petsciiconv.h \
- ../contiki/ek/loader.h
-html-strings.o: ../contiki/apps/html-strings.c
-htmlparser.o: ../contiki/apps/htmlparser.c \
- ../contiki/apps/htmlparser.h ../contiki/uip/uip.h \
- ../contiki/uip/uipopt.h ../contiki/ek/dispatcher.h ../contiki/ek/ek.h \
- conf/ek-conf.h lib/clock.h ../contiki/lib/cc.h conf/cc-conf.h \
- ../contiki/apps/html-strings.h conf/www-conf.h
-http-strings.o: ../contiki/apps/http-strings.c
-netconf.o: ../contiki/apps/netconf.c ../contiki/uip/uip_main.h \
- ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
- ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
- lib/clock.h ../contiki/lib/cc.h conf/cc-conf.h \
- ../contiki/uip/uip_arp.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
- ../contiki/ek/loader.h
-processes.o: ../contiki/apps/processes.c ../contiki/ctk/ctk.h \
- conf/ctk-conf.h ../contiki/ek/ek.h conf/ek-conf.h lib/clock.h \
- ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/dispatcher.h \
- ../contiki/uip/uip.h ../contiki/uip/uipopt.h ../contiki/ek/loader.h
-program-handler.o: ../contiki/apps/program-handler.c \
- ../contiki/lib/petsciiconv.h ../contiki/uip/uip_main.h \
- ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
- ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
- lib/clock.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ctk/ctk.h \
- conf/ctk-conf.h ../contiki/ctk/ctk-draw.h ctk/ctk-arch.h \
- ../contiki/ctk/ctk-conio.h ../contiki/uip/resolv.h \
- ../contiki/apps/telnet.h ../contiki/ek/loader.h
-programs.o: ../contiki/apps/programs.c ../contiki/ctk/ctk.h \
- conf/ctk-conf.h ../contiki/ek/ek.h conf/ek-conf.h lib/clock.h \
- ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/dispatcher.h \
- ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
- ../contiki/apps/webserver.h ../contiki/apps/www.h \
- ../contiki/apps/email.h ../contiki/apps/simpletelnet.h
-simpletelnet.o: ../contiki/apps/simpletelnet.c \
- ../contiki/lib/petsciiconv.h ../contiki/uip/uip_main.h \
- ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
- ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
- lib/clock.h ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ctk/ctk.h \
- conf/ctk-conf.h ../contiki/uip/resolv.h ../contiki/apps/telnet.h \
- ../contiki/apps/simpletelnet.h ../contiki/ek/loader.h
-smtp-strings.o: ../contiki/apps/smtp-strings.c
-smtp.o: ../contiki/apps/smtp.c ../contiki/uip/uip.h \
- ../contiki/uip/uipopt.h ../contiki/ek/dispatcher.h ../contiki/ek/ek.h \
- conf/ek-conf.h lib/clock.h ../contiki/lib/cc.h conf/cc-conf.h \
- ../contiki/apps/smtp.h ../contiki/apps/smtp-strings.h
-telnet.o: ../contiki/apps/telnet.c ../contiki/uip/uip.h \
- ../contiki/uip/uipopt.h ../contiki/ek/dispatcher.h ../contiki/ek/ek.h \
- conf/ek-conf.h lib/clock.h ../contiki/lib/cc.h conf/cc-conf.h \
- ../contiki/apps/telnet.h
-vnc-viewer.o: ../contiki/apps/vnc-viewer.c ../contiki/apps/vnc-draw.h \
- uip/uip_arch.h ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
- ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
- lib/clock.h ../contiki/lib/cc.h conf/cc-conf.h \
- ../contiki/apps/vnc-viewer.h
-vnc.o: ../contiki/apps/vnc.c ../contiki/lib/petsciiconv.h \
- ../contiki/uip/uip_main.h ../contiki/uip/uip.h \
- ../contiki/uip/uipopt.h ../contiki/ek/dispatcher.h ../contiki/ek/ek.h \
- conf/ek-conf.h lib/clock.h ../contiki/lib/cc.h conf/cc-conf.h \
- ../contiki/ctk/ctk.h conf/ctk-conf.h ../contiki/uip/resolv.h \
- ../contiki/apps/telnet.h ../contiki/apps/vnc.h \
- ../contiki/apps/vnc-draw.h uip/uip_arch.h \
- ../contiki/apps/vnc-viewer.h conf/vnc-conf.h ../contiki/ek/loader.h
-webclient.o: ../contiki/apps/webclient.c ../contiki/uip/uip.h \
- ../contiki/uip/uipopt.h ../contiki/ek/dispatcher.h ../contiki/ek/ek.h \
- conf/ek-conf.h lib/clock.h ../contiki/lib/cc.h conf/cc-conf.h \
- ../contiki/apps/webclient.h ../contiki/apps/http-strings.h \
- ../contiki/uip/resolv.h ../contiki/uip/uip_main.h
-webserver.o: ../contiki/apps/webserver.c ../contiki/ctk/ctk.h \
- conf/ctk-conf.h ../contiki/ek/ek.h conf/ek-conf.h lib/clock.h \
- ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ek/dispatcher.h \
- ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
- ../contiki/apps/http-strings.h ../contiki/uip/uip_main.h \
- ../contiki/lib/petsciiconv.h ../contiki/ek/loader.h
-www.o: ../contiki/apps/www.c ../contiki/ctk/ctk.h conf/ctk-conf.h \
- ../contiki/ek/ek.h conf/ek-conf.h lib/clock.h ../contiki/lib/cc.h \
- conf/cc-conf.h ../contiki/ek/dispatcher.h ../contiki/uip/uip.h \
- ../contiki/uip/uipopt.h ../contiki/apps/webclient.h \
- ../contiki/apps/http-strings.h ../contiki/apps/htmlparser.h \
- ../contiki/uip/resolv.h ../contiki/lib/petsciiconv.h \
- ../contiki/ek/loader.h conf/www-conf.h
-ctk-conio.o: ../contiki/ctk/ctk-conio.c ../contiki/ctk/ctk.h \
- conf/ctk-conf.h ../contiki/ek/ek.h conf/ek-conf.h lib/clock.h \
- ../contiki/lib/cc.h conf/cc-conf.h ../contiki/ctk/ctk-draw.h \
- ctk/ctk-arch.h ../contiki/ctk/ctk-conio.h ctk/ctk-conio-conf.h
-ctk.o: ../contiki/ctk/ctk.c ../contiki/lib/cc.h conf/cc-conf.h \
- ../contiki/ek/ek.h conf/ek-conf.h lib/clock.h \
- ../contiki/ek/dispatcher.h ../contiki/uip/uip.h \
- ../contiki/uip/uipopt.h ../contiki/ctk/ctk.h conf/ctk-conf.h \
- ../contiki/ctk/ctk-draw.h ctk/ctk-arch.h ../contiki/ctk/ctk-conio.h \
- ../contiki/ctk/ctk-mouse.h
-dispatcher.o: ../contiki/ek/dispatcher.c ../contiki/ek/ek.h \
- conf/ek-conf.h lib/clock.h ../contiki/ek/dispatcher.h \
- ../contiki/lib/cc.h conf/cc-conf.h ../contiki/uip/uip.h \
- ../contiki/uip/uipopt.h
-ek.o: ../contiki/ek/ek.c ../contiki/ek/ek.h conf/ek-conf.h lib/clock.h
-libconio.o: ../contiki/lib/libconio.c ../contiki/lib/libconio.h
-petsciiconv.o: ../contiki/lib/petsciiconv.c
-strncasecmp.o: ../contiki/lib/strncasecmp.c
-resolv.o: ../contiki/uip/resolv.c ../contiki/uip/resolv.h \
- ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
- ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
- lib/clock.h ../contiki/lib/cc.h conf/cc-conf.h
-uip.o: ../contiki/uip/uip.c ../contiki/uip/uip.h \
- ../contiki/uip/uipopt.h ../contiki/ek/dispatcher.h ../contiki/ek/ek.h \
- conf/ek-conf.h lib/clock.h ../contiki/lib/cc.h conf/cc-conf.h \
- uip/uip_arch.h
-uip_arp.o: ../contiki/uip/uip_arp.c ../contiki/uip/uip_arp.h \
- ../contiki/uip/uip.h ../contiki/uip/uipopt.h \
- ../contiki/ek/dispatcher.h ../contiki/ek/ek.h conf/ek-conf.h \
- lib/clock.h ../contiki/lib/cc.h conf/cc-conf.h
-uip_main.o: ../contiki/uip/uip_main.c ../contiki/uip/uip.h \
- ../contiki/uip/uipopt.h ../contiki/ek/dispatcher.h ../contiki/ek/ek.h \
- conf/ek-conf.h lib/clock.h ../contiki/lib/cc.h conf/cc-conf.h \
- ../contiki/uip/uip_arp.h
diff --git a/contiki-apple2/apple2.cfg b/contiki-apple2/apple2.cfg
new file mode 100644
index 0000000..7ac3a7a
--- /dev/null
+++ b/contiki-apple2/apple2.cfg
@@ -0,0 +1,40 @@
+#
+# Custom linker configuration for Contiki on the Apple ][ (Oliver Schmidt)
+#
+
+MEMORY {
+    ZEROPAGE: start = $0000, size = $001A, file = "";
+    CODE_HDR: start = $0000, size = $0004, file = "contiki.cod";
+    CODE_MEM: start = $0800, size = $B000, file = "contiki.cod", define = yes;
+    DATA_HDR: start = $0000, size = $0004, file = "contiki.dat";
+    DATA_MEM: start = $1000, size = $1000, file = "contiki.dat", define = yes;
+    DATA_RUN: start = $D000, size = $2FFC, file = "";
+}
+
+SYMBOLS {
+    __STACKSIZE__ = $0800;
+    __STACKLAST__ = $C000;
+}
+
+SEGMENTS {
+    ZEROPAGE: load = ZEROPAGE,                 type = zp;
+    CODE_HDR: load = CODE_HDR,                 type = ro;
+    CODE_1ST: load = CODE_MEM,                 type = ro;
+    CODE:     load = CODE_MEM,                 type = ro;
+    DATA_HDR: load = DATA_HDR,                 type = ro;
+    DATA_1ST: load = DATA_MEM,                 type = ro;
+    RODATA:   load = DATA_MEM, run = DATA_RUN, type = ro,  define = yes;
+    DATA:     load = DATA_MEM, run = DATA_RUN, type = rw,  define = yes;
+    BSS:      load = DATA_RUN,                 type = bss, define = yes;
+}
+
+FEATURES {
+    CONDES: segment = RODATA,
+	    type = constructor,
+	    label = __CONSTRUCTOR_TABLE__,
+	    count = __CONSTRUCTOR_COUNT__;
+    CONDES: segment = RODATA,
+	    type = destructor,
+	    label = __DESTRUCTOR_TABLE__,
+	    count = __DESTRUCTOR_COUNT__;
+}
diff --git a/contiki-apple2/conf/ctk-conf.h b/contiki-apple2/conf/ctk-conf.h
index fce261d..0a19568 100644
--- a/contiki-apple2/conf/ctk-conf.h
+++ b/contiki-apple2/conf/ctk-conf.h
@@ -32,7 +32,7 @@
  *
  * This file is part of the "ctk" console GUI toolkit for cc65
  *
- * $Id: ctk-conf.h,v 1.1 2003/04/10 07:25:27 adamdunkels Exp $
+ * $Id: ctk-conf.h,v 1.2 2004/06/08 20:28:33 oliverschmidt Exp $
  *
  */
 
@@ -45,11 +45,23 @@
 */
 
 /* Defines which key that is to be used for activating the menus */
-#define CTK_CONF_MENU_KEY             CH_F1
+#define CTK_CONF_MENU_KEY             CH_ESC
 
 /* Defines which key that is to be used for switching the frontmost
    window.  */
-#define CTK_CONF_WINDOWSWITCH_KEY     CH_F3
+#define CTK_CONF_WINDOWSWITCH_KEY     0x17	/* Ctrl-W */
+
+/* Defines which key that is to be used for switching to the prevoius
+   widget.  */
+#define CTK_CONF_WIDGETUP_KEY         0x01	/* Ctrl-A */
+
+/* Defines which key that is to be used for switching to the next
+   widget.  */
+#define CTK_CONF_WIDGETDOWN_KEY       '\t'	/* Tab or Ctrl-I */
+
+/* Toggles mouse support (must have support functions in the
+architecture specific files to work). */
+#define CTK_CONF_MOUSE_SUPPORT        0 /* 1342 bytes */
 
 /* Toggles support for desktop icons. */
 #define CTK_CONF_ICONS                1 /* 107 bytes */
@@ -71,4 +83,7 @@
 /* The maximum number of menu items in each menu. */
 #define CTK_CONF_MAXMENUITEMS         10
 
+/* Toggles support for screen savers. */
+#define CTK_CONF_SCREENSAVER          0
+
 #endif /* __CTK_CONF_H__ */
diff --git a/contiki-apple2/conf/ek-conf.h b/contiki-apple2/conf/ek-conf.h
index e61221a..4de9d62 100644
--- a/contiki-apple2/conf/ek-conf.h
+++ b/contiki-apple2/conf/ek-conf.h
@@ -32,7 +32,7 @@
  *
  * This file is part of the "ek" event kernel.
  *
- * $Id: ek-conf.h,v 1.1 2003/04/10 07:25:27 adamdunkels Exp $
+ * $Id: ek-conf.h,v 1.2 2004/06/08 20:28:33 oliverschmidt Exp $
  *
  */
 
@@ -67,6 +67,4 @@
 #define EK_CONF_NUMLISTENERS  32    /* Must be 2^n */
 typedef unsigned char ek_num_listeners_t;
 
-#define EK_CONF_UNLISTEN 0
-
 #endif /* __EK_CONF_H__ */
diff --git a/contiki-apple2/conf/vnc-conf.h b/contiki-apple2/conf/vnc-conf.h
deleted file mode 100644
index e69de29..0000000
--- a/contiki-apple2/conf/vnc-conf.h
+++ /dev/null
diff --git a/contiki-apple2/conf/www-conf.h b/contiki-apple2/conf/www-conf.h
index 4aa0e05..b994455 100644
--- a/contiki-apple2/conf/www-conf.h
+++ b/contiki-apple2/conf/www-conf.h
@@ -32,7 +32,7 @@
  *
  * This file is part of the Contiki desktop environment
  *
- * $Id: www-conf.h,v 1.1 2003/04/10 07:25:27 adamdunkels Exp $
+ * $Id: www-conf.h,v 1.2 2004/06/08 20:28:33 oliverschmidt Exp $
  *
  */
 #ifndef __WWW_CONF_H__
@@ -40,17 +40,17 @@
 
 /* The size of the HTML viewing area. */
 #define WWW_CONF_WEBPAGE_WIDTH 36
-#define WWW_CONF_WEBPAGE_HEIGHT 17
+#define WWW_CONF_WEBPAGE_HEIGHT 16
 
 /* The size of the "Back" history. */
 #define WWW_CONF_HISTORY_SIZE 4
 
 /* Defines the maximum length of an URL */
-#define WWW_CONF_MAX_URLLEN 100
+#define WWW_CONF_MAX_URLLEN 65
 
 /* The maxiumum number of widgets (i.e., hyperlinks, form elements) on
    a page. */
-#define WWW_CONF_MAX_NUMPAGEWIDGETS 20
+#define WWW_CONF_MAX_NUMPAGEWIDGETS 26
 
 /* Turns <center> support on or off; must be on for forms to work. */
 #define WWW_CONF_RENDERSTATE 1
@@ -59,7 +59,7 @@
 #define WWW_CONF_FORMS       1
 
 /* Maximum lengths for various HTML form parameters. */
-#define WWW_CONF_MAX_FORMACTIONLEN  40
+#define WWW_CONF_MAX_FORMACTIONLEN  30
 #define WWW_CONF_MAX_FORMNAMELEN    20
 #define WWW_CONF_MAX_INPUTNAMELEN   20
 #define WWW_CONF_MAX_INPUTVALUELEN  34
diff --git a/contiki-apple2/contiki.txt b/contiki-apple2/contiki.txt
new file mode 100644
index 0000000..ff5b13f
--- /dev/null
+++ b/contiki-apple2/contiki.txt
@@ -0,0 +1,25 @@
+
+   10 REM  LOADER FOR CONTIKI ON THE APPLE ][ (OLIVER SCHMIDT)
+   20 IF PEEK(116)>=184 GOTO 50
+   30 PRINT :PRINT "Error: Contiki requires DOS to be in LC"
+   40 END 
+   50 HOME :VTAB 2:HTAB 12
+   60 PRINT "Welcome to Contiki"
+   70 VTAB 3:HTAB 12
+   80 PRINT "=================="
+   90 VTAB 10:HTAB 11
+  100 PRINT "1: 40 Column Display"
+  110 VTAB 12:HTAB 11
+  120 PRINT "2: 80 Column Display"
+  130 VTAB 14:HTAB 11
+  140 GET A$
+  150 IF A$<"1" OR A$>"2" GOTO 140
+  160 IF A$="2" GOTO 190
+  170 VTAB 19:HTAB 12
+  180 GOTO 210
+  190 PRINT :PRINT CHR$(4)"PR#3":PRINT 
+  200 VTAB 19:HTAB 32
+  210 PRINT "Loading Contiki..."
+  220 PRINT CHR$(4)"BRUN CONTIKI.DATA"
+  230 PRINT CHR$(4)"BRUN CONTIKI.CODE"
+
diff --git a/contiki-apple2/ctk/ctk-arch.h b/contiki-apple2/ctk/ctk-arch.h
index 0620877..ef0e36e 100644
--- a/contiki-apple2/ctk/ctk-arch.h
+++ b/contiki-apple2/ctk/ctk-arch.h
@@ -32,7 +32,7 @@
  *
  * This file is part of the "ctk" console GUI toolkit for cc65
  *
- * $Id: ctk-arch.h,v 1.1 2003/04/10 07:25:27 adamdunkels Exp $
+ * $Id: ctk-arch.h,v 1.2 2004/06/08 20:28:33 oliverschmidt Exp $
  *
  */
 #ifndef __CTK_ARCH_H__
@@ -40,7 +40,16 @@
 
 #include "ctk-conio.h"
 
-#undef CH_ENTER
-#define CH_ENTER 0x0d
+#ifndef CH_CURS_UP
+#define CH_CURS_UP  	0x0B	/* Ctrl-K */
+#endif /* CH_CURS_UP */
+
+#ifndef CH_CURS_DOWN
+#define CH_CURS_DOWN	0x0A	/* Ctrl-J */
+#endif /* CH_CURS_DOWN */
+
+#ifndef CH_DEL
+#define CH_DEL		0x04	/* Ctrl-D */
+#endif /* CH_DEL */
 
 #endif /* __CTK_ARCH_H__ */
diff --git a/contiki-apple2/lib/crt0.S b/contiki-apple2/lib/crt0.S
new file mode 100644
index 0000000..2bc4727
--- /dev/null
+++ b/contiki-apple2/lib/crt0.S
@@ -0,0 +1,208 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;
+; Custom startup code for Contiki on the Apple ][ (Oliver Schmidt)
+;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+.export 	_exit, SETWND, BASCALC
+.importzp	sp
+.import 	zerobss, initlib, callmain, donelib
+.import 	__CODE_MEM_START__, __CODE_MEM_LAST__
+.import 	__DATA_MEM_START__, __DATA_MEM_LAST__
+.import		__RODATA_LOAD__, __RODATA_RUN__, __RODATA_SIZE__
+.import		__DATA_SIZE__, __BSS_SIZE__, __STACKLAST__
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+.segment	"CODE_HDR"
+
+	.word	__CODE_MEM_START__
+	.word	__CODE_MEM_LAST__ - __CODE_MEM_START__
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+.segment	"CODE_1ST"
+
+	; Reset CPU stack
+	ldx	#$FF
+	txs
+
+	; Init operand stack
+	lda	#<__STACKLAST__
+	ldx	#>__STACKLAST__
+	sta	sp
+	stx	sp + 1
+
+	; Make RESET reboot
+	lda	$03F3
+	sta	$03F4
+
+.ifdef __APPLE2__
+
+	; Switch in LC bank 1 for R/W
+	bit	$C08B
+	bit	$C08B
+
+	; Get addr of RESET handler
+	lda	#<reset
+	ldx	#>reset
+
+	; Set RESET vector into LC
+	sta	$FFFC
+	stx	$FFFD
+	
+	; Get addr of IRQ handler
+	lda	#<irq_init
+	ldx	#>irq_init
+
+.else
+
+	; Get IRQ vector from ROM
+	lda	$FFFE
+	ldx	$FFFF
+
+	; Switch in LC bank 1 for R/W
+	bit	$C08B
+	bit	$C08B
+
+.endif
+
+	; Set IRQ vector into LC
+	sta	$FFFE
+	stx	$FFFF
+
+	; Set BBS to zero
+	jsr	zerobss
+
+	; Go for it ...
+	jsr	initlib
+	jsr	callmain
+_exit:	jsr	donelib
+
+	; Switch in ROM and do RESET
+reset:	bit	$C08A
+	jmp	($FFFC)
+
+
+SETWND:
+
+.ifdef __APPLE2__
+	sei
+.endif
+	; Switch in ROM and call SETWND
+	bit	$C08A
+	jsr	$FB4B
+
+	; Switch in LC bank 1 for R/W
+	bit	$C08B
+	bit	$C08B
+
+.ifdef __APPLE2__
+	cli
+.endif
+	rts
+
+
+BASCALC:
+
+.ifdef __APPLE2__
+	sei
+.endif
+	; Switch in ROM and call BASCALC
+	bit	$C08A
+	jsr	$FBC1
+
+	; Switch in LC bank 1 for R/W
+	bit	$C08B
+	bit	$C08B
+
+.ifdef __APPLE2__
+	cli
+.endif
+	rts
+
+
+.ifref irq_init
+irq_init:
+	; Save registers on CPU stack
+	pha
+	txa
+	pha
+	tya
+	pha
+
+	; Create another interrupt frame
+	lda	#>irq_exit
+	pha
+	lda	#<irq_exit
+	pha
+	php
+
+	; Execute user IRQ handler
+	jmp	($03FE)
+.endif
+
+
+.ifref irq_exit
+irq_exit:
+	; Restore registers and return
+	pla
+	tay
+	pla
+	tax
+	pla
+	rti
+.endif
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+.segment	"DATA_HDR"
+
+	.word	__DATA_MEM_START__
+	.word	__DATA_MEM_LAST__ - __DATA_MEM_START__
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+.segment	"DATA_1ST"
+
+	; Switch in LC bank 1 for W/O
+	bit	$C089
+	bit	$C089
+
+	; Set source start
+	lda	#<__RODATA_LOAD__
+	ldx	#>__RODATA_LOAD__
+	sta	$3C
+	stx	$3D
+
+	; Set source end
+	lda	#<(__RODATA_LOAD__ + __RODATA_SIZE__ + __DATA_SIZE__)
+	ldx	#>(__RODATA_LOAD__ + __RODATA_SIZE__ + __DATA_SIZE__)
+	sta	$3E
+	stx	$3F
+
+	; Set destination
+	lda	#<__RODATA_RUN__
+	ldx	#>__RODATA_RUN__
+	sta	$42
+	stx	$43
+
+	; Reset index and call MOVE
+	ldy	#$00
+	jsr	$FE2C
+
+	; Switch in ROM and return
+	bit	$C08A
+	rts
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/contiki-apple2/contiki-main.c b/contiki-apple2/main.c
similarity index 75%
rename from contiki-apple2/contiki-main.c
rename to contiki-apple2/main.c
index 64f87d0..6536180 100644
--- a/contiki-apple2/contiki-main.c
+++ b/contiki-apple2/main.c
@@ -32,7 +32,7 @@
  *
  * This file is part of the Contiki desktop environment 
  *
- * $Id: contiki-main.c,v 1.2 2003/08/05 14:37:49 adamdunkels Exp $
+ * $Id: main.c,v 1.1 2004/06/08 20:28:33 oliverschmidt Exp $
  *
  */
 
@@ -40,44 +40,48 @@
 #include "ctk-draw.h"
 #include "dispatcher.h"
 
-
-#include "uip_main.h"
-#include "uip.h"
-#include "uip_arp.h"
-#if WITH_TFE
-#include "cs8900a.h"
-#endif /* WITH_TFE */
-#include "resolv.h"
-
 #include "program-handler.h"
 
+
+#include "uip-signal.h"
+#include "uip.h"
+#include "uip_arp.h"
+
+#include "resolv.h"
+
+#include "netconf-dsc.h"
+#include "www-dsc.h"
+#include "telnet-dsc.h"
+#include "processes-dsc.h"
+#include "about-dsc.h"
+
 /*-----------------------------------------------------------------------------------*/
-int
-main(int argc, char **argv)
+ek_clock_t
+ek_clock(void)
 {
-
-#ifdef WITH_UIP
-  uip_init();
-  uip_main_init();
-  resolv_init();
-
-#ifdef WITH_RS232
-  rs232dev_init();
-#endif /* WITH_RS232 */
-  
-#endif /* WITH_UIP */
-  
-  ek_init();
+  return clock();
+}
+/*-----------------------------------------------------------------------------------*/
+void
+main(void)
+{
   dispatcher_init();
+  uip_init();
+  
   ctk_init();
+
+  resolv_init(NULL);
+  
+  uip_signal_init();
   
   program_handler_init();
-  
-  ek_run();
 
-  return 0;
+  program_handler_add(&netconf_dsc,   "Network setup", 1);
+  program_handler_add(&www_dsc,       "Web browser",   1);
+  program_handler_add(&telnet_dsc,    "Telnet",        1);
+  program_handler_add(&processes_dsc, "Processes",     1);
+  program_handler_add(&about_dsc,     "About Contiki", 0);
 
-  argv = argv;
-  argc = argc;
+  dispatcher_run();
 }
 /*-----------------------------------------------------------------------------------*/
diff --git a/contiki-apple2/readme.txt b/contiki-apple2/readme.txt
new file mode 100644
index 0000000..6b51021
--- /dev/null
+++ b/contiki-apple2/readme.txt
@@ -0,0 +1,37 @@
+
+Contiki on the Apple ][ (Oliver Schmidt)
+========================================
+
+To make as much as possible memory available to Contiki the DOS 3.3 (clone)
+used for loading Contiki into memory will be overwritten on Contiki startup.
+
+Contiki requires DOS to be moved into language card (bank 2). It has been
+successfully tested with:
+
+- DavidDOS with HIDOS
+- DavidDOS II with HIDOS
+- DiversiDOS with DDMOVER
+- 64k DiversiDOS
+
+With the 'a2tools by Terry Kyriacopoulos' you use the following commands to
+insert Contiki into an (already existing) DOS 3.3 (clone) dsk image file:
+
+a2tools in    t contiki.dsk CONTIKI.TEXT contiki.txt
+a2tools in -r b contiki.dsk CONTIKI.CODE contiki.cod
+a2tools in -r b contiki.dsk CONTIKI.DATA contiki.dat
+
+On the Apple ][ enter the following commands on the Applesoft prompt (']') to
+create the Contiki startup program.
+
+NEW
+EXEC CONTIKI.TEXT
+SAVE CONTIKI
+
+Contiki uses the follwoing keys:
+
+toggle menu: ESC
+next widget: TAB
+prev widget: CONTROL-A
+next window: CONTROL-W
+
+eof
\ No newline at end of file