BUFFERS.DOC This file explains the buffering scheme used in MEX, and how you can change it using the MEXPAT overlay file. MEX employs a number of dynamically-allocated buffers for such things as terminal-file storage, printer buffer, keystrings, modem pre-read queue, and the phone library. The size of these buffers are defined in a fixed area of MEX. You can change their values by editing and assembling MEXPATxx.ASM, then using MLOAD to bind in the new values: ASM MEXPAT12 MLOAD MEXNEW.COM=MEX114.COM,MEXPAT12 The variable labeled PSIZE in the MEXPAT file defines the number of Kbytes to use for the printer buffer. This can be set as low as 0, or as arbitrarily large as you'd like. The variable labeled ASIZE performs a similar function for the terminal-mode file capture buffer, but must be set to 2 or greater, to reserve the minimum 2K space for file transfers. One of the two (and only one) must have the value 255 (0FFH). This defines a particular buffer as the "top" buffer ... ie, the buffer allocated after all other space has been allocated, and extends to the top of the TPA. This is usually the largest buffer, and it is recommended that this be the terminal-mode capture buffer, since that is the most frequently used buffer. The PHSIZE label defines the maximum size of the phone library, in entries. Currently an entry is 37 bytes long, so the "standard" value for PHSIZE of 30 results in a phone library consuming more than 1100 bytes. Similarly, the KYSIZE variable defines the amount of space (in bytes) reserved for terminal-modem keystrings. The "standard" value is 400 bytes. If you don't use phone libraries or keystrings, either variable may be set to zero, and the resulting space reclaimed for the "top" buffer. Another buffer variable is the NSIZE label: this defines the size of the file-transfer batch filenames buffer (in Kbytes). For each 1K allocated to this buffer, you can transmit 85 files at a time. Hence, if 85 files are not enough, you can set NSIZE to 2 and transmit 170 files at a time. If you don't use batch file transfers, you can set this variable to 0, and reclaim the space for the "top" buffer. The XSIZE label defines the number of Kbytes for the file transfer disk buffer. Note that this is not an allocated buffer, but resides within the terminal-mode file buffer. XSIZE is used to restrict the actual size of the buffer, and should be less than or equal to ASIZE. This restriction is necessary in systems with extremely slow floppy disks, since there is the possibility of the remote end timing out while MEX flushes its disk buffer. PQSIZE defines the size of the queue used to service the modem at certain times (such as after sending an X-OFF to the remote when the terminal-file buffer fills up, during the overflow wait time. Also used to "watch" the modem while transmitting keystrings, SENDOUT strings, and within certain long loops, when there is a possibility of losing characters). This buffer must be a minimum of 2 bytes, and may be as arbitrarily large as you'd like. There is little to gain in increasing the size, however, unless you consistently run at speeds greater than 1200 baud. You may at some time see the message "Not enough memory for MEX!". This happens when there is not enough memory to meet MEX's minimum buffer requirements. Normally, this will only happen in small memory segments (when you're running a small CP/M system, for example, or running in a small MP/M segment), but you'll also see it if you've increased MEX's buffers too much. The only recovery possible is to reduce some of the buffers (or obtain more memory).