From c839eacbdf854aa1e00623031b6dc15dd13c51ee Mon Sep 17 00:00:00 2001 From: oliverschmidt Date: Wed, 29 Sep 2010 19:44:01 +0000 Subject: [PATCH] Added cc65 target 'atari' for Atari 8-bit machines. This addition was triggered by exsistence of http://www.atari8ethernet.com/. --- cpu/6502/dhcp/Makefile.atari.defines | 1 + examples/email/Makefile.atari.defines | 1 + examples/irc/Makefile.atari.defines | 1 + examples/webbrowser/Makefile.atari.defines | 1 + examples/webserver/Makefile.atari.defines | 1 + examples/wget/Makefile.atari.defines | 1 + platform/atari/Makefile.atari | 62 ++++++++++++ platform/atari/README | 8 ++ platform/atari/atari.cfg | 44 +++++++++ platform/atari/contiki-conf.h | 75 +++++++++++++++ platform/atari/contiki-main.c | 106 +++++++++++++++++++++ tools/atari/dos.sys | Bin 0 -> 4625 bytes tools/atari/dup.sys | Bin 0 -> 5126 bytes tools/atari/sample.cfg | Bin 0 -> 29 bytes 14 files changed, 301 insertions(+) create mode 100644 cpu/6502/dhcp/Makefile.atari.defines create mode 100644 examples/email/Makefile.atari.defines create mode 100644 examples/irc/Makefile.atari.defines create mode 100644 examples/webbrowser/Makefile.atari.defines create mode 100644 examples/webserver/Makefile.atari.defines create mode 100644 examples/wget/Makefile.atari.defines create mode 100644 platform/atari/Makefile.atari create mode 100644 platform/atari/README create mode 100644 platform/atari/atari.cfg create mode 100644 platform/atari/contiki-conf.h create mode 100644 platform/atari/contiki-main.c create mode 100644 tools/atari/dos.sys create mode 100644 tools/atari/dup.sys create mode 100644 tools/atari/sample.cfg diff --git a/cpu/6502/dhcp/Makefile.atari.defines b/cpu/6502/dhcp/Makefile.atari.defines new file mode 100644 index 000000000..72d71db8b --- /dev/null +++ b/cpu/6502/dhcp/Makefile.atari.defines @@ -0,0 +1 @@ +DEFINES = WITH_DNS,WITH_GUI diff --git a/examples/email/Makefile.atari.defines b/examples/email/Makefile.atari.defines new file mode 100644 index 000000000..7f438d1d1 --- /dev/null +++ b/examples/email/Makefile.atari.defines @@ -0,0 +1 @@ +DEFINES = WITH_CLIENT,WITH_DNS,WITH_GUI diff --git a/examples/irc/Makefile.atari.defines b/examples/irc/Makefile.atari.defines new file mode 100644 index 000000000..7f438d1d1 --- /dev/null +++ b/examples/irc/Makefile.atari.defines @@ -0,0 +1 @@ +DEFINES = WITH_CLIENT,WITH_DNS,WITH_GUI diff --git a/examples/webbrowser/Makefile.atari.defines b/examples/webbrowser/Makefile.atari.defines new file mode 100644 index 000000000..54380b38d --- /dev/null +++ b/examples/webbrowser/Makefile.atari.defines @@ -0,0 +1 @@ +DEFINES = WITH_CLIENT,WITH_DNS,WITH_GUI,MTU_SIZE=1000 diff --git a/examples/webserver/Makefile.atari.defines b/examples/webserver/Makefile.atari.defines new file mode 100644 index 000000000..a17e2c1c1 --- /dev/null +++ b/examples/webserver/Makefile.atari.defines @@ -0,0 +1 @@ +DEFINES = WITH_LOGGING,WITH_BOOST diff --git a/examples/wget/Makefile.atari.defines b/examples/wget/Makefile.atari.defines new file mode 100644 index 000000000..405794c09 --- /dev/null +++ b/examples/wget/Makefile.atari.defines @@ -0,0 +1 @@ +DEFINES = WITH_LOGGING,WITH_CLIENT,WITH_DNS diff --git a/platform/atari/Makefile.atari b/platform/atari/Makefile.atari new file mode 100644 index 000000000..aa3726caa --- /dev/null +++ b/platform/atari/Makefile.atari @@ -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.1 2010/09/29 19:44:01 oliverschmidt Exp $ +# + +ETHERNET = cs8900a + +CONTIKI_CPU = $(CONTIKI)/cpu/6502 +include $(CONTIKI_CPU)/Makefile.6502 + +LDFLAGS += -C $(CONTIKI)/platform/$(TARGET)/$(TARGET).cfg -S 0x2000 + +ifeq ($(MAKECMDGOALS),disk) + ifndef DIR2ATR + ${error DIR2ATR not defined! You must specify where dir2atr resides} + endif +endif + +disk: all + mkdir -p atr + cp $(CONTIKI)/tools/$(TARGET)/dos.sys atr/dos.sys + cp $(CONTIKI)/tools/$(TARGET)/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/atari/README b/platform/atari/README new file mode 100644 index 000000000..0aec8bb91 --- /dev/null +++ b/platform/atari/README @@ -0,0 +1,8 @@ +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. diff --git a/platform/atari/atari.cfg b/platform/atari/atari.cfg new file mode 100644 index 000000000..7b4fac680 --- /dev/null +++ b/platform/atari/atari.cfg @@ -0,0 +1,44 @@ +FEATURES { +STARTADDRESS: default = $2E00; +} +SYMBOLS { +#__STACKSIZE__ = $800; +__STACKSIZE__: value = $800, weak = yes; +__RESERVED_MEMORY__: value = $0, weak = yes; +} +MEMORY { +ZP: start = $0082, size = $007E, type = rw, define = yes; +HEADER: start = $0000, size = $0006, file = %O; +RAM: start = %S, size = $BC20 - __STACKSIZE__ - %S, file = %O; +TRAILER: start = $0000, size = $0006, file = %O; +} +SEGMENTS { +EXEHDR: load = HEADER, type = ro; +STARTUP: load = RAM, type = ro, define = yes; +LOWCODE: load = RAM, type = ro, define = yes, optional = yes; +INIT: load = RAM, type = ro, optional = yes; +CODE: load = RAM, type = ro, define = yes; +RODATA: load = RAM, type = ro; +DATA: load = RAM, type = rw; +ZPSAVE: load = RAM, type = bss, define = yes; +BSS: load = RAM, type = bss, define = yes; +HEAP: load = RAM, type = bss, optional = yes; +ZEROPAGE: load = ZP, type = zp; +EXTZP: load = ZP, type = zp, optional = yes; +AUTOSTRT: load = TRAILER, type = ro; +} +FEATURES { +CONDES: segment = INIT, +type = constructor, +label = __CONSTRUCTOR_TABLE__, +count = __CONSTRUCTOR_COUNT__; +CONDES: segment = RODATA, +type = destructor, +label = __DESTRUCTOR_TABLE__, +count = __DESTRUCTOR_COUNT__; +CONDES: type = interruptor, +segment = RODATA, +label = __INTERRUPTOR_TABLE__, +count = __INTERRUPTOR_COUNT__; +} + diff --git a/platform/atari/contiki-conf.h b/platform/atari/contiki-conf.h new file mode 100644 index 000000000..38b1cd280 --- /dev/null +++ b/platform/atari/contiki-conf.h @@ -0,0 +1,75 @@ +/* + * 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 + * + * $Id: contiki-conf.h,v 1.1 2010/09/29 19:44:01 oliverschmidt Exp $ + */ + +#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 BORDERCOLOR COLOR_LIGHTBLUE +#define SCREENCOLOR COLOR_BLUE +#define BACKGROUNDCOLOR COLOR_BLUE +#define WINDOWCOLOR COLOR_GRAY1 +#define WINDOWCOLOR_FOCUS COLOR_LIGHTBLUE +#define WIDGETCOLOR COLOR_GRAY1 +#define WIDGETCOLOR_FOCUS COLOR_YELLOW +#define WIDGETCOLOR_FWIN COLOR_LIGHTBLUE +#define WIDGETCOLOR_HLINK COLOR_CYAN + +#define EMAIL_CONF_WIDTH 39 +#define EMAIL_CONF_HEIGHT 19 +#define EMAIL_CONF_ERASE 0 + +#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_RENDERSTATE 0 +#define WWW_CONF_FORMS 0 +#define WWW_CONF_MAX_FORMACTIONLEN 20 +#define WWW_CONF_MAX_FORMNAMELEN 20 +#define WWW_CONF_MAX_INPUTNAMELEN 20 +#define WWW_CONF_MAX_INPUTVALUELEN 20 + +#endif /* __CONTIKI_CONF_H__ */ diff --git a/platform/atari/contiki-main.c b/platform/atari/contiki-main.c new file mode 100644 index 000000000..08ebba4e5 --- /dev/null +++ b/platform/atari/contiki-main.c @@ -0,0 +1,106 @@ +/* + * 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 + * + * $Id: contiki-main.c,v 1.1 2010/09/29 19:44:01 oliverschmidt Exp $ + */ + +#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; + + 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) { + + if(process_run() < 2) { + + etimer_request_poll(); + } + } +} +/*-----------------------------------------------------------------------------------*/ diff --git a/tools/atari/dos.sys b/tools/atari/dos.sys new file mode 100644 index 0000000000000000000000000000000000000000..12c3eaa56c08043318ada38adbba20cf93c90d0e GIT binary patch literal 4625 zcmb_feQ*=!ncv-4vc9FYUdfW6hS$`Y+7yVO$wio4_>g2vzQqnUBqiyz`-d}Q7Y_D1Max->~$VNpzzm(9)cvNBIEdMp0l?2;{la zCS2KUB4#o-<5EqM5XsXH@*^MZ%VjWm*>50erGF`0N;z25MeKCu4q|vXf^)}kPQ@~q zJdj835T3FGa)Wrv8psV{Y2K&Q;?h=>X#mJhJMomjS1uPVl*_CFu$t}W+OtRS$fd(r zttIaj)WFwf}IfC_CoNc39>N6O2he)Jjc7UY6l)+I;Os1R?#*|lf;KC|^ z@Nr{t*uuZJc^!Z_&X(|eDHy4_s=L*fn z+Z{Ww3%p|f-lx3@E1taLH5 ztaOnEmlN0`Z3S%&tvHBR_Zznui%Z*3<&N1}`P_W0@}=U6*j1uNoD);qU8$)KS4wur z+$UYnxG%e}cxpXg1N3`@x8QF;_z1lvvI}^mFjW%2mknt{{G_4x9G>$I5n>4KDca!EdsIi{s zbOBWwOd($bF(1n&`;E^^Uw0{XJO^LdWO>?Ze4;t2FPo%`<@0uI+|VAQ90=%3+2k2J z7JXVzHmMEJhuIpRO;)j*0NkL(sf_`X5HI?$_!qLy5BNbtlcV0e6WSuz3UlKo>48#t zpbzYM4)TI3R6EA7Uku_)t=M?1)cRlp8Sgh42wbtoai0NYYv8OUK%Vi#HaaA1CAYom z8Q4gg^D@_Ox~nb5ETE1cyAA=eII7JIJJUW^4jeQtfLH0@FYQtRwTj zqO;V27>R343pf~Otxz3WKZFj*b)eEwoRd�Oz(NCb;HRpCvm*ZD2B~q44v`R2gmt zpHH6ZofrV<>M)6VH8cRNHT9kcuG6A%gQUD*db$pa2->LHMGJMfGG<(zt}WVWpHjy- z4X_joWYzUkrjGN^$1>PurJlR-T zXSm>~v6iXJSWwqgRvQkw`I;XWA5t4(0a<%-!dk`u{VT)ZS+9yFb>NxpxD`?Sn~V9Hg^<*v)lld8Fi7g z-v^8JFm8pI4Axj4OOn6jLBh@kJ-bJ{hmD&O?jRMjAu0KWYYM%lMS?e+HMAhctpEl%8~9_ z+H-nd5CuALvSBogVKzY+BAFNAZ6p~c6C(Lcl%X?VfWZQ+$ClP&(s{AaI-b;ehnz^` zhg=Be z+2nMOhE##IZ+H*PN$B1^Fh^z0!NzLw>B*#dBfmK3RBxAlXWIe#1F7-!NbIT;fThzb z2J!0Rr+{>CJrrpWSDm@F0XU+Xf9l}jNQ+G-uP(X03T~@Y3@XV8oIjlY@!Z_76OT6x z^XOcu8E2BE^*Ga7ieU3mfO9;3wjUeesRk@M%F}lB1{l2#bFqOPx&63*q&-Esz2Dr3 zGi|-!Y{8in^QwW3>F9^@_G8eL$J+qf@zk&tN&9TTCtwwu%029KW_@9U!@!E5*Da__ zxft1J(=9072d7pPEm+ZMCpypDj9GceXH!HQ<&E>?8@4J%;dP?Wc)@KeJapY-E7riP zg|yEv=Q%ciYXXB1LtCjJQeLUSHCpxDd|C{CytOIBt)yMWeo?E>0`R&iHeXaU@ ze%Z3>cjUXv9|$ns`Q+}e?CjhS@7!LM{(mm^Z9?Axj{ic{M;NZ#IC#GMS$ps1Z}uJM zI1BecDt|M_|3^o<6J_Fd-Gyr6t1A}O+N2E{Pmp)~g?Mald*&;^*USbWSSGGp5pdw8 zCe<++&u-`!Z$)jB8?te@p%(Jrer*~Gu5pL9eYGsZ)?TNr!)c@ImCZr=VLm|i1*tn9 zlJ*4?EnQo;C(_;junvkfMx_fc5Ccht^+4@hkY3OG$%T;Q2o^TMsyaWClHQnqW4@Zp zkD>F}xy{SfyI0v=49rdh>1!D$4P{*V@%f5sIB8gM3pA*B1TtfrpPw(-jUf4bKvs65 z;a!OQYmiQp@u2j*h@K0Ywfc#W=_i{bWL*SAp*N(_gNVEX?{{B8_tZg6Y@O~mHj?i})|?2!uReQ-a%)}-!v4|awYOLL z&k)27SuW3q$aqBJ!<0KEg9Sy#&5;z`^iCKHc~RGbutQ3Jo$WEvTQ*isl#S(jKB#Cx z{Rcti^&rjP4?&Qubs&me2cr}M@pUjuBQUN!GGDaALZyDb=+RxFD7@`>suA5uAvg@v z2;z%kCh=Z$g~-N86+b`|a%@wsFw8y>SY}A-tXs;;8j@~;L$#*z$m%rTF7LY{?3)p| z#QK)4yWoXsSI0USI%6HlWP)r@ZeQ2E^(nHmlSrLg6J%#9-A!84QgYo`BGz(OI>xfM zvvRx`ipHpmRp-0+t1-afW!bPQECbbOP~+sK8g61*Apl4k3d#EBpz?S~iH4=8W<#1P zZwW5K`{0St@N2Euq zqk_Vypj0>4Ili*n0Lo_Uc|zSwyePPpv{feOcGNOMVDCG#fa!PqC zLIv_CARb7664qy`()X*e8hUH(t6{Td;nlE&!_o^x`FUh+_!kl7ZN`qbSe6mi z0X6qJ0FZxxLHj=a>4Q(pIQ@7ieq O)WHwT<8XN0|NJkGC@R+g literal 0 HcmV?d00001 diff --git a/tools/atari/dup.sys b/tools/atari/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/atari/sample.cfg b/tools/atari/sample.cfg new file mode 100644 index 0000000000000000000000000000000000000000..401c003d833ceba9edca4852856b294760e05b12 GIT binary patch literal 29 hcmd;LWMur$z`(%8$e04c3|EtjEi4TT67^C`G5|)v1~~u# literal 0 HcmV?d00001