VOLUME 47 DESCRIPTION: CP/M Utility Disk. * NUMBER SIZE NAME COMMENTS CATALOG.47 CONTENTS OF CP/M VOL. 47 47.1 7K ABSTRACT.047 Abstracts and reviews. 47.2 10K BMAP7/11.ASM Bit Map program. 47.3 22K COPYFAST.ASM Revision of Tarbell's COPY.ASM. 47.4 2K COPYFAST.COM COM of above. 47.5 18K CYBER.ASM Bob Van Valzah's Modem program with buffering to Diablo Hytype. 47.6 22K DIAL6/23.ASM Modem program with autodial for PMMI. 47.7 2K DIAL6/23.DOC DOC of above. 47.8 8K DIRS9/8.ASM Sorted directory program. 47.9 3K FLIP3.ASM Flips Answer/Originate mode under BYE.COM. 47.10 14K MODEM.LIB Maclib library for MODEM7. 47.11 43K MODEM7.ASM Latest and greatest revision of Ward's "universal" MODEM.ASM. 47.12 8K MODEM7.COM COM of above. 47.13 16K MODEM7.DOC DOC of above. 47.14 3K MODEM7.SET Instructions for patching COM file if you don't have MAC*. 47.15 13K PROM.ASM Promburner program for the SSM PB1. 47.16 7K UCOPY.ASM Bob Van Valzah's version of the Tarbell COPY program. * MAC and CP/M are trademarks of Digital Research, Pacific Grove, CA.------------------------------------------------------------ CP/M USERS' GROUP VOLUME 47 ABSTRACTS MODEM & DIRECTORY PROGRAMS FROM THE CP/M "NETWORK" ------------------------------------------------------------ This file contains abstracts on the following programs which appear on this disk: BMAP7/11.ASM COPYFAST.ASM + .COM CYBER.ASM DIAL6/23.ASM DIRS9/8.ASM FLIP3.ASM MODEM.LIB + MODEM7.ASM + .COM + .DOC + .SET PROM.ASM UCOPY.ASM The programs on this disk are the most recent (as of 12/15/80) versions of various telecommunications & directory utilities which, until now, had not been officially submitted to the CP/M Users' Group but (a) have been extensively tested and (b) are definitely in the public domain. Some are just updates of CPMUG programs; others are new. A few need MAC for assembly and/or contain equates which must be altered to adjust the program to your system. TYPE the file and check the comments before assembling. No individual DOC files have been included [except for Mark Zeiger's MODEM7 and a DOC file written by Jim Mills for the DIAL.ASM program-- editor]. Information on how to use the programs is usually included in the ASM file comments. The programs were gathered by me from various MINICBBS systems and are presented here as a service to those who lack (1) a modem or (2) time or money for calling the MINICBBSs. The comments below are mine [except as noted]; the programs are by more talented people, chiefly Ward Christensen, Keith Petersen, and Bruce Ratoff. - Ben Bronson, CACHE, 10/18/80 - Jim Mills, CACHE, 12/15/80 ------------------------------------------------------------------ -- MODEM PROGRAMS -- MODEM7.ASM <== arbitrarily assigned the number 7 due to the many MODEM6's that were floating floating around. This version of MODEM bears only a little resemblence to Ward's earlier versions of MODEM, being greatly modified and enhanced. Some of the new features since MODEM4: 1. memory save feature in terminal mode, write to disk. 2. PMMI Modem owners will be able to autodial. 3. Batch mode: sender specifies files, ie: SOB.600 MODEM.* MACROS.LIB FOO.COM ETC.FIL This sends all modem.* files, macros.lib, foo.com & etc.fil in sequence. (may not be used in conjunction with previous versions) READ THE DOC AND SET FILES BEFORE USING MODEM7. The most common complaint I have received is that some of the commands are different (only a few) from Ward's earlier versions. These complaints are mostly from people who have not read the DOC and SET files! Mark could have commented the code better, and I added a few comments myself, but other than that, no complaints and I think you'll enjoy MODEM7 once you get used to the new command formats. Jim Mills CYBER.ASM This is Bob Van Valzah's program to do memory buffering from the modem and print it out on a Diablo Hytype printer. Applications are limited due to the harware required, but it is well commented and you should be able to modify it to your system, or include it's routines in other modem programs if you wish. Jim Mills DIAL6/23.ASM A (pulse-) dialing & terminal program. You can use it to call the SOURCE, MICRONET, CBBS, etc., but not to transfer programs (unlike MODEM) or to save on-screen information (unlike PLINK). In combination with those programs, however, it makes a fairly complete communications package. You have to be willing to go off-line periodic- ally (by typing ^E) in order to switch from one program to another. This clumsy procedure will presumably be outdated by a future superprogram [such as MODEM7 -- ed.] that combines elements of all three. [see the .DOC file written by Jim Mills.] Ben Bronson FLIP3.ASM Useful only if you or someone else is running your computer remotely (with PMMIBYE, DCHBYE, or the equivalent). When the remote user is having problems with transferring a program from your computer when it is sending in answer mode (which it will be if it comes up in response to an outside call), he/she can type "FLIP" and have it switch to originate mode, meanwhile switching his/her machine to answer mode by typing "^E" and "MODEM RA..." The program transfer will probably go faster with fewer retries due to checksum errors. Originate mode is at a lower frequency than answer mode and thus more immune to line noise interference. Ben Bronson ------------------------------------------------------------ -- DIRECTORY PROGRAMS -- BMAP7/11.ASM A pretty little program than produces a bitmap of your disk, originally from CPMUG (?) but updated so as to allow for many combinations of densities, sector sizes, & controllers. Useful in combination with disk dump utilities. DIRS9/8.ASM Gives a sorted directory in 4 columns. Other- wise works just like the DIR built into CP/M. ------------------------------------------------------------ DISK COPY PROGRAMS ------------------------------------------------------------ COPYFAST.ASM: source code for 8080 CP/M ASM.COM. COPYFAST.COM: COM file of above. COPYFAST was written by Chuck Weingart of CACHE as an improvement on the old Tarbell COPY program that did track at a time copies. Chuck's version fills memory from the source disk, then transfers it to the target disk, reading back and verifying byte-by-byte as well as a CRC check. The program does not require Tarbell hardware, and can operate on a single disk system, if desired. The code is commented and has several T/F switches to select various options. Most programmers should be able to modify it for their systems with no trouble. Jim Mills UCOPY.ASM UCOPY is Bob Van Valzah's version of Tarbell's copy program and I used it for a long time with my single drive system. With a 63K system, only 5 disk changes are required. One of the drawbacks to this version is that it does no verifying after the write to the target disk. It is useful for single disk systems using the BVIOS and BVBOOT from volume 38. Jim Mills --------------------------------------------------------------- MISCELLANEOUS --------------------------------------------------------------- PROM.ASM is a routine to program EPROMs with the contents of CP/M .COM files, using the S.S.M. PB-1 programming board. Good documentation is in the comments at the beginning of the source, but running it is very simple: if a COM file is less than 16K, just type PROM and answer the program prompts. The actual routines are moderately commented and structured, and can be assembled with ASM. As supplied, needs at least a 28K CPM, and probably requires editing to change the PB-1 port address. It will not correctly program TMS2716's in an appropriatly modified board without changing the source, but does 2708's and 2716's correctly. (reviewed by Chuck Weingart) DIAL6/23.DOC -- Documentation for DIAL.ASM as of 6/23/80 DIAL is a modem program for the PMMI that dials the phone number for you, either from a number you type in, or from a library of numbers contained in the program. It has the optional feature of being able to ring once, hang up and dial again for calling computers that use the PMMIBYE program with this facility. To dial a number contained in the 'library' of numbers, type the command line as follows: A>dial c This format will dial the third number in the 'library' for you -- including the ringback feature, if there is an 'R' included with that number in the number table. To dial a number not in the table, type the number after the program name on the command line: A>dial 1-312-545-8086 or you may simply type 'dial' and a 'return' to get into 'command mode'. At this point you may type in whatever number you wish. To dial a number with ringback option, first type an 'R' then the number. To see examples, type: A>dial x To disconnect, type: A>dial # LIMITATIONS: There is no facility for different baud rates. The baud rate in the version provided is set at 300, and may be changed, but you cannot change baud rates without re-assembling, unless you add the routines to do so. I recommend using Mark Zeiger's MODEM7, although it doesn't provide a library of numbers, nor does it provide the 'ringback' feature, but it is a much more versatile program than this, which is provided in the Users' Group because it does have some unique features. See the ASM code comments for more details on the operation. DOC file by Jim Mills of CACHE CP/M MODEM PROGRAM DOCUMENTATION by Mark M. Zeiger and James K. Mills 11/04/80 This program uses the file transfer routines written by Ward Christensen in his CP/M file transfer program (V2.0 as of 8/6/79) and is compatable with his program in single file transfer mode. Multi-file transfers are only possible between two systems running the program described below. This program has three functions: 1. Communication 2. Program transfer 3. Modem control (for PMMI Modem) COMMUNICATIONS The program may emulate a terminal or echo data back to sender (act as a computer). Terminal Mode - 'T' Option The terminal mode may be called with or without a file name. If a file is specified (it should be a new file), then anything received by the modem may be saved in memory and later written on disk. The save feature is toggled ON/OFF by Control-Y. On an IMSAI the front panel LEDs will indicated that memory save is toggled on by showing the binary value of the ASCII character received. For those with no front panel, a colon (:) will be printed at the beginning of each line when memory save is active. The colon will not be transmitted over the modem nor will it be saved in memory. If a file is not specified, then memory save can not be activated. If the memory buffer is full (the buffer is from the top of the program to the bottom of BDOS), the contents are automatically written to disk (but the file is not yet closed). Communications may then continue with the buffer reinitialized. The computer with which you are communicating must accept the X-ON and X-OFF (Control-Q and Control-S) conventions or data will be lost. When communications are over, use Control-E to exit from the Terminal mode and enter the Menu. The file to which you are writing must then be closed by using the 'WRT' command. If this is not done, all data will be lost. I decided not to close the file automatically since there will be times when you leave terminal mode and then decide to re-enter. This may be done while in the Menu by using the 'RET' command. You may re-enter Terminal mode and save in the same file as many times as you wish as long as you have not closed the file with the 'WRT' command. While in Terminal mode, Control-T will put you in File Transfer mode. This will allow you to send the contents of an ASCII file over the modem. This routine does no error checking and there are no protocols specified between this program and the receiving computer other than that it should be ready to receive data via the modem. Control-X will cancel the transfer. Computer mode - 'E' Option This mode echos data received by other computer. Only one computer may be in this mode at one time. There is no save feature in this mode. Useful if you wish to communicate with somebody running the terminal portion of the program. File transfer - 'S' and 'R' Options These features are the same as in the CP/M Modem program written by Ward Christensen except that upon completion of the transfer, control returns to the Menu unless the secondary 'T' option has been selected. In the latter case, control returns to Terminal mode. Remember that if you are operating a remote computer using a timesharing program (such as Ward Christensen's "BYE"), the remote should be instructed to send or receive in the quiet (Q) mode as a secondary option. Examples of commands for sending and receiving are listed below. Multi-file transfers Using the B (batch) secondary option, more than one file and ambiguous filenames may be transferred. To send files, use the primary option "S" and the secondary option "B" (along with any other secondary options and baudrate). To receive the files being sent, use the "R" primary option and the "B" secondary option. Files may not be named since filenames are sent by the sending program, but a disk drive may be specified (or else the files are written to the default drive). Backup option There is a byte at the beginning of the program (106H) that will create a backup file if a file on the disk has the same name as the file being received in multi-file transfer (see MODEM.SET). If this byte is set to 0FFH, a backup file will be created. If it is zero the file on the disk will be deleted before the new file is received. If you are running CP/M 2 and a file on the disk is designated R/O or SYS, a backup will be created whether the byte at 106H is set or not. Be careful - if you are running CP/M 1 and the drive on which you are receiving has an R/O file with the same name created by CP/M 2, the R/O file can not be accessed (found, changed, erased, etc.) by CP/M 1. You will therefore have two files with the same name when you are running CP/M 2. To fix this problem, use CP/M 1 to change the name of the file that is not R/O. Then use CP/M 2 to do what you want with the R/O file. Examples: The sender enters SBOT.600 B:*.COM to send all the COM files on disk B. Also specified were originate mode 600 baud (PMMI modem) and return to terminal mode when done. The receiver enters RBA.600 to receive all the files being sent on the default drive (also answer mode at 600 baud for PMMI). The sender enters the command SB.600 ASM.COM *.HEX B:M*.* which will send ASM.COM from the default drive, all the HEX files from the default drive, and all the files starting with "M" from the B drive. [note that neither 'A' or 'O' were specified: default is to whatever mode the PMMI is in currently] Multifile transfers may only be done from the menu. It may not be specified when the MODEM program is called. In other words A>MODEM SAB *.COM will result in an INVALID OPTION error message. Return to Menu - 'M' option When asked to select an option, 'M' returns to Menu. The MENU If the Modem program is entered with no option, the Menu is called. The Menu gives the choice of selecting the standard options as defined by Ward Christensen (T, E, R, and S). The Terminal mode has been greatly expanded as described above. The "R" and "S" commands must be called with a filename or you will be required to enter the primary command (S or R) and the filename again (but NOT the secondary options). If you want multi-file transfers, then the "R" option does not need a filename. RET - You may also enter terminal mode using the 'RET' command, but no data will be saved since a file may not be named with 'RET'. Use the 'RET' command to RE-ENTER Terminal mode after it has first been entered with the 'T' option. If this is done, you will still be able to save the communications if you were doing so before you exitted the terminal mode. WRT - The 'WRT' command must be used after leaving Terminal mode. This writes the last buffer to disk and closes the file. Failure to use the 'WRT' command results in loss of all data and a file of length zero. DEL - The 'DEL' command erases the most recent file accessed in Terminal mode. Useful if you decide after communications that you don't want to save information just gathered. CPM - The 'CPM' command reboots and returns to CP/M. XPR - The 'XPR' command is a toggle which causes the menu to be printed or not printed. Initially the menu is on unless the program is called with the "X" option (ie. A>MODEM X ). DIR - The 'DIR' command lists the directory of a CP/M disk. A drive may be specified (ie. DIR B:) or the default drive will be listed. After the directory is listed, the menu will not be printed whether XPR mode is on or off. If XPR mode is on and you wish to see the menu, hit return. FOR THE PMMI MODEM DSC - To disconnect you must use the 'DSC' command in the Menu. The original secondary options for the PMMI Modem (as defined by Ward Christensen) are "A" (answer mode), "O" (originate mode), and baudrate selection. See examples below. Once answer or originate and a baudrate have been selected (ie. SO.450 NAME.TYP), any subsequent options will use the same mode and buadrate. If you want to change the baudrate, it may be done without changing the mode. For instance, if you are in originate mode at 450 baud, then the command 'R.600 NAME.TYP' will allow you to receive a file at 600 baud in ORIGINATE mode. If you want to change the ans/orig mode, then you MUST select the baudrate again or it will default to 300. CAL - Allows dialing of number. If a connection to a computer is established, you will be able to select options (usually TO.xxx). If no connection is made after 15 seconds, [changed to 25 seconds in distributed version] then you will be informed and be given the option of redialing or returning to the menu. The dial routine may also be specified when the Modem program is called by entering A>MODEM C. No secondary options will be accepted when the "C" option is used. [Note: you cannot type: CAL 312-545-8086 -- well, you can, but the number will be ignored and you will have to retype it when the program asks for it -- in the latest version (11/4/80) there is a 'library' feature such as in DIAL.ASM. To use the CAL function, type CAL and a return at the menu. You will see a message 'WAITING FOR DIAL TONE' then a lot of stuff about entering the number. At this point you may type in a number, or you may type a letter which will designate one of the library numbers (which you must insert at assembly time). ^B - Control-B while in Terminal (or Echo) mode allows change of baudrate "on-the-fly." A carriage return gives 300 baud; all other rates (110-600) must be explicitely stated. LISTING OF COMMANDS AND OPTIONS Primary options S - send a CP/M file (must specify file/s) R - receive a CP/M file (must name file unless B sec opt used) T - terminal mode (specify file if memory save wanted) E - terminal mode with echo M - return to menu X - used only when program is called to initially toggle menu off Secondary options B - multi-file mode for sending and receiving files T - return to terminal mode after transfer (memory save off) R - view what is received in file transfer S - view what is being sent in file transfer V - view what is being sent or received in file transfer T - Terminal mode (used with remotely controlled computer) O - originate mode (PMMI modem) A - answer mode (PMMI modem) .xxx - baud rate xxx (xxx = 110-600 PMMI modem) EXAMPLES (fn = filename, ft = filetype) Send file, originate mode, 300 baud SO fn.ft Send another file, same mode and baudrate S fn.ft Receive file on B drive, 600 baud, ans mode, view what is being received, return to terminal mode RART.600 B:fn.ft Send all COM files, no messages on console, same baud and mode as last transfer SBQ *.COM Send two files from two different drives SB A:fn1.ft1 B:fn2.ft2 Receive files being sent by above on drive A (baudrate must be same and modes opposite) RB A: Terminal mode, save communication in file, 300 baud (default rate), originate mode (in terminal must type CTRL-Y to start save, in menu must type "WRT" to close file) TO fn.ft ASSEMBLING THE PROGRAM You must use Digital Researches' MAC to assemble the program. The files required are MODEM.ASM and MODEM.LIB. MACROS.LIB does not actually contain any macros in the true sense, but it does contain routines that are necessary for the program to run (MFACCESS however does use nested macros as real macros). If you have a PMMI and an IMSAI, you may assemble the file as is. If you do not have an IMSAI with a front panel, change IMSAIBYTE to 'FALSE' (near the beginning of the program). If you wish another character instead of the colon to indicate when memory save is active, change "MVI A,':' " to "MVI A,'char' " in the "TERM" routine where 'char' is the printing character you would like at the beginning of each line when memory save is active. If you do not have a PMMI, change the byte to 'FALSE' and put your modem status and data ports in the appropriate equates. The labels 'MODRCVR' and 'MODSNDR' should be the same as MODRCVB and MODSNDB (the bits tested) if your UART uses positive logic (JZ) and should be zero if your UART uses negative logic. If you have a Z-80 (or maybe a fast 8085), change the 'FASTCLK' byte to 'TRUE'. If any port or modem initialization must be done, put the initialization routine in the area labeled INITMOD (replacing the PMMI initialization routine). See MODEM.SET for more details. If you have a D.C. Hayes Modem, you may incorporate the routines from MODEM.ASM V2.0 (as of 8/6/79). You should also note the comment in the INBUFF routine near the end of the program. Any problems or bugs, please call me: Or latest revisor: Mark M. Zeiger James K. Mills 198-01B 67th Ave. 824 Jordan Place Flushing, N.Y. 11365 Rockford, IL 61108 (212) 454-6985 (815) 398-0579