files | ||
qt-cpm3.z | ||
qt-hb_1.z | ||
qt-hb_2.z | ||
qt-rc82.z | ||
qt-rc84.z | ||
qterm43f.lbr | ||
qterm82.com | ||
qterm84.com | ||
qtermc3.com | ||
qtermh1.com | ||
qtermh2.com | ||
README.md |
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:
- QTERMH1.COM - RomWBW device 1
- QTERMH2.COM - RomWBW device 2
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.
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.