TheWire13 is a TCP/IP stack for Amiga systems AmigaOS 1.3. to 3.x
==================================================================
If you like my work - contribute me with a cup of coffee:
paypal.me/mytubefree
:-)
The project was written specifically for low-level AmigaOS networking
experiments and real hardware usage on systems without modern TCP/IP
stacks available.
The stack is intended to provide a lightweight and OS1.3-compatible
networking environment for custom tools and applications.
## Current Status
THIS IS AN ALPHA VERSION.
TheWire13 is still under active development and internal structures,
network behavior, and APIs may change between releases.
At the moment the stack has only been tested with:
* a314eth.device (Thx to Niklas)
* enc62413.device (Zorro-LAN-IDE-CP Card)
Other SANA-II drivers may or may not work yet wich primary depends on
OS 1.3 compatibility.
The stack is considered experimental software and should not yet be
expected to provide the same stability or compatibility as mature Amiga
TCP/IP stacks such as AmiTCP, Miami, Genesis, or Roadshow.
## Requirements
* AmigaOS 1.3,2.x,3.x
* SANA-II compatible network driver
* at least 68000 CPU (>=68020 recommended)
* enough free RAM for networking buffers
## Installation
copy TheWire13 to C:
copy bsdsocket.library to LIBS:
copy amitcp13.conf to S:
copy all mini_* programs to C: (e.g. mini_ping)
For Zorro-LAN-IDE-CP Card:
copy enc62413.device DEVS:networks
## Configuration
The stack currently uses the configuration file:
S:amitcp13.conf
Example options:
device = a314eth.device
unit = 0
dhcp = 1
or static configuration:
device = a314eth.device
unit = 0
dhcp = 0
ip = 192.168.7.16
netmask = 255.255.255.0
gateway = 192.168.7.1
dns = 192.168.7.1
## Starting
Start the stack from Shell:
TheWire13
Expected startup banner:
TheWire13 v1.4 Alpha by Marcel Jähne (c)2026
Stack running...
## Notes
* The stack binary itself is intentionally kept lightweight and avoids
large stdio/newlib runtime dependencies.
* DHCP support is integrated.
* bsdsocket.library support is still incomplete and evolving.
## Known Limitations
* Alpha quality software
* Only limited SANA-II driver testing so far
* Primarily focused on TCP client usage
* Long-running/high-throughput transfers are still under investigation
## History
1.4
- separate client context per Exec task
- separate IPC request/reply port per task
- separate errno/h_errno, hostent buffers, fd state, nonblocking state
- closing one program?s library context no longer corrupts another program?s sockets
- TCP RX buffers are dynamically allocated instead of bloating BSS
- RX buffer target is now up to 65535 bytes
- Fast/Slow RAM is preferred for TCP RX buffers, with public memory fallback
- unread RX data is dropped on close, but the RX buffer stays until PCB cleanup so late FIN/ACK handling remains stable
- default AMITCP13_TCP_REASS_MAX raised to 32
- reassembly pressure counters available in TCP PERF logs
- window clamping when reassembly is full or nearly full
- app-drain window update threshold lowered
- better recovery when apps drain data in 2048-byte chunks
- IPC payload stays conservative at 2048
- TCP MSS stays conservative at 536
- TCP TX segment stays conservative at 512
- RX buffering/reassembly/read windows were increased instead of making TX more aggressive
- enc62413-specific active IP read target increased to 128
- SANA RX packet buffers allocated dynamically
- private enc62413 maintenance poll rounds retained for bounded servicing
- bsdsocket.library remains 4.1.1
- a314eth behavior preserved
- no bsdsocket ABI offset change
enc62413.device v0.6
- Baxnet-style INTB_PORTS IRQ wakeup is now default
- ISR only clears ENC EIE.INTIE and signals the device task
- frame copy/drain remains in task context, not interrupt context
- Z2v2 LAN IRQ gate now uses base + 0x4000
- matches the card developer?s hardware information
- ENC62413_PERIODIC_POLL=0
- IRQ-only operation tested better for DHCP, MiniFTP, mini_wget, mini_nslookup, MajaRadio, and multitasking
- periodic polling can still be built for diagnostics
- packet/full IRQ path
- avoids RX-abort interrupt storms
- INTIE is re-enabled only after task-side drain logic
- private IP/ARP staging increased from 8 to 64 slots
- staging buffers are dynamically allocated
- helps absorb bursts when no matching SANA read is immediately available
- driver now builds its own internal buffer-management structure from OpenDevice callbacks
- supports S2_CopyToBuff16 / S2_CopyFromBuff16
- falls back to classic S2_CopyToBuff / S2_CopyFromBuff
- optional full chip reset remains disabled by default
- MAC is explicitly written during init
- bounded PHY/link readiness waits retained
- ENC RX flags cleared after RX enable
- removing the periodic fast poller greatly reduces CPU load
- GUI responsiveness improved while transfers remain fast
1.3
- bsdsocket.library public ID bumped to 4.1.1.
- EAGAIN / EWOULDBLOCK now uses classic Amiga/AmiTCP errno value 35 instead of 11.
- Improved compatibility with OS3/AmiTCP-style bsdsocket programs.
- TCP active-open handling improved to avoid stale socket/port reuse.
- TCP RX buffers are preserved longer during close cleanup.
- Added TCP timer diagnostics for enc62413 stall investigation.
- enc62413 RX path received multiple stability fixes:
- improved burst recovery polling
- stabilized RX preamble reads
- moved private SRAM usage away from TX buffer area
- guarded stale RX-ready states
- relaxed stale-ready handling where needed
- avoided RX reset on stale status
- enc62413 hybrid interrupt RX wakeup was implemented experimentally, then disabled by default for safety.
- Added enc62413 live debug control tool.
- Added gateway TCP diagnostic test tool.
- Added baxnet comparison notes/work around enc62413 RX behavior.
- MiniFTP and MiniIRC were split out into separate repositories, reducing TheWire13 tree scope.
- TheWire13 trace ring remains disabled by default from the stable v1.2 base.
1.2
- TCP throughput tuning.
- TCP bulk download stabilization restored.
- Silent TheWire13 trace ring added.
- TCP window updates tuned.
- SANA RX serviced during IPC bursts.
- SANA RX burst servicing throttled.
- TCP RX buffers moved to dynamic AllocMem().
- TCP RX buffers released on socket close.
- TCP write readiness fixed for uploads.
- TCP partial-send handling added.
- Deferred TCP FIN fixed after upload drain.
MiniFTP 0.9
- Local directory navigation added.
- Public name changed to MiniFTP v0.7.
- Port field added, MiniFTP v0.8.
- Transfer redraws reduced.
- Downloads now validate against FTP SIZE, so short/incomplete transfers no longer show false ?Download complete?.
enc62413.device 0.5 / SANA RX
- RX liveness debug builds added.
- Poll process startup hardened.
- RX drain improved during private polls.
- RX ring recovery hardened.
- RX flow control tested/enabled.
- SANA RX polling added during WaitSelect().
- TX register ordering fixed.
- RX length derived from ring distance.
- SANA RX read depth increased and later restored to 32.
- SANA reads refilled before driver polling.
- Double-buffered TX added.
- RX frames held until SANA reads are ready.
- RX status validation, byte order, and EtherType handling adjusted.
- RX polling interval and budget tuned repeatedly.
- Silent enc62413 stall counters added.
- Dynamic RX buffering for enc62413 bursts added.
- Staged RX reads drained directly.
1.1
- Added AMITCP13_SOCKET_CLEANUP_DEBUG=1, which enables socket cleanup/pool diagnostics.
- Added fd/socket/TCP/UDP/RAW pool summaries behind debug builds.
- Hardened TCP cleanup for stuck CLOSED, FIN_WAIT_1, FIN_WAIT_2, CLOSING, and LAST_ACK PCBs.
- Cleaned failed initial SYN send path without prematurely reusing the socket wrapper.
1.0
- Added central limits in include/amitcp13/socket_limits.h.
- Increased core/IPC socket slots from 8 to 16.
- Increased TCP PCB pool from 8 to 12.
0.9.1
* Improved RX speed on enc62413.device by factor 10
* Bumped Mini_FTP_Gui to v0.4
- mini_ftp_gui now tracks the PASV data socket with a single g_data_fd.
- Before every new PASV data connection, any previous data socket is closed.
- LIST/GET/PUT close data sockets on success and error paths, then wait for final 226/250 replies where appropriate.
- Ambiguous transfer failures now close the control session and show reconnect-required status.
0.9 Alpha
* Improved stability
* Introduce the new enc62413.device
* Reduced debug output
0.8 Alpha
* Public runtime renamed to TheWire13
* DHCP support added
* ICMP support added
* TCP throughput improvements
* Reduced memory footprint / stdio-free runtime
* Improved network recovery stability
* Expanded bsdsocket.library compatibility
##License
TheWire13 is freeware and 100% Java free!
This software may be freely used, copied, and redistributed in unmodified
form.
The software is provided "as is" without warranty of any kind. Use at your
own risk.
Copyright (c)2026 Marcel Jähne
|