Commit graph

53 commits

Author SHA1 Message Date
Oliver Schmidt 91beb8670f Added SLIP support to retro platforms.
The cc65 tool chain comes with V.24 drivers so it seems reasonable to use the existing Contiki SLIP driver to implement network access via SLIP as alternative to Ethernet.

Some notes:
- The Ethernet configuration was simplified in order to allow share it with SLIP.
- The Contiki SLIP driver presumes an interrupt driven serial receiver to write into the SLIP buffer. However the cc65 V.24 drivers aren't up to that. Therefore the main loops were extended to pull received data from the V.24 buffers and push it into the SLIP buffer.
- As far as I understand the serial sender is supposed to block until the data is sent. Therefore a loop calls the non-blocking V.24 driver until the data is sent.

On all platforms there's only one V.24 driver available. Therefore V.24 drivers are always loaded statically.

On the Apple][ the mouse driver is now loaded statically - independently from SLIP vs. Ethernet. After all there's only one mouse driver available. However there's a major benefit with SLIP: Here all drivers are loaded statically. Therefore the dynamic module loader isn't necessary at all. And without the loader the heap manager isn't necessary at all. This allows for a reduction in code size roughly compensating for the size of the SLIP buffer.
2017-02-15 23:43:28 +01:00
Oliver Schmidt ae0c5f0dd0 Make use of new cl65 option --print-target-path.
The new cl65 option --print-target-path allows to get rid of CC65_HOME altogether.
2016-06-03 13:30:25 +02:00
Simon Duquennoy 722b3258d1 Cleanup of the Contiki network layer configuration. Now using CONTIKI_WITH_IPV6, CONTIKI_WITH_IPV4, and CONTIKI_WITH_RIME in makefiles, and UIP_CONF_IPV6, UIP_CONF_IPV4, UIP_CONF_RIME in c code. Now only the stacks that are used are compiled (via makefile MODULES). Make IPv6 the default network stack. 2014-12-01 20:13:09 +01:00
Oliver Schmidt a0961fc3c4 Build static Ethernet drivers directly from source. 2014-06-09 23:35:19 +02:00
Oliver Schmidt f124425ee1 Build static Ethernet drivers directly from source. 2014-06-09 23:14:11 +02:00
Oliver Schmidt a630fbd5da Removed unused variable. 2014-03-27 19:24:23 +01:00
Oliver Schmidt ee3050897a Some fine tuning after the recent general modularization. 2014-02-02 17:59:06 +01:00
Oliver Schmidt 4db675e259 Some fine tuning after the recent general modularization. 2014-02-02 17:47:17 +01:00
Adam Dunkels 824d2047da Add the explicit list of modules, since we cannot do auto-dependency management of them 2014-01-26 23:20:47 +01:00
Adam Dunkels a40a73db9a Made a module out of the core/ctk code 2014-01-26 23:20:44 +01:00
Adam Dunkels 36a5aadc9e Moved the 6502 custom rules into its own Makefile.customrules-6502 file 2014-01-26 23:20:40 +01:00
Oliver Schmidt 2d7d1b123d Added 6502 driver for WIZnet W5100 in MACRAW mode. 2013-11-09 23:15:20 +01:00
Oliver Schmidt 3c6c7381d8 Suppress some usual warnings. 2013-07-31 00:29:52 +02:00
Oliver Schmidt 8d23d1b0bb Support the recently added verbosity control. 2013-07-31 00:15:38 +02:00
Peter A. Bigot 5fc0575e99 Makefile.include: support make clean all
Historically $(OBJECTDIR) was created when Makefile.include is read.  A
consequence is that combining "clean" with "all" (or any other build
target) results in an error because the clean removes the object
directory that is required to exist when building dependencies.
Creating $(OBJECTDIR) on-demand ensures it is present when needed.

Removed creation of $(OBJECTDIR) on initial read, and added an order-only
dependency forcing its creation all Makefile* rules where the target is
explicitly or implicitly in $(OBJECTDIR).
2013-06-20 17:45:41 -05:00
Oliver Schmidt 79bb5ea73f Removed some more old RCS tags from the Contiki source tree. 2013-06-13 15:54:26 +02:00
Oliver Schmidt 61b90c0126 We actually need PROJECT_OBJECTFILES and PROJECT_LIBRARIES for retro builds too. 2013-02-16 22:57:50 +01:00
Oliver Schmidt 98060c1eab Moved from last cc65 release (2.13.3) to recent cc65 snapshot (2.13.9).
Relevant cc65 changes...

General:
- The compiler generates "extended" dependency info (like gcc) so there's no need for postprocessing whatsoever :-)
- The linker is very pernickety regarding the ordering of cmdline options so a custom linker rule is necessary :-(

Apple2:
- The various memory usage scenarios aren't specified anymore via separate linker configs but via defines overriding default values in the builtin linker config.

Atari:
- The builtin linker config allows to override the start addr so there no more need for a custom linker config.
- The C library comes with POSIX directory access. So there's no more need for for a custom coding.

CBM:
- The C library comes with POSIX directory access. So there's no more need for for a custom coding.
2013-02-14 15:42:43 +01:00
oliverschmidt 8c87f85a1d Made cc65 build compatible with make.exe from GnuWin32 and cmd.exe. We just live without the phony targets when building with cmd.exe - the next cc65 release will make the whole sed thingy obsolete anyway :-) 2011-01-23 16:30:30 +00:00
oliverschmidt 5e10cf2eed Implemented cfs_opendir() and friends for CBMs based on cc65's cbm_opendir() and friends. 2010-10-23 13:48:06 +00:00
oliverschmidt 9e9eb4b55c There's no point in pulling in cfs-posix-dir.c if the POSIX functions it depends on are dummies anyway. 2010-10-23 08:17:45 +00:00
oliverschmidt 55d61d317b Allow cc65 ethernet drivers to be loaded statically instead of dynamically. This saved quite some space in scenarios without additional cc65 drivers to be loaded for i.e. a mouse because in those scenarios the cc65 module loader isn't necessary. And without the module loader typically the cc65 heap manager isn't necessary. 2010-09-28 23:02:16 +00:00
oliverschmidt 2d40c75efe Allow 6502 ctk programs (all running in non-window mode) to exit the Contiki process by calling LOAD_UNLOAD(). 2010-02-04 23:52:30 +00:00
oliverschmidt fda46f6800 - cc65 2.13. allows to define all necessary paths through the single env var CC65_HOME.
- cc65 2.13. allows to override the stacksize from the linker command line thus eliminating the need for linker configs maintained by Contiki.
- cc65 2.13. integrates the startup code with the library. In 2.12. the startup code pulled in main(). Now main() is supposed to pull in the startup code. But  if main() resides itself in a library (as with Contiki) then nothing is pulled in at all :-(. The workaround is to pull in main() explicitly through the new option -u (working like the same GCC option).
2009-10-18 11:34:38 +00:00
oliverschmidt 738397b855 cc65 generates dependency files having the list of prerequisites start with a tab character.
The processing done in the canned command sequence FINALIZE_DEPENDENCY brings this tab character to the beginning of the line making the empty rule look like a command.

Therefore we replace the tab character in question with a blank.
2009-07-26 21:27:43 +00:00
oliverschmidt 7a228fea41 Replaced classic approach of generating dependency files via rule with generating them as side effect of generating object files. The issue with "No rule to make target ..." is solved as suggested in http://make.paulandlesley.org/autodep.html.
At least with gcc (and cc65) the dependency files are generated without an additional run of the C compiler. This is especially beneficial on Cygwin because of the fork() performance issue.
2009-07-02 22:36:04 +00:00
oliverschmidt 929da590be Removed '!' as gnumake already adds '.'. 2008-05-22 19:43:08 +00:00
oliverschmidt a500f2dd73 Removed unused variable. 2008-03-04 22:56:54 +00:00
oliverschmidt 5592b1df6c Implement cfs API on preprocessor level using POSIX functions.. 2007-12-23 15:29:19 +00:00
oliverschmidt 0564cc50fd Splitted POSIX based cfs implementation to avoid pulling in potentially large POSIX directory I/O functions without needing them at all. 2007-12-21 01:36:01 +00:00
oliverschmidt 1863f8aef2 Added generic ctk mouse implementation based on cc65 mouse drivers. 2007-12-20 22:47:39 +00:00
oliverschmidt 333ad36a4a Added general ctk support to the cc65 build. 2007-12-16 17:03:27 +00:00
oliverschmidt b32f0643ab Moved stuff into sys subdir to clean up the apple2enh dir (and because the corresponding shared res. cpu stuff is in the sys dir as well). 2007-12-15 11:04:11 +00:00
oliverschmidt 382603b581 Made error_exit() implementation target-specific. 2007-12-08 22:21:50 +00:00
oliverschmidt 70321f690f Made error_exit() implementation target-specific. 2007-12-08 22:16:43 +00:00
oliverschmidt 9f1feb6e26 Added LAN91C96 driver. 2007-11-30 12:34:08 +00:00
oliverschmidt 9d39b4be54 Added global error_exit() and config read function to build. 2007-11-27 21:43:32 +00:00
oliverschmidt 18d591206e Added (default) log implementation for cc65 targets. 2007-11-27 16:48:44 +00:00
oliverschmidt 74c4e10f23 No reason to not just compile petsciiconv.c for all cc65 targets. 2007-11-25 21:43:55 +00:00
oliverschmidt a2dd620ecc Allow the webserver and telnetd examples to build. 2007-11-22 11:40:17 +00:00
oliverschmidt da44474fd4 Generic Ethernet driver for cc65 targets. The actual hardware driver is loaded as relocatable module. 2007-11-20 21:10:20 +00:00
oliverschmidt 34af8fbc1a Fixed recent change. 2007-08-30 20:47:14 +00:00
matsutsuka 9d4fc0a1a8 Support for z80(sdcc) port.
In order to support, some core modules are modified as follows:

core/sys/dsc.h
- If CTK_CONF_ICONS is diabled, the whole icon-related code is disabled.
- DSC_HEADER is changed to remove extra semicolon.

core/sys/process.h
- process_data_t is expressed by void* in signatures (known bug on sdcc).

core/sys/autostart.h
- autostart_processes is changed to remove extra semicolon.

core/sys/cc.h
- CC_CONF_ASSIGN_AGGREGATE is introduced.
- CC_CONF_INC_CAST_POINTER is introduced, a workaround of a kind
  of sdcc bug for an increment.

core/net/hc.c
core/net/uip_arp.c
core/net/uaodv.c
- Aggregation assignments are changed to uip_ipaddr_copy.

core/net/psock.c
core/net/uipbuf.c
core/net/dhcpc.c
apps/shell/shell.c
core/ctk/vnc-server.c
core/ctk/vnc-out.c
- "register" keyword in a signature cannot be used in sdcc,
  CC_REGISTER_ARG is used instead.

core/net/uip-over-mesh.c
- An extra semicolon is removed.

apps/dhcp/dhcp-dsc.c
apps/shell/shell-dsc.
apps/ftp/ftp-dsc.c
apps/process-list/process-list-dsc.c
apps/email/email-dsc.c
apps/webserver/webserver-dsc.c
apps/vnc/vnc-dsc.c
apps/vnc/vnc-viewer.h
apps/webbrowser/www-dsc.c
apps/about/about-dsc.c
apps/irc/irc-dsc.c
apps/telnet/telnet-dsc.c
apps/telnetd/telnetd-dsc.c
apps/netconf/netconf-dsc.c
apps/directory/directory-dsc.c
pps/calc/calc-dsc.c
- Modify an extern type to a real declaration, which is static
  to prevent a compile error.

core/net/mac/xmac.c
- Variables cannot be defined in a head of block on sdcc.

core/ctk/ctk.h
core/ctk/ctk.c
apps/program-handler/program-handler.c
- If CTK_CONF_ICONS is diabled, the whole icon-related code is disabled.

Makefile.include
- Add a set of configuration for an assembler.
- $(CLEAN) variable is introduced for customized cleanup.

apps/process-list/process-list.c
- PROCESSLIST_CONF_HEIGHT is introduced to address smaller screen size.

core/lib/ctk-filedialog.c
- FILES_CONF_HEIGHT is introduced to address smaller screen size.
- "register" keyword in a signature cannot be used in sdcc,
  CC_REGISTER_ARG is used instead.

apps/vnc/vnc-viewer.c
- A cast is added to prevent a compile error.
- "register" keyword in a signature cannot be used in sdcc,
  CC_REGISTER_ARG is used instead.

apps/webbrowser/webclient.c
- CC_CONF_INC_CAST_POINTER is introduced, a workaround of a kind
  of sdcc bug for an increment.

core/loader/elfloader.c
- A cast is added to prevent a compile error.

core/net/rime/rimeaddr.c
- An initialization is added to prevent a compile error.

core/net/rime/rudolph0.c
- NULL is changed to 0, because NULL causes a compile error.

core/net/rime/route-discovery.c
- Add an argument to match the definition of nf_callbacks.

cpu/z80/strcasecmp.h
cpu/z80/strcasecmp.c
cpu/z80/contiki-sdcc-conf.h
cpu/z80/mtarch.c
cpu/z80/mtarch.h
cpu/z80/Makefile.z80
- New files to make compilation availble on sdcc.
- Added support for multithreading.
2007-08-30 14:39:16 +00:00
oliverschmidt b23f4fc89d Added a Contiki clock_time() implementation based on the cc65 clock() implementation. 2007-05-29 21:56:21 +00:00
oliverschmidt ae2073cac9 Factored out setup directory search path for source files into Makefile.include.
- All compilers used support the -I option for setting an include search directory.

- The Contiki source tree follows the (common) approach of placing declarations (in headerf iles) in the same directory as definitions (in source files).

As a result it makes sense to use the -I compiler option for just the same set of directories used for the vpath gnumake directive.

Note: I checked several builds but nevertheless one or the other might need some additional adjustsments. Sorry for the inconvenience.
2007-05-19 07:54:53 +00:00
oliverschmidt 237b1617b5 Factored out setup directory search path for source files into Makefile.include.
- Search target specific directories before CPU specific directories.
- Search CPU specific directories before generic directories.

Note: I checked several builds but nevertheless one or the other might need some additional adjustsments. Sorry for the inconvenience.
2007-05-13 08:41:11 +00:00
oliverschmidt 8d3496194f Added Multithreading support to the cc65 targets based on the Contiki 1.x C64 implementation with the following changes:
- Added support for the function parameter.
- Removed support for preemption because:
  - No other current implementation does so.
  - Preemption support would make the code at least target-dependent or it wouldn't work at all (as on plain Apple2 machines without timer interrupt).
2007-04-21 22:15:45 +00:00
oliverschmidt ec2411d5ea Structured the cc65 makefile like all the other makefiles in the Contiki 2.x build system. 2007-04-21 15:04:23 +00:00
oliverschmidt 5d62bbd039 Used SED to replace the assembler sources with the objects in the dependency file generated by the cc65 compiler. This allows to hide the assembler sources from GNU make which solves several issues. Now the cc65 toolchain behaves very similiar to gcc from the GNU make perspective. 2007-04-21 13:23:47 +00:00
oliverschmidt 48977bd89f Replaced the PROJECT_OBJECTFILES hack with puting the Contiki library (containing contiki-main.o) and the cc65 libary into a cc65 "library group" which allows mutual crossreferences between the libraries in the group. 2007-04-18 22:52:22 +00:00