From d636d7110f1299813a7d69fc6e08e01b8cd06973 Mon Sep 17 00:00:00 2001
From: Oliver Schmidt
Date: Sat, 1 Jun 2013 22:49:00 +0200
Subject: [PATCH] Added platform 'Atari XL'.
Don't be afraid, I'm not trying to have more retro platforms than "real" platforms ;-)
The platform 'atarixl' will replace the platform 'atari'. However I need both for some
transition period.
---
examples/webbrowser/Makefile.atarixl.defines | 1 +
platform/atarixl/Makefile.atarixl | 62 +++++++++++
platform/atarixl/README.md | 16 +++
platform/atarixl/contiki-conf.h | 67 ++++++++++++
platform/atarixl/contiki-main.c | 108 +++++++++++++++++++
platform/atarixl/lib/error.c | 49 +++++++++
tools/atarixl/default.cfg | Bin 0 -> 29 bytes
tools/atarixl/dos25/dos.sys | Bin 0 -> 4625 bytes
tools/atarixl/dos25/dup.sys | Bin 0 -> 5126 bytes
tools/atarixl/mydos4534/dos.sys | Bin 0 -> 4375 bytes
tools/atarixl/mydos4534/dup.sys | Bin 0 -> 6708 bytes
tools/atarixl/sample.cfg | Bin 0 -> 29 bytes
12 files changed, 303 insertions(+)
create mode 100644 examples/webbrowser/Makefile.atarixl.defines
create mode 100644 platform/atarixl/Makefile.atarixl
create mode 100644 platform/atarixl/README.md
create mode 100644 platform/atarixl/contiki-conf.h
create mode 100644 platform/atarixl/contiki-main.c
create mode 100644 platform/atarixl/lib/error.c
create mode 100644 tools/atarixl/default.cfg
create mode 100644 tools/atarixl/dos25/dos.sys
create mode 100644 tools/atarixl/dos25/dup.sys
create mode 100644 tools/atarixl/mydos4534/dos.sys
create mode 100644 tools/atarixl/mydos4534/dup.sys
create mode 100644 tools/atarixl/sample.cfg
diff --git a/examples/webbrowser/Makefile.atarixl.defines b/examples/webbrowser/Makefile.atarixl.defines
new file mode 100644
index 000000000..7f438d1d1
--- /dev/null
+++ b/examples/webbrowser/Makefile.atarixl.defines
@@ -0,0 +1 @@
+DEFINES = WITH_CLIENT,WITH_DNS,WITH_GUI
diff --git a/platform/atarixl/Makefile.atarixl b/platform/atarixl/Makefile.atarixl
new file mode 100644
index 000000000..0997899ee
--- /dev/null
+++ b/platform/atarixl/Makefile.atarixl
@@ -0,0 +1,62 @@
+#
+# Copyright (c) 2007, 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. 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 operating system.
+#
+# Author: Oliver Schmidt
+#
+# $Id: Makefile.atari,v 1.3 2011/01/23 16:25:45 oliverschmidt Exp $
+#
+
+ETHERNET = cs8900a
+
+CONTIKI_CPU = $(CONTIKI)/cpu/6502
+include $(CONTIKI_CPU)/Makefile.6502
+
+STARTADDR_FLAG = -S 0x2300
+
+ifeq ($(MAKECMDGOALS),disk)
+ ifndef DIR2ATR
+ ${error DIR2ATR not defined! You must specify where dir2atr resides}
+ endif
+endif
+
+disk: all
+ mkdir atr
+ cp $(CONTIKI)/tools/$(TARGET)/dos25/dos.sys atr/dos.sys
+ cp $(CONTIKI)/tools/$(TARGET)/dos25/dup.sys atr/dup.sys
+ cp $(CONTIKI_PROJECT).$(TARGET) atr/autorun.sys
+ cp $(CONTIKI)/tools/$(TARGET)/sample.cfg atr/contiki.cfg
+ifeq ($(HTTPD-CFS),1)
+ cp httpd-cfs/index.htm atr/index.htm
+ cp httpd-cfs/backgrnd.gif atr/backgrnd.gif
+ cp httpd-cfs/contiki.gif atr/contiki.gif
+ cp httpd-cfs/notfound.htm atr/notfound.htm
+endif
+ $(DIR2ATR) -b Dos25 1040 contiki.atr atr
+ rm -r atr
diff --git a/platform/atarixl/README.md b/platform/atarixl/README.md
new file mode 100644
index 000000000..fee88dec6
--- /dev/null
+++ b/platform/atarixl/README.md
@@ -0,0 +1,16 @@
+Atari
+=====
+
+The platform/atari/ directory is used for targeting an Atari 8-bit computer.
+Most things are shared between the 6502-based targets so please consult
+cpu/6502/README for further details.
+
+
+The following Atari 8-bit Ethernet card is supported:
+
+- Atari 8-bit Ethernet Project: Use driver cs8900a.eth with address $D500.
+
+The 'disk' make goal requires HiassofT's dir2atr program. It is available at
+http://www.horus.com/~hias/atari/ - either as source code (being part of the
+'AtariSIO driver and utilities for Linux') or as Win32 binary program (being
+part of the 'Atari Tools for Win32').
diff --git a/platform/atarixl/contiki-conf.h b/platform/atarixl/contiki-conf.h
new file mode 100644
index 000000000..67dfbddd1
--- /dev/null
+++ b/platform/atarixl/contiki-conf.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2007, Swedish Institute of Computer Science.
+ * 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. Neither the name of the Institute nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``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 INSTITUTE OR CONTRIBUTORS 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 operating system.
+ *
+ * Author: Oliver Schmidt
+ *
+ */
+
+#ifndef __CONTIKI_CONF_H__
+#define __CONTIKI_CONF_H__
+
+#include "6502def.h"
+
+#define CTK_CONF_MENU_KEY CH_ESC
+#define CTK_CONF_WINDOWSWITCH_KEY 0x17 /* Ctrl-W */
+#define CTK_CONF_WIDGETUP_KEY 0x01 /* Ctrl-A */
+#define CTK_CONF_WIDGETDOWN_KEY '\t' /* Tab or Ctrl-I */
+
+#define textcolor(color) COLOR_WHITE
+
+#define BORDERCOLOR COLOR_BLACK
+#define SCREENCOLOR COLOR_BLACK
+
+#define EMAIL_CONF_WIDTH 39
+#define EMAIL_CONF_HEIGHT 19
+#define EMAIL_CONF_ERASE 0
+
+#define FTP_CONF_WIDTH 18
+#define FTP_CONF_HEIGHT 21
+
+#define IRC_CONF_WIDTH 40
+#define IRC_CONF_HEIGHT 23
+
+#define WWW_CONF_WEBPAGE_WIDTH 40
+#define WWW_CONF_WEBPAGE_HEIGHT 19
+#define WWW_CONF_HISTORY_SIZE 0
+#define WWW_CONF_MAX_URLLEN 80
+#define WWW_CONF_MAX_NUMPAGEWIDGETS 20
+#define WWW_CONF_FORMS 0
+
+#endif /* __CONTIKI_CONF_H__ */
diff --git a/platform/atarixl/contiki-main.c b/platform/atarixl/contiki-main.c
new file mode 100644
index 000000000..fa4fd7844
--- /dev/null
+++ b/platform/atarixl/contiki-main.c
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2006, Swedish Institute of Computer Science.
+ * 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. Neither the name of the Institute nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``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 INSTITUTE OR CONTRIBUTORS 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 operating system.
+ *
+ * Author: Oliver Schmidt
+ *
+ */
+
+#include "contiki-net.h"
+#include "ctk/ctk.h"
+#include "sys/log.h"
+#include "lib/config.h"
+#include "net/ethernet-drv.h"
+
+#if WITH_GUI
+#define CTK_PROCESS &ctk_process,
+#else /* WITH_GUI */
+#define CTK_PROCESS
+#endif /* WITH_GUI */
+
+#if WITH_DNS
+#define RESOLV_PROCESS &resolv_process,
+#else /* WITH_DNS */
+#define RESOLV_PROCESS
+#endif /* WITH_DNS */
+
+PROCINIT(&etimer_process,
+ CTK_PROCESS
+ RESOLV_PROCESS
+ &tcpip_process);
+
+/*-----------------------------------------------------------------------------------*/
+void
+main(void)
+{
+ struct ethernet_config *ethernet_config;
+
+ clrscr();
+ bordercolor(BORDERCOLOR);
+ bgcolor(SCREENCOLOR);
+
+ process_init();
+
+#if 1
+ ethernet_config = config_read("contiki.cfg");
+#else
+ {
+ static struct ethernet_config config = {0xD500, "cs8900a.eth"};
+ uip_ipaddr_t addr;
+
+ uip_ipaddr(&addr, 192,168,0,128);
+ uip_sethostaddr(&addr);
+
+ uip_ipaddr(&addr, 255,255,255,0);
+ uip_setnetmask(&addr);
+
+ uip_ipaddr(&addr, 192,168,0,1);
+ uip_setdraddr(&addr);
+
+ uip_ipaddr(&addr, 192,168,0,1);
+ resolv_conf(&addr);
+
+ ethernet_config = &config;
+ }
+#endif
+
+ procinit_init();
+
+ process_start((struct process *)ðernet_process, (char *)ethernet_config);
+
+ autostart_start(autostart_processes);
+
+ log_message("Contiki up and running ...", "");
+
+ while(1) {
+
+ process_run();
+
+ etimer_request_poll();
+ }
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/platform/atarixl/lib/error.c b/platform/atarixl/lib/error.c
new file mode 100644
index 000000000..2c5d5572e
--- /dev/null
+++ b/platform/atarixl/lib/error.c
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2007, Swedish Institute of Computer Science.
+ * 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. Neither the name of the Institute nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``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 INSTITUTE OR CONTRIBUTORS 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 operating system.
+ *
+ * Author: Oliver Schmidt
+ *
+ */
+
+#include
+
+#include "sys/log.h"
+
+#include "lib/error.h"
+
+/*-----------------------------------------------------------------------------------*/
+void
+error_exit(void)
+{
+ log_message("Press any key to continue ...", "");
+ ctk_arch_getkey();
+ exit(EXIT_FAILURE);
+}
+/*-----------------------------------------------------------------------------------*/
diff --git a/tools/atarixl/default.cfg b/tools/atarixl/default.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..f2cf1eb3118ada532ceee72ba83a3b043146d73e
GIT binary patch
literal 29
WcmZQzKm%8ki!Ce-3=;KHOELf+Bm_+W
literal 0
HcmV?d00001
diff --git a/tools/atarixl/dos25/dos.sys b/tools/atarixl/dos25/dos.sys
new file mode 100644
index 0000000000000000000000000000000000000000..12c3eaa56c08043318ada38adbba20cf93c90d0e
GIT binary patch
literal 4625
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
O)WHwT<8XN0|NJkGC@R+g
literal 0
HcmV?d00001
diff --git a/tools/atarixl/dos25/dup.sys b/tools/atarixl/dos25/dup.sys
new file mode 100644
index 0000000000000000000000000000000000000000..2aa1ba4fa992e4c035165c104fc134830c4570ec
GIT binary patch
literal 5126
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
YNG?Un`O*l<_1cfmE7zQFI=@B!52pt%5dZ)H
literal 0
HcmV?d00001
diff --git a/tools/atarixl/mydos4534/dos.sys b/tools/atarixl/mydos4534/dos.sys
new file mode 100644
index 0000000000000000000000000000000000000000..3171b55c4eafae06d7ffdea4da79027ffa6d856d
GIT binary patch
literal 4375
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
n&i41fOW(Ke?|`73Wtb}*!*~ue`#
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