Qodem Terminal Emulator - Browse /qodem/1.0beta at SourceForge.net (2024)

WHAT IS QODEM?

Qodem is a from-scratch clone implementation of the Qmodemcommunications program made popular in the days when Bulletin BoardSystems ruled the night. Qodem emulates the dialing directory and theterminal screen features of Qmodem over both modem and Internetconnections.

The Qodem homepage, which includes an extensive archive of Qmodem(tm)releases, a getting started guide, and Qodem binary downloads, is at:http://qodem.sourceforge.net . The Qodem source code is hosted at:https://github.com/klamonte/qodem .

As for Qmodem(tm): Qmodem(tm) was originally written by John Friel IIIin 1984, eventually being acquired by Mustang Software, Inc. (MSI) in1991 and distributed until 2000. Qmodem and QmodemPro were acquiredby Quintus when it purchased MSI, and their current copyright statusis abandonware. Quintus went bankrupt shortly after the MSIacquisition and members of both companies' Boards of Directors wereinvolved in a class-action lawsuit from Quintus shareholders. Thelawsuit (C-00-4263 VRW in the Northern District of California, USDistrict Chief Judge Vaughn R Walker presiding) was settled onDecember 5, 2006 for $10.1 million (with 11% to plaintiffs legalfees). (For those wanting more, Greg Hewgill collected many articlesand other media related to Mustang, including its acquisition ofQmodem, in a PDF: http://hewgill.com/mustang/MustangHistory.pdf . Ihave a copy also at http://qodem.sourceforge.net/qmodem/MustangHistory.pdf .)

OBLIGATORY SCREENSHOTS

Qodem Terminal Emulator - Browse /qodem/1.0beta at SourceForge.net (1)

Qodem Terminal Emulator - Browse /qodem/1.0beta at SourceForge.net (2)

COPYRIGHT STATUS

To the extent possible under law, the author(s) of Qodem havededicated all copyright and related and neighboring rights to Qodem tothe public domain worldwide. This software is distributed without anywarranty. The COPYING file describes this intent, and provides apublic license fallback for those jurisdictions that do not recognizethe public domain.

Qodem incorporates or links to software that is copyrighted andlicensed under BSD-like or GPL-like terms. The CREDITS file describesthose pieces and their respective licenses. The only Qodem sourcefile with such code is codepage.c, containing a UTF-8 decodingfunction; all other such code is in the lib directory.

The effective license for the combined Qodem executable differsdepending on whether or not it was linked to cryptlib:

  • WITHOUT CRYPTLIB, the combined license terms are effectively thesame as the BSD or MIT license: attribution in the source, sourceis not required to be shared, and there is no warranty.

  • WITH CRYPTLIB, the combined license terms are effectively the sameas the GPLv3 license: attribution in the source, source for bothcryptlib and Qodem IS required to be shared (even if somehowmodified into a SaaS style architecture), and there is nowarranty.

INTENDED AUDIENCE

Qodem is designed to help the following kinds of people:

  • Console users who want a more capable terminal without having toresort to an X-based emulator. Qodem provides a much longerscrollback, screen dump, capture, keyboard macros, very good VT100emulation, and many more functions.

  • Windows and X11 desktop users who want the same functions listedabove in a keyboard-driven interface. Qodem has both an X11 versionthat almost exactly matches its text console version and afully-supported Win32 version.

  • Users of telnet/ssh BBSes who would like to use BBS-era featuressuch as: a phone book, Avatar and ANSI emulations, file transfers,session logging, and many more functions.

  • Those who use serial ports and modems to communicate with embeddeddevices, headless servers, and remote systems. Qodem supports theserial port, has a modem dialer, and also a special "DEBUG"emulation mode that prints incoming bytes in a programmer's hex dumpformat which can be quite useful in debugging communication withspecialized devices.

  • System administrators who need to manage a number of machines.Qodem can keep track of those machines in its phone book, includingusernames and passwords, and it can be used to transfer files acrossa connection that spans multiple firewalls using Zmodem or Kermit.

  • Fans of the original DOS-based Qmodem who knew and loved its uniqueapproach to text-based communication.

BUILDING QODEM

Qodem can be built in several ways:

  • An autoconf build is available: use configure ; make .

  • A very simple barebones build is also provided via make -fbuild/Makefile.generic.

  • Windows systems can use pre-made project files for Visual C++ 6 (inthe vc6qodem, vc6libc, etc. directories) or Borland C++ 5 (filesending in .ide) to create a binary. There is also a command-linemake file for Borland C++ 5.

  • Debian packages for qodem and qodem-x11 are available in thebuild/deb directory.

  • RPM spec files for qodem and qodem-x11 are available in thebuild/rpm directory.

The INSTALL file has some additional details.

WHY A CONSOLE-BASED TERMINAL EMULATOR?

"Why not?" :-)

More seriously, Qodem has several advantages over the native consoleor the typical "local shell" X-based emulator. But it also has an X11version (qodem-x11) and supports Windows so these same features areavailable to modern GUI desktop users

First, Qodem provides a lot of GUI-based emulator-isms to the textconsole: scrollback, screen dump, capture, keyboard macros, etc.These functions are very handy when you need to work a lot at thecommand line.

Second, Qodem provides access to X/Y/Zmodem and Kermit upload anddownload protocols over almost any interactive network link or localshell session. This is extremely useful for quick-and-dirty filetransfers when firewalls are blocking the standard protocols.

Third, Qodem translates the character sets of the remote systems intoUnicode in a manner similar to GNU screen. This allows modern systemsto see BBS-era screens as they were originally intended, and alsosupports the graphical glyphs for other emulations including VT100,VT102, and VT220. Qodem also supports modern xterm and Linuxemulations that use UTF-8 encoding.

Fourth, Qodem strives to understand the emulation of its supportedterminals as well as possible within the text character-cell model, soQodem can understand and respond to remote applications that the localconsole/emulator might not handle. For instance, Qodem can pass manymore 'vttest' scenarios than: the raw Linux 2.6.32 console,gnome-terminal, and Konsole. But Qodem also understands Avatar,ANSI.SYS, and can even play "ANSI Music" via either SDL audio or onthe raw Linux console by using its PC speaker control sequences.

Finally, Qodem hopes to bundle all of this function inside a pleasantenvironment with some eye appeal.

HOW TO USE QODEM

Qodem is driven by the keyboard. It will listen for mouse events, butonly to send those to remote systems using the XTERM or X_UTF8emulations.

Qodem has two main screens: the phone book and TERMINAL mode.

  • The phone book contains a list of sites to access, with each sitebeing customizable for username, password, emulation, toggles, andmore. This is the jumping off point for most connections, so bydefault Qodem starts in phone book mode.

  • In TERMINAL mode keystrokes are passed directly to the "other side".

Qodem is exited by pressing Alt-X while in TERMINAL mode. (If thereis no active connection, Ctrl-C will also bring up the exit dialog.)Pressing 'y' or Enter at the exit prompt will exit Qodem.

Nearly all of the time pressing the ESCAPE key or the backtick (`)will exit a dialog and the phone book screen.

Throughout Qodem, the bottom-most line of the screen is used to reportstatus and provide hints about what keystrokes are available. InTERMINAL mode the status line can be turned off with Alt--(Alt-minus), or toggled between two different forms with Alt-7.

DIFFERENCES BETWEEN THE TEXT, X11, AND WIN32 VERSIONS

Version 1.0.0 introduces two new builds based on the PDCurses library:an X11 version and a Win32 version. These versions in general workthe same as the text-based ncurses version, but have a few differencesdue to the environments. This section describes those differences.

X11 BUILD

The X11 build is activated by passing --enable-x11 to configure. Dueto how the curses libraries are linked, a single Qodem binary cannotcurrently support both interfaces. The X11 binary is built as'qodem-x11', and its man page is accessed by 'man qodem-x11'.

The Debian package is 'qodem-x11'. It can be installed entirelyindependently of the normal 'qodem' package.

When spawning other processes such as editors (Alt-L, Alt-N, Alt-V,and editing files in the phone book), the mail reader (Alt-M), orshelling to the OS (Alt-R), Qodem spawns them inside a separateX11-based terminal window, and displays the message "Waiting On X11Terminal To Exit..." until the other terminal closes. The defaultterminal program is 'x-terminal-emulator'; this can be changed inqodemrc.

Mouse motion events do not work due to limitation in the PDCursesmouse API. Mouse clicks however do work.

WIN32 BUILD

When spawning other processes such as editors (Alt-L, Alt-N, Alt-V,and editing files in the phone book), the mail reader (Alt-M), orshelling to the OS (Alt-R), Qodem waits for the program to exit.

Quicklearn scripts are written in Perl. Strawberry Perl for Windowsis available at http://strawberryperl.com .

The left ALT key does not produce all combinations correctly in thePDCurses-3.4 build due to Windows conventions. The right Alt keyappears to work normally. The win32a build appears to work correctly.

The Windows build uses Beep() rather than SDL for sounds. This mightnot work on Windows Vista and 64-bit XP systems.

SSH connections (client or host) using cryptlib do not work whencompiled with the Borland compiler.

Mouse motion events do not work due to limitation in the PDCursesmouse API. Mouse clicks however do work.

KNOWN ISSUES / DECISIONS

In the development of Qodem some arbitrary design decisions had to bemade when either the obviously expected behavior did not happen orwhen a specification was ambiguous. This section describes suchissues.

Qodem requires a Unicode-capable Linux console or X emulator to lookright. For the Linux console, the default settings for most Linuxdistributions should work well. Under X11, uxterm, rxvt-unicode, andKonsole work well.

Most BBS programs assume a display with 80x24 dimensions. Qodem bydefault sets the right margin to column 80 for ANSI, Avatar, and TTYemulations. Changing "80_columns = true" to "80_columns = false" inqodemrc will cause Qodem to use the real right margin.

The backspace key is always mapped to DEL (0x7F) in VT220 emulation tomatch the keyboard of a real VT220. You can send a true backspace(0x08, ^H) by pressing Ctrl-H.

Function keys beyond F4 in VT100/VT102 emulation may not work asexpected. Qodem uses a common convention that F5 is "{ESC} O t", F6is "{ESC} O u", etc. Some programs understand this convention. Thosethat don't will usually understand "{ESC} {number}", where {number} isa number from 5 to 0, to mean F5 through F10. You can get this effectin Qodem by typing ESC {number}, or by switching to Doorway Mode andtyping Alt-{number} (or Meta-{number}).

In VT100, VT102, and LINUX emulations, some programs (like minicom andMidnight Commander) send the DECCOLM sequence ({ESC} [ ? 3 l ) whenexiting, putting the emulation into 80-column mode. Resetting theemulation via Alt-G {pick emulation} {enter 'y'} will restore thedefault right margin.

Even though the function key editor window has space for the numerickeypad keys, they are not yet supported. Unix-like consoles do notdifferentiate perfectly between numeric keypad keys and regularconsole keys.

ASCII uploads may hang if the remote end can't keep up. For instance,using 'vi' to create a large file and ASCII uploading the contents mayhang after a few kilobytes. 'cat > filename' usually works fine.

ASCII downloads will process the TAB character (0x09) as a controlcharacter, causing it to expand to the appropriate number of spaces.

Malformed escape sequences might "freeze" LINUX or VTxxx emulation.(For example, receiving a 0x90 character causes VT102 to look for aDCS sequence. If the DCS sequence is not properly terminated theemulation won't recover.) Resetting the current emulation willrestore the console function.

KEY_SUSPEND is usually mapped to Ctrl-Z and used to suspend the localprogram ('qodem'). If Qodem sees KEY_SUSPEND it will assume the usertyped Ctrl-Z and meant to pass that to the remote side.

On Ymodem downloads, if the file exists it will be appended to.

Xmodem and Ymodem downloads from hosts that use the rzsz package mightneed to have stderr redirected to work correctly, for example 'sbfilename 2>/dev/null' .

Kermit receive mode by default handles file collisions by saving to anew file (SET FILE COLLISION RENAME / WARN file access Attribute). Itsupports the APPEND file access Attribute but disregards the SUPERSEDEfile access Attribute.

When sending files via Zmodem to HyperTerminal, if the HyperTerminaluser clicks "Skip file" then the transfer will stall. This appears tobe due to two separate bugs in HyperTerminal: 1) When the user clicks"Skip File", HyperTerminal sends a ZRPOS with position==file size,Qodem responds by terminating the data subpacket with ZCRCW, whichHyperTerminal responds to with ZACK, however the ZACK contains aninvalid file position. 2) Qodem ignores bug #1 and sends ZEOF, towhich HyperTerminal is supposed to respond with ZRINIT, howeverHyperTerminal hangs presumably because it is expecting the ZEOF tocontain a particular file position, however the position it desires isneither the true file size nor the value it returned in the ZACK.

Mark and space serial port parity are only supported for 7 data bits.This is due to a limitation of the POSIX termios API. Workarounds forthe other bit settings (5, 6, 8) are possible if there is user demand.

GNU Emacs may look wrong in ANSI emulation when Line Wrap is disabled.

Internal telnet and rlogin connections do not pass the LANGenvironment variable to the remote host, due to limitations of remotedaemons.

The SSH server key fingerprint displayed in the Alt-I info screen isunique, but does not match the key fingerprints reported by ssh-keygenor the OpenSSH client.

The ssh library used by the host mode SSH server (cryptlib) has aknown issue accepting connections from ssh clients that request DHkeys larger than 4096 bits. Seehttp://article.gmane.org/gmane.comp.encryption.cryptlib/2793 for somediscussion regarding this. ssh clients to a Qodem host can pass the'-m hmac-md5' command line argument to work around this.

The host mode SSH server does not care what username or password arepassed through the ssh client. After the ssh connection isestablished, the login sequence is identical to socket and telnetconnections.

Qodem manages its own known_hosts file for SSH connections. This fileis stored in the ~/.qodem directory (or Documents\qodem\prefs onWindows).

When using 'raw' mode for the capture file, host mode includes itsoutgoing bytes in the capture file.

SCRIPT SUPPORT

Qodem has an entirely different method for supporting scripts thanQmodem. This section describes the Qodem scripting support.

Qodem does not have its own scripting language. Instead, any programthat reads and writes to the standard input and output can be run as aQodem script:

  • Characters sent from the remote connection are visible to thescript in its standard input.

  • Characters the script emits to its standard output are passed onthe remote connection.

  • Messages to the standard error are reported to the user and alsorecorded in the session log.

Since scripts are communicating with the remote system and not Qodemitself, they are unable to script Qodem's behavior, e.g. change theterminal emulation, hangup and dial another phone book entry, downloada file, etc. However, they can be written in any language, and theycan be tested outside Qodem.

Scripts replace the user, and as such have similar constraints:

  • Script standard input, output, and error must all be in UTF-8encoding.

  • Scripts should send carriage return (0x0D, or \r) instead of newline (0x0A, or \n) to the remote side - the same as if a userpressed the Enter key. They should expect to see either barecarriage return (0x0D, or \r) or carriage return followed bynewline (0x0D 0x0A, or \r\n) from the remote side.

  • Input and output translate byte translation (the Alt-A TranslateTables) are honored for scripts.

  • While a script is running:

  • Zmodem and Kermit autostart are disabled.
  • Keyboard function key macros are disabled.
  • Qodem functions accessed through the Alt-character combinationsand PgUp/PgDn are unavailable.
  • Pressing Alt-P will pause the script.

  • While a script is paused:

  • The script will receive nothing on its standard input.
  • Anything in the script's standard output will be held until thescript is resumed.
  • The script process will not be signaled; it may continue runningin its own process.
  • The only Alt-character function recognized is Alt-P to resume thescript. All other Alt- keys will be ignored.
  • Keys pressed will be sent directly to the remote system.
  • Keyboard function key macros will work.

Scripts are launched in two ways:

  • In TERMINAL mode, press Alt-F and enter the script filename. Thescript will start immediately.

  • In the phone book, add a script filename to a phone book entry. Thescript will start once that entry is connected.

Script command-line arguments can be passed directly in both the Alt-Fscript dialog and the phone book linked script field. For example,pressing Alt-F and entering "my_script.pl arg1" will launchmy_script.pl with its first command-line argument ($ARGV[0] in Perl)set to "arg1".

TERMINAL EMULATION LIMITATIONS

This section describes known missing features in a Qodem emulation.

The following features are not supported for VT10x: smooth scrolling,printing, keyboard locking, and tests.

132-column mode in VT100 is supported only within consoles/emulatorsthat have 132 (or more) columns available. For instance, 132-columnVT100 output on a 128-column Linux console screen will result inincorrect behavior.

VT52, VT10x, VT220, and LINUX numeric/application keypad modes do notwork well in the text version. This is due to Qodem's host consoletranslating the numeric keypad keys on its own before sending thekeystroke to the (n)curses library. For example, the Linux consolewill transmit the code corresponding to KEY_END when the number pad "1key" is pressed if NUMLOCK is off; if NUMLOCK is on the console willtransmit a "1" when the "1 key" is pressed. Qodem thus never actuallysees the curses KEY_C1 code that would instruct Qodem to transmit theappropriate string to the host system. The only key that appears towork right on most consoles is the number pad "5 key" (KEY_B2). TheX11 version of Qodem supports the number pad correctly.

VT52 HOLD SCREEN mode is not supported in any emulation (VT52, VT10x,LINUX).

In VT52 graphics mode, the 3/, 5/, and 7/ characters (fractionnumerators) are not rendered correctly.

In addition to the VT100/VT102 limitations, the following features arenot supported for VT220: user-defined keys (DECUDK), downloadablefonts (DECDLD), VT100/ANSI compatibility mode (DECSCL). (Also,because the VT220 emulation does not support DEC VT100/ANSI mode, itwill fail the last part of the vttest "Test of VT52 mode".) Theunsupported commands are parsed to keep a clean display, but not usedotherwise.

VT220 discards all data meant for the 'printer' (CSI Pc ? i).

The ANSI.SYS screen mode switch sequence (ESC [ = Pn {h | l}) onlysupports enable/disable line wrap (Pn = 7); the various screen modesettings (e.g 40x25 mono, 640x480 16-color, etc.) are not supported.

DEVIATIONS FROM QMODEM

Qodem strives to be as faithful as possible to Qmodem, howeversometimes it must deviate due to modern system constraints or in orderto go beyond Qmodem with entirely new features. This sectiondescribes those changes.

The default emulation for raw serial and command line connections isVT102 rather than ANSI.

Qodem will listen for mouse events and send them to the remote sideusing the same wire protocol as xterm's X10, UTF8, or SGR encoding.It supports the X10-, normal-, button-, and any-event-tracking modes.This is only available for XTERM and X_UTF8 emulations. Note thatncurses will not report any-event mouse events to Qodem unles TERM is"xterm-1003"; similarly button-event tracking requires TERM to be"xterm-1002".

The IBM PC ALT and CTRL + {function key} combinations do not workthrough the curses terminal library. CTRL-Home, CTRL-End, CTRL-PgUp,CTRL-PgDn, Shift-Tab, and ALT-Up have been given new key combinations.

The F2, F4 and F10 function keys are often co-opted by modern desktopenvironments and unavailable for Qodem. F2 and F10 are stillsupported, but also have additional keys depending on function. Mostof the time space bar can be used for F2 and the Enter key for F10.The status bar will show the alternate keystrokes. Since F4 iscurrently only used to clear the Batch Entry Window, no alternativekeystroke is provided.

The ESCAPE key can have a long delay (up to 1 second) under someinstallations of curses. It is still supported, but the backtick (`)can also be used for faster response time. See ESCDELAY in the cursesdocumentation.

The program settings are stored in a text file usually called$HOME/.qodem/qodemrc. They are hand-edited by the user rather thananother executable ala QINSTALL.EXE. The Alt-N Configuration commandloads the file into an editor for convenience.

The batch entry window is a simple form permitting up to twentyentries, each with a long filename. Next to each entry is the filesize. The Qmodem screen was limited to three directories eachcontaining up to twenty 8.3 DOS filenames, and did not report filesizes. The F3 "Last Found" function is not supported since manysystems use long filenames.

The upload window for Ymodem, Zmodem, and Kermit contains a secondprogress indicator for the batch percentage complete.

Alt-X Exit has only two options yes and no. Qmodem offers a third(exit with DTR up) that cannot be implemented using Linux-ish termios.

External protocols are not yet supported.

Some functions are different in TERMINAL mode:

 Key Qodem function Qmodem function ---------------------------------------------------------- Alt-2 Backspace/Del Mode 80x25 (EGA/VGA) Alt-3 Line Wrap Debug Status Info Alt-4 Display NULL 80x43/50 (EGA/VGA) Alt-9 Serial Port Printer Echo Alt-K Send BREAK Change COM Port Alt-L Log View Change drive Alt-O Modem Config Change directory Alt-P Capture File COM Parameters Alt-Y COM Parameters - Alt-, ANSI Music - Alt-; Codepage - Alt-: Colors - Alt-\ Alt Code Key -

The phone book stores an arbitrary number of entries, not thehard-coded 200 of Qmodem.

The directory view popup window allows up to 20 characters forfilename, and the Unix file permissions are displayed in the rightmostcolumn.

The directory browse window behaves differently. Scrolling occurs afull page at a time and the first selected entry is the first entryrather than the first file. Also, F4 can be used to toggle betweenshowing and hiding "hidden files" (dotfiles) - by default dotfiles arehidden.

The phone book displays the fully-qualified filename rather than thebase filename.

VT100 escape sequences may change terminal settings, such as linewrap, local echo, and duplex. The original settings are not restoredafter leaving VT100 emulation.

DEBUG_ASCII and DEBUG_HEX emulations are not supported. Qodem insteadoffers a DEBUG emulation that resembles the output of a programmer'shex editor: a byte offset, hexadecimal codes, and a region ofprintable characters.

TTY emulation is actually a real emulation. The following controlcharacters are recognized: ENQ, BEL, BS, HT, LF, VT, FF, CR. Also,underlines that would overwrite characters in a typical character celldisplay will actually underline the characters. For example, A^H_('A' backspace underline) will draw an underlined 'A' on a consolethat can render underlined characters.

ANSI emulation supports more codes than ANSI.SYS. Specifically, itresponds to DSR 6 (Cursor Position) which many BBSes used to"autodetect" ANSI, and it also supports the following ANSI X3.64functions: ICH, DCH, IL, DL, VPA, CHA, CHT, and REP. It detects anddiscards the RIPScript auto-detection code (CSI !) to maintain acleaner display.

The "Tag Multiple" command in the phone book does not support the"P{prefix}{number}{suffix}" form of tagging. Number prefixes andsuffixes in general are not supported. Also, text searching in both"Tag Multiple" and "Find Text/Find Again" is case-insensitive.

The "Set Emulation" function has the ability to reset the currentemulation. For example, if Qodem is in ANSI emulation, and you try tochange to ANSI emulation, a prompt will appear asking if you want toreset the current emulation. If you respond with 'Y' or 'y', theemulation will be reset, otherwise nothing will change. This isparticularly useful to recover from a flash.c-style of attack.

"WideView" mode in the function key editor is not supported.

"Status Line Info" changes the status line to show the online/offlinestate, the name of the remote system (in the phone book), and thecurrent time. Qmodem showed the name of the system, the phone number,and the connect time.

The scripting language is entirely different. Qodem has no plans tosupport Qmodem or QmodemPro scripts.

Qmodem had several options to control Zmodem behavior: overwritefiles, crash recovery, etc. Qodem does not expose these to the user;Qodem's Zmodem implementation will always use crash recovery or renamefiles to prevent overwrite when appropriate.

Qodem always prompts for a filename for capture, screen dump, savedscrollback, and session log. (Qmodem only prompts if the files do notalready exist.) Exception: if session log is specified on a phonebook entry toggle, Qodem will not prompt for the filename but use thedefault session log filename specified in qodemrc.

Qodem supports two kinds of DOORWAY mode: "Doorway FULL" and "DoorwayMIXED". "Doorway FULL" matches the behavior of Qmodem's DOORWAY mode."Doorway MIXED" behaves like DOORWAY EXCEPT for a list of commands tohonor. These commands are stored in the qodemrc'doorway_mixed_mode_commands' option. "Doorway MIXED" allows one touse PgUp/PgDn and Alt-X (M-X) in Emacs yet still haveALT-PgUp/ALT-PgDn, scrollback, capture, etc.

Qodem includes a Alt Code Key function (Alt-\) for entering a rawdecimal byte value (0-255) or a 16-bit Unicode value (0-FFFF).

Capture, screen dump, and saving scrollback can be saved in severalformats (configured in qodemrc). "normal" behaves like Qmodem: colorsand emulation commands are stripped out, leaving a UTF-8 encodedblack-and-white text file. "html" saves in an HTML format thatincludes colors. For capture only, "raw" saves the raw incoming bytestream before any UTF-8 decoding or emulation processing. For allsave formats, "ask" will bring up a dialog to select the save formatevery time the save is requested. For phone book entries that specifya capture file, if the capture type is "ask" it will be saved in"normal" format.

Host mode behaves differently. It uses simple ASCII menus rather thanCP437 menus, provides no "Optional Activities", and has fewer featuresthan Qmodem's Host Mode implementation. However, in addition tolistening on the modem, it can also listen on TCP ports for rawsocket, telnet, and ssh connections; optionally the TCP port can beexposed via UPnP to the general Internet.

TRANSLATE TABLES

Qodem has a slightly different method for translating bytes andUnicode code points than Qmodem's Alt-A Translate Table function.This section describes the Qodem Translate Tables.

The Alt-A Translate Table function has been renamed to TranslateTables (plural), and encompasses both 8-bit and Unicode conversions.The data flow is as follows:

  • Bytes received from the wire are converted according to the 8-bitINPUT table before any other processing. Similarly, bytes areconverted through the 8-bit OUTPUT table before being written tothe wire.

  • Code points written to the screen are converted according to theUnicode INPUT table. Code points read from the keyboard areconverted through the Unicode OUTPUT table before being convertedto UTF-8.

  • When using 8-bit codepages, Qodem attempts to convert code pointsread from the keyboard back to the correct 8-bit codepage valuebased on several strategies. If no values can be found, '?' issent instead.

  • Capture, scrollback, screen dump, and keyboard macro files arestored in untranslated formats where possible. 'raw' capturerecords bytes before the 8-bit tables are applied; 'normal'capture and other files record code points after 8-bit tables areapplied but before Unicode tables are applied.

  • 8-bit and Unicode tables can be specified for each phonebookentry.

  • An EBCDIC-to-CP437 table is provided, but is largely untested.

DOCUMENTATION

Qodem has three sources of documentation:

  • This README.

  • Online help, accessed in most screens by pressing F1.

  • The qodem and qodem-x11 man pages.

CONTRIBUTING

Qodem is dedicated to the public domain. Anyone is free to see andmodify the source code and release new versions under whatever licenseterms they wish.

The official repository is hosted on github athttps://github.com/klamonte/qodem . Pull requests are very muchwelcomed.

ACKNOWLEDGMENTS

We'd like to thank the following individuals:

  • John Friel III for writing Qmodem which was the inspiration for thisproject.

  • Paul Williams, for his excellent work documenting the DEC VTterminals at http://www.vt100.net/emu/dec_ansi_parser .

  • Thomas E. Dickey, for his work on the xterm emulator and the ncurseslibrary. Both Mr. Williams and Mr. Dickey have answered numerousquestions over the years in comp.terminals that were archived andgreatly aided the development of Qodem's emulation layer.

  • Bjorn Larsson, William McBrine, and the many developers involved inPDCurses who dedicated their work to the public domain.

  • Miquel van Smoorenburg and the many developers involved in minicomwho licensed their work under the GNU General Public License.

  • Thomas BERNARD and the developers involved in miniupnpc who licensedtheir work under a BSD-like license.

  • Jeff Gustafson for creating the Fedora RPM build script.

  • Martin Godisch for help in packaging for the deb build.

  • Jason Scott for creating "BBS: The Documentary".

  • Peter Gutmann for developing cryptlib and licensing it under an opensource compatible license.

  • Nathanael Culver for obtaining Qmodem 2.3, 4.2f, and QmodemPro 1.50.

Qodem Terminal Emulator -  Browse /qodem/1.0beta at SourceForge.net (2024)

References

Top Articles
Latest Posts
Article information

Author: Reed Wilderman

Last Updated:

Views: 6089

Rating: 4.1 / 5 (72 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Reed Wilderman

Birthday: 1992-06-14

Address: 998 Estell Village, Lake Oscarberg, SD 48713-6877

Phone: +21813267449721

Job: Technology Engineer

Hobby: Swimming, Do it yourself, Beekeeping, Lapidary, Cosplaying, Hiking, Graffiti

Introduction: My name is Reed Wilderman, I am a faithful, bright, lucky, adventurous, lively, rich, vast person who loves writing and wants to share my knowledge and understanding with you.