Short:        DCTelnet - Telnet/BBS client with Zmodem
Author:       Bruno FREDERIC
Uploader:     bruno frederic+aminet gmail com
Type:         comm/tcp
Version:      1.9
Architecture: m68k-amigaos >= 2.0
Distribution: Aminet

DCTelnet is a Telnet client for Commodore Amiga computers. It is easy to
use, lightweight, and reliable.

DCTelnet is ideal for accessing Telnet-enabled BBS systems on classic Amiga
hardware, and supports file transfers via ZModem.

More info/sources : https://github.com/bruno-frederic/dctelnet


Note: This release provides recompiled versions of DCTelnet including a
68000-compatible binary for classic Amiga systems (A500, A600, A2000), as
well as an optimized 68020 build.

DCTelnet was originally written by Zed. As of January 2026, the DCTelnet
1.5/1.6 releases available on Aminet target 68020+ CPUs only.

This new release also offers simplified installation, improved
documentation and bug fixes.

- Help wanted: UI icons

To give DCTelnet a more modern look, I'm looking for help to design a new
set of toolbar icons. If you have pixel-art or icon design skills, your
help would be greatly appreciated. See github issue #6 for details:
https://github.com/bruno-frederic/dctelnet/issues/6

- Contact & Discussion:

Want to chat, give feedback, or share your ideas about DCTelnet?
Join the conversation on the EAB forum thread:
https://eab.abime.net/showthread.php?t=121939

---

v1.9 Changelog

Features:
- Improved Telnet Support
  The Telnet protocol engine has been completely reworked and now uses a
  state machine compliant with RFC 854 and RFC 1143. Telnet commands are
  correctly recognized even when split across multiple TCP packets.
  Supported Telnet options now include: BINARY ; SGA (Suppress Go Ahead) ;
  TTYPE (Terminal Type) ; ECHO & NAWS (Negotiate About Window Size)
  As part of this redesign, several legacy compatibility options have been
  removed: Simple Telnet Negotiation ; Strip Colour & CRLF Correction

- ReqTools optional at startup
  DCTelnet no longer requires reqtools.library during startup.
  The external library is now loaded only when one of these specific
  functions is used:
    - Screen Palette settings
    - Screen Mode Selection (on systems prior to AmigaOS 2.1)
  This improves compatibility on minimal Amiga setups and reduces external
  requirements.

- XEmulator Library Settings Panel
  Added a new settings panel to configure XEmulator.library options
  directly from the DCTelnet user interface. Settings are currently
  session-only and are not saved between DCTelnet runs.

Internal Refactoring:
- More robust library opening and closing logic.
- Refactored screen, display, windows and console initialization and
  shutdown code.
- Refactored XEmulator.library integration.
- Improved maintainability and internal code structure.

Bug Fixes:
- The "Use XEM Library" menu option is now automatically unchecked when
  XEmulator.library cannot be opened.
- Fixed a progress gauge overflow that could occur during file transfers
  larger than approximately 4.36 MB.
- Fixed several issues occurring when DCTelnet was iconified to Workbench.
- DCTelnet can now correctly spawn additional instances regardless of the
  executable filename.
  Previously, some functionality only worked when the executable was named
  exactly "DCTelnet".

Libraries & Packaging:
- The installer no longer renames an existing phone book in the destination
  drawer, preventing accidental loss of user settings.

Build & Toolchain:
- Added a Docker/Podman container running telnetd for testing purposes.

---

## Features

- 68000 compatible (no 68020 required)
- ZModem upload & download using XPR libraries
- Fast and efficient design : DCTelnet access the bsdsocket API directly
- Address book with username & password entries
- Additional terminal emulations via XEM libraries
- User-definable screen modes & fonts
- Application can be iconified while running
- multiple simultaneous Telnet connections
- No MUI, ClassAct or ReAction required
- No telser.device required

---

## Requirements

- Kickstart / Workbench v2.00 (V36) or higher
- A TCP/IP stack: AmiTCP, Miami, UAE bsdsocket.library or compatible

---

## Installation

1. Download the DCTelnet package either from Aminet:
   https://aminet.net/package/comm/tcp/DCTelnet
   or from the GitHub releases section:
   https://github.com/bruno-frederic/dctelnet/releases

2. The DCTelnet archive includes an Installer script.
   When available, using the *Installer* tool is the recommended
   installation method.

---

### Manual installation

On older AmigaOS versions where the *Installer* tool is not present (for
example, pre-3.1.4 systems), DCTelnet can be installed manually. In this
case, copy the required files to their respective system directories:

- DCTelnet/Devs/ibmcon.device -> DEVS:
- Libraries from DCTelnet/Libs -> LIBS:
- Fonts from DCTelnet/Fonts -> FONTS:

On AmigaOS / Kickstart 2.00 & 2.02, the default versions of
reqtools.library and xprzmodem.library fail to load.
Replace them with the following compatible versions:
- DCTelnet/Libs-r36/reqtools.library -> LIBS:
- DCTelnet/Libs-r36/xprzmodem.library -> LIBS:

---

## How to use

Please refer to the included DCTelnet.guide documentation for detailed
usage instructions.

It is in AmigaGuide format and can be opened directly on AmigaOS 3.*

On AmigaOS 2.*, the AmigaGuide tool is required (available on Aminet:
https://aminet.net/package/text/hyper/aguide34). In this case, update the
"Default Tool" of the DCTelnet.guide icon to: SYS:Utilities/AmigaGuide

---

## Known Bugs


### Character display issues and font selection

If, after connecting to a BBS, some characters appear incorrect or garbled,
this is usually related to the selected terminal font. Make sure the font
matches the character set expected by the remote system.

Many PC-based BBSes require an ANSI-compatible font to properly display
line art and ANSI graphics. In such cases, select the bundled HyperANSI
font.

On Amiga-based BBSes, graphics are often designed for the classic Topaz
font. This is the case, for example, on Retro 32 BBS.

Important:
After switching the terminal font, quit DCTelnet and restart it before
reconnecting. This avoids the display issue described below and ensures
correct rendering.


### Connection stuck after changing display settings (fonts, XEM, screen
    mode) or iconifying the application (fixed in v1.8)

After iconifying the application or changing certain display-related
settings (such as the terminal font, disabling the toolbar, enabling the
XEM library, or switching the screen mode), the current connection and any
future connections may appear successful, but no output is displayed. The
status remains *Connected*, while the terminal window no longer shows any
data.

This issue has existed since DCTelnet 1.1 and occurs when used with certain
versions of "bsdsocket.library", notably UAE bsdsocket.library 4.1 (WinUAE)
and Amiberry's built-in library.

The problem happens because "ibmcon.device" incorrectly releases an internal
system signal (bit 31).

Since v1.8, DCTelnet prevents this signal from being used, avoiding the
connection freeze.

Workaround before v1.8:
After modifying any of these settings, quit DCTelnet and restart it.

Greetings to Marius (aka Firestone on EAB forum) for his help reporting
this bug and testing DCTelnet across different configurations.


### Address Book Profile may not be saved correctly (fixed in v1.8)

This bug has been present at least since the original version 1.1 release
(December 1997).

Before v1.8, changes made in the Address Book Profile were not saved
correctly when navigating between fields with the mouse.

Workaround before v1.8: When editing an Address Book Profile:
- Press [Enter] after typing text in each field.
- Or move to the next field using [Tab], then press [Enter] before
  leaving the profile window.

### On AmigaOS / Kickstart 2.00 & 2.02 (fixed in v1.8)

The xprzmodem.library bundled with DCTelnet since v1.1 fails to load on
these OS versions.

Starting with v1.8, a compatible version of the library is included in the
"Libs-r36" directory.

---

## Build environment

As of June 2026:

- IDE: VS Code (on Windows)
- Docker/Podman running a telnetd container for testing
- Compiler: VBCC and GNU Make on Windows, using my custom toolchain :
  https://github.com/bruno-frederic/vbcc-bin/tree/Bruno_toolchain

- The project can also be built with SAS/C v6.58 under AmigaOS 3.2

### Source code

All source code referenced below, including DCTelnet 1.5 / 1.6 and its
required third-party libraries, is publicly available on Aminet.

- Based on the DCTelnet 1.5 / 1.6 sources:
  https://aminet.net/package/comm/tcp/dct16_src

The required third-party source code dependencies are also included:

- ReqTools 2.9 from https://aminet.net/package/util/libs/ReqToolsDev
- XPRZModem 3.1 library and sources from "comm/misc/xprz31.lha" package
  on Aminet CD 2
- Xem 2.0 from https://aminet.net/package/comm/term/XEM2_0

---

## Credits

- DCTelnet was originally written by Zed.
- new 68000-compatible build by Bruno FREDERIC
- ReqTools is Copyright © Nico François and Magnus Holmgren

---

## License

The original DCTelnet code by Zed was released without an explicit license
and remains all rights reserved. See "LICENSE" file for details.
