1
0
Fork 0
qterm/README.md

4.7 KiB

QTERM

QTERM is a terminal program which provides the following:

  • Capture of text files
  • Send text files to remote
  • Xmodem / Modem7 / Ymodem protocol transfer
  • Kermit protocol transfer
  • VT100 emulation
  • Split screen mode to separate typed and received text
  • Script mechanism for automatic dialing and automation of other operations
  • Transfer of text to printer
  • Full user area support

(c) David Goodenough

It also has a huge advantage (at least for me, Anna) over KERMIT: It does not strip the 8th bit from received characters, so using a VT100 ANSI compatible terminal, you can just log into Telnet BBSes and see the full glory of ANSI/ASCII BBS graphics :)

QTERM uses patch files to adapt to the various CP/M implementations and hardware variations.

On this page, I provide several patches that can be used on "modern" CP/M systems like the RC2014 or SC126.

Unless otherwise noted, the patches were created by Anna Christina Naß and are based the IMSAI8080 patch by Udo Munk, the SIO initialization code by Steve Cousins and the XMODEM patch for RomWBW by Wayne Warthen.

Common setting

The escape key is ^Y, so to get help, just press ^Y and ? in sequence.

The patches and binaries

SIO/2 patch

This patch allows the use of QTERM on a RC2014 using a SIO/2 serial port.

At the moment, the patches provided here are tested on a RC2014 running RomWBW and using 2x SC104 serial ports (SIO/2).

The patch QT-RC82.Z uses the second serial port of the first SIO/2 port (base address 0x82) while QT-RC84.Z uses the first serial port of a second SIO/2 (0x84).

Direct download of binary:

The patch calls a RomWBW HBIOS routine to reset the SIO/2 after exiting, so I don't know what happens when using it without RomWBW.

CP/M 3 patch

This patch uses CP/M 3 BDOS calls to send and receive data from the serial port, so it is independant of the hardware as long as the BIOS provides an interface for CP/M.

To use it, make sure the desired serial port is mapped to AUX: by using DEVICE.COM.

In a standard RomWBW system, the second serial port is mapped automatically to AUX, so no remapping is neccessary.

This makes using QTERM on an SC126 (Z180 ASCI serial port) possible, but also works on an RC2014 with a SIO/2 port.

Direct download:

The patch file is QT-CPM3.Z.

RomWBW HBIOS patch

This patch has been provided by Paul Wrightson.

It uses direct RomWBW HBIOS calls for talking to the serial port, so it is also independant of the type of serial chip.

The patch QT-HB_1.Z uses RomWBW device 1 (ie. the second serial port), the patch QT-HB_2.Z uses device 2 (third serial port). So this should be equivalent to the QTERM82.COM and QTERM84.COM versions for SIO/2.

If another serial device needs to be used, just change the variable DEVICE at the beginning of the patch file and assemble it as shown below.

As this uses the RomWBW drivers, RTS/CTS signals should also be used automatically.

Using this QTERM version, it should be possible to use other serial chips than SIO/2 on CP/M 2.2, as long as RomWBW is used.

Direct download:

Technical details

Files

The file QTERM43F.LBR is the original QTerm distribution file.

The directory files/ contains all files from the .LBR file. There, the documentation for QTerm, QTERM.DOC can be found.

In the directory source/, the source code of QTerm 4.3e can be found (as files and QT43SRC.LBR library).

Applying a patch

The patches are applied using ZSM and ZPATCH, which are included in the QTerm distribution (QTERM43F.LBR).

To assemble the patch, use:

ZSM QT-xxxx.Z

This creates QT-xxxx.O, which then has to be applied to the .COM file:

ZPATCH QTERM43F QT-xxxx

Now QTERM43F.COM has the patch applied and should be ready to use.

Details for the SIO/2 patch

When started, the patch initializes the serial port and it should "just work".

When exiting QTERM, the "uninitialization" routine is running, which calls the RomWBW function for "Reset with current settings".

I don't know (yet) what will happen on a RC2014 with the default ROM or with SCM. If you have problems, you can change the patch file: In the part:

.org    0x0273  ;exit subroutine
exit:   jp      uninit

change the exit: line into: exit: ret

so the un-initialization routine won't be called. You can then also remove the uninit: routine at the bottom of the code.

But then, other programs that will use the same serial port (e.g. KERMIT) won't run correctly until you reboot your system.