# 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: * [QTERM82.COM](qterm82.com) * [QTERM84.COM](qterm84.com) 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: * [QTERMC3.COM](qtermc3.com) 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](qtermh1.com) - RomWBW device 1 * [QTERMH2.COM](qtermh2.com) - RomWBW device 2 ## Technical details ### Files The file [QTERM43F.LBR](qterm43f.lbr) is the original QTerm distribution file. The directory [files/](files/) contains all files from the .LBR file. There, the documentation for QTerm, [QTERM.DOC](files/QTERM.DOC) can be found. In the directory [source/](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.