; the history of comm7 * latest changes * ;04/25/83 'utl [d:] *.ft' permitted as call from main command line. fixed ;major bug with 'utl' not copying files larger than 16k to other than user ;area zero. 'utl' includes multi-file mass copy routine, tagging/untagging ;ability. added more invalid drive/user area keyboard-entry error traps. ;now d, d:, dn, dn:, dnn, and dnn: are all permitted responses to utl 'c', ;'l', and 'm' prompts. added the pds program 'sap' as a main menu command. ;now directory of any drive can be 'sorted and packed' with dispatch, staying ;in the program. 'sap' and 'sap d:' are valid entries. tnx to 1977 original ;author, l.e. hughes, and all hackers who have contributed to making 'sap' ;the useful program it is today. (721) fg ;04/10/83 major utility 'utl' added to primary command list. 'utl' provides ;full file manipulation without leaving program and is based on 'disk7' ;program. operation is explained by self-help menu. set 'utl' equate 'true', ;if feature desired instead of 'vue'. 'sel' function expanded to permit ;selection of half-duplex operation and filtering-out of received control ;codes in terminal mode. removed pmmi parity secondary command option. ;installed fast table-driven 'crc' calculation method using techniques of ;dave barker (same as used in chek13 and disk73). mended 'softkey' equate if ;set false. also, finally, fixed ss1 board equates -- time feature now works ;(tnx to bob greene for assistance). to my understanding, this is the only ;successful implementation of the compupro/godbout board with the 'cw' clock- ;read code. (the 'rtc' program supplied by godbout doesn't set the 'day'... ;greene is rewriting so it does.) 'wrtdsk' routine uses 'shiftlp' to divide ;by 128. improved 'ramsave' routine so no bytes are lost when ram-to-disk ;save occurs at full 'colon-save' buffer, if remote computer recognizes ;'xoff/xon' protocol. 'break' function reworked for improved operation. ;made 'quiet' mode friendlier. (720) fg ;03/05/83 introduced console screen attributes. added more terminals to ;equate list. eliminated 'ret' command, replaced by simply 't' to re-enter ;terminal mode after using ^e to enter command mode. if a file has been ;opened, 't' retains all data until 'wrt' or 'del' is employed. 'm' now can ;be used when a file is open. improved technique of removing characters from ;printer ring-buffer. re-organination eliminated requirement for 'uartflg', ;thus it was removed. 'getbaud' changed to retain current baudrate even if ;command 'to fn.ft' is given. presently both mode and baudrate are maintained ;until explicitly changed. 'show', used to view ascii files on-the-fly, ;displays control codes as ' ^x', instead of (xx). program ready for updating ;to handle new pmmi mm-212a. eliminated 'imsaibyte'...sori abt that, zoso. ; (719) fg ;02/25/83 added 'exit-to-cp/m-with-disconnect-and-reboot' as secondary option ;'e' (a suggestion from jerry wolfson) and updated main menu. completed set- ;drive/user error-trapping at the command-line prompt. added equate to allow ;'time' display at command line, instead of 'day, date, and time'. eliminated ;need for 'origsav' flag by simplifying 'fixbaud' subroutine; also 'blkfile', ;'termsel', and 'savagn' deleted, all made possible by re-organizing 'setfcb' ;and 'procopt' routines. 'auto-linefeed after cursor-return' added to echo ;('e') primary mode loop to more accurately resemble a computer. trap ;installed denying 'q' and 'b' secondary options in terminal and echo modes. ;added auto-routine-cancel if send/receive re-try error limit exceeded and ;an equate to handle cp/m base address other than zero. added selected ;messages to be-sent/show in quiet mode. several command-mode operational ;messages now overwrite command line instead of scrolling screen. added ;primary command of 'vue' to permit viewing (type) an ascii file on the ;console. vue displays with used to cancel, to turn-up ;one line, and any other key to page screen. (717/718) fg ;02/13/83 added ring-buffer to 'text-out-to-printer' routines. non-buffered ;and slow printers can receive data continuously at their average thru-put ;capability. data can be received for short periods at rates many times ;printer average thru-put. listing line-lengths adjusted for 12 characters ;per inch printing of comm7.prn file on 8-1/2 inch paper. tests for quiet ;mode ('q' as a secondary option) performed in 'type' routine, saving over ;100 bytes of code. error messages show because 'qflg' is automatically reset ;before executing the 'erxit' routine. fixed long standing (since modem7 of ;10/18/81) bug (in 'rcvchr') with view ('v') mode -- now doesn't show headers. ;fixed 'nak' bug experienced during file send. return-to-terminal mode bug ;after 'wrt' or 'del' mended. (current mode, 'o' or 'a', and baudrate remain ;unchanged on-return using simply 't' under all operating maneuvers. 'to' or ;'ta' returns the default, 300 baud, rate.) original drive and user area are ;returned on exit to cp/m. 'inbuf' now ignores leading-spaces in the command ;line. (716) fg ;02/13/83 added ring-buffer to 'text-out-to-printer' routines. non-buffered ;and slow printers can receive data continuously at their average thru-put ;capability. data can be received for short periods at rates many times ;printer average thru-put. listing line-lengths adjusted for 12 characters ;per inch printing of comm7.prn file on 8 1/2 inch paper. tests for quiet ;mode ('q' as a secondary option) performed in 'type' routine, saving over ;100 bytes of code. error messages show because 'qflg' is automatically reset ;before executing the 'erxit' routine. fixed long standing (since modem7 of ;10/18/81) bug (in 'rcvchr') with view ('v') mode -- now doesn't show headers. ;fixed 'nak' bug experienced during file send. return-to-terminal mode bug ;after 'wrt' or 'del' mended. (current 'o' or 'a' mode and baudrate remain ;unchanged on-return using simply 't' under all operating maneuvers. 'to' or ;'ta' returns the default, 300 baud, rate.) original drive and user area are ;returned on exit to cp/m. 'inbuf' now ignores leading-spaces in the command ;line. (716) fg ;01/30/83 modified main menu to better work with non-pmmi modem. further ;tightened send/receive-file error reporting code. terminal mode function ; added for printer on/off toggle. baudrate change is now . ;direct bios 'type' replaced with bdos 'type' and 'mover' replaced by 'move' ;...saving much code. last bug removed from auto-dial routines (tnx to irv ;hoff) -- all dial-possiblities work cleanly and correctly. (715) fg ;01/14/83 removed bug and tightened code associated with receive-file error ;display routines, and in other areas. added function, used in ;terminal mode to review stored 'softkey' strings. softkey send-routine ;provided automatic bail-out if remote fails to echo. (714) fg ;01/04/83 receive section extensively changed (adapted some paul kelley ;routines). made a major change in the rcvsq area. error routines were ;changed in some areas. can abort a send or receive transfer at any time. ;(if receiving, the send station will eventually time out. until that ;time the incoming data might display on the local crt.) if using two ;similar programs modem-to-modem, the receiving station will switch to ;checksum mode if nothing is sent for one minute. it will timeout in an ;additional minute. the easiest way to transfer files in this manner is ;with the batch command (which does not time out). this gives ample time ;to initiate the transfer. abolished the macro library by including those ;routines. the program may now be assembled with asm.com. (713) irv hoff ;12/11/82 fixed waitcts in 'wait' to handle up to 51 seconds waiting for ;'cts' (carrier) from remote computer. made 'mhz' ten times the actual cpu ;clock frequency (2.7 mhz = 27, 4.0 mhz = 40, etc., up to 15.7 mhz = 157). ;put bell character as an indicator for toggle instead of crlf. ;added equates to indicate version number and date and to handle the ;compupro/godbout ss1 rtc board. (712) fg 12/7/82 moved mspeed register to front of program and adjusted position of 'softkey' db table for easy hot patching. created comm711.set file. changed several messages to make similar to xmodem60. newline and colon added immediately after save-file toggle is used. (711) irv hoff 12/5/82 bug removed related to simultaneous use of "save-file" and esc "softkey" by pushing/popping d and h on entry/exit to/from softcmd. last bug removed in sel command. ceased use of pmmi hardware timer, changed to dispatch tables at mspdsub and openok1, made lspeed automatic, saving much code. the command from the terminal mode allows the next character, a control code, to be sent but ignored locally. thus ^d, ^e, etc., can be sent to the remote for edit control, if desired. menu updated to reflex additions. dial routines and the manner mspeed is set improved. crt screen is cleared, not scrolled, before phone library displayed. (710) fg 11/22/82 send-a-file time calculation accuracy improved (tnx to irv hoff). added 'softkey' equate allowing string command output in terminal mode, e.g., esc '1' --> "dir *.* $u0ad" (tnx to bob kuhman for the suggestion). added a smarter protocol equate option for short file transfers under in terminal mode. further generation of subroutines and tightening of code. changed program name from modem783 to comm7 to eliminate version confusion. the default drive and user area can be operator changed from the command line prompt similar to bob fischer's hack of user: if at drive a, user 0, i.e., (a>), entering "b: 7" changes to "b7>". "b:" changes from a> to b>. thus "drive, colon, space, user number" changes to new drive/user area (tnx to paul traina for the code). changed the way sel is handled to save code and make more convenient for other than pmmi modem. (file is still 12k, worst case.) (700) fg 11/04/82 send-a-file time now calculated from both the command mode (.xxx) and terminal mode options by adding mspdsub and setmspd routines. added error traps for del, wrt, invalid option, ret and dir (disk reset) entries. send/receive errors displayed in decimal, not hex. bbs prompted file-send speeded to 85 wpm, from 70. cleaned-up the way 'no dial tone within ten seconds' and rcverr routines are handled. on send error, nak displayed instead of 015h. replaced many redundant in-line routines with called subroutines to reduce program size. improved the xprt (xprflg) routine allowing options when modem7 is first called. equate to handle zenith z19/h19 terminals added (for bob kuhman). (783) fg 10/2/82 fixed bug with rtc when set false. changed the exit routine to permit connected-line on returning to cp/m. added a lf at the dial-a-number routine. code to display time to send- a-file at 110-300-450-600-710 baud added, thanks to sandy smith and bhk. (782) fg 8/29/82 added rtc code to display data from the compu/time cw calendar board. reduced screen scroll at the command prompt level with an overwrite feature (inbufr change in modem780.lib). disk-system reset feature added to dir command. send/receive error counter now starts with 01h, not 00h. wrtdsk routine fixed so whole disk not written if you wrt a 0k file. changed the fastclk db to mhz equate for integer cpu clock rates. adjusted line lengths so prn file prints on 8-1/2" wide paper. took out cp/m 1.4 option. bottram set to 128-byte boundaries, not 256. added cp/m-convention era-files function from menu. general tightening of code to stay within 12k com file size. (781) fg 07/23/82 added simple delay loops (under ctrl-t) to permit 70 wpm file transfer into prompted line-editors of typical bbs's. the dir command macro in modem780.lib now shows storage space remaining on the default drive. single/double line spacing after commands to reduce screen scroll. sel function added to change the transmission word characteristics. several cosmetic bugs fixed. (780) fg 07/04/82 added more space for the telephone library -- now set to 72-character line width for two entries. added equates for crt "escape" character and "erase-to-end-of-line" for televideo 920c thus stopping screen flicker during line overwrites. added code to extend waitcts time, if needed, and to make the xprt mode automatic after showing the menu the first time. added the alert label to remind to save file after rentering command mode from terminal mode. fixed all bugs reported in modem versions 7.3x through 7.6x and incorporated some of the enhancements of 7.7 for single modem use. (762) fg 05/29/82 fixed savccp option when set to false. rlp 05/16/82 added rcvfil1 label so that switch between crc mode and checksum mode is done only on the first file transfer in batch mode. else the program hangs up on the second file transfer if the sending end is not crc capable. r.l. plouffe 05/01/82 extended the main menu to display most of the commands used by the program (requires 80-column crt screen). made some of the prompts more friendly and mnemonic. introduced cls equate to clear screen before going to menu. eliminated screen scroll during phone number auto re-dialing. (762) frank gaude' 04/29/82 changes at term, start1 and optck fix a bug that causes abort at the end of a file transfer if the originate 'o' or the answer 'a' character was not entered after the 't' term character when switching between term and menu. now the ogiginate or answer character has to only be entered once when comunications is first established. r.l. berg 4/12/82 merged in changes/enhancements from versions 7.32 and 7.4 and modem75.fix. this should hopefully give us one "master" version again. b.r. ratoff summary: 7.32 - delay loop at dilagn1 to allow "smart" terminals time to process bell character. modem75.fix - maintain originate mode on ret command after transferring files (at term:). restore option tables correctly on control-d command (at dir). issue "file open" message on receive (at rcvc3). 7.41 - make crc/checksum switching on receive automatic.... assumes crc and defaults to checksum on time-out. 2/20/82 changes at term and start1 fix a long standing bug in modem7x that causes abort at the end of a batch file transfer or an attempt to transfer a non-existent file. the call to noparit in donetce caused a computer that was in answer mode (but not explicitly by command option) to switch to originate mode thus causing the two ends to no longer communicate with each other. also added savccp byte and code to prevent overwriting of ccp at the users option. r.l. plouffe 1/23/82 the following changes were made in this version. rlp set file capture mode to overwite the ccp and changed exit to return to the ccp instead of doing warm boot. terml routine fix: added rick kawala's fix so that fewer framing errors will occur with hosts that send out characters with high bit set. cal command fix: all versions of modem7 including modem73 are supposed to be able to accept "cal n" (where n is either a library letter or a phone-number string) as a valid form of the cal command. in fact, however, the "n" will simply be ignored. this is because routine dialpl checks for a command length >= 4 as a signal to skip the library display, but the menu routine, after recognizing cal, sets the length to 1 so the l in cal doesn't look like an illegal secondary option. the following kludge repairs this defect. in routine dialpl, two lines above label dialpl0, change cmdbuf+5 to cmdbuf+6. also, in routine getcmd, three lines above label nxtopt2, change mvi a,1 to mvi a,20h and change the next line from sta cmdbuf+1 to sta cmdbuf+4. this makes the command look to the option processor like "ca n", and since a is a legal secondary option (which in this case is never used) the line passes muster. if an actual telephone number is used, you have to type an extra blank: cal 000-0000, whereas with library letters only one blank need be typed: cal a. 12/16/81 removed stack imbalance bug at colonb by adding a jmp brk1. r.l. plouffe 12/06/81 Eliminated "C" option entirely, made CRC mode automatic (see 10/29/81 below -- MODEM will go to checksum mode and send a NAK if no character is received within 3 seconds after sending the "C" to start CRC mode transfers). Jim Mills 12/05/81 Removed my name from Copyright notice and changed the call directory to my own list. Changed call function time-out to 25.5 seconds (not 20 seconds). Changed Port equate. Jim Mills, POB 2701, Glen Ellyn, IL 60137, (312) 469-2596. 11/21/81 fixed code so byte received is on same line when messages "xxh rcd, not soh" or "xxh rcd, not ack" are displayed. also changed stack size to 50h. p.l. kelley 10/29/81 Changed receive sector routine so that on the first time through when CRC is being used, it only waits 3 seconds to receive the SOH after sending the initial 'C'. If a character is not received within 3 seconds, then a NAK is sent and this program switches to CHECKSUM mode. The sending of the NAK causes XMODEM or MODEM to start sending the file using checksum checking. This allows the CRC MODEM7 program to be used with versions of XMODEM, MODEM, and MODEM7 that do not use CRC, even when MODEM7 has specified a CRC transmission. (John Mahr) 10/18/81 Added CRC option. This is another secondary option that is specified by giving a 'C'. MODEM RC.600 fn.ft MODEM ROC.300 fn.ft etc. note: cannot have more than 6 secondary options. When the file receive cmd. specifies CRC, the ltr. 'C' is sent in place of the initial NAK. This signals the sender (XMODEM47 or equiv.) that CRC is in effect. The sending program will replace the checksum with the CRC 2 bytes. CRC will give better than a 99.99% probability that there are no data errors. Code copied from MODEM213, thanks to John Mahr and Paul Hansknecht for the implementation. (WDE) 10/11/81 Add first NAK to RCVFIL to speed up start Removed monitor scroll from good block messages CTL-^ forces send of next char in T mode (for ctl-E, ctl-D) (WDE) 07/05/81 Added BRR ctrl char chgs, my number list (Bill Earnest) 06/05/81 Deleted some unneeded messages in the dial routines. (Bob Clyne) 05/31/81 Added detection of framing, overrun, and parity errors for Receive file routine. (A modified version of the routines in MODEM V2.06) Added provisions to send and receive either even or odd parity bit with PMMI modem in the 'S'end or 'R'eceive file modes - resets to no parity in other modes. Use of the parity feature will slow transfers slightly due to the extra (parity) bit being sent with each character. Also this is the only program that I KNOW OF that actually sends, or sets up the PMMI to receive, the parity bit. Both ends must be set to the same parity for it to work. Parity is invoked by adding a '0' (ASCII) for even parity or a '1' (ASCII) for odd parity to the 'S'end or 'R'eceive command string eg. R0.600. Changed timing for sending 'B'reak in the terminal mode. Changed the code so that the 'M'enu command works from the keyboard even when in XPR (expert) mode. Added display of hex in addition to decimal numbers for file length and sector numbers. Removed provision for remote cancel of file transfers in the 'S'end and 'R'eceive modes to prevent line noise from aborting a transfer. (Bob Clyne) 02/15/81 Patched in the ringback routines from DIAL6/23. It doesn't seem to be able to recognize when the other phone is ringing though so it is a little shakey. Put in routines to calculate file sizes and sector numbers in decimal. Put in code to transmit a "BREAK" with a PMMI for use with computers which use BREAK instead of Control S to suspend output. Control P is now the baudrate change request key and Control @ is the BREAK key.. (Bob Clyne) 12/18/80 Changed disconnect timing. 10/26/80 Minor revision to allow 25-second 'wait' after PMMI autodial -- longer time required for Chicago CBBS*. Jim Mills. * CBBS is a trademark of Ward Christensen and Randy Suess. (the idea for comm7 started with the release of modem741) 08/11/79 PUT IN RESETTING OF DMA ADDR TO 80H AT EXIT. WLC. 08/06/79 ADDED EQUATES FOR EXTERNAL MODEM (NOT S-100 PLUG-IN) (KBP) 08/05/79 ADDED D. C. HAYES MODEM SUPPORT BY JIM BELL (KBP) 07/24/79 MOVE INITIALIZE LOCAL STACK TO BEGINNING OF PROGRAM SO DEFAULT STACK IS NOT USED. ADD CONDITIONAL ASSEMBLY OPTION TO TERMINAL ROUTINE FOR TIMESHARE SYSTEMS. CORRECT ERROR IN LOCAL ABORT ROUTINE (WAS LOOKING FOR CONTROL E - NOW CORRECTLY LOOKS FOR CONTROL X). ADD REGISTER SAVES TO CONOUT, KEYIN AND AND KEYBOARD STATUS ROUTINES, AS SOME CBIOS ROUTINES CLOBBER THEM. (KBP) 07/01/79 MODIFIED PROGRAM TO ALLOW FOR NON-STANDARD VERSIONS OF CP/M. ALL REFERENCES TO ENTRIES INTO CP/M SHOULD BE MADE RELATIVE TO THE VARIABLE SYMBOL CALL "BASE". FOR EXAMPLE, THE EQUATE TO BDOS SHOULD BE BASE+5 INSTEAD OF 5. BASE WILL BE SET TO 0 WHEN THE VARIABLE STDCPM IS SET TO TRUE. (BOB MATHIAS). 05/24/79 FIX MISSING RETURN INSTRUCTION AT END OF INITIALIZATION ROUTINE. (KBP) 05/22/79 ADD FEATURE TO MAKE RECEIVE FILE ROUTINE SAY FILE SUCCESSFULLY OPENED, WHEN IN QUIET MODE. MOVE INITIAL GOBBLE GARBAGE INPUTS TO BEFORE COMMAND CPI'S SO ALL MODES ARE CLEARED. CHANGE INITIAL SEND WAIT TO 80 SECS TO ALLOW MORE TIME FOR RECEIVING END TO COME UP. ADD 'H' AFTER MSG THAT SHOWS NUMBER OF SECTORS IN EXTENT ABOUT TO BE SENT. (KBP) 05/09/79 ALLOW 'T' AND 'E' SUB-OPTIONS TO GO TO TERMINAL OR ECHO MODEM AFTER TRANSFERRING A FILE. (WLC) 04/28/79 Re-write program, making it more structured, and better commented. 04/26/79 REWRITTEN BY WARD CHRISTENSEN TO COMBINE IMPROVEMENTS TO THE ORIGINAL MADE BY WARD AND BY KEITH PETERSEN, W8SDZ, AND SUGGESTIONS BY JIM BELL WHICH KEITH IMPLEMENTED. SEE MODEM.DOC FOR ADDITIONAL HISTORICAL INFORMATION AND DOCUMENTATION. 04/25/79 From Keith Petersen W8SDZ: add technique of de- leting garbage characters to avoid problems with line glitches. 04/23/79 By Ward Christensen: put in PMMI variable baud rate select, originate, answer, quiet, disconnect; delete sense sw codes; add view, help, examples, etc. Change garbage char collection to "in" instr. not "recv". Add quit/retry from 12/78 vers which Keith didn't have. Un-do the 1/5/79 correction, allowing the receiver to ack if a duplicate block is sent, such as might happen if the receiver's original ack was garbaged. 04/11/79 Change send, receive, and eof ack wait times to 10 seconds to allow for slower disk systems. Change send wait time to 80 seconds to allow receiving end more time to come up. By Keith Petersen, W8SDZ. 02/19/79 Change receive wait time to 8 seconds to allow for slower disk systems. Climinate multiple cancel on aborting. Add conditional assembly for clock frequency > 2.0 mhz. by Keith Petersen 01/05/79 Correct error in receive file routine which did 'ACK' when sector number was wrong. Add wait routine to hold sending of file until receive end is ready. by Keith Petersen, W8SDZ 12/03/78 Add 16-sector buffer for less disk activity. This version typed by keith petersen, from information supplied by Jim Bell, K4FUP 11/20/78 Change send wait for ack time to 8 sec. for slower disk systems. Add control-X abort so receiving station can stop send. Add abort test to send and receive for local cancel. By Keith Petersen, W8SDZ 12/31/77 ADD RETRY/QUIT QUESTION 10/10/77 CORRECT TO SEND ANY LENGTH FILE 10/01/77 CHANGE EXIT$CHAR FROM CTL-C TO CTL-E FOR USE W/TIMESHARING COMPUTERS 09/26/77 ADD ERROR$LIMIT EQU 09/25/77 FIRST TESTING COMPLETE 09/23/77 FIRST WRITTEN BY WARD CHRISTENSEN