From d8182b4ee0dbb5fedf8ba6c29c9856e4b3536628 Mon Sep 17 00:00:00 2001 From: acn Date: Tue, 8 Sep 2020 09:52:42 +0200 Subject: [PATCH] Moved to other repository --- qterm/files/!README.1ST | 120 -------- qterm/files/--READ.1ST | 4 - qterm/files/-QT-ADAM.43F | 73 ----- qterm/files/-README.FIX | 33 -- qterm/files/DDTZDDT.COM | Bin 7424 -> 0 bytes qterm/files/QT-ADAM.Z | 253 --------------- qterm/files/QT-ADM40.Z | 251 --------------- qterm/files/QT42G-AD.PAT | Bin 1024 -> 0 bytes qterm/files/QTCHAT.DOC | 650 --------------------------------------- qterm/files/QTERM.DOC | 457 --------------------------- qterm/files/QTERM.FOR | 13 - qterm/files/QTERM.PAT | 333 -------------------- qterm/files/QTERM43F.COM | Bin 17664 -> 0 bytes qterm/files/QTZP.DOC | 16 - qterm/files/WHATS.NEW | 74 ----- qterm/files/ZPATCH.COM | Bin 3072 -> 0 bytes qterm/files/ZSM.COM | Bin 14976 -> 0 bytes qterm/qt-cpm3.z | 155 ---------- qterm/qt-rc82.z | 172 ----------- qterm/qt-rc84.z | 172 ----------- qterm/qterm43f.lbr | Bin 74496 -> 0 bytes qterm/qterm82.com | Bin 17664 -> 0 bytes qterm/qterm84.com | Bin 17664 -> 0 bytes qterm/qtermc3.com | Bin 17664 -> 0 bytes 24 files changed, 2776 deletions(-) delete mode 100644 qterm/files/!README.1ST delete mode 100644 qterm/files/--READ.1ST delete mode 100644 qterm/files/-QT-ADAM.43F delete mode 100644 qterm/files/-README.FIX delete mode 100644 qterm/files/DDTZDDT.COM delete mode 100644 qterm/files/QT-ADAM.Z delete mode 100644 qterm/files/QT-ADM40.Z delete mode 100644 qterm/files/QT42G-AD.PAT delete mode 100644 qterm/files/QTCHAT.DOC delete mode 100644 qterm/files/QTERM.DOC delete mode 100644 qterm/files/QTERM.FOR delete mode 100644 qterm/files/QTERM.PAT delete mode 100644 qterm/files/QTERM43F.COM delete mode 100644 qterm/files/QTZP.DOC delete mode 100644 qterm/files/WHATS.NEW delete mode 100644 qterm/files/ZPATCH.COM delete mode 100644 qterm/files/ZSM.COM delete mode 100644 qterm/qt-cpm3.z delete mode 100644 qterm/qt-rc82.z delete mode 100644 qterm/qt-rc84.z delete mode 100644 qterm/qterm43f.lbr delete mode 100644 qterm/qterm82.com delete mode 100644 qterm/qterm84.com delete mode 100644 qterm/qtermc3.com diff --git a/qterm/files/!README.1ST b/qterm/files/!README.1ST deleted file mode 100644 index 779854c..0000000 --- a/qterm/files/!README.1ST +++ /dev/null @@ -1,120 +0,0 @@ -QTERM v4.3f - Recompile of 43e including 2 files from QT43EFIX.LBR - -QTERM V4.3e is dedicated to the memory of Irv Hoff - a programmer who was -a constant insipration while I was developing QTERM. Let us never forget -the work he did for the CP/M community. - - -Files included in QTERM43F.LBR: (QTERM43E.LBR) - -!README.1YT You are -QTCHAT.DYC QTERM chat scripts documentation -*QTERM.CYM QTERM, unpatched -QTERM.DYC QTERM documentation -QTERM.FOR Quick description of what QTERM can do for you -QTERM.PYT Patch information for QTERM -*QT-PATCH.ZY Patch area source, to provide a basis to work with -WHATS.NYW Upgrade list of what's changed since V4.2g - -(* files not included in this LBR) - -Additional files here: -*************************************************************************** -Adam files: --QT-ADAM.4YF Notes on the Adam files here and using DDTZ -QTERM43F.CYM Qterm patched for the ADAM with an 80 col display - (use for replacement of the unpatched version) -QT42G-AD.PYT Adam specific patch for Qterm 4.2g (usable on 4.3f) -QT-ADAM.ZY Adam 80 Col patch for Televideo for ZSM/ZPATCH -QT-ADM40.ZY Adam 40 Col patch for ZSM/ZPATCH - --README.FYX Fix for 43E to 43F -QTZP.DYC Documentation on using ZSM and ZPATCH -ZSM.CYM Z80 assembler for .Z files -ZPATCH.CYM Hot Patcher for .Z/.O files -DDTZDDT.CYM DDTZ patched for DDT compatible commands - -I apologise to David Goodenough for changing his -README and LBR listing -and hope he approves of the changes.. since this is for the ADAM CP/M LIB -on CompuServe and ADAM users. Rob Friedman - 6/9/91 - Sysop ADAM CP/M - CompuServe Computer Club - -Note: files listed in the normal 43E not here are *'d. Also, This -set of files includes notes from the 43E-FIX Library as well as -some info. This file is set up as 43F. -************************************************************************** - - -Patch info for making QTERM work on your system is included in QTERM.PAT. -As provided, QTERM will work on a Televideo 803 (or a TPC-1), because -that's what I developed it on. Note that not all the patches are -necessary, but the more optional ones you get going, the more features -QTERM will have. QTERM.PAT also includes a reference to a "1K patch -overlay". I'm trying to collect as many of these as possible, so if you -can, try to get yours back to me, with a memo telling which computer it -works on, and which of the optional patches you have included. - - -The .?Y? files are made with the new LZH compression method, this typically -produces files 10 to 15 to 20 % smaller than CRUNCH. EXL.COM (in EXL.LBR) -is one tool that will decompress these, or CRLZH11.LBR is the original -.LBR for LZH compression. - - -For those that are interested, the name actually arose because in mid 1985 -I needed a terminal program for my CP/M machine (A Televideo 803) and -put a quick 1/2K program together in under an hour. This program has been -growing ever since, but the name Q(uick) TERM(inal) program remains. - - -I give thanks to Dave Goodman, Tom Bopp, Larry Moore, Dave Presberg, Andy -Meyer, David Douthitt, Mitch Mitchell and Jim Bianchi for all their help -in debugging and beta testing QTERM, and to all the other people who have -sent in patches and suggestions. I'd never have got it anything like -working and as full featured without all your help. - - -Credit is also due the unknown author of the UNIX Kermit implementation -that I used for the basis of the Kermit code here, and to Steve Grandi -who wrote the Xmodem program in C that provided the basis for the Xmodem -code in QTERM. - - -If you need to get hold of me for any reason (need help with patches, or -a patch file to send my way), I can be reaced at: - -UUCP: .....!wet!pallio!dg -Internet: dg%pallio.uucp@cs.sfsu.edu -GEnie: D.GOODENOUGH -Q-Link: Delta G -BBS's: DAVID GOODENOUGH on all of them - (617) 965-7046 - (707) 539-1283 - (415) 654-3798 - (415) 755-2030 - -Or log into wet.UUCP at (415) 864-0954, and send me E-mail as dg once -you get set up. - - -David Goodenough (5-3-91) - - -A few notes: - -Take a look in WHATS.NEW to see what has changed since V4.2g - -QTERM V4.2 style patches will still work with QTERM V4.3e - -VT100.TC got dropped since it's no longer needed - see WHATS.NEW for details - -Since I've had several requests over the years to release the source, it - has been released. Modify it if you want, but please check back - with me before you release a version, and let me know what changes - you made, if they're useful I may put them into the next version. - As a side note to this, if you come across a version, and you are - not sure if it's been modified, check with me and I can give you - the correct CRCK values for the original V4.3e. - \ No newline at end of file diff --git a/qterm/files/--READ.1ST b/qterm/files/--READ.1ST deleted file mode 100644 index 2f3ab3e..0000000 --- a/qterm/files/--READ.1ST +++ /dev/null @@ -1,4 +0,0 @@ -The files with the extension .?Y? are LZH Encoded. The program -UNCRLZH v2.0 or LT30 (or later version of these programs) are -required to decode them. - \ No newline at end of file diff --git a/qterm/files/-QT-ADAM.43F b/qterm/files/-QT-ADAM.43F deleted file mode 100644 index 6e2bed2..0000000 --- a/qterm/files/-QT-ADAM.43F +++ /dev/null @@ -1,73 +0,0 @@ - -NOTES ON ADAM VERSION - -Included here is the Qterm 4.3f for the Adam with an -80 col. display and an external modem. I have used -the codes for my TeleVideo 925 terminal, as they are -similar to the ADM3A that a lot of you use. To change -the screen codes is a simple matter. Use SPZ -on a COPY of the program, and go to the 3rd page . You will see a grouping of ESCape codes <1B -28, 1B 29, etc>. Using the Qterm.Pat as a guide, plug -in your screen codes in those 8 positions -Also included is the QT42-AD.PAT for using DDT or DDTZ -to install your own Qterm. See the QTERM.PAT for -installing with DDT. For DDTZDDT use the I command, and the R command. DDTZDDT -is DDTZ patched to use DDT commands. It is included here. - -Also, I've included the QT-ADAM.Z and the QT-ADM40.Z -ZSM/ZPATCH files. Be aware that the patches for 42G work -on 43F. Both are by QTERM author Dave Goodenough. The -QT-ADAM.Z is set up for a Televideo screen, so you will -have to edit it for the proper escape codes for your -own screen. QT-ADM40.Z is set up for a standard 40-col -under TDOS. See the QTZP.DOC for usage of ZSM and ZPATCH - - Rob Friedman - Sysop ADAM CP/M - CompuServe Computer Club Forum - 3-25-90 - -I can be reached nightly on Compuserve's Computer Club forum -with the User I.D. 76702,417 - - -Additional files here: -*************************************************************************** -Adam files: --QT-ADAM.4YF Notes on the Adam files here and using DDTZ -QTERM43F.CYM Qterm patched for the ADAM with an 80 col display - (use for replacement of the unpatched version) -QT42G-AD.PYT Adam specific patch for Qterm 4.2g (usable on 4.3f) -QT-ADAM.ZY Adam 80 Col patch for Televideo for ZSM/ZPATCH -QT-ADM40.ZY Adam 40 Col patch for ZSM/ZPATCH - --README.FYX Fix for 43E to 43F -QTZP.DYC Documentation on using ZSM and ZPATCH -ZSM.CYM Z80 assembler for .Z files -ZPATCH.CYM Hot Patcher for .Z/.O files -DDTZDDT.CYM DDTZ patched for DDT compatible commands - -I apologise to David Goodenough for changing his -README and LBR listing -and hope he approves of the changes.. since this is for the ADAM CP/M LIB -on CompuServe and ADAM users. Rob Friedman - 6/9/91 - Sysop ADAM CP/M - CompuServe Computer Club - -Note: files listed in the normal 43E not here are *'d. Also, This -set of files includes notes from the 43E-FIX Library as well as -some info. This file is set up as 43F. -************************************************************************** - - \ No newline at end of file diff --git a/qterm/files/-README.FIX b/qterm/files/-README.FIX deleted file mode 100644 index ef970e2..0000000 --- a/qterm/files/-README.FIX +++ /dev/null @@ -1,33 +0,0 @@ - [-READ.ME Mike Freeman 12-May-1991] -This file contains two patches, QT43EFX1.Z and QT43EFX2.Z, each of which -fixes a bug in QTERM.COM Version 43E (from QTERM43E.LBR) which caused sends -using True Ymodem protocol to fail. QT43EFX1.Z was suggested by QTERM's -author, David Goodenough and will, when patched over v43E of QTERM.COM, -correct the bug. MODEM7 batch transfers will no longer work. QT43EFX2.Z, -when patched over v43E of QTERM.COM will correct the same bug and allow -MODEM7 batch transfers to work. It uses a small fraction of QTERM's patch -area (from 0x04e0 to 0x04e7, inclusive). Thus, those who have QTERM patches -which extend into this region should use QT43EFX1.Z instead. Also included -in this archive is a corrected version of the appropriate QTERM source -module, SEND.Z. This is being done with the permission of QTERM's author, -David Goodenough. QTERM's version parameter "include-file", VERSION.I, is -also included with the revision level bumped to "F". This is in line with -Mr. Goodenough's wishes. Happy patching! --- Mike Freeman K7UIJ -- - [End of -READ.ME] - -Addition by D. Goodenough, 5/22/91 - -QT43EFX2.Z as provided by Mike Freeman needed a little work: ZPATCH gets -confused if .org's in a ZSM source file go backwards. This means that I -had to put the low code (0x04e0) first. It'll work now. - -Addition by R. Friedman, 6/9/91 - -I've renamed this little file -README.FIX and included it in a -new LBR called QTERM43F. I used the newer source modules from -Mike Freeman's FIX.LBR and the Qterm 43E source code from Dave -Goodenough's source LBR, and recompiled it to make 43F. Hence, no -need for the Fix.Z. So.. it is all better and running like a top! - - \ No newline at end of file diff --git a/qterm/files/DDTZDDT.COM b/qterm/files/DDTZDDT.COM deleted file mode 100644 index 0aec1590fcf59e4775ed11632dd601e4865d1f21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7424 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 (QTERM) -.var decout 0x010c ; output decimal value in (QTERM) - -; Modem input status. 110h-11fh. - -.org 0x0110 -istat: in a,(statp) - and inmsk - ret - -; Read modem character. 120h-12fh. - -.org 0x0120 -idata: in a,(datap) - ret - -; Modem output status. 130h-13fh. - -.org 0x0130 -ostat: in a,(statp) - and outmsk - ret - -; Write modem character. 140h-14fh. - -.org 0x0140 -odata: out (datap),a - ret - -; Break. Start break 150h-15fh; end break 160-16fh. - -.org 0x0150 -brkon: ld a,break - out (contlp),a - ret - -.org 0x0160 -brkoff: ld a,chipset - out (contlp),a - ret - -; Dtr. Drop dtr 170h-17fh; restore dtr 180h-18fh. - -.org 0x0170 -dtroff: ld a,chipoff - out (contlp),a - ret - -.org 0x0180 -dtron: ld a,chipset - out (contlp),a - ret - -; Baud rate. Routine 190h-19fh; table 1a0h-1afh. - -.org 0x0190 -brset: - jp finbd - -.org 0x01a0 -brtbl: -b38400: db 0,no ; 38400 -b19200: db 0x3f,yes ; 19200 -b9600: db 0x3e,yes ; 9600 -b4800: db 0x3c,yes ; 4800 -b2400: db 0x3a,yes ; 2400 -b1200: db 0x37,yes ; 1200 -b600: db 0x36,yes ; 600 -b300: db 0x35,yes ; 300 - -; Mode. Routine 1b0h-1bfh. - -.org 0x01b0 -modset: jp finmod - -; Mode. Table 1c0h-1cbh. 8251 mode byte, sets stop bits, parity, - -.org 0x01c0 -modtbl: -n71: db 0b01001010 ; 7n1 ; this table must be -n81: db 0b01001110 ; 8n1 ; exactly 12 bytes long -n72: db 0b11001010 ; 7n2 -n82: db 0b11001110 ; 8n2 -e71: db 0b01111010 ; 7e1 -e81: db 0b01111110 ; 8e1 -e72: db 0b11111010 ; 7e2 -e82: db 0b11111110 ; 8e2 -o71: db 0b01011010 ; 7o1 -o81: db 0b01011110 ; 8o1 -o72: db 0b11011010 ; 7o2 -o82: db 0b11011110 ; 8o2 - -; Miscellaneous one byte values. - -.org 0x01cc - db 0 ; reserved for future use - -.org 0x01cd - db 8 ; 1cdh - size of xfer buffer - -.org 0x01ce - db 4 ; 1ceh - cpu clock speed - -.org 0x01cf - db '\e' ; 1cfh - escape character - -; Signon message. 1d0h-1efh - -.org 0x01d0 - db '\ex9\nColeco ADAM 40 Col W/-RS232\0' - -; Clear screen string - -.org 0x01f0 - db 'z' & 0x1f, 0 - -; Moveto - move the cursor - -.org 0x0200 -moveto: push hl ; save row,col - ld c,'\e' ; send escape - call scrout - ld c,'=' ; send = - call scrout - pop hl ; get row,col - ld de,0x2020 ; add offset - add hl,de - push hl ; and save - ld c,h ; send row+offset - call scrout - pop bc ; get col+offset - jp scrout ; send - -; tcbits - what terminal capabilities are present - -.org 0x022f - db 0xff - -.org 0x0230 - db '\eq\0' - -.org 0x0238 - db '\ep\0' - -.org 0x0240 - db '\eM\0' - -.org 0x0248 - db '\eL\0' - -.org 0x0250 - db 0x97,0 - -.org 0x0258 - db 0x94,0 - -.org 0x0260 - db '\eK\0' - -.org 0x0268 - db '\eJ\0' - -.org 0x0270 - jp entry - -.org 0x0273 - jp exit - -.org 0x0276 - ret - -.org 0x0279 - ret - -.org 0x0280 -finbd: - ld b,a - in a,(baudrp) - ld c,a - in a,(baudrp) - ld a,freeze - out (contlp),a - ld a,c - out (baudrp),a - ld a,b - out (baudrp),a - ld a,reset - out (contlp),a - ret - -finmod: - ld b,a - in a,(baudrp) - in a,(baudrp) - ld c,a - ld a,freeze - out (contlp),a - ld a,b - out (baudrp),a - ld a,c - out (baudrp),a - ld a,reset - out (contlp),a - ret - -entry: - ld e,0x1a - ld c,2 - call 5 - in a,(baudrp) - ld b,a - in a,(baudrp) - ld a,b - or a - ret nz - ld a,0x4e - call 0x01b0 - ld a,0x37 - call 0x0190 - ret - -exit: - ld e,0x19 - ld c,2 - call 5 - ld c,9 - ld de,exitstr - jp 5 - -exitstr: - db 'z' & 0x1f, '\ey9$' - \ No newline at end of file diff --git a/qterm/files/QT42G-AD.PAT b/qterm/files/QT42G-AD.PAT deleted file mode 100644 index 72341dd43d72cd85bfd9d57066cbc76b62d58987..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmX@i#(J2I;V>t|VIGFV46F>dU7s0$*hpFvVyqOJ=}-Bj&vG*I*#e1&PixK!Gd-+5rr>{=lMziF zl>1*=1HyutCmjUkyF%%3C>;o;L!fjdgg$(L>F@(k2m{e!W>yCG+iw21-RzVuyH{Rz ztGMiDr;ZvvKzX1FkUUTls03YJPLhx5EHK*KfC?+NAF%T~yMfWp{Okl+BthkoqXgoR LQF1f{fFS??Jl$fm diff --git a/qterm/files/QTCHAT.DOC b/qterm/files/QTCHAT.DOC deleted file mode 100644 index d4668fc..0000000 --- a/qterm/files/QTCHAT.DOC +++ /dev/null @@ -1,650 +0,0 @@ -QTERM chat scripts -================== - -A chat script is a means for getting QTERM to automatically send and -receive text, this can be used to auto-dial, connect to remote systems, -log in to them, and do whatever else is wanted. In addition, chat scripts -have a number of commands available, to do such things as protocol sends -and receives, transfer of text files, and many other things. - -There are two ways of invoking a chat script. Firstly when QTERM is -executed from CP/M, a chat script and parameters can be provided there: - - A>QTERM SCRIPT 1200 - -would be an example, alternatively the ^\ X command will prompt for a -filename, the response can be exactly the same: - - Filename: SCRIPT 1200 - -will have the same effect. - -QTERM will look in several places to try to find the script. The first -thing it will do is to take the filename as given (subject to the -current default drive/user, which may have been changed by the !n or -^\ N commands). If this is not successful, QTERM then searches the -drive/user area that was active when it first started. It should be -noted that if the entry subroutine includes BDOS calls to change either -the drive or user, then the values rememberd by QTERM will be those on -return from the entry subroutine. This provides a mechanism for setting -up a default script area, a place where QTERM will always try to find -scripts. In addition, if it can't find the script as a file in the -default script area, QTERM will look for a .LBR file /QTERM.LBR and -see if this library contains the script. The reason behind this is that -scripts tend be fairly small, and it is far more efficient to keep them -all together in one .LBR, since this saves disk space. It goes without -saying that QTERM cannot deal with squeezed or crunched scripts, they -must be saved in the .LBR as uncompressed ASCII text files. - -When a chat script is running it can be terminated prematurely by typing -^X on the keyboard: this will return to normal terminal mode. - -There are two types of lines in a chat script: send/expect lines, and -command lines. Command lines are always started with a '!' character, -any other character starts a send/expect line. - -Looking first at send/expect lines, they can contain up to six fields, -and the first two must be provided, even if they are empty. An example -of such a line is: - - -AT\r-OK\r\n-3-2-3-0- - -In this example the '-' (first character) is the delimiter used to -separate fields. Any character can be used except for '!', but whatever -character is chosen cannot appear in the strings. Also note that -chosing a delimiter from the characters above 'z' in the ASCII character -set (i.e. '{', '|', '}', and '~') has a special effect, which is explained -below. Taking the fields in order they are SEND, EXPECT, TIME, TRIES, -SUCCESS, and FAIL. SEND is a string that is transmitted by QTERM, so in -the example above QTERM would transmit 'AT'. As was noted -above, delimiters above 'z' have a special effect: they cause the SEND -string to be written out slowly: there is a tenth of a second delay -after each character. EXPECT is a string that QTERM is looking for in -response to it's SEND string: so in the above example, QTERM would be -looking for the 'OK' that a Hayes compatible -modem would respond with, when presented with 'AT'. - -The remining four fields are all decimal numbers, and can be omitted -as QTERM will provide default values. TIME is the number of seconds -to wait before assuming failure, if not given it defaults to 15. TRIES -is the number of times to retry on failure, so taking our first example, -TRIES is 2. If QTERM matched the EXPECT string on the first sending of -SEND, all is well, but on the first failure it would resend the SEND string -and look for the EXPECT string a second time. If it failed on this second -attempt, only then would it consider this line to have failed. SUCCESS -specifies the line number to transfer to in the chat script if it matched -the EXPECT string. The default for this is the line following the current -line. FAIL is the line to transfer to if the EXPECT string is not -matched. This can be a line in the chat script, or as shown above 0 is -allowed, which terminates the script immediately. - -In the example above, the success and fail values are given as simple -line numbers, it is also possible to use labels in chat scripts, see !: -below for an explanation of how to define a label. If a label is being -used, the line might look like this: - - -ATDT5551234\r-CONNECT-30--`connect-`fail- - -In this case, the `connect and `fail are label usages, and cause transfer -to wherever the corresponding label is. Label useage is introduced with the -backquote character `, which must be followed by the label itself, with no -intervening white space: -` connect- will not work. Using an undefined label -does not directly cause an error, but the substitution of the non-existant -label will usually create a line that cannot be parsed, thus flagging the -error. - -In another example, if the first line were: - - -AT\r-OK\r\n--5- - -since TIME is empty, it defaults to 15, but as TRIES is 5, this line -would try five times before giving up. Note also from this example -that there are two ways of causing QTERM to default a value: an empty -field (TIME) or end of the string (SUCCESS and FAIL). Note that the -closing '-' after the 5 for TRIES is necessary. On the basis of this, -the absulute minimum line is: - - -send-expect- - -This uses all four defaults: 15 seconds timeout, 1 try, success goes to -the next line, failure terminates the script. The idea behind these -defaults is that a collection of simple send/expect lines like the above -allow a "conversation" to be held with the remote system. - -It is possible that either of SEND or EXPECT can be empty: an empty SEND -causes nothing to be sent, but the EXPECT must be matched to continue; -an empty EXPECT automatically matches. Note that if both are empty then -the chat script will terminate when it reaches that line, so a line like: - - --- - -will serve as a means to terminate a chat script, returning to terminal -mode. - -Command lines in chat scripts start with '!', and following the '!' is -a command letter. If input is needed (e.g. for a '!b' or '!s' line) -it should be placed after the command letter: - - !b 1200 8n1 -5 30 500 +\x13\x11 - -As is shown in the above example, spaces are permitted after the command -letter, but not before. - -Several of the ! commands correspond to ^\ commands available from terminal -mode: the !b above would set the baud rate etc., just like the corresponding -^\ B command would. - -Commands available in this group are: - -!, hangup -!. break -!B set baud rate -!E set local echo -!H set half duplex -!J toggle junking of control characters -!L set linefeed send for 'P' -!M set bit 7 mask -!N select new drive/user -!O toggle output to the printer -!V toggle VT100 emulation -!W toggle split window mode -!K program function key -!P print file to remote -!U invoke user function -!R protocol receive -!S protocol send -!C open catch file -!Y put catch file on hold -!Z close catch file -!X activate chat script -!Q exit QTERM - -Note also that the toggles ('!E', '!H', '!J', '!L', '!M', '!O', '!V' and '!W') -behave a little differently. Since the state of these toggles is not defined -when a chat script starts, with one exception (!W) there are three ways of -invoking these. Using '!H' as an example: - - !h - -behaves as would an 'H' in normal operation, i.e. it toggles -the half duplex switch. However, if the following is given: - - !h 1 - -the trailing '1' forces half duplex to be enabled, irrespective of -it's original state, and: - - !h 0 - -guarantees to turn half duplex off. The other toggles work in the same -manner: a trailing '0' always disables, and a trailing '1' always -enables. !W is a little different, in that there are three possibilities: -window mode off, window mode on with big receive, and on with small. Also -allowing a pure toggle could have undefined results, since if window mode -were toggled on, there would be no indication what size was wanted. As -a result of this, there are three forms for the !W command in a script: - - !w 0 - -forces window mode off, - - !w b - -forces it on with a big receive window, and: - - !w s - -forces it on, but with a small window. With all these toggles (!h etc. and -!w) the options above are guaranteed, using any other option letters will -have undefined results. - -The 'X' command to activate a chat script can be used to chain scripts -together: when an 'X' is encountered the specified chat script is -invoked, however the current script is lost: it is overwritten by the -new one. - -There are other commands that are not normally available are as follows: - - -!: - Define a label. Label usage was described above: the '`' character -introduces a label usage. NOTE that this is the BACKQUOTE character, not -the usual single quote character. To define a label, simply include a -line of the form: - -!: connect - -in the script. A few comments may make labels easier to use, firstly -they cannot be longer than seven characters, and where they are defined -there should be no trailing blanks. When a label is used, it is done by -means of a simple text substitution: after seeing a '`' character, QTERM -tries to match the following text with a label in the script, and it -stops at the first match. So if you have two labels one of which is a -prefix of the other, the results can be unpredictable. As a byproduct -of this, undefined labels do not generate an error (they just become -line zero), but the text substitution doesn't remove the label, so the -resulting line usually generates an error. In the event that a '`' -character is needed as part of a send or expect string, it can be -escaped by preceeding it with a $, so the line: - - .send.exp$`ect. - -will look for exp`ect, whereas: - - .send.exp`ect. - -will not work, it would try to look for and substitute the label 'ect'. -Since '$' is used to escape '`', it must also be used to escape itself, -so to match the string XXX$YYY, the script line would need to be: - - .send.XXX$$YYY. - -Labels should always be used to transfer control in a script: when a -script is being read in, comments and blank lines are stripped very -early in the process. This means that a given line in the script file -may have a different line number as far as QTERM is concerned. Labels -bypass this problem, so their usage is highly recommended. - - -The commands !@ and !# can be used for variable manipulation. Their -main purpose is to prevent infinite loops in chat scripts. In the -following example: - - !: reset - .AT\r.OK\r\n.5.5. - .ATDT5551212\r.CONNECT.30..`connect.`reset. - !: connect - . ........ - -if the system being called is off line and not answering, QTERM will -loop here for ever. The !@ and !# provide the ability to keep count and -terminate the loop after some specified number of tries. - - !@ var term +/- term - -is the form of an @ line. var is a single letter variable (there are 26 -available: a through z), and term is either a number or a variable. This -is very simplistic, in that two terms must be present: to set a variable -simply say something like: - - !@ a 5 + 0 - -the operator can be either + or - and they act as you would expect. so: - - !@ a a - 1 - -will subtract 1 from a, or: - - !@ a a + b - -will add b to a, etc. etc. Note that variables are recognised in either -upper or lower case: - - !@ A a + B - -would have exactly the same effect as the line above. Note that these are -single bytes, so there is some risk of working with values above 255. - -!# tests variables: the general syntax is: - - !# var operator term line - -where var is a variable letter, term is a variable or a number, and the -operator can be '=' to test for equality, '#' to test for inequality, '<' -to check for less than and '>' to test for greater than. line is simply -the line number in the script to go to is the test succedes. Note that this -also provides a goto capability: - - !# a = a `doit - -will always go to doit, since a is always equal to itself. - -All variables are initialized to zero when the first script in a series is -invoked, but values are retained when a !x command chains from one script -to another. - - -In addition to !@ and !# which set and test numeric variables, there are two -corresponding commands which set and test string variables. !$ and !% will -set and test strings. A line like: - - !$ a This is a string - -will put 'This is a string' into string variable a. Note that when a script -is started, or chained to with a !x command, the first nine parameters -become strings $1 through $9. These can be assigned to only if they are not -set when the script is invoked. The reason behind this is that if the -command line parameters are set with default values at the top of the script, -then missing parameters can be dealt with. An example might be a script -where the first parameter provides the baud rate, if it's invoked as: - - SCRIPT 1200 - -then $1 will contain '1200', however if the following line appears in the -script: - - !$ 1 2400 - -this will not disturb the 1200 in the case above, however if the script -is invoked with no parameters, then $1 will be empty initially, and the -assignment will put 2400 into it. String variables are used simply by -naming them, so to use $1 in this case, a line like: - - !b $1 8n1 - -would set the baud rate as needed. In a similar manner, numeric variables -can be used simply by naming them: - - -Send @a\r-expect- - -would have the @a expanded to whatever the current value in variable a is. - -As is done with labels, $a string use and @a variable use is handled by -simple text substitution, so a little care will make their use easier. -As was described above, '$' is used to escape '`' characters in strings, -it is also used to escape itself, and it can also be used to escape an -'@' character in a string. So, to actually place a '$' character in a -string say '$$', so that: - - .send.exp$$ect. - -would look for the string 'exp$ect'. There are only three things that -can follow a '$' sign: either '$' or '`' for escaping purposes, -and '1' through '9' and 'a' through 'z' for string substitution. -Placing any other character after a '$' will have an undefined result. - -To test a string variable the !% line can be used: there are three forms -this line takes: - - !% = .string1.string2. `label - !% _ .string1.string2. `label - !% # .string1.string2. `label - -The first one will jump to label if the two strings are equal, so to test -a string, a line like: - - !% = .$a.exit. `doexit - -would jump to label doexit if string variable a contained 'exit'. The second -case is identical, except that the test is done ignoring case, so if _ were -used instead of = in the example above, 'exit', 'Exit', 'EXIT', and 'eXiT' -would all test as equal. The last case jumps to the label if the two strings -are different. - - -Two commands exist to manipulate the appearance of chat scripts: - - !> This is a line of text\r\n - -!> simply prints the text, after processing '\' escapes. Note that -leading and trailing spaces are ignored, so the above case would start -with the 'T' of 'This'. In order to start or end with a with a space, -\x20 can be used. - - !& - -This command is actually three different commands rolled into one: -!& o manipulates the echoing of characters received from the modem -while the script is running: - - !& o 1 - -forces modem echo on, - - !& o 0 - -forces it off, and: - - !& o - -simply switches state. In the same manner, !& m controls printout of -the 'Match: OK' messages that are printed when QTERM matches the expect -string in a send/expect line, and the 'Fail' and 'Retry' messages as -well. These two are initially on when a script starts, the third case -is !% l which controls printout of 'Looking for: ' messages. When this -option is turned on, these messages are printed when QTERM starts -looking for the expect string. - - -As a complement to !>, the !< command can be used to take keyboard input, -and make decisions based on what happens. This includes two subcommands -altogether: - - !< - variable - -The '-' causes QTERM to prompt for a line of input using CP/M's BDOS -buffered command. The line is then in the named variable, and can later -be tested with !% lines. - -This allows for such things as multiple choice: - - !> \r\nSelect system to call\r\n - !> 1. System 1 ..... \r\n - !> 2. System 2 ..... \r\n - !> 3. System 3 ..... \r\n - !: prompt - !> Enter 1, 2 or 3:\x20 - !< - a - !% = .$a.1. `sys1 - !% = .$a.2. `sys2 - !% = .$s.3. `sys3 - !> Error, invalid input\r\n - !# a = a `prompt - -Where the first 4 lines print a menu, the next line defines a label. Then -comes a prompt, followed by an input command. After this, the line is -checked against 1, 2 and 3, and a jump is made to the appropriate label. -If there is no match an error message is printed, and the !# a = a line -is used as a goto, since a is always equal to a. - -In a similar manner, '!< . a' will provide a "hot key" input - this reads -a single keystroke from the keyboard, and saves the numeric value of the -key pressed in the named variable, where it can be tested with a !# line. - - -The ![ command provides a similar function to the !< command, but it -works on text coming from the modem. There are several different -sub-commands available: - - ![ - - -reads text from the modem. In this instance there are two ways that -reading can end: - - ![ - 15 - -would simply read text for 15 seconds. This numeric timeout must be -provided, but in addition up to four extra strings can be provided: - - ![ - 5 .string1.string2.string3.string4. - -in which case input will terminate when 5 seconds have elapsed, or one -of the four strings is read. In this line, the '.' following the 5 is a -delimiter, this serves to separate the strings exactly like the delimiter -in a send / expect line. Not all four strings need to be there: - - ![ - 5 .OK.ERROR. - -is acceptable, but the trailing delimiter must be there after the last -string. In addition to scanning for the four lines, QTERM keeps the last -sixty-four characters seen in a buffer, these can then be inspected with -![ =, ![ +, and ![ _ lines. - - ![ : 20 - -watches the data arriving from the modem, and only stops when 20 seconds -of silence are detected. This can prove useful when !C has opened a file, -and you want to capture the incoming text until a period of silence. -In addition, the last 64 characters are saved, just like with ![ - and -they can be tested with the same three commands. - -The three commands that test are: - - ![ = string `label - ![ + string `label - ![ _ string `label - -These are all very similar in that they all jump to label if the string is -found in the "last 64 character buffer", however the exact nature of the -test varies. Also note that during the search for the expect string in a -normal send/expect line, the last 64 characters seen are also saved in -this buffer, and can be tested using these commands. - - ![ = string `label - -searches the saved text for the string, which in this case can include -\ escapes. If string occured anwhere in the last 64 characters, control -goes to label. ![ + looks exactly the same, but the difference is whether -the test is done on seven or eight bit data: ![ = just compares the least -significant seven bits, ignoring the parity bit, whereas ![ + compares -all eight. Note also that the strings provided in the ![ - line are only -checked in seven bit mode. ![ _ also does a seven bit test, but in addition -it ignores case. - -Since spaces are used as the delimiter on a ![ = line, it is necessary to -escape a space: to match the 'CONNECT 1200' string that might be received -from a modem, it would be necessary to do something like this: - - ![ = CONNECT\x201200 `con1200 - -where the \x20 is an encoded space. Consult QTERM.DOC for a discourse on -\ escapes in strings. - -Finally: - - ![ ^ a XY - -allows a string to be extracted from the 64 character buffer and copied -into a variable. a is the variable name in this case (only letter variables -are allowed), and XY are two characters that delimit the string. If they -are left off, they both default to zero (NUL character, not '0' which is -ascii 0x30), which matches any white space. X and Y can be \ escapes, and -note that \0 (i.e. a NUL) has the special effect mentioned. The exact -algorithm used to determine the text to be saved is: - -1. Scan backwards from the end of the buffer (last characters received), till -a 'Y' is seen, then skip over any adjacent duplicates. Then scan back to the -next 'X', and take all characters between, not including the X or Y. So if -the tail of the buffer holds: - - ..... YYY XXThis is a stringYY hello X world X - -the string that would be extracted is 'This is a string'. As always, a little -care and attention will help in chosing the correct way of getting a buffer -of 64 characters, and then some care in chosing the delimiters will ensure -the correct string is extracted into the variable. - - -The !~ command has been added for rudimentary file manipulation -during chat script operation. Four options exist: - - !~ - file - -will erase a file. Note that QTERM will silently ignore this command -if the file doesn't exist, or if it is write protected. As with all -filenames, a drive/user can be given: - - !~ - d15:foo.bar - -does like you'd expect. - - !~ = newname = oldname - -renames a file: note that if a drive/user is given on oldname, it will -be ignored: newname completely defines where the action will happen. -This will fail silently if newname already exists, or if old name doesn't, -or if oldname does exist but is write protected. - - !~ + newname = oldname - -copies a file. In this case a file can be copied to a different -drive / user, so if needed a drive / user spec should be attached to -oldname. This will fail silently if newname exists or if oldname doesn't. -These can be used to good effect when QTERM is sending text files as -messages to a BBS, after sending the file with a !P command, a !~ - will -erase it, or files can be erased after uploading, or a file might be -renamed after a batch download. - -The last options don't change any files, but allow QTERM to conditionally -alter script execution depending on whether a file exists or not: - - !~ Y filename line - !~ N filename line - -This simply transfers control to line if filename exists. As always line can -be a label. If needed, filename can be a wildcard: - - !~ Y A17:*.TXT `sendtxt - -will go to label sendtxt only if there are any files on A17: matching the -*.TXT wildcard. - - -Two commands exist to allow strings to be saved during a script run, for -possible reloading during a later script run. The commands are: - - !( r a 7 - -to read, and: - - !( w b 3 - -to write. The r or w specifies read or write, following this is a single -letter that tells which string variable to read or write, and finally a -file position to use. QTERM uses the file /QTERM.STR in the default chat -drive/user area as the file that holds thee saved strings, the last parameter -specifies which record will be used. '0' uses the first record, and up to a -certain point, the file can be made as large as is needed: ten records -would provide '0' through '9', however the file can be made larger to hold -records 'A' through 'Z', or even 'a' through 'z' if needed. To create a -record with a given index, simply use the !( w command to write to it, -so if a file containing just ten empty is desired, the following ten line -script would create it: - - !( a 0 - !( a 1 - !( a 2 - !( a 3 - !( a 4 - !( a 5 - !( a 6 - !( a 7 - !( a 8 - !( a 9 - -This would set all the saved strings to empty, since string a will be -initially empty when the script starts. Note that while QTERM can add -records to an already existing file, the file must exist in order for -QTERM to access it. Several means exist for creating it: - - A>SAVE 0 /QTERM.STR - -under CP/M 2.2 will work, or using a text editor to create an empty -file, or even using the C command under QTERM to open a catch -file, and then immediately closing it with an Z command. - -This function can be used to good effect when a script is used to -call a BBS, and you want to use a catch file to capture new messages. -If the BBS can't do this for you, then the ![ - and ![ : lines can -be used to catch the high message number in the 64 character buffer, -then the ![ ^ line can be used to pluck it out into a string, from -where it can be saved in the file. Then next time the script is -running, it can read the previous high message number back into a -string, and use it in a line line: - - .read new $a\r.. - -to send it back to the BBS as the first message number required. - - -As a final note, any other command character is silently ignored, -this can be put to use to introduce comments. At this stage, !; is -not in use, and this is the official comment entry, it is guaranteed -that !; will never be used for a command line function in a QTERM -chat script. Further, when a script is being read in by QTERM, blank -lines and lines starting with !; are discarded fairly early. This has -two side effects, it means that comments can be used freely without -using up any of the 4K space available for saving scripts, but it -also means that line numbers should not be used in scripts as the -targets of jumps (i.e. the last two fields of a send / expect line) -since the target line number may well change. Use labels instead. - \ No newline at end of file diff --git a/qterm/files/QTERM.DOC b/qterm/files/QTERM.DOC deleted file mode 100644 index e1ab283..0000000 --- a/qterm/files/QTERM.DOC +++ /dev/null @@ -1,457 +0,0 @@ -QTERM -===== - -If QTERM is invoked with no arguments, it starts up, and after signing -on, you are immediately connected with the modem. If an argument file -is provided, then it is assumed to be a chat script (see 'X'), and the -chat script is immediately activated. With this file as with all others -that can be entered, user numbers can be included in the filespecification: -B3:CHAT.XYZ will look for the file in user area 3 on drive B: Either the -drive or the user alone can be given: A:FOO.FOO and 7:BAZ.BAR are both -acceptable, anything not given defaults to the current values. On -completion of the chat script, command passes to normal connected -operation. All special actions are initiated by typing the escape -character, what happens next is determined by the next character typed. -Note that while all letters here are shown in upper case, lower case works -equally well: so b also activates the code to set the baud rate. -As delivered, the escape character is set to control backslash, however it -can be changed by patching QTERM: see QTERM.PAT for details, so to print -help type '^\' '?', etc. In all the descriptions that follow, references to -the escape character refer to this (i.e. '^\' and not the ESC key - '^[') - -At several places in QTERM it is necessary to be able to encode control -characters and other "non-printing" characters in a visible mode, to -do this a special escape mechanism is used. To start one of these escape -sequences a backslash '\' is used, followed by one or more characters to -define the desired character. The following are provided: '\r' carriage -return (0x0d), '\n' linefeed (0x0a), '\t' tab (0x09), '\b' backspace -(0x08), '\e' escape (0x1b), '\k' break, and '\d' delay. '\k' causes a -break to be sent if this string is subsequently sent to the modem (as in -a chat script), and '\d' causes a delay of one second when used in a -chat script. In addition a backslash can be followed by up to three -octal digits to send the character with that representation: so '\177' -would send a delete, and '\003' or '\3' would send a control C; this can -also be done for hexadecimal representations: in this case '\x' is the -leadin, and it is followed by up to two hexadecimal digits: so '\x7f' -would again send a delete, and '\xd' could be used in place of '\r' to -send a carriage return. The rule for determining how many characters are -used when scanning an octal or hex number is as follows: octal has a -maximum of three, hex a maximum of two (not including the \ or \x -respectively): use at most that many characters, or stop early if an -inappropriate character is encountered. - -Retyping the escape character (i.e. typing it twice) sends a single copy -of the escape character to the remote system. - -Other characters and what they do are: - -? - Print help - QTERM provides a brief synopsis of the available commands. - - -. - Send a break - If QTERM has been patched to do it, this will transmit -a 3/10th second break. - - -, - Hang up modem - This is done by deactivating DTR for a short time, which -causes most modems to hang up. Again QTERM has to be patched to do this. -Alternatively, if your modem doesn't respond to DTR, it is possible to -have QTERM transmit a string to cause a hangup: for example the: - - ' +++ ATH0' - -as required by a HAYES compatible modem. See the patch documentatin for -details. - - -B - Change baud rate and mode - This will first prompt you, your response -must look like the following: - - nnnn - nnnn mmm - * mmm - nnnn mmm -3 20 500 +AB - -where 'nnnn' is a number specifying the baud rate. Up to eight options -are available: 300 600 1200 2400 4800 9600 19200 and 38400, although not -all of these may be enabled. 'mmm' is a byte format specifier made up -of three characters. The first must be '7 ' or '8' to specify the number -of data bits; the second 'E', 'O', or 'N' for even, odd, or no parity; -and the third '1' or '2' for the number of stop bits. The * in the third -example is used as a place holder when the mode is to be changed, but -not the baud rate. So, for example: '1200' would change to 1200 baud -leaving the mode as is; '300 8n1' would switch to 300 baud, and select -8 data bits, no parity, and 1 stop bit; and '* 7E2' would change the -format to 7 data bits, even parity, and 2 stop bits, while leaving the -baud rate alone. Two other options can be added to this line: the '-' -option is a way of specifying three delays that can be set, and the '+' -option can set the characters used to enable and disable character -transmission from the remote system. - -If both the '-' and '+' options are used, then the '+' must follow the '-' -(as above in the example). - -The '+' option changes the characters that QTERM will use for flow -control. When a system is sending text to QTERM, which is being saved -in a file, QTERM needs to be able to stop the remote system from -sending when it writes to disk. Most of the time ^S and ^Q are -recognised, but for the few systems that use other characters, this -option allows them to be changed. Following the '+' should be exactly two -characters ('A' and 'B' in the example), the first becomes the "stop" -character, and the second the "start" character. These characters can -be '\' escapes if needed. - -If the '-' option is used, it should be followed by up to three numbers. -The first is a delay in seconds after the "stop" character is sent. -Since some systems take longer to respond to the "stop" character than -others, the delay time can be changed. QTERM starts up with one second -of delay, but by specifying -3 or -6 or whatever, this delay can be -changed. -0 is possible, but not recommended unless your remote system -responds instantly. The second number is a delay in milliseconds between -character sends in 'P' transmits (see below). Note that this time is -the time between the start of each character transmission, rather than -a time between the end of one and the start of the next. So if this -delay was set to 15 milliseconds at 1200 BPS, where each character -takes about 8 milliseconds to transmit, there would be 8 milliseconds -spent sending the character, and then 7 milliseconds of idle time: the -total being 15. As an addition to this, if a non-numeric character -precedes the number (as in .20), "echo-check" pacing will be used for -printable characters. What that means is that when a printable character -is sent, i.e. between space: ' ' (20H) and tilde '~' (07EH) inclusive, -the next will be sent either when the delay runs out, or when a copy of -the sent character is seen returning from the remote system. This can be -useful when the delay would normally need fine tuning for maximum -performance, by using "echo-check" pacing the throughput becomes close -to optimal. The third number is the delay at the end of a line in 'P' -transmission: this is also a count of milliseconds, and this delay occurs -after transmission of a carriage return. As with the character delay, a -non-numeric character can precede the number, this is a "new-line prompt" -character that will terminate the wait early. So if 'P' transmission -is being used to upload text to a BBS that prompts for each line with -a string like ' 23:', then by giving the number as :300, that would -provide a 300 millisecond delay, but when a ':' was seen after sending -a new line, transmission would begin again immediately. So, in that -case, a string like: - - -2 .20 :300 - -would get close to optimal throughput for 'P' transmission. Note that it -is possible to selectively set these values: if a '*' is entered as a place -holder then the delay value for that position will not be changed, i.e. - - -* 20 - -would leave the stop delay alone, set the character delay to 20 -milliseconds, and leave the end of line delay alone. - -Although QTERM always claims to have made the changes to the baud rate -and communication mode, they will only happen if the necessary patches -are applied. Note that for the second character of the mode specifier, -both lower and upper case are accepted. - - -C - Open an input catch file - This prompts for a filename, and then opens -that file for output. All subsequent data received up the line from the -modem port will be written to the file. - - -Y - Put catch file on hold - This keeps the output file open, but temporarily -disables transfer of data. A second 'Y' will re-enable capture -of data. - - -Z - Close a catch file - This closes the output file, and disables data -capture until another catch file is opened. - - -D - Display local directory - This prompts for a single CP/M wildcard -file specificier, and then lists all files that match. Note that an -empty filename is assumed to be '*.*'. When the files are being printed, -QTERM will stop after each screenful (23 lines), hitting return will -print a single line, any other key will print a full page. - - -E - Toggle remote echo - This toggles echo to the remote system. This will -most likely be used when the remote system is a terminal or another -computer running a terminal program. It causes all characters received -from the modem to be re-transmitted back to the modem, creating the -impression that the far end is running in half duplex mode. Caution -should be used to make sure that you don't set up an 'infinite loop' -where the remote system is also echoing: because then the first -character that returns will be sent out again by QTERM, to be returned -by the remote, to be sent out again by QTERM ..... - - -H - Toggle half duplex - This simply causes all keyboard input to be -echoed to the screen. - - -I - Print status information - This prints a summary of QTERM's current -state, showing the state of the various toggles, delays, what the -current drive and user are, etc. - - -J - Junk control characters - This causes QTERM to discard all control -characters received from the remote system that are not considered -important. Important control characters are: carriage return (0x0d); -linefeed (0x0a); backspace (0x08); and tab (0x09). In this mode, if -the remote system is sending characters with the MSB set, and bit 7 -masking is not enabled (see 'M'), then all characters with bit 7 set -will also be discarded. - - -L - Toggle linefeed transmit for 'P' - When 'P' is used to send a file -to a remote system, it normally transmits all useful characters: i.e. -all printable ascii characters from ' ' to '~', tabs, and carriage -returns. This toggle ensables the transmission of line feeds, for -cases where it is needed. Note that when QTERM starts, this is off, -i.e. the default is not to transmit linefeeds. - - -M - Toggle bit 7 mask - When this is enabled, all characters received from -the remote have the most significant bit stripped. This may be useful -when QTERM is running in 8n1 mode, but the remote is transmitting in -7e1 mode - the top bit will contain parity, and this strips it off. - - -N - New default drive and user. This will prompt, and allow entry of a drive -user specification (i.e 'A7:' or 'B14:' or 'C:' or '9:'), this then -becomes the default for all file operations. Note that it is possible -to user the CP/M BDOS functions to set drive and user during the entry -hook code (see QTERM.PAT), so if the entry code selects D2:, and all -scripts are on D2: just entering QTERM SCRIPT at the CCP prompt would -find SCRIPT on D2:. Also note that after the entry hook code, QTERM makes -a note of where it is (i.e. in the above case D2: ) When a chat script -is invoked with the 'X' command, QTERM will first look at the drive -given, or on the default if no drive is specified. If that fails, then -QTERM will take a second look in the drive/user area as saved after the -entry hook. The rationale behind this is to place all chat scripts in -one place: these can subsequently move the default around (see the '!' -section of chat scripts), or 'N' commands can be used to move around. -However it does not matter what the current default drive/user is, QTERM -can always find the scripts by lookng back at the area it noted. - - -O - Toggle output to the printer - This simply toggles a switch that causes -all data received to be transmitted to the printer. - - -P - Print a file to remote - This prompts for a filename, and then transmits -that file to the remote system. While this transfer is in progress, the -keyboard is ignored, except that typing control 'X' will cancel the -transfer. Note that the 'L' command may come in useful with this command, -check how your remote system behaves. - - -T - Type a local file - This also prompts for a filename, and then prints that -file to the screen locally. While this is in progress, a control 'X' will -cancel it, Output can also be paused by typing control 'S', which will -halt until another character is typed. If this character is control 'X' -the output will be aborted, any other continues the printout. - - -U - Invoke user function - QTERM can be patched to include a user defined -function, this is the command to call it. This subroutine can be used for -any purpose required, for example keyboard mapping can be enabled, or some -special screen sequence can be printed, or whatever is needed. The patch -documentation provides information on how to patch this into QTERM, and -also explains how it is possible to prompt for information from within -this subroutine. - - -V - Toggle VT100 emulation - This function requires the following screen -abilities be specified for full operation (see QTERM.PAT for details): -clear to end of line, clear to end of screen, insert and delete line. -If only the first two are available (partial screen clears), then all -functions will work, except for reverse index (scroll backwards), and -scrolling regions. Note that the VT100 emulation is as complete as it -can be, however the alternate character sets are not recognised, and all -the display attribute commands are mapped to the single highlight mode -encoded in the patch area. Also note that QTERM does not check if a -screen capability is present, so if insert and delete line are missing, -QTERM will still try to emulate a scrolling region, probably causing -somewhat confusing output. As a final comment, (especially for people -without interrupt drivers), try to set the delays after the special -functions as big as you can: to do some operations (like odd things -with scrolling regions, and some of the partial screen clears) require -sending a collection of screen codes that'd probably make you lose your -lunch if you saw them. In particular, ^[[1J - clear from start of screen -to current position will take forever if you're at the bottom of the -screen or towards the right margin. Caveat Emptor! - - -W - Toggle split window mode - This requires either the insert line and -delete line screen abilities be specified, or it can also function with -just clear to end of line. (see QTERM.PAT for details). It puts QTERM -into a mode where send and receive text are shown in two separate windows. -This can be useful when using QTERM to communicate with another communication -program running in terminal mode, because it keeps what is typed on the -keyboard separate from what is received from the remote system. After -selecting window mode, QTERM prompts for window size: there are two options, -'b' or 's' (big or small). This refers to the receive window: when small, the -screen is split exactly in half: 11 lines for both send and receive. Big mode -makes the receive window 18 lines deep, the send window is only 4 lines: this -will be useful when far more text is being received than is being sent. - - -R - Receive a file using protocol - This option prompts for a mode and -optional receive file information. Xmodem and Kermit are both supported. -Respond with 'k' to go into Kermit receive, or 'x' to go into Xmodem -receive. Normally files are received on the current default drive, -however by entering a drive or a user (e.g. 'k b7:') files will be -received in the specified location. In addition, if Xmodem is not -being used in batch mode, a filename can be given here. Non-batch -Xmodem has a default filename, this can be used to override it. Note -that a space MUST be present between the k or the x and the -filename / drive specification for proper operation. While the transfer -is in progress, a control 'X' will abort it. - -Options can be given by adding them right after the 'k' or 'x' protocol -specifier, before the space that precedes the filename. Some options are -applicable to both protocols: - -'a': Normally QTERM is silent, however if this option is given, QTERM -will alert on termination of transfer by ringing the terminal bell. - -'q': QTERM normally keeps the screen active, displaying the status of -a transfer, however by using one or two 'q' characters, the amount of -output can be reduced. A single 'q' just turns off the packet count -and the data transfer count (how many K have been received), whereas -two 'q's turn off everything. - -Xmodem only has one receive option: - -'c': Xmodem starts by trying CRC mode, and will switch automatically -to Checksum if CRC fails. However some very naive implementations will -work better if QTERM starts in checksum mode, this option causes QTERM -to do so. Note that information for Xmodem 1K, Ymodem, Modem7 batch etc. -need not be given for a receive (in fact QTERM ignores any such options -on an Xmodem receive), instead QTERM determines what the transfer type is -by inspecting the data received from the remote, and it then acts as -appropriate. - -Kermit receive recognises the following options: - -'b': binary file transfer - by default QTERM treats files as text files -when doing a Kermit transfer, this causes files to received as binary, -useful when transferring an executable program. - -'8': try full 8 bit data transfer - normally QTERM tries to negotiate the -use of 8th bit prefixing with the remote, however if both ends can handle -8 bit transfers, this considerably improves throughput. - -'x': use extended packet size - if not given QTERM will use the standard -maximum packet size (about 90 characters), this allows the packet size to -increase to about 1K, thereby providing a performance boost. - -'g': request files from a server - a typical use might be: - - kg a3:*.txt - -This will request a server to send all files that match *.txt, and they will -be received on a3: - - -S - Send a file using protocol - This also prompts, the response should be -'k filelist ....' or 'x filelist ....' where 'filelist ....' is a list -of CP/M filespecifiers: wildcards are permitted. Single filespecifiers -are separated from one another by spaces, and as with receive, there must -be a space between the 'x' / 'k' / options, and the first filespecifier. -As with receive, a control 'X' will abort the transfer. - -Options are given right after the 'x' or 'k', the following are available: - -'a' and 'q' work for both Xmodem and Kermit, and in the same manner as in -a receive. - -Xmodem takes these options: - -'b': use Xmodem batch (AKA Modem7 batch mode) - -'y': use Ymodem batch mode - -'k': use 1K packets. - -So 'xyk a12:*.com' would send all .COM files on drive A:, user area 12, -using Ymodem batch mode and 1K packets. To match names to various -combinations: xyk will give true Ymodem (known sometimes as ymodem batch), -xk gives Xmodem 1K (sometimes incorrectly called ymodem), xy gives Ymodem -batch, but forces 128 byte packets, xbk will use Modem7 batch mode, but with -1K packets. - -For Kermit, the options available are: - -'b': Kermit usually sends files in text mode, i.e. 0x1a is taken as -end of file. If you want to transfer a binary file, specify the mode as -'kb filename.com'. - -'2': when Kermit is sending data, it will ask for type 3 block checks -during the Send-Init negotiation. Unfortunately, the only fall back from -a type 3 request is to type 1 (i.e. if the receiver does not agree to use -type 3). This means that if QTERM is trying to send to a system that can -do type 1 and type 2, but not type 3 checks, it'll be limited to type 1. -However, if the '2' option is used, Kermit will attempt to negotiate type 2 -block checks, thus allowing it to communicate with a remote using type 2 -checks. It should be noted that this is only useful when sending: when -receiving Kermit data, QTERM will see the remote's Send-Init request first, -and will agree to whatever the remote asks for. - -'8': this will cause QTERM to send data with the high bit set as is, on the -assumption that the data channel can transfer full 8 bit data. Use this only -if the remote Kermit can also handle 8 bit transfers. If the '8' option is -not given QTERM will try to negotiate high bit prefixing to send 8 bit data. - -'x': allow extended packets, this is the same as for receive. - -The last two send options are used to issue server requests: - -'f': finish the server, - -'l': finish server operations and logoff. - -These two do not need filename, and they should not be used with any other -options, i.e. the response to the 'Mode?' prompt from QTERM should simply -be 'kf' or 'kl'. - - -K - Program a function key - This prompts for a key number and a string -to be loaded under that key. The first character entered may be an -'s' to specify the string should be sent slowly. Normally function -key strings are transmitted at full speed, however the 's' creates -a tenth second delay between characters. Following the 's' (if given) -or as the first character if no 's' is given, must be a digit between -'0' and '9': this specifies the key number. Finally comes the string -that will be loaded under the key. Maximum string length is 14 -characters, longer strings are truncated. Backslash escape sequences -are permitted, see the description in the section on chat scripts -for a full explanation of what is available. As a few examples: - - s2hello\r - -would program function key 2 to send 'hello ' slowly, and: - - 3userid = 17\e - -would program function key 3 to send 'userid = 17 ' at full speed. - - -0-9 - Send function key string - After 'K' has been used to load -strings into the function keys, '0' etc. will activate the -function key, causing the string it contains to be sent. Note that if a -function key string contains the QTERM character, it will not -invoke the function in question. So loading \x1c,\x1cq -( , q) under a key cannot be used to provide a -"hangup and exit" from QTERM. - - -X - Activate a chat script - This prompts for a filename, then it reads -the file, and does the chat script given. Following the filename can be -parameters for use in the script, much as SUBMIT.COM allows parameters -to be passed to a .SUB file. If a chat script is given to QTERM as a -command line argument when it is invoked from the CCP, then the following -command line arguments will become the parameters to the chat script. - -A chat script is a means for getting QTERM to automatically send and -receive text, this can be used to auto-dial, connect to remote systems, -log in to them, and do whatever else is wanted. A companion file -QTCHAT.DOC explains the workings of chat scripts. - \ No newline at end of file diff --git a/qterm/files/QTERM.FOR b/qterm/files/QTERM.FOR deleted file mode 100644 index f522933..0000000 --- a/qterm/files/QTERM.FOR +++ /dev/null @@ -1,13 +0,0 @@ -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 - \ No newline at end of file diff --git a/qterm/files/QTERM.PAT b/qterm/files/QTERM.PAT deleted file mode 100644 index 8972463..0000000 --- a/qterm/files/QTERM.PAT +++ /dev/null @@ -1,333 +0,0 @@ -Patching QTERM for your system. - -This explains the patches in QTERM, and can be used to patch QTERM -directly (it is written as if being used in that manner), however -it also provides an explanation of the subroutines that would be -needed if a QT-?????.Z patch source were to be written, based on the -template QT-PATCH.Z provided. - -The first thing to do is to back QTERM up, and then invoke DDT, SID, ZSID, -Z8E, or whatever your local patch utility is, in the following way: - -A>DDT QTERM.COM - -DDT (etc.) will read in QTERM, and then prompt. The following is a list of -patch areas where QTERM should be changed to reflect your system. Some of -these are mandatory (i.e. QTERM won't work without them), whereas others -can be changed to null subroutines or empty data without preventing QTERM -from working, it just won't have all the features available. - - -1. Modem input status: 0110 - 011F - -QTERM calls here to check modem input status. Return with the zero flag -set if no character is available, or with the zero flag clear if a char -is available. Generally this can be an input from the usart / sio / dart -status port followed by an 'and'. - -2. Read modem character: 0120 - 012F - -This gets a character from the modem input port once the input status has -decided it's there. Return the character in the a register. Generally this -can be an input from the usart / sio / dart data port. - -3. Modem output status: 0130 - 013F - -Check if the modem output port can accept another character. Return with the -zero flag set if the output port can't receive a character, or with the zero -flag clear if the output port is ready. Generally this can be an input from -the usart / sio / dart status port followed by an 'and'. - -4. Write modem character: 0140 - 014F - -Send the character in the a register to the modem output port. This will only -be called after the output status routine has returned a non-zero status. -Generally this can be an output to the usart / sio / dart data port. - -These first four patches are all necessary for QTERM to work. The next few -are not necessary, but they will be useful. - -5. Start break: 0150 - 015F - End break: 0160 - 016F - -The start break subroutine at 0150 should initiate a break condition on -the modem output line, and 0160 should clear the break condition. If these -are to be omitted, then just put return (C9) instructions at 0150 and 0160. -Note that the Start Break routine need not check that the transmit buffer -is empty, since there will always be a 1/10th. second delay after the last -character is sent, before calling this subroutine. - -6. Drop DTR: 0170 - 017F - Restore DTR: 0180 - 018F - -The drop DTR subroutine causes DTR to be made inactive, and restore DTR -returns DTR to an active state. If your modem does not respond to DTR, but -can be made to hang up by sending a string, then put a return (C9) at 0170. -Use the space from 0171 to 018F to contain the string, with the following -notes: at 0171 should be the length of the string, to transmit a break, -use an 0FFH byte, to cause a two second delay use an 0FEH byte. Hence the -following could be used to hang up a Hayes compatible: - -0C FE FE 2B 2B 2B FE FE 41 54 48 30 0D - -0C - length: 12 bytes follow -FE - delay (twice) -2B - '+' sent three times -FE - delay (twice) -41 54 48 30 0D - ATH0 - -If neither DTR nor a string is to be used, then place a return (C9) at -0180 and 0171, and a nop (00) at 0170. The string is used only if a C9 -is found at 0170, so by placing the C9 at 0171 the string print is -inhibited. - -7. Baud rate setting: 0190 - 019F - Baud rate table: 01A0 - 01AF - -These two patch areas work together to allow QTERM to change the baud rate -of the modem port. The baud rate table holds pairs of bytes for setting the -baud rate to eight different values: 38400, 19200, 9600, 4800, 2400, 1200, -600 and 300, in that order. In these pairs, the first byte will be passed -to the subroutine at 0190, and the second byte is used to enable that baud -rate: an 0FFH in the second byte enables the rate, and a zero disables. -So if your system only went up to 9600, (using a value of 1 to get 9600) -the first six bytes in the table would be: - - 00 00 no value for 38400: disable by the 00 - 00 00 no value for 19200: disable by the 00 - 01 FF 01 is the value for 9600: enable by the FF - -In all cases of enabled baud rates, the subroutine at 0190 gets the -appropriate value in the a register and should use it to set the baud rate. -If this is to be omitted, then just put a return (C9) instruction at 0190, -and fill the table from 01A0 to 01AF with 00's. - -8. Communication mode setting: 01B0 - 01BF - Communication mode table: 01C0 - 01CB - -These two patch areas work together to allow QTERM to change the -communications format of the modem port. The mode table holds bytes for -setting 12 different formats, selecting number of data bits (7 or 8) -parity (odd, even, or none) and number of stop bits (1 or 2). In order -the 12 values are for 7n1, 8n1, 7n2, 8n2, 7e1, 8e1, 7e2, 8e2, 7o1, 8o1, -7o2, and 8o2. The subroutine at 01B0 gets one of these values in the a -register and should use it to set the communications mode. If this is to -be omitted, then just put a return (C9) instruction at 01B0. - -9. Reserved for later use: 01CC - -This byte is reserved for later expansion, and should not be used. - -10. Protocol transfer size: 01CD - -During protocol transfers, disk reads and writes take place every 8K. This -is normally possible without causing a timeout, and reduces disk access to -a minimum. However if your disk is slow, you can drop this to 4, 2 or even -1 to reduce the size of transfer, and hence prevent timeouts. - -11. Processor speed: 01CE - -This is the speed in Mhz that your Z80 runs at: 4, 6 or whatever. For -a 2.5Mhz cpu, use 3. - -12. Escape character: 01CF - -All special functions of QTERM are activated by the use of escape sequences. -At 01CF is the byte used for the escape character (the default is ^\). Any -byte can be used, but a little used value is best selected, also using a -printable character (' ' thru '~') may have undesirable results. Note that to -transmit the escape value itself, just type it twice. - -These previous three are necessary. - -13. Signon message: 01D0 - 01EF - -This must be a string that identifies your system / terminal. It must be -present, and is printed when QTERM first starts. It should be composed of -printable characters, and terminated by a zero byte. - -14. Clear screen: 01F0 - 01FF - -This must be a string that clears the terminal screen, and leaves the -cursor in the top left hand corner. This should also be terminated by a -zero byte. - -15. Moveto: 0200 - 022E - -QTERM requires the ability to move the cursor around the screen. It calls -this subroutine with the required coordinates in hl: where h is the row, -and l the column to move to. The top left hand corner of the screen is 0,0; -and the bottom right corner is 23,79. This subroutine will have to do -terminal output: at 0109H is a routine that prints a character in the c -register, and at 010CH is a routine to print a decimal number in hl (mainly -for the use of vt100 and vt220 compatibles). Note that the above two -subroutines may destroy all registers, so appropriate action should be -taken if needed. - -16. Teminal capability bit map: 022F - -This byte contains one bit set for each of the following terminal -capabilities: - -bit 0: (01H) end highlight mode -bit 1: (02H) start highlight mode -bit 2: (04H) delete line -bit 3: (08H) insert line -bit 4: (10H) delete character -bit 5: (20H) insert character -bit 6: (40H) clear to end of line -bit 7: (80H) clear to end of screen - -17. Terminal capability strings: 0230 - 026F - -In this area are eight strings, each of which can be at most seven characters -long. They are the strings to be printed to perform the terminal capabilities -mentioned above. Each one of them should be terminated by a zero byte. Hence -at 0230 is the string for end highlight, at 0238 is the string for start -highlight, etc., with 0268 being the string for clear to end of screen. -Programs that use these will check the terminal capability bitmap at 022F -before using them, to determine if they are available. - -18. Entry subroutine: 0270 - 0272 - -Upon entry to QTERM, this subroutine will be called. If it is not needed -then a return instruction (0C9H) should be placed at 0270, otherwise there -is enough space to put in a jump to code that is to be executed when QTERM -starts. This can be used for several purposes: if custom initialisation is -needed to enable communications, or select a particular baud rate, or -whatever, this can be done here. In addition, if all chat scripts and disk -access is to be done on a specific drive, then by using the CP/M BDOS -functions to set drive (and set user if desired), QTERM can be made to -automatically be in the correct place to find scripts. This is explained -in QTCHAT.DOC - -19. Exit subroutine: 0273 - 0275 - -After an Q has been issued to exit QTERM, this subroutine will -be called immediately before exiting back to CP/M. As with the entry -subroutine, if not needed, a return instruction (0C9H) should be placed at -0273H, otherwise any termination code can be added. - -20. User subroutine: 0276 - 0278 - -The U command from terminal mode, and !U in chat scripts cause -a call to this location. This can be used to do whatever is wanted, -enabling special features, selecting different ports for communication -whatever. Note that at 027C is a jump to ilprmt: an inline prompt -subroutine. If the user subroutine is invoked from terminal mode, then -calling this subroutine will prompt, and read a line of text into the -buffer at 0080, it is terminated with a zero byte. If invoked with a !u -from a chat script, then the remaining text on the line will be moved -to the buffer, creating the impression it had just come from the -keyboard. Following the call to ilprmt should be a prompt message, -terminated by a null byte. NOTE: if no prompt is required, then two zero -bytes are needed. - - call ilprmt - db 'Prompt message\0' - - call ilprmt - db 0,0 - -are examples. This subroutine should only be called once per invocation of -the user subroutine, since a second call when used in a chat script may -have unpredictable results. - -21. Keyboard map: 0279 - 027B - -All keystrokes read from the keyboard are passed through the keyboard map -subroutine, so that actions like mapping arrow keys to VT100 escape -sequences can be performed. When this is called, the value of the key -just pressed is in the a register, and the b register is zero. On exit -the value in b determines what action is to be taken. If b is zero, then -the value passed on to QTERM is whatever vaule is in the a register, so -that placing a 'RET' instruction at 0279H causes no effect at all. If b -contains 1, then QTERM will assume that the keyboard map routine "swallowed" -the character, and instead of passing it on, QTERM immediately polls the -keyboard for another character. If b contains 2, then QTERM takes this -to mean that the keyboard map routine wishes to output another character -without further input from the keyboard. In this case, QTERM passes the -current value in a along, then calls straight into the keyboard map routine -again, without polling the keyboard. To provide some examples: - -A. Assume that your system has some function keys that send the following -strings: - -^A 1, ^A 2, ^A 3, ^A 4, - -and you wish to map those keys to ^H ^J ^K and ^L, with ^A followed by -any other character being mapped to just the second character. The -keyboard map would start by looking for ^A, if it saw any other character, -it would return it unchanged with b equal to zero. On getting a ^A, it -wants to see the next character from the keyboard without sending anything -on, so it sets b to 1, and is at liberty to return any value in a. QTERM -immediately gets the next key value, and passes it to the keyboard map. If -it's one of 1, 2, 3, or 4, then the keyboard map sets a to ^H, ^J, ^K, or -^L as appropriate, and returns with zero in b, otherwise it simply returns -the value in a, again with b holding zero. - -B. Assume you want to do the reverse mapping: ^H ^J ^K and ^L to ^A 1, ^A 2 -etc. Here, the keyboard map is looking for ^H ^J etc., passing all other -characters unchanged, with b zero. Assume it sees a ^H, which is to be -mapped to ^A 1. It sets b to 2 (to say that there is more to come) and -returns a ^A in the a register. QTERM will pass the ^A on, and then call -te map again, at which point it would return 1, with b set to zero this -time: this is because there are no more characters to be sent. - -C. In the most complex case, assume that ^E followed by any other character -is to be mapped to two copies of the character, followed by ^A. In this -case, all characters save ^E are passed unchanged, with zero in b. When a -^E is detected, b is returned with 1, to say that the ^E was swallowed, -and when the next character is passed to the map, it should be saved, but -also returned, however b should be 2. QTERM will process the character, -then since b was 2, it will call the map subroutine. The map routine -returns the character again, with b set to 2 a second time. On the third -call to the map routine, it should return the terminating ^A, with b equal -to zero to say all the work is done. - -22. ILPRMT subroutine jump: 027C - 027E - -These three bytes are reserved to hold a jump to the in line prompt -subroutine, and should not be overwritten by the patch. - -23. Patch area: 0280 - 04FF - -Since the area provided for the above patches is limited, it may be necessary -to use more space. The block of memory from 0280 to 04FF is set aside for -custom patches, this can be used if the individual spaces are not big enough. - - -Once all the patches have been made, exit the patch program (usually by -typing ^C), and finish up by saving a new copy of QTERM: - -A>SAVE 69 QTERMNEW.COM - -In addition, the patch area only can be saved as follows: - -A>SAVE 4 QTERMPAT.XXX - -Which will create a 1K file containing all the patches needed to make this -particular version of QTERM work. By doing this, when a new release of QTERM -needs to be patched, all that is necessary is to read in the new unpatched -version with DDT or whatever, then overlay the patch area. This is typically -done by typing: - -IQTERMPAT.XXX - -to DDT, SID, ZSID etc. to set up the command line to read QTERMPAT.XXX, then -follow this with a: - -R - -to read it. This should overlay the saved patch area on the new version, -hence doing all the patches at once. Then exit DDT with ^C, and do the -first save shown above to save the new working version. - - -NOTE: With V4.2 and later, the patch area has grown yet again, so again the -overlaying of earlier patches will not work. By and large, overlaying patches -in this manner is not recommended, it is far easier to work with the patch -sources available, applying them with ZSM and ZPATCH as needed. However, the -V4.3 patch area is the same as the V4.2 patch area, so no changes are needed -to convert from V4.2 to V4.3 - \ No newline at end of file diff --git a/qterm/files/QTERM43F.COM b/qterm/files/QTERM43F.COM deleted file mode 100644 index a4e93349604dc9b77d6538d40e16cd87b9d8af42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17664 zcmeHvdt6-Az3-kG7?^<>7|3HYkhnIJ$7Tp*GJ!BoVR+0CqH#h5%nS1%Kz6tgh5(Tu z$t2d+oW4%I=Nzr)^r5Fct+m>s^)cGCDP%%AJGgDAl9Q@w9qpi&4vI?DST^^&_6!Mn zKj+@h{pOdV6+WY+CadW{()NC7sGxhM#cc zn3SmwA3slOgF4k0`o&-8viVqPe!lFw_8`LB+ zHLq=~eQl#F_vM=Ymp2}Ld82Ff=kbGf^q}o%M3*nNFV8ZnB^=vEbUYdua&3{GRJlr| z`{xfS-oEfiVu1Yj?|)+e7zj?~1fR=}4rm#tnz1LU?8z#7ib~p-98 zaf~|eCfnalhugDqR|;H9i>b9m^)S;FeNyUD)3MS__U#STbzVZY6&0>OV9@jKJmU6s z^>?=k2YU(eY^@<=-OV?zBL$?gqk|~bJ*2y}r?va8))s?)TWfbuo3E1`@O2YLO3UFc zsw7VirZwoRdzzcNT1oT4rtYTZ-qvo?)}wThHdv&oZ2ar&Qpw`Eq$FdO)R1KVmDm0c zUL#pPM_*p>+E018lgyqC#L_UC)jcVF&k{ISZKN=BR}&+y1beSX%1E|$d;9@DQEIZV zS@y#o=e4Sv9LdsmwSkaSnuP83t4AG|YmeHmRhd4mGMDx9>$!{WGcW#=g*S3to}yyz zXH_KO%(;KGoFTEfoIk7LQ=NBs0{!Q{q`Mq^C26uqoGk9=ep;o?mNLwHEZZz+EaRcE z^qKxkHd%l16#jgx7*k72mfzmoV#)3Hh*u)B5lN$(4PObz%DM&R^aW+Ipln-Eu2@js zx}dyoLAh%|`Q(D~{R_%ZE+{i<1s(-A3V_;J0`r6eIlcDw5pinCJpmA zN%d*9emO`IveG{hxi2S~G%A&ji9RU?zmXLDep2wqN!({u{=kq?yL>JJi5Bh)h|)Kb z_|G;l;^+%IjoM%$Bb6it_`NcFp)Y+eFwFhEs;HRXSbUn_I3TZiF?*R@_+r{J)-@xo z(}gMWkMX96^gr~|vSG-%-4h78^z2*CZ73X*4Wx-y9piUNcP68L%V|DwKzb#~RU{22 zU*_)g6c_P{XNY=(ireb>NlA#?iDTy3(TyZo&Lruh=SxJ{#3!JfFnV8!$Ze<1MogP1 zZO42Rgy~x6?QsH_k=CY6OD`n{xX0b28$;Hwd;2W8U-w2E6RQK!x{~st8EO4uDNi>o zN>6J;(r>lV#L?hYaaVz4 zSTPm|acEN}R=Kyh(oh!=on642bId&>jcWPNri1^fm6JpAiSo-bxhNY#vOXm1LM5WY zvfD|U(CO=LZ2`Ntb@m)NaGhlo)I}_X)r&@ zxmLY)BGt}%d0L#P;Gg2|@JM4U|3+~{dM0{EJisHnl08!m3p*2sx>AD zAJxh_{*rv+qD(GFP!*otkj%^$Y0-6RE5AmZ5KHz5V~;HsQif0FbU{cIoo6=Ie7IkRU}yt-7xOd^-%HJQC&JRk+Lu^MZx_xSQ! zDQxf^TfP(z!I|ToAiOc!X!agEZBsSh{cD?Qe{QZ99dSan&R)-iYKSt|*%rOC!4tUf zsJ35D=5oCx$zS$KACNI+;6ITQNQ!^rlk>^))=(cCl#|F}i!&RCpmr@ibK!l1UtY@p zyomi7_APOo7s6LvEIPB$;dsBCO;QK#E4}s=-coy(R|Hn&6CsDmn9rHqdzR(!NsykW z$;_=-)GycCG)3&!ESQiGx&p6}mk!ZQRD?#P_YGX_5{hA9EchA4o6^GH$635eXWbd1 zji6h&xF~-E!#0)?f4|)5QuFr>V(EU_!Y9i-jwX*J0?Z;2<76+%aGJem!0EFFHm~@D zyp$p~cdD8s=J#1xO&Q5jW~LiOm-h`U#NJYyswkM3A|ECO;4ycZ*LjoIPO!COL)K+p zVAn~!(iuaLNhu@k+$wKwo|j{o+*MweMggOo+yQKeAXN5wbKrt4r;L0UK@YmMk)r`V zbwtX~QRreg{iDhRBZ(8RLYzhe_KkKnh@tryI%PCaG96~e`{gf@Lgxx#&4g9`fl$q0 zU&*)AXY-%y6Rmk((<*PYj%c$ifJfwbFEBJiuPa+B8u$87ox1PTy?vCXHZWY4TbpW8 z?loSMepMXDJ~3RBCJj*!tHI+dLQs=(@NX=-+q%fa5gOmd@AV-&Xry+#|y|~<+XVENuL<_ z;BCX8c>3~yXbudOidM7t_^%6>5>;#PF}-q729TmI#w%bZYnFGOm%?Gd{qahd%KosM z`+>Vynr87Rvem}qO(0}F^{ZafNv3KubgJS^Zr>KnV`|!> znp-^B7k$!o!oI^ZBK4Yw9Ua^olwCfs$QD_e4gTsUN zFMF?W`CjKSZ_SnGw(@7MeIxx!Bz!b*?wRx}{;dJNR(gr2f+&G3y%LdL&ot<7^ZDA_ zIt8jfItgs=rD2|Xy5q{0t$}EjsorZoL-L}J{PkMe z@R;+2cg8sYE?7ioRTG0Ur?;uM`5%7MsI9I+bJe)oz0-q7n8n0?Q75!uM&_F=x7QaQc6&K}Xmu1781-yKZx6Ap4 zR~~Sv`p`$(Wx8xXMj!S8@8v^z-B_X*TR68fi zEqKVHd;pJBQQnV7vMBfBp%dj!JoKX6jfX*$Tk*&i<)frvM8&B6R602_FPUVmBjpmo zZ{pGOGP~})-ZIL?{&}i4{f{g`zhpud?=wn=(C z<1L7!$?)Jvjgc7#T*=S#38|Uv%wWw6d}?Gw!z~x0FAS4}@bIuWW{E`WMm*l|TjQqX zf<_a4erz~A4%!G0i!{}KEi$yW?!OBmnvnm z4bY75UBYmQty%ssn`9Z6x-v@N+OT#xQ*^1t_SyLs>Gzo%))rmTL#_RN=6Poyw#j~b zSq{x$dV&MIE7(FM!0%!bo1Q+hB)-{iIGU{>yT8#mh`D0jK{~_0e+uLZGYSi z-5e;M()7*5xfATK$T^6BGTw+v7^nw*9h6S}azUduT<%0Ld#*Jyxrlis_eix@_vPS(pi#Z@1 zR`-&ouCCV3mU(F_8i9sQNn_j!&|3a;`Oop2{Kb|4e{CGi64nb{ z4i-ax-U?4>WE|$j*zm}>vOev)Sb^~*lQlV<{tn;(01dk{qnneeH<)4YL6fg)I?_VA zu|D*7?gRsx=F_I~$;W*bFtO>P8!{tay?d$v)wt#Ye4T9N^(GY~?OZxwf6=YfxlqSa zmNYebGHjas!3>KDY7y=6`&f@0+QYQVlRpY$8K_uS04z;)(g^-6pdcC z@ze2P*V5{u^uj&i9?>TIPg_WW|5yAWcheiIt@Ey?j6nes63xt*f{H;p?tX#rdWCy<- zL%o2chctD!l14|#?#AlcExQ}n*>_Xeay0shy;u6w@)lUIwa|F0$xEXzv+B{;G}v*1 zypGq(c5-@jG(P{?+m?Vahg4a9=_U#lo%%XJYseZxCsjnTEg7ewl>X3ej_hxrN8}_F zg?FU#EbcdyD~aB8#;ejZ8_J_k8qE+Jl#bJKq~GTlO@sEQy))35DE0C?XPm$Gp0AMV za;&KNTaL?#;&fVC8aM2v=c7%Qa#>el1hrwU2Ic&G|EYZcx4+H(!9Ag&J^XY)>CA+N zyW}R2eymiJW6WTGFb&Z-p*aWD1*+ss_7a4?w@jRX22qzY98UjGv_1pkf6hy- z@<~%8qe=$@=RW6kHZpRAfAgsQAY(rU>F_oSw*jAg$u@e1SC7j6sgr%BrdQo;5gY}k zcie0qx6Nbv$jx%x?H&{3VY9e8kIC#|O|ali1s+x>y{G3IJf?DL{?3e3M^{XkO)G+k zw01V_hvLAn20%+%+InKI5NMF7Z?j`zW$p7=`#%4as!wzthV?EzWPwkmJnJ%V9h7qO zfmKEDoL60R{=j|eGGt${)cV>wTAG`>TPSYOx-APg z4pn-mAwGIBOtD2kaLp`Gqz;8TPi65afQHzDe7WWo{1eYw(M zkZ-pYT&k#nX4Zb??MY>^qjXl#!<049@+{EWcbxR2Cfj zn^_TVH{&W-r7+Q_a5b91KuhF8Ttu*IEzm=v8ITF7nThOQ5pGvOI8cVy}pOMW{}HYZj<2_bD$3QxS1S(>y({0qI2>pYd}0_Jbh!EbCL=$sS9$ zWfHDD)vy?@vF31Cij%%d8DYXUn+ADDDy1@tVh!I1yQF1$XdF*$3?7KZsmGh20OH^wj zm^tjc(^JMLLggjzqnX?7@tazh?g0M;`=6i^gT5Zl9GpLEyAD*0UnvwOz+jMEI>!h0 z=e=MX+h3i}du2U%OPb9d1n6b34Cp1`>2AAAxd1>HomtjKW@YXRUV4if4Ls}omY2Je zITI?|YcxU}IPYXQ6=PgkcA+6DkNuRAGoJzZ3r$4T3nYgXwdh?y!A)o5&R6bzlb;#L zfK}X(gv(@4Lzbmm0UqobR}83=NfqLJ9)Hgt?nZcdl!_Y zMLt#fj8@RPq@*j{NRDNrCHPD_?ODDIWI>IrQW#nAOHw0=d?2Fo?x#c7>p@SkdVuA8 zNmY}TJ}brq8eI4RBY6?t2?#Ox3LCncI(rVa^^(>v`22OTd#)Uh0 z+RF_nfm)X+R-P+vi>+aX-s+HyjpCCX| zcDEk#LBncoKIk*(H!W;A*wk@=v>fT`Xg#Xa-J-O_HicWg7iMe^R)!^esHqn*5rh6# zrN^yDI@?LJud}xsQO)bokRF|Gv(kK<57v1TIdG&CN+}f8_EuP(w=GCDKtlqj>hqw*JehlpWz<&w606pyn{T8L6zO@4zB%Q5&q^0#h(~*u|(n5I`9@rxY z;OJ@>4)-1DrAUKr(nZgywcDWIs*4vM?L88`pOdVL7!>gts~@zYi&`+Nt3zCr2H(2uB5Q~Zo*KM=(oO3N*sclp{|71*!i z3n8f3s2CEqHLSDQNcEv39m*N#blVrU;`D)}zL-0jl9oZgLus#!8w6MvC)7)N6d#LD zw^M1|`Z;1E*R6?NN~@b%3k!%1;Mxjq#pD*F%VLs3@AOuoGfH z9RgH^&{i68x1<3A9bFvf*xKAq1DxOnFo5F!`rM`@w=_jJOXkP#!uVWjL+ZdWN`GY+ zWHnuGn!3r1tEoqpPFZ!G*>IrBMz?xOV;hN)VCy^y(v394H=?i-BB3!}Q-;;kCVF|2 zOia85Dx4y=Zji}58QhR&@x%J2SNd}$MwVT`4Nc`RA16%30~p|SsH9RzAvWIu1a}#@ zLlAz0Zjm6LAbR7T8Ej`-Tk%un8bJ)})nvR1xyytX`;MWXQsP%6*uPa3~ap&8__ecG8hnIOXPj zuyS_D$WYbLkqA9eDdYlRu()DSeU5E9j~v=hK55`ukUjQMYfw0PCHMIx&li>ZZxO((#@PoAMwHp|%97*2^glv|H> zAq{{A|8c5d5PGnl92hdb;c4jV>IWY9YPj$EtQRn=nc`nA9EhA4U^Ew{e zI~^eD)2D}6&GhMu(z;dQv9g(WWeZ81J{@A;lU?MU>Foo*V*jEz^<9;G1rUScQ&Jo}Vb%j!wqpf2 zps5?~;@-Qb3gDa33~e8W(m6)maeZR_I8s4ed`!27DhE>EW0{V?zV22Qf>&^GEckXt z=J@`0|HO$5IB(z(b$kRX=lx7J>Rc_rj;PAxRp#1AtK`lL_h;}gr$?!&rYsuUFF2?J zXi-&B{oa%(Xw`!m*%`o)l^0Y@h3PQ?bC8783^u`#N(R#*cpkFU0(Q!^{qi3EN!fWJ zBM(QjaVj5JUjl^o4x!C;LR&UNXC^#m8@?PtSRmgY7z>S~lCtXu5p#efhQpNo@R|V5 zoeHzBgPs)c_sl%=GwQZB?EotDrn}N;HC8V26goBG=Pl>h4fg07)4l zcUXDZNQoJ4WEh**@~QtA(ckfGY?0TRe=%_a-eu95&>EOA^NABDaMHEY{&?xJN5uJE zBF0jau*nb_SpXv9C}D>dAP%z;s?+~dE&&1l_W{3(jk#y@Ci{mY_;%9<)i#f zVDURT+dF-Ior-!*C9nS~kq_`Txr1Lb2xoP>S=zk@J{8lxJ=4*;Fj+5%X#b6uO+`IGEvpzTMR4yy$Ba{7jrpd7w^;!;81?Ac-FeiD4!{(f z6n6h`7_Qq9*f-hXVORU}2)TT1Et?r%cu}SF<=$JYel`w8tUPYzC??QTM0f6#?;GCF63t=qwW=<0I0;*5R?R=t{ti z`bX>V#Sz&0Q!FuBAMotm9<6`CbL?4O_3p6gwggyNa8995_#(B!=%Ku4Aisxa=4mYi z^l!D0$bYojJ`*Jy8-kpM{EoSsTgOg4JTz{!K&(d_uXwZX{!yv(&t9S`(`s%SHIHVe zf0`MV9hxDJHN**KEf2BZ!&3QubPg1d zBSVB}<4OSzktDhn#Jcoce$ZWoMhuD86ADa-x}oRY&+(gTj80D7&$y;B37GS``Lj(LqxDx1bpDQK(EevHy$PwK z9Y0 z!kzXWwscusnq+OVITKD%wW|P(8y4ZYT7)Rsq+HIw4Zqb};MYD&BKz7~N0V#Vap{eG zF61?dUezMX^c1KxMV^=P%eb$5GBc?c?8*Eh_|qIOBb}*IZgh-pu(46)wg<<+8xY{r ztrLPN2@X`v=$g@G>DML!P4MALiLKgFxfzz4Vvn^jA}Z*e-PP3G4*zpZpHgZY+77is z8zrsOpRLrmsovakJmR|s-FxbN)(_9J;C3OfqfN!f!!sE~bA-i5+MA^S(U3WdV8>_xc-g|4;i z@21=$=MwxyvffpBQR*+2-m<#tqnk?wlYyy{zO_!;WUrC8kfk({0?$NgSpf*Gus}Ld z>8udM0Dl!8@f2yM1ht&QRVm6l$yH~m@B)#f_lgGr9#<+9jXoz8RXVE$yGL+sT)5!k zV$*ND+(7|e%0&(cOIT0I8w#nXa*?A8)EKR!u`oic_uATDEvz9_E z_So6fLafwZI#CXkU@7S@>!WU`Q0m$hazSgpzQJgtQ=k)SRRi)am&f)*75mtYR@W|N z;|$~ee_85Xt83$st7^e2t}1x;=~N34_2L)FRVmjSzIk`>sZ4)qL5P!8i~;Y2tiK?!2t4LlR*t2iM|4m zL=3|zwvS>!Sh#XZa4EJhpedUue}TL-4sgaO#ZiKB?L_X=F0ypK+pl8X9wU$L-Co09 z0eO3sZ9D|JG2PkbTqy(wn^P<2JLGFX=n{t7kmmKePfrgbB*s3Svd+_f;{A^ zvw9n5e2hHt#m?6cCFKuQHVVCmte|W2>^yL9&jWWBzy*73lDRlIVv{%Wf5H|XRp9&! zdFoG<~;qx?jl4J2p|SR5|wx@e-tnvr?eFOu==?%CtHT%PR6Q zzyyqdRO(vq*ek2}Db6E2cqW$dN8#|!QOK3v@ zopf(}H>ia}XIp`mv91@61x)YHk)-2tmP5Pz?^(I)g`*-EgMAYlJ_^bAdbDx9U|k2X z70Qg(uNOqXcv)73E|I<0OVW~($r!$8PNfVm;Cd&In6$8sikXnjtEX|lX`qWUF2#)HrXiyjX z-Rmq60wfKVNq|op9pDpDJ$ib83Tp=ovt^O9N;u7Dp#3!Rx_SI+S^dCN#a`5-YmY?} z0qO?fQxE@=JTM?@ZTCAj3T6D)%lK1bWQ6iBM3}0WUB_({keac0gT_=NXthxFRK>$% z8JQ0w0QCWFlQn!=v62hENywtnOLmvFMmUz_s6Wo#B50A5Y_p8|Nj{QA5D3~RsI(2r z91bH_Bbr3gBt}VRA4oBEpR8(_5p_nbFN5T~dCbvM6%~Ly{b8R7p4a}r#C$cMDt6(Xj zKUXdICuG^qt2eCk+kJw9ZncZpy98JRfgz5N+`~d{kFu$VHXR3`#TNk^7+~?kupfy+ zyBuoQF8eyczFvTFPviuf+La(LN9}TZnNnr9;xScW&sW~49cZvuqAVqsps&SVg|bZS zZh>EmDhI1<%AnwBxzjDktH@G3*fd(+2}+~%rc*XBXfF^fw7Z|AVh>B?^++yQ#~LXX zTy~-=MF`oo&R#v=DT&UnV-sXQ(b#!qharm}VJp8S&G8up9}bC21Uz_b;_om!<}}A} zd6=%wWw9B@_DMFV5$5}#AU_iA@wzR zlCud#lk76N36+Hcy9icb0+PHE?Ii-6gd8pn3^fb;m~scNp&GN|3Eo0u76;Il8HVTT#xp5$1j1w-8{^qx_g zl=KU7pxbvS9*%$yioIgaRFpJzpC$bxs`Ab|6XR-cF9HitR=*Fc3a3U_3-GF(C5)?* zuE|IS7t96T{_YosggL@?lX z!M;s!{ssxr+ETo*MtZwaW6gTSo70kxBL%OAcTxM^_sZfr(aQtTHcEFwL($X6&0Y8HxR+RWsn~mx^+k{eN z$VIUoZ>^`=TY_lWd=!jE_2YWHVn~Zrqez?wz|F71;<+~lDkg!Gz>ruA_5UamWGGJ9 zbAW_XF}ZtU+^)xNu#pbD4}!;Vi5@@!D4?RC*}6xdmTjW~vwBdZT+Ju0qFcu~VAJcd z`5A27KELUA0KiTK^cbj4vS9Hz*ucmzdlhgf3pHWNekdJsBC*j^oHtJt_1F>AuxmRHLwnA3+UhgHAeXj$0t5{Mwy`+QAOW@SiI}M7#-X6Ajlp&giW6X zsc78?4**RL2*3LAmohRHi=Mp|Bx`CDR3|8XP%Mz5|JtbF1jr(4%Tzi(2ETteI>o*R z2y-W{Z`7sYRi!v{=N>`1f7hZ+gU0*m>VUxv2-fMwsE{)AN#jyx#Tc82JN3T4umaGZ zsq%wHC?3?2zn`i>6!R`U$iT5)*7A4DEKImtDlSysJR^O%!v2*n(L9|rTD``kP(Sj84&E2KaU8Q*bGYF8RxHPfC6g~{nlBJgPH#eAR zyB^gqAPs=>SwM6h!J|a<-&5;{M+u)P4TINr2@sL?9RlbcV${Ad}VQu`p961z}>bW}w$IWuWg-O>21{|D zXj8D)f3`Z30jCjX5(>7u{DHHDjDbV26(LeB&25xSAx)HDtLqYIP`4KpsDV$f)?KMbG2f5WvWOV93i zf&5B;O4>@XS;<}gYMTpVDfi>Z0x$}B_44HSk#T#3BKR)}R|Jhg@@8RIX81^w;o?w^ z1go=&l&!@$0YlIH*ZlC9LaiSt$PYeUs=)CizX9t$kE?~P@*oCJtb_kf6bpk{OB`)VduwU#zAv4!fs|Ge1AaH5p7+9y%E{cb=*fp4g z+bI;qsTv?S8--_{g+>XFA-~7DLkOImaK+a1g6{oO8d9O8d?Z|$a8W*9wt)et^?hv+ zz*PLeEvf`1;ap+Z#YJCibJw|zGZCd=q8YC1S>ZDMVhT zE$6;(b-cWt(!`i!lo~4ds4YYrpe}DKU{6bJ1?+S5-Q@<(5lVW?It_D+`(_2b@L!}C zJ`@ogQh}goBSgO`Ghze13IIrNB`Iw>p#*p0@Vf_V(OE?fC46L)a;n z#lw9_^Ny(YlDJj5hn&>gY)-T(PUoap9Z?jU9w#BOYF&e`7nv&8Yf&xIDKs><08l7% z=u`04>x{R=k}z(x#gj5x(9Wr=L6!-{lDmpK*p6aKF-gV-aTy+Lw;pPzQkTM%WFz#C zp#*ZM-D#tmxH%E~u(q{Za@*SR?J;MjAHZRZh3=ES>*#ws-rH$=1a4{GJdW9NQ>cFt z_bDa})1IT1zyqDy*G?BpvC%vjEN0dynEG?2*2vavfrb?sIbWfCoPs#N(Mi8jfhR7h zil*a5jD^a(hW4ULU+p=37Zpx_U&M!32irNlk|Hev; zZ!CoZ?gQX}XDY|I8DGL#wT$WTAO=oyl4|r%7e_B~hX-;s)!gB4-Qz8unw6ei7E{vmHq12xq_#UG5ZWA!H{v6A=77AblkumH*EN2syUjP{h*=h zSBA2X!SRZrGzQP@E5H1^jC&qkX<5Ev<@QypOsh-3y2|BS;g?o7KDdgHK^p`0{|x7K zAhT}(xmNkEyzsUv`u|yY@DUZW`G=~LEB`|^l<^bQKHX1MPbU0KwL|@cYK`g_D*P~+ zCQ^`ZrG)Ug)Cwlfd^8h-S&(wVEX*f~eO?~VDPeA-UpguIQphAxa+#RgFXlEe+ZqaJ zqR{m$4Q4Km*VwZW$Je@>F;L1R#DF#x^I>*Ev+odczj~22q-PZMk`@XIc5JM!D=4tp zYz#AZ_Zm`BU|F@^pG&Mwo9Sn>y%>E@x|+LpT|(7Y>$J_MdXm5LwSUq7_#4lrp8wV* zD~+@>kh{7|z))1s->{6zC3jZ^bu%^jLb%|1=3 z<|Xx3%|-Psnm?#-)x4q}SN}q@SM!ACe$96^Zp}|MUd_)my_y4>J2n5Nc}(+&<^j!S u&BL1SX@0KxzGjPNx8_034>Uf_`|4@+2kK3lkJK~jtLl%{pQt}oU;AGUwH(<1 diff --git a/qterm/files/QTZP.DOC b/qterm/files/QTZP.DOC deleted file mode 100644 index 2785a42..0000000 --- a/qterm/files/QTZP.DOC +++ /dev/null @@ -1,16 +0,0 @@ -These two files: ZSM and ZPATCH are needed to apply QTERM patches (such -as QT-ALB.ZY etc.). To apply a patch to QTERM enter: - -A>ZSM QT-ALB.Z - -which will create QT-ALB.O. Then enter: - -A>ZPATCH QTERM.COM QT-ALB.O - -which applies the patch to QTERM. This can be used with other programs, -WANDERER, ROGUE, and several programs in the UUCP21B.LBR library will -need this done to them. - -To decompress the two programs in here, EXL.LBR or CRLZH11.LBR will both -provide tools to do the job. - \ No newline at end of file diff --git a/qterm/files/WHATS.NEW b/qterm/files/WHATS.NEW deleted file mode 100644 index 068530d..0000000 --- a/qterm/files/WHATS.NEW +++ /dev/null @@ -1,74 +0,0 @@ -What's new in QTERM for V4.3 - in no particular order: - -^\ P sends have some more sophisticated flow control, for both individual -character transmission, and line breaks, based on echo of characters -back from the remote system. - -When QTERM is in local echo mode characters receivced are expanded to - / pairs, and if half duplex or split screen is invoked as well -as local echo, locally typed 's also get expanded in the same manner. -This makes local echo a bit more useful since it means that neither the -local user nor someone talking remotely will need to add a after -their 's - QTERM does it as needed. - -'q' option to make protocol transfers quiet - -'c' option to get Xmodem receive to start in Checksum mode - -Major overhaul of Kermit - the bugs in the 4.2g implementation have been -fixed, and several extensions added: extended block checks, long packets, -and server operation. - -!% m and !% o have become !& m and !& o, and a third option has been added: -!& l to turn on and off "Looking for" logging. m and o are initially on, -and l is off: !& l 0 forces it off, !& m 1 forces it on, and !& o switches -to the other state. - -!@ and !# (numeric variable manipulation) have gained two counterparts: -!$ and !% to set and test string variables (these include the parameters -of the script) - -It is now possible to "type" through a waiting script: while a script is -waiting for a match in a normal /send/expect/ line, or a ![ - or ![ : -line, characters typed at the keyboard are sent to the modem, and two -^\ escapes are recognised: ^\ . to send a break, and ^\ , to hang up. - -When expect string is matching (or not) in a .send.expect. line, -the last 64 characters received from the modem are kept in the buffer -used by the ![ - command, so that tests can be made later with ![ = -(etc.) commands, this buffer is also used by the ![ : "wait for silence" -command. - -!< - and !< . (read buffered from keyboard and read single character from -keyboard) now take a variable name (i.e. a single letter). For !< -, the -letter is the target string variable that will receive the input text, -for !< . the numeric variable receives the value of the character typed. -This means that !< = and !< , are no longer needed: !% and !# will permit -testing keyboard input. - -Strings and variables can be used in lines: giving $a anywhere in a script -line gets substituted by string variable a (and $1 becomes the first -parameter to the script), similarly @a anywhere on a script line gets -replaced by the numeric value of variable a. - -The VT100 emulation code has been almost totally re-written, and does a -far better job than the 4.2 code. There are limits - double size characters -can't be done, nor can alternate character sets, and some operations will -take a long time (i.e. set up lots of delay). However, the special VT100.TC -termcap file is no longer needed, since a standard VT100 termcap will -suffice. However read QTERM.DOC for comments on how it behaves when certain -screen codes are missing - -!~ ? to test the existance of a file has been split into two commands: -!~ Y filename `label jumps if the file does exist, and !~ N filename `label -jumps if the file doesn't exist - The second is most useful in a script -when you only want to do something if a file exists (e.g. upload it, ^\ P -it or whatever), that way !~ N allows a jump over the code if the file is -not there. - -The ^\ D code has stopped using the BIOS to read the directory, instead -it uses BDOS calls 17 and 18. The bad news is that the statistics line -is not shown (maybe something will be put in for the next version), however -the good news is that it will work under CP/M 3.0, and also this change -has reduced QTERM's memory requirement by about 5 to 6 K. - \ No newline at end of file diff --git a/qterm/files/ZPATCH.COM b/qterm/files/ZPATCH.COM deleted file mode 100644 index 291a9b07b2011a537f567fd38ea8c36364206168..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3072 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 w-CPf|;#)U#;k diff --git a/qterm/qt-cpm3.z b/qterm/qt-cpm3.z deleted file mode 100644 index 4bedb05..0000000 --- a/qterm/qt-cpm3.z +++ /dev/null @@ -1,155 +0,0 @@ -; QT-CPM3.Z - QTerm patch for CP/M 3 AUX: device -; -; August 2020, Anna Christina Nass -; -.var BDOS 5 - -.var RDY 0xF0 - -.org 0x0110 ; modem input status -; ZERO flag if no char is available -modist: ld c, 7 - call BDOS - and RDY - ret - -.org 0x0120 ; modem input -modin: ld c, 3 - call BDOS - ret - -.org 0x0130 ; modem output status -; ZERO flag if output is busy -modost: ld c, 8 - call BDOS - and RDY - ret - -.org 0x0140 ; modem output -modout: ld e, a - ld c, 4 - call BDOS - ret - -.org 0x0150 ; start break -sbreak: ret - -.org 0x0160 ; stop break -ebreak: ret - -.org 0x0170 ; drop DTR -dtroff: ret - db 0x0c ;length of modem hang up string - db 0xfe,0xfe ;two delays - db 0x2b,0x2b,0x2b ;+++ - db 0xfe,0xfe ;two delays - db 'ATH0',0x0d ;ATH0 - -.org 0x0180 ; restore DTR -dtron: ret - -.org 0x0190 ; set baud rate -setbd: ret - -.org 0x01a0 ; baud rate table -baudtb: - db 0,0,0,0,0,0,0,0 - db 0,0,0,0,0,0,0,0 - -.org 0x01b0 ; set communication mode -setmod: ret - -.org 0x01c0 ; communication mode table -modetb: - db 0,0,0,0,0,0,0,0 - db 0,0,0,0 - -.org 0x01cc -resrvd: db 0 ; reserved for later use - -.org 0x01cd ; protocol transfer size -xfersz: db 8 - -.org 0x01ce ; processor speed -speed: db 8 ; cpu speed in Mhz; - -.org 0x01cf ; escape character -escape: db 0x19 ; 0x19: ^Y - -.org 0x01d0 ; signon message -signon: db 'CP/M 3 by @acn128\0' - -.org 0x01f0 ; clear screen -clrs: db '\e[2J' - db '\e[1;1H\0' - -.var scrout 0x0109 ; print character in C -.var decout 0x010c ; print string of value in HL - -.org 0x0200 ; moveto routine -moveto: push HL - ld C,'\e' - call scrout - ld C,'[' - call scrout - pop HL - push HL - ld L,H - ld H,00 - inc L - call decout - ld C,';' - call scrout - pop HL - ld H,00 - inc L - call decout - ld C,'H' - jp scrout - -.org 0x022f -tcbits: db 0b00000011 ;terminal capabilities - -.org 0x0230 -;brites: db '\e[1m\0' ;bright -brites: db '\0' ;bright - -.org 0x0238 -;dims: db '\e[0m\0' ;dim -dims: db '\0' ;dim - -.org 0x0240 -dlstr: db '\0' ;delete line - -.org 0x0248 -ilstr: db '\0' ;insert line - -.org 0x0250 -dcstr: db '\0' ;Delete character - -.org 0x0258 -icstr: db '\0' ;Insert character - -.org 0x0260 -ceol: db '\e[K\0' ;Clear to end of line - -.org 0x0268 -ceos: db '\e[J\0' ;Clear to end of screen - -.org 0x0270 ;entry subroutine -entry: jp init - -.org 0x0273 ;exit subroutine -exit: jp uninit - -.org 0x0276 ;user subroutine -user: ret - -.org 0x0279 ;keyboard map subroutine -kbmap: ret - -.org 0x0280 ;user patch area -init: ret -uninit: ret - - \ No newline at end of file diff --git a/qterm/qt-rc82.z b/qterm/qt-rc82.z deleted file mode 100644 index 8c731b5..0000000 --- a/qterm/qt-rc82.z +++ /dev/null @@ -1,172 +0,0 @@ -; QT2014.Z - QTerm patch for RC2014 with VT 100 terminal -; -; September 2019, Anna Christina Nass -; based on IMSAI8080 patch: September 2019, Udo Munk -; -.var SIOC 0x82 ;sio control port (2nd port) -.var SIOD 0x83 ;sio data port (2nd port) -.var SDEV 1 ;RomWBW device number -;.var SIOC 0x84 ;sio control port (3rd port) -;.var SIOD 0x85 ;sio data port (3rd port) -;.var SDEV 2 ;RomWBW device number - -.var RXRDY 1 ;receiver ready -.var TXRDY 4 ;transmitter ready - -.org 0x0110 ; modem input status -modist: in a,(SIOC) - and RXRDY - ret - -.org 0x0120 ; modem input -modin: in a,(SIOD) - ret - -.org 0x0130 ; modem output status -modost: in a,(SIOC) - and TXRDY - ret - -.org 0x0140 ; modem output -modout: out (SIOD),a - ret - -.org 0x0150 ; start break -sbreak: ret - -.org 0x0160 ; stop break -ebreak: ret - -.org 0x0170 ; drop DTR -dtroff: ret - db 0x0c ;length of modem hang up string - db 0xfe,0xfe ;two delays - db 0x2b,0x2b,0x2b ;+++ - db 0xfe,0xfe ;two delays - db 'ATH0',0x0d ;ATH0 - -.org 0x0180 ; restore DTR -dtron: ret - -.org 0x0190 ; set baud rate -setbd: ret - -.org 0x01a0 ; baud rate table -baudtb: - db 0,0,0,0,0,0,0,0 - db 0,0,0,0,0,0,0,0 - -.org 0x01b0 ; set communication mode -setmod: ret - -.org 0x01c0 ; communication mode table -modetb: - db 0,0,0,0,0,0,0,0 - db 0,0,0,0 - -.org 0x01cc -resrvd: db 0 ; reserved for later use - -.org 0x01cd ; protocol transfer size -xfersz: db 8 - -.org 0x01ce ; processor speed -speed: db 8 ; cpu speed in Mhz; - -.org 0x01cf ; escape character -escape: db 0x19 ; 0x19: ^Y - -.org 0x01d0 ; signon message -signon: db 'RC2014 SIO/2 - VT100\0' - -.org 0x01f0 ; clear screen -clrs: db '\e[2J' - db '\e[1;1H\0' - -.var scrout 0x0109 ; print character in C -.var decout 0x010c ; print string of value in HL - -.org 0x0200 ; moveto routine -moveto: push HL - ld C,'\e' - call scrout - ld C,'[' - call scrout - pop HL - push HL - ld L,H - ld H,00 - inc L - call decout - ld C,';' - call scrout - pop HL - ld H,00 - inc L - call decout - ld C,'H' - jp scrout - -.org 0x022f -tcbits: db 0b11000011 ;terminal capabilities - -.org 0x0230 -;brites: db '\e[1m\0' ;bright -brites: db '\0' ;bright - -.org 0x0238 -;dims: db '\e[0m\0' ;dim -dims: db '\0' ;dim - -.org 0x0240 -dlstr: db '\0' ;delete line - -.org 0x0248 -ilstr: db '\0' ;insert line - -.org 0x0250 -dcstr: db '\0' ;Delete character - -.org 0x0258 -icstr: db '\0' ;Insert character - -.org 0x0260 -ceol: db '\e[K\0' ;Clear to end of line - -.org 0x0268 -ceos: db '\e[J\0' ;Clear to end of screen - -.org 0x0270 ;entry subroutine -entry: jp init - -.org 0x0273 ;exit subroutine -exit: jp uninit - -.org 0x0276 ;user subroutine -user: ret - -.org 0x0279 ;keyboard map subroutine -kbmap: ret - -.org 0x0280 ; user patch area -init: ld hl,SIOINI - ld B,9 - ld C,SIOC - otir - ret -SIOINI: db 0b00011000 ; Wr0 Channel reset - db 0b00010100 ; Wr0 Pointer R4 + reset ex st int - db 0b11000100 ; Wr4 /64, async mode, no parity - db 0b00000011 ; Wr0 Pointer R3 - db 0b11000001 ; Wr3 Receive enable, 8 bit - db 0b00000101 ; Wr0 Pointer R5 - db 0b11101010 ; Wr5 Transmit enable, 8 bit, flow ctrl - db 0b00010001 ; Wr0 Pointer R1 + reset ex st int - db 0b00000000 ; Wr1 No Tx interrupts -uninit: ld B,4 ; HBIOS CIOINIT function 0x04 - ld C,SDEV ; device number (0,1,2,3) - ld DE,-1 ; "Reset with current settings" - rst 8 ; do it - ret ; not initialized, so no un-initialize - - diff --git a/qterm/qt-rc84.z b/qterm/qt-rc84.z deleted file mode 100644 index d7f7d10..0000000 --- a/qterm/qt-rc84.z +++ /dev/null @@ -1,172 +0,0 @@ -; QT2014.Z - QTerm patch for RC2014 with VT 100 terminal -; -; September 2019, Anna Christina Nass -; based on IMSAI8080 patch: September 2019, Udo Munk -; -;.var SIOC 0x82 ;sio control port (2nd port) -;.var SIOD 0x83 ;sio data port (2nd port) -;.var SDEV 1 ;RomWBW device number -.var SIOC 0x84 ;sio control port (3rd port) -.var SIOD 0x85 ;sio data port (3rd port) -.var SDEV 2 ;RomWBW device number - -.var RXRDY 1 ;receiver ready -.var TXRDY 4 ;transmitter ready - -.org 0x0110 ; modem input status -modist: in a,(SIOC) - and RXRDY - ret - -.org 0x0120 ; modem input -modin: in a,(SIOD) - ret - -.org 0x0130 ; modem output status -modost: in a,(SIOC) - and TXRDY - ret - -.org 0x0140 ; modem output -modout: out (SIOD),a - ret - -.org 0x0150 ; start break -sbreak: ret - -.org 0x0160 ; stop break -ebreak: ret - -.org 0x0170 ; drop DTR -dtroff: ret - db 0x0c ;length of modem hang up string - db 0xfe,0xfe ;two delays - db 0x2b,0x2b,0x2b ;+++ - db 0xfe,0xfe ;two delays - db 'ATH0',0x0d ;ATH0 - -.org 0x0180 ; restore DTR -dtron: ret - -.org 0x0190 ; set baud rate -setbd: ret - -.org 0x01a0 ; baud rate table -baudtb: - db 0,0,0,0,0,0,0,0 - db 0,0,0,0,0,0,0,0 - -.org 0x01b0 ; set communication mode -setmod: ret - -.org 0x01c0 ; communication mode table -modetb: - db 0,0,0,0,0,0,0,0 - db 0,0,0,0 - -.org 0x01cc -resrvd: db 0 ; reserved for later use - -.org 0x01cd ; protocol transfer size -xfersz: db 8 - -.org 0x01ce ; processor speed -speed: db 8 ; cpu speed in Mhz; - -.org 0x01cf ; escape character -escape: db 0x19 ; 0x19: ^Y - -.org 0x01d0 ; signon message -signon: db 'RC2014 SIO/2 - VT100\0' - -.org 0x01f0 ; clear screen -clrs: db '\e[2J' - db '\e[1;1H\0' - -.var scrout 0x0109 ; print character in C -.var decout 0x010c ; print string of value in HL - -.org 0x0200 ; moveto routine -moveto: push HL - ld C,'\e' - call scrout - ld C,'[' - call scrout - pop HL - push HL - ld L,H - ld H,00 - inc L - call decout - ld C,';' - call scrout - pop HL - ld H,00 - inc L - call decout - ld C,'H' - jp scrout - -.org 0x022f -tcbits: db 0b11000011 ;terminal capabilities - -.org 0x0230 -;brites: db '\e[1m\0' ;bright -brites: db '\0' ;bright - -.org 0x0238 -;dims: db '\e[0m\0' ;dim -dims: db '\0' ;dim - -.org 0x0240 -dlstr: db '\0' ;delete line - -.org 0x0248 -ilstr: db '\0' ;insert line - -.org 0x0250 -dcstr: db '\0' ;Delete character - -.org 0x0258 -icstr: db '\0' ;Insert character - -.org 0x0260 -ceol: db '\e[K\0' ;Clear to end of line - -.org 0x0268 -ceos: db '\e[J\0' ;Clear to end of screen - -.org 0x0270 ;entry subroutine -entry: jp init - -.org 0x0273 ;exit subroutine -exit: jp uninit - -.org 0x0276 ;user subroutine -user: ret - -.org 0x0279 ;keyboard map subroutine -kbmap: ret - -.org 0x0280 ; user patch area -init: ld hl,SIOINI - ld B,9 - ld C,SIOC - otir - ret -SIOINI: db 0b00011000 ; Wr0 Channel reset - db 0b00010100 ; Wr0 Pointer R4 + reset ex st int - db 0b11000100 ; Wr4 /64, async mode, no parity - db 0b00000011 ; Wr0 Pointer R3 - db 0b11000001 ; Wr3 Receive enable, 8 bit - db 0b00000101 ; Wr0 Pointer R5 - db 0b11101010 ; Wr5 Transmit enable, 8 bit, flow ctrl - db 0b00010001 ; Wr0 Pointer R1 + reset ex st int - db 0b00000000 ; Wr1 No Tx interrupts -uninit: ld B,4 ; HBIOS CIOINIT function 0x04 - ld C,SDEV ; device number (0,1,2,3) - ld DE,-1 ; "Reset with current settings" - rst 8 ; do it - ret ; not initialized, so no un-initialize - - diff --git a/qterm/qterm43f.lbr b/qterm/qterm43f.lbr deleted file mode 100644 index feab3feb32079f5e470dc8269617655897b6acbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74496 zcmce;1#sp{vZ!flbDOEn%*^a|o0*xJ{hOJg&CJZq%+zLPhTqK0>^)~@b~o>3`=6%5;Llf-jO>%VbfVP(y~ zHbNl{8DAP8YTudZzsa*Qi~ZF@c@1SB z5O9z%!vDsF#08ZJ357L;{6VxptkM1(7g3b?%Z7jP4G=|;-hc1Eg7QDPsGK4_C|4m*~{_k5TEGIPnm;US9f8%O@^O zE~}w74T=oXDD`h#Q(jP6NSyF*`)-4xg5X2{J6HPq>i)s+K$Sp<lR2T&UsV$~Clgyo3xF*ly?}-Qp@D-5p|qwrp@^*!z}Uo? zp73uGI|qQ7gMrO=SQS|z#lNWwGd&|Az=2R&nT3&%@~;DH11A#)LKhQqxUCp8u)PcrlsB3Ui^63#4Zq_h4|I(4H(KgU_LSYTABS6Z^)${PY9kld9LB! z7)2aEASJZ>4S+CWHOzb~w`!82J90`>IKhEGqlj9- z&ArzX_tVcH|6PGx$e0f!#3@z_zi{kdqM;N)C>oQY5>-x=@52sWsP>`SUUL*6FaFKI zPcabAU-;S&*?54p*U+O2ArZ0UgHqdD`mni$6E6>r<=*kdQ{3ST*x35pg{$Vqb)&mr zVKvL6F{YQ!K&bu!f$mm8VHDp}z~yMlv8ZjXH%RRaa3w2PAr3?&s_LqS;gCaET>V-93~=y0MOwOr8d?G8m@`N7zAzI4=MC-8PI2!j#z4F$-wE2G&qnOU8?E+%)1 zDpq5j23cku4Efd}tpTtXx`5PRy>U)B!Gum`2u=|0>Qp_{RdMWDj3eg}Gr+qqHZ)F` zdW72@ljXO|NKB=w{TL)yzr(EHx8ivfRjgf7_4=UOsIOrxl71@F-8>Q*Ik5}mm+Y2^ zo4POuV9JH=$d-JmUjGjD%}#1=77Ym9&u+9=GcAOo9zUVxu=*XeHr6Dpp)0oywGBhW z`1>0RMY@sG(m20$Mg$!B$pu=V1_D!-YEQhPB3-aeRzgu>87)m53P+I~*H$tgx~q`I zd=E`Sq5$(}n$J?oyGu6J`Y5|Jh3?0ut?n=$^*ZfFBO(2mO1s>eUizRUL?2h&q1dFu zW>1$Y)cn)I^Xlk`p@+!DQ(`G4TKJ6kj3AUPHxYG6ei~6c1p+sn_DF?9v!({TsFq5B zs8J0Zj|x|788x8(tp%Od2y*ZlRq_2;!F)T?O3jmIS7ti-X{oB7mzL&Nr%i~uFmI|s z=#jfL0erZUGfC<_45z)k{zJXAHo5!C^y6j(kFAc(4qQ8Mnd~V*Lihlx5puwEP7($= z6rwNtivM*qpCEf03KuWbUEz4Zs2(7r-Oyu<@CEltkoiP`z)Jl!VY)E`CKDfv&fjU; zKWi-Z?U!5hM2ZwX>yfq@rICsS2;(!(wHz(V>YD`r@Mj1qtv^4*HWJ2APDJ11SvSuC z1VJ_-JXMO#ha1YzaX4QIsy7Jv?q9=0sF9))I5aaD0Uss3nK>&#MH~F#tQLxSV_rpV zQd66e(SN9Sghf(%h@6hI*V6|kmaTUXs4Gfp1rA*fQ(iVCHSo^zZ*Tqf_<22nyw(_~ zgdK`i%{{jT{w{M3fN_VeDGWY9U(1Sa5(Ep>JPedT!y55Vt}Grdh>*Cz0Nj%d9%mK2 zh2#f@9umdjv!avxYZr`xW6 zD4=mF%iUCH>*@D~G`X0fm6IEv8=jKOnnShk+;|?BeV>mE0d%jP=B=XInzaC*t-_@X z0NJPW{qa}Z;gkE4o6DyO3L=i&7s(@rFVB}|sQJ*R?=j!oO%lKG=PY@lC;0MEqO0TS z*Le)m0lhyqdfJ!K5El1G$QQ^*m6DTo@D^#=^7`t-&xnc}yyvcO;vd@O6U45irp51; z=U2t9#(e~7F=|%B^QMH~@^BdtvG{c*Y@f~YYgJ^rlcpQ4+nS}GWb`X>-@>{~czI%E z^#ucDm~%((##HGWA4Jb8mf6l4EcF=7sv=2~Xj9n*A*6_KNk$l|hKY2=>oMBD%c<1x z?0OL&Rjz7V?-|*hkC)drVzktGS{Q_9gw6PfWRYfeaq}u04tW3YI*swJcv-Jk&os~Q z_L+|7Ld2j7UzT~L#g@6r@JVx?OER?RUc*EjYJ6^@N8+7<<;0P}aidJl+Uw->f8>HM z0{83Q{ms-V3zwYOXYn@R)YMZlPnwXCor}%VY`uXsU4ne{G(!*JTG;k>bbjpdqmV*x zfoUN{3NVjI6O(w8qrkc6W!JWnxb-rH8j}K#U%I{~QQdgRV9Kbhy%(!9KBSn@$xi zzH~<6umqHZaYO35kK2N0Y5Z6MbWc}LDjgTyD@%;eR8P9}B z|Etgjy}0bX&MRL-4+KUL-RC87AH|KJ)P!b*bDGhoaJs5~xaiPg6dw4n*dJ}r89exw z&i(WWNi>kSnLGI6z?KY)&GWl01LxoLQlfZn-6+q(nMYjp8jU>K=h;rVoiarByRGMG z!@f|=*H}v20TI!MMUYHPt3s>X!3$e#Fp~rYO4KMgWCG7=e25>^hM8OI!gY7xiyWP( z8}yj|Oti|*Mybmui(DivXsB9r+@j01>y)3zm)`syO53)M3XpW3pD+ zvGek83Ft?jUchcu#BC5Tay!V_!L^Tq$z<4>Q{M1pvrB}9Fn6=$SCI)36sQpqAK&wz z>9U$Gs5e%O+*qAxueuIjbOHwXH{HBtWLq3pTpFcv2s2FlY zl7&CC@KxWdhZoo~7`yb%#iZ{Kay2>*6>qp(LS3tahlZH zHDAiFpe3L4IJ9?sR(T00rk{90Us83%S$YZTUT+C-n^ZOHVV8cZoQG6HjbmVR_+&G- zahQ_Nw*^eE%Cu{9rWMW!2|ObHWx}hZVQ`OYcrn!^6d*4=)88fzQWIMDeN)oOKcuHi zq(e?i_HF=k?_))P49+CbgH49~N%YX96`v-lLAg5ParnYTM2I)E!Alw+zL%WjzLWstO;&bOZC34&5+!qUb)SUyQtXQ>7Kbx<8n zC69VD$TTxJJ!s!huXcky1G`dITLbmY7;a%AAw{XwWCgBpf{Z3s)pmT&SztFs;Qsa6SqVzL*rJNT6`^p0H}=&h2S1LU=}d# zgkW5i)#IbRF0sMAru#Mv#Y%Q_nL+yv7$oK3XtJ5TvAkSpk)GP&9!$S3oOW%=_|z8U zA8cIT4Mq>tL(v;PjnN5~!RG`c1QGqY^7Q|080zvt_pccg{a=%e|2P00Kj6X3eiG;? z@B7nra96|q_>TE8ewkH)mFi5j_{rA;`04;EI3CEoXE02^F}$WHezZfEe%@WR-~a;; zdKhnrWp_LdGr@&l-U_T34?i(Z79E_G5TkcP?gv|Ob_P`k;9DUo8&}_Y6=ie)Uv#52L;CO)MEWY383H<7& zWhmDL4ZWH*!MR57{zF<~y)2_j&qAV${am(=zjnlNsR9!c+aJ-G!72-XJO$~QjQ7EzKSEvk&^#9BlE9kx(8l%Y4O6%vD+=l zBFurxM;-KZ4i@9nO%o~+Y8Cb%662(FBjmCC##Y@3;Z^s7%24Yue_hRVJ8yp+Zj6!* zobAji$v~}WUZiwtFBz{J13b(q4I#Ep#nR5)z^RWeB&!NdjE*LirAp-XBh%5iPA%Tr zG2D{T@P)FrKj&4DQ5NQGtb@FP8{;@M$pKb>+*)%*M`5KST=JIDYvOD$nOR<$mygaQ zsRg@D?*}T5ey4Bed%|Yc{@!r=Sr^TE3Ffox=BOkC+f-*UT+$~M{8fHbrIfWvKv@kl z7y(CEB+lLL^y(u{g`(EESPE=|m#JN{a-^7V7;%HxEZc8?WexP6kom}iQjsj|aG51> znRj7Z%DWz-(B(o#g%X&h=ZfeOu@R~%DoV_vwUKg(5`fV=V18p4P+Cpy%AS*1?$rcs z43xzG{RDvf34W7vYWRf7wGTVt`_zE2J!scXB&Bc~!@osQV)dicAHYf3l0z4V*GAXK z_OV{O3OfIT@DcqQb;|j|{UTZ9>g=UBSP+q`!_p()+^($+KqP!6TQQ7jV=mu&b*8lG z$a~JhBqg41q^eeO@|8f!F2=2Jt9bwv^V z2)Z}k-1T}Emix`Y@J?lo-9%Tdo(z$}IMk2Ln!n*APjTz}IRDW@=a=%M0Gov^Yy~tC zL_Vi@v02xByU1PKaC~rE;&l2XX3v5kK}nHn2HnZ?UN`NSgRI6yKZPpagZm=|?d>xTr{uig8<%PalmfBv}uNG~d({vW%aERfrax6DsH9{c6qMP0AY?zirc z+ua`E@^e+kmVs(Lc!^GbUcu2{UJ6K4a}g6X-BiZclm2yIHe0fv3YwPiKu@{|Ugt9B za_qXkE9C}=u3x$s}-2NYM7Is5GWr+VevmXy61Gk;gFzFjK@Vu z^6)lRh7lWA?DyR+rlAp3%< zu7TM^vGi3IzSZo`ZmifMhKby>MxMz}j9CPZgdx@hw(5?31TGKFdVC&qy=Tg@bQG#* zT<`I_sxN%YJYtkJzsR0f72j4m)a=NyN}d$IJycvs;a%yMdZd59-qTKHc#`~H^NqBe zezYC6g!H8)PSQ}Q}=b@^}1vfl?CQvW6gACYVId#jJMzu zv<|v9d0DeI-?lc_PJ|Uz_Mtyl9(Tk#^R{+)j>kjFk1ZR{(%c5MB2^o5c&i~5-JtcY z+ng%mB*l(!HgYC=w?5JZj8Ynvl`Q(gsvOk|8kz*Sm@e|(p%T+DWu-Y*wDI@{WKIhM zL8i}X(gIq8^U{?opjL$tL!tU9G$Z4nxuyF8+31$hJi4MZgK(K(#$aC(+JX(^*e?8P z8Tm@Kz7ewQ>u1ruZp#$vLW(H*x2!%ZS`m;1cU`o5*1(ma7L@=x4G9b=7zxFD+l6d6 zovGjGHcd)w%naeYeNH!p&M;7u5SDE>ztQN!W)V!H*VEI#cifCLHt{=5960e>HdvgP zxQuIEq07|GV39$!&AVC%HMH^)LKktouTyI=r-LF=Q!kQz+JTLj>P_Pq`-dcgZYj)U zJ&p9899^VcH8%5|h^5aa1R9No*iU4I@|&r@WprKz9DNsK#BxQvJ7@p|F-XMRx?mYZ zz#=Dex%H&xWr7V&>FRtz_cQuGt%QoCvg+ z-iT~`Y%**3e5dGzZgBa8)Uiq~u!FIzr6JA*STiLj1etM+0!Jr3f)jC9T2+pkz1hTB z;T5)&D^88FZ=wuZJX2KI;SX2~Kg;SPF9t}(XA>AL6mT4xybbyUcz5Rb@;&8TXKWPa zQ?AC(MeZTsJuT_F&3F&pN0A_XU?8HO5f{+I-d|DGcuY$vxyEenD+dGJ?wLRIQgfQW z*=yn5fo*+q+bPcAw@q!57Mr5*0)OoI9p9w2?-_5gbuP-RWCv;HCbA`3w@{RWjClv2 z6AeW+x+x+6q^V>b+gzTkw;B3||Fo(D^~EOGQ+EZ^{5ZWfoC?dKpR1uH@XcP835#B@ zU2lGU8@h0k9dzue-+Tr4%Pm4lp`$}A(URA;La(~-;+R-b<=FIIiX})pq?qYW)hXW- zgwX}`#iUCf?r}gFSm6X_t!5Q%%^HW!&a{?m*uU2i$;0qM%+qo5#_nMRJ7M%^R%V9Q z18nDq5t0U)6kMy6tD3u%-F-gq#fS1viFl9SLnUHtX-rgNQ)}rcW8p21pwsSoab;gA zRurbirH-3Lv-H3i5OOoQormItvp!zaq8KvS|K)SybUA-tCUA{}ru5s|=%Dm(`Qz&= z*xohkJJHX98Xz2NdEvA$9um<&GV<7ae{BWFS->a#=V5+~ZY!=Ot@WQD10k0P??N|9 zEuGZ*o@=C-!B~N2-enG9Ebu3rz~{m5q@fUVnV>1thwcRwEAmNEsr(GqE44$(R&<}~ zTVQes;S7-Q1axA$=3=;FWM_IvHQx;e=hG=B+z^oad~FgMCuaFh_>MtV(NQZ2VDex+ zD@Ly>Mz5uMz7_S)ejDi_+bx(twWL0&0So&o`ap1{DbT?KKDgitX_bnW#hMEh=E4U` z_}qAxd&qh6e0$Q*m!;-vcJ=x;v(ljnKA45*Ef;zAs>S=1gpdqKuH zLV)XVqGx@xz89qkVKnx!4*88^H#DYdJTG7Gu`Jt@ciofhu<)uA3u!E-bKF6?dE;Js zm*e=n9_;Kh@2980&d197v~|mE(-zW4>sWGX1z3W~9V@?nuE_)ukr8;rUWcu8F_+j@ zdhs>=Mb1yqVJ(;V8<&Gp$e&d*V{kfY!Zx1BE58z?h#aDzf#!q-tty7m(aw-p`p%cu zA9j`Dcw03e_hkZyuVgbw1BzzLq%wUEDkb9)UIAN$K4?gX1$M zq0mZX%vM(Sw2?cfV-q~+&1Axz96sbzhHwf6_j}dW}YR)8N1}HTv+Huptu{ zGrW^ds(Lz$ix zH*bM| ze1Ak@yZH3&>AHn`0k5m$d880TAL|th4bg5(x%lVZeOii^FRVi9MMB%r)j3HWb0jiL zxSps$%t{9K_&z&Z>>saFFPTFphIqjF0&=2xZe|JJV#6K}Ri^-x*FaDjL=X_;9qGi_ z@TML{F)1`8v<~U;AT-jn4i$-nq(j;16z%oa+l&`A3&`5CSlTKs&0Oh)lbi4Iusd+; zi5_Axhl^0V?J^?N;`3s&RgvBsi8}Q&yFT!kpS1nX5zOhMvbdiC1ETlb$;a*I$=Wx6 zaDRw~c(OE#xODPYpq#|e#BQ$=@uSVvcq`jScm z3{x#V-2bHgc7OXVAv`DONKZYR?JxZs-&LuE$nYoI!9fshV;xFEotGS!7zC8)F-$&x zeSYZchLh#NN4|h#RNQ+ehS)WMSq?!9QwKA&_{R8^IFZcE)F&i}05C-e`t{g=W#ILI*KErY^i0W<=%#R=TG#%h>+wylAroY5NL@3eT^qZmY zKSvlG$VUO~oWr*5USOuzFfHI%(V$%Xc=7^xX8;Y)Y9F~C%l+VAV4saae0=yJBXPVT zf^DCIdm`r2<>8d$dI+}hI-Or@Wn{>!xYy0@;A39!KYbtsXGd{`wQ%b2MtWy-H9e!g zOZ_0#UC5rqxvtn;jRAg8f1JdOO9{st#3G%WW0>juxJ?&ZiRF?O5~lMb9tTpM~0O)oM+>i3-cDE+T6fQCT$7!+`uR3j2RBMLai zQf!0l)Gl7UNgYUndy^e>jS6a_xn0!AgbN_=O$^GD>@)Bu*>~k;a^{1r#U`dK*iD;ugqMi{{-DS@8M9>4;?BWNarpN-OgM9r3 zi4XZi)TTP}FFf2YD?Jge4TV>OU^DdU=;t{aNvnML? z;D~`DQ5(CN`)iai(q-Y&zPWwylL?4$g}j)!tY{p2JD{$I+!3=Q!u?-iH0LA|l~SG! zGph|Yy!K?|FQPw)an*D_t*R7YB9*kqLjyZF@KtUm%LBr0x+qA(o8HK*rA+jvdB*2` z32Sa?pR0dPr_bpp`%NT;IiNG##k${4XXUpetd{$@ey4T?gh<31u-xPI_=eCb9o_%J zAmA!w*R9>qdKl3@8=}7Rjsd*_s@hjp(G(w7w+fkVSc65QJ9=3!aO}~z> z{SZ7%IKb1FQ3*d2ab(2^pigt{ck!KdcA6lUP)9_b8~ctpSxb2WNy=4ZDWgDWFa!MiReOF%elsmQ8UeIS45rQ6^Bp@R{sEILT-(H`c6uAIlp-xBS6?53$Tg!cwnsDZez>*D{ z4yuK*@+@c*C#|{dl>nLF16vxa+LwS@UJ$~&Im5h{&dOX1i0IFN{N10%D})<5;9Z87 z0sLCRQvFqO<>$@l;-k*?<8TrT(+=jV+U*|JN}R{>^Nprg8fPdjl>{y-j8tVH9aykR zH)h3&H%RjHw#PR6cyAQ#f}d;{hVwS)x)Em?u^Jh*aY2!>~c_fVNxjtpLrr9UdkCuEz}1+@3(BbS$+*J~D3r=#hmv>;NLJSnhA z-@abq12{8G{8(%>nUG=aU#Ot7u_?{~0`6of08A^6(7L#;RMY|jc&4OEcVDKI);di)A{;SH)ky4}Z~)k9dh{Z;K2$nEsh)^7KlfVbK=W zqhUYlvmDCov8k5oZEUUGXq371_*(z*J5#dWMcX{!=eZc1+_)5@z z4MF538105KM63TQ3`4}}o+7|D#@KC}m?IH*c`0396#Y|Gf8mNVyLNuV!9hHSqm903 zQZP6e%ZB;VkErK>ASZJ+l)rnGW41w<)^myd#!Gq@uh`T;)w$-3TtW@`f#Jm3L|G1A zYcU}c!Bf8KbDW<^0mnwHGWD)xX6OUVBuWUovYjdT(=!>9PCpA6T?%zY1_!x>w#uFuYiy z$uCF;N8Gazcrw>H92Qw?H5r^J@~<(}CDj3YX^nbLo|L{NaIf3nAS8cauYu`F?{Doh z(v>ch%C2kKOKhF6#3;0jkbOT6N z@x3{&&$MI`lfBkfSQAY-6r6JIN3KMk6qFx0V2bM6i2)U=$3zey-IE}PcT%AtJMzVz ze8LYt>qm!Gkl?dx$tL+ktQwmpbEPd2I1PAqjUp1R3JML{1&W0#?J|wOx3G`_s7CM? ze1J{n6t?SGx`U)sg>aJ^h8uxDSaO_g;WTyRV+g_wss;|+CKEJ(Z%*uLEK!$&wqIrZ zE&|5SCAm9G`eT3$rKf41Isl)$t3FWx1^w@7p$``bByE+L;&iTg^4l2ecgRm zTgV>ipC>vYpt$z>9D;Ly7p#XU{h446{=9`?ctSir`k-nz$yEtK2EDsf$XD8w=|#ZV z7ysk3)6ttODeh*n#HN8ch4AO;C3gf|CO$n&eW3iN_*+l#$ZF7zxT91aeT^nRhhqTIJ0&ceg1gXFXZ(m>v6J$lX7J%o^mCPGS*KBdl+kih>|CgArY&n$CmBgZ}(#c zjNj~h8=nA3y46f*j}5mmxa&)3MbtHzZOA9_@t$$R%XGuVCypqr1K`W;f`7Yi6g}`7 z!)WODIdwOEw;_G?y*|O)>EH@=8527_4WFyZ;B&7Ym#`fTO@KR10?xrLAHu0{^Zg1+ zwFo}dFBf-_5sAU*ptQ3 zPG+_45<{zA@#-4mCMs`@4Qg);J>RNVw6ZAAGEXR6@)}nU{}7R2V=$FAjuv>nM@dmh zL#KR;ybICaj)B#z-ydc*D3T>STp3gwKp-*n@P5&6Zq3o_)zkeMR(6G5VuaVDhpIdtz7j+{to1S;HWBzpp#Wu(f z&HwpHO|1vOThZ~7uiD8ADdSB40&t|8e9mIvdC+G)juv-yI6T+0SkjY?b3Y3OP^MS; zFKW{Ttl8*IN)JJhiZ_jS?|H&9u=ew4O2}H28>5zYPED8Sswa@89uTpcj#IKEHHi_g zSJn3%9usK0dAZF$FKE7*^tmtdu{=u&cOhYxl-TgSVp>oKto*9P6+8C6Q59VPx77Mn zLyd7nkeL@u86Ru>F|v1!P!#(e`Euzx)2UtIF7EUsT@3uUpM?853<`a3whZ=e1U031 z3mfqkL(V>>M0~6I%BDi=@Co-INtN_QJNBK^6D!lNoP_tJWvs`ls!d(WvsZdQr)XXx04c4pE?j;O=Pr zLF?b}r~@1!yJ>&4d}y-y25l`ZJywd?k`#U^u34Qz;z=tl3MSMYu&)3L4t7Sn-tfM8 zf{;=W{SFw$-Vvpk(4aaFeNJ;`ox5i4KNA@;_$FIGZtaIgS$&X)QJuQ$xN~D?A?I>Q zCyFQi(h>ACP2G63;mGXIxIa^&p9_e(sJylzVI;y%tPi@o;3gB`}m{|Phx9`4#*ttK_$gssr< zXB1NGW+HCjxq#YF-+2#IFs_fgL+n4L=1K3$UfeLD!Ev~a+{2N}^2L6OZvX4mXqS)w z^YaT$Lc;%e{dxDa!~3F#AksT2=NhI zxJ7G-$qwZxP*9IpSA}O{VB4^*W+%~AoFZB-p)!LZ&f`9Tff6@6v>gnR`dAzSw4IJJ zIuMilHT!xVl@{D&f^aR!xVs?tDSs2i?|sB!(CX{K8T2vGov5@B>pfq1m4BJF!KZ)8 zB0dP)2OtTQb0~ZyM+H6zArkWJ)s4^XIv$M!S|Jk)?=c^H?sY**a&@6ZR9@y2*H^_? zXmS=-Sio*%l@iNFUSD%d4il8d9hQeK8|qs7GC|XZV0w~Bm**7sbdFZA{uHkpK%Vga zx{RBttIUzWz_?T&D6NHX(xa);uL-m8sm@Qj{qag8TS;Sz$6H`#z_Q|*h#x%{_#UXY z{COgyc8lpoihB@!uQYA<3LJBHPL>Oh^4+@dEIq_x^oZ7A7`ASsb0H$mK@&H&GCoB(BbFoqJ+S_dFY1+;x6a`x$KU@IfxZL1qi?rob!RIM7Iz&dFwFf%&oobZU`z>XhhzZ&@a zjiz?SNbpMQfBQ3LI9-gjcs6(wpXD>EsZ{IQfn^w<{{5G|7Ja6-aH zA0=zqo-I_Q>DwtbVcBe}4(Ltqb)DK?vbC*6l`hNxUEs{6Ztw%i=p-Eh6>lmYwKMw|Uv~qtcLn z$Gqgc;qA)cOyKHAXXRG=vBW(a2Tir=USt)OR-81Ac~y$wV}V#%>$}nGp~CtjU3LMd?I6r zgQwKBh1q2g0((^nV#~9|j$`oAA0uDdI~$z&0vu~|nZm8!dYuB!1uX_@q4=J1pFplv z8o67wYtCC40WZ&G≻F^}MEwGB$dty^boF-ISAwmUUH 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 diff --git a/qterm/qterm84.com b/qterm/qterm84.com deleted file mode 100644 index c80e568be7036253b220363442a29e072ee6613a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17664 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 PzN-FM{fYWh^=JPZ_+=Hp diff --git a/qterm/qtermc3.com b/qterm/qtermc3.com deleted file mode 100644 index 6c92e126da2b2afb7b4fa1192be6c56f022021bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17664 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