a5d7a06027
Made Ethernet drivers easier to consume by assembly programs. * Replaced function pointers with JMP instructions. * Provide return values additionally via Carry flag. Reset Ethernet chips on initialization. Both for the CS8900A and the W5100 the data sheets just say that the RESET bit is automatically cleared after the RESET. This may be interpreted in two ways: 1) There's no need to be afraid of reading the RESET bit as 1 and unintentionally trigger a RESET by writing it back after ORing in some other bit. 2) The RESET process isn't complete before the RESET bit hasn't become 0 again. It's impossible for me to empirically falsify the latter option as the drivers are supposed to work on faster machines than the ones I have access to. And if the RESET process includes things like oscillators then the time to complete the RESET could differ even between multiple exemplars of the same chip. Therefore I opted to presume the latter option. However that means a non-exsistent chip may cause an infinite loop while waiting for the RESET bit to be cleared so I finally added code to detect the presence of the Ethernet chips. There's a risk of a chip being locked up in a way that makes the detection fail - and therefore the RESET not being performed. This catch-22 needs to be solved by the user doing a hard RESET. |
||
---|---|---|
.. | ||
ctk | ||
ethconfig | ||
ipconfig | ||
lib | ||
net | ||
sys | ||
6502def.h | ||
Makefile.6502 | ||
Makefile.customrules-6502 | ||
README.md |
6502
The cpu/6502/ directory is used for targeting 6502-based machines using the cc65 compiler http://cc65.github.io/cc65/.
The Contiki network configuration for 6502-based targets is loaded from a binary configuration file (by default named contiki.cfg). It has the following format:
- Bytes 1 - 4: IP Address (HiByte first)
- Bytes 5 - 8: Subnet Mask (HiByte first)
- Bytes 9 - 12: Default Router (HiByte first)
- Bytes 13 - 16: DNS Server (HiByte first)
- Bytes 17 - 18: Ethernet card I/O address (LoByte first !)
- Bytes 19 - xx: Ethernet card driver name (ASCII / PETSCII)
An online Contiki configuration file generator is available at two sites:
The build for 6502-based machines includes the 'disk' make goal which creates a bootable floppy disk image containing the project binary, a sample configuration file and the Ethernet card drivers.
The build for 6502-based machines supports so-called high-level configuration macros which allow to customize Contiki on a per-project basis. They are set in form of a comma-separated list as value of the make variable DEFINES on the make command line. The value of DEFINES can be saved with the 'savedefines' make goal. The values of the high-level configuration macros are not tracked by the build so a manual rebuild is necessary on any change. The following high-level configuration macros may be set:
-
MTU_SIZE
- Default: 1500
- Purpose: Set the Maximum Transfer Unit size.
-
CONNECTIONS
- Default: 10
- Purpose: Set the maximum number of concurrent TCP connections.
-
ETHERNET
- Default: N/A
- Purpose: Link Ethernet driver statically instead of loading it dynamically using the network configuration file.
-
WITH_LOGGING
- Default: 0
- Purpose: Have log_message() and UIP_LOG() write messages to the screen.
-
WITH_BOOST
- Default: 0
- Purpose: Significantly improve troughput on sending full sized packets by splitting them thus workarounding the "delayed acknowledge".
-
WITH_FORWARDING
- Default: 0
- Purpose: Enable support for the 'IP forwarding' packet driver.
-
WITH_CLIENT
- Default: 0
- Purpose: Enable support for outgoing TCP connections.
-
WITH_DNS
- Default: 0
- Purpose: Enable UDP support and initialize resolver process on startup.
-
WITH_GUI
- Default: 0
- Purpose: Initialize the the CTK process on startup.
-
WITH_MOUSE
- Default: 0
- Purpose: Enable CTK mouse support and load a mouse driver.
-
WITH_ARGS
- Default: 0
- Purpose: Enable support for contiki_argc / contiki_argv.
-
WITH_PFS
- Default: 0
- Purpose: Implement the CFS interface with a Platform-specific File System instead of the POSIX file system.