home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / desqview / commprog.arj / COMMPROG.TEC
Text File  |  1992-05-14  |  28KB  |  514 lines

  1. ID:CO Communications Programs and DESQview
  2. Quarterdeck Technical Note #237
  3. by Michael Bolton
  4. March 16, 1992
  5.  
  6. DESQview provides true multitasking on any DOS PC in the Intel 86 processor
  7. family, and on compatibles.  Users of communications software find this
  8. feature particularly appealing, since other work can be done while large files
  9. are being uploaded or downloaded.  The communications link remains unbroken
  10. without sacrificing the entire computer to the on-line session.
  11.  
  12. There are a number of considerations involved with using communications
  13. software under DESQview.  Many of these issues are complicated by the fact
  14. that communications technology, and all of the various parameters which
  15. surround it, can seem complex and obscure.
  16.  
  17.  
  18. Q. What are COM ports and IRQs?  How do they relate to each other?
  19.  
  20. A serial port is a piece of hardware which can be used to move information to
  21. and from the machine.  (When files or other forms of information are being
  22. transferred FROM a machine, that machine is said to be "uploading"; when files
  23. are being transferred TO a machine, that machine is "downloading".)  Unlike
  24. parallel ports, which move information eight bits at a time (as a multilane
  25. freeway moves cars), serial ports move data one bit at a time (as a single
  26. lane roadway).  The initial design specification for the IBM PC called for a
  27. single serial port, and this port was assigned a hardware Interrupt ReQuest
  28. line, or IRQ -- very simply, a means of notifying the processor that attention
  29. to a hardware device is required.  When an IRQ is asserted (or signalled), a
  30. processor interrupt, also known as a software interrupt, is called.
  31. Essentially, whenever a program or a piece of hardware asserts an interrupt,
  32. it asks the processor to run a subroutine.   The processor runs a bit of code,
  33. called an "interrupt handler", and then returns to where it was before. In the
  34. case of a serial port that is receiving data, each byte coming into the serial
  35. port causes a processor interrupt to be generated.  The processor stops
  36. whatever it's doing and calls the interrupt handler, which inspects the data
  37. at the serial port, and performs the appropriate action.  In the case of
  38. high-speed communications (i.e., greater than 2400 bits per second, or 2400
  39. bps), this can be happening on the order of tens of thousands of times a
  40. second.
  41.  
  42. Note that we have three things to keep track of here:  when something comes in
  43. through (1) a serial port, it signals the processor's attention via (2) an
  44. IRQ.  When the processor receives an IRQ, it executes a particular (3)
  45. software interrupt.
  46.  
  47. An interrupt of higher priority can take immediate precedence over one of
  48. lower priority; that is, an interrupt can interrupt another interrupt!  Other
  49. pieces of hardware -- the keyboard and the system timer -- were seen as being
  50. of potentially greater urgency than the communications port.  Consequently,
  51. they were given IRQ lines with lower numbers, indicating higher priority.
  52. Here's where life begins to get a little miserable:  COM 1 was thus assigned
  53. to IRQ 4 at this time, and IRQ 4 was set up to call software interrupt 0C hex
  54. (12 decimal).  So: COM1, using IRQ4, calls INT 0C.
  55.  
  56. Closer to the release date of the original PC, the designers found that they
  57. had an IRQ line available, nothing to put on it, and at least a notion that it
  58. might be desirable to have two serial ports on the machine.  COM 2 was
  59. therefore planned.  The next free available IRQ was... IRQ 3 -- it had not yet
  60. been assigned to a piece of hardware, although it had been assigned a
  61. processor interrupt.  So:  COM 2 was assigned to IRQ 3, which calls INT 0Bh.
  62.  
  63. Later still, with mice and modems proliferating, and adventurous users
  64. desiring more serial ports, the specs were augmented yet again.  Two more
  65. serial ports (named COM 3 and 4) were clearly necessary, but there were no
  66. Interrupt ReQuest lines available by which they could signal the processor
  67. that they needed attention.  Consequently, it was decided that COM 3 and COM 4
  68. would SHARE IRQs with COM 1 and COM 2.  That is COM 3 would be given IRQ 4,
  69. and COM 4 would be given IRQ 3.  The chart makes this a bit easier to see.
  70.  
  71. Serial Port     IRQ     INT Hex (Decimal)
  72. ===========     ===     =================
  73.   COM 1          4         0C    (12)
  74.   COM 2          3         0B    (11)
  75.   COM 3          4         0C    (12)
  76.   COM 4          3         0B    (11)
  77.  
  78. Note that it is possible to have a system configured differently.  Many I/O
  79. cards allow the user to associate communications ports with different IRQs.
  80. However, the above are the default settings and are quite typical.  For
  81. information on systems using more than two serial ports, you may require the
  82. services of a FOSSIL driver.  This allows serial ports and IRQs to be
  83. "multiplexed", or shared.  Information on FOSSIL drivers can be found on many
  84. bulletin board systems and in some books on online communications.
  85.  
  86. Q. Does DESQview support serial communications programs?
  87.  
  88. As stated above, DESQview's support of multitasking makes it ideal for those
  89. who wish to do other things while downloading is going on.  DESQview fully
  90. supports high-speed communications, and provides a number of features for the
  91. special handling that communications programs require.
  92.  
  93. Q. How should DESQview be set up for communications?
  94.  
  95. A. "Setup DESQview" Settings
  96.  
  97. Several settings are worthy of note in your overall DESQview setup.  The most
  98. important two are found in the Setup DESQview / Advanced Options / Performance
  99. section.
  100.  
  101.  
  102. 1) Optimize Communications should be set to Y.  This rotates the priority of
  103.    the IRQs, which by default are given priority equivalent to their numbers.
  104.    (Recall that the system timer is on IRQ 0  -- the lowest number and highest
  105.    priority -- and the keyboard uses IRQ 1.)  When Optimize Communications is
  106.    set to Y, the priority of IRQs is rotated, such that IRQ 2 typically gets
  107.    top priority (unless there is a mouse attached), 3 is next, and so on, with
  108.    0 and 1 receiving relatively low priority.  When DESQview sees a mouse
  109.    attached to IRQ2, DESQview gives IRQ3 top priority, on the assumption that
  110.    the that if you want to optimize communications, you want the serial ports
  111.    to receive top priority.
  112.  
  113.  
  114.    Optimize Communications can be set to a number as well; the number
  115.    represents the IRQ (NOT the serial port) which is to be receive the
  116.    greatest priority.
  117.  
  118.  
  119.    If you are having difficulties with a modem on COM1, for example, it
  120.    might be worthwhile setting Optimize Communications to 4 (for IRQ 4,
  121.    representing COM 1).  In this case, IRQ 4 will get top priority, IRQ
  122.    5 will be next, and so on.  Again, note that since the priority of
  123.    the interrupts is merely rotated, and not reordered, setting Optimize
  124.    Communications to 4 will give IRQ 4 the highest and IRQ 3 the lowest
  125.    priority.  This is ideal for systems on which the modem is on COM 1
  126.    (IRQ 4) and the mouse is on COM 2 (IRQ 3).  Without Optimize
  127.    Communications, note that, in this case, the mouse would actually
  128.    have higher priority than the modem!
  129.  
  130.    On a system with two modems -- one on COM 1 (IRQ 4) and the other on
  131.    COM 2 (IRQ 3), an Optimize Communications setting of 4 would be
  132.    terrible; IRQ 3 would drop to the bottom of the priority list, and
  133.    thus the modem attached to COM2 could lose some of the incoming data.
  134.  
  135. 2) It is important to make sure that the processor "sees" the
  136.    communications port frequently, since the bytes coming in to the
  137.    serial ports must be handled before the buffer on the communications
  138.    port overflows.
  139.  
  140.    DESQview allocates time to each program via "Clock Ticks".  A tick is
  141.    regulated by the system timer, which ticks 18.2 times every second,
  142.    regardless of the type of processor.  DESQview runs a foreground
  143.    application for n clock ticks, (where n is the setting under Setup
  144.    DESQview / Advanced Options / Performance / Clock Ticks / Foreground)
  145.    and runs EACH background application for the number of clock ticks
  146.    allocated to the background setting.  The time in which an
  147.    application runs is called a time slice.  An application is suspended
  148.    while other programs are running in their time slices.  (Naturally, a
  149.    program will not get a background time slice if it has been set not to
  150.    run in background.)
  151.  
  152.    As an example, assume that we have four processes running on our
  153.    machine, one of which is a communications program, and that
  154.    DESQview's clock ticks setting is at its default 9 and 3.  In this
  155.    case, the foreground application will have the processor's attention
  156.    for 9 ticks (9/18.2 seconds), and two background processes will have
  157.    3 ticks each (3/18.2 + 3/18.2 seconds), in between the 3 ticks
  158.    allocated to our communications program.  This means that our
  159.    communications program is getting the processor's attention once per
  160.    second, for about 1/6 of a second; thus, the processor is otherwise
  161.    occupied 5/6 of a second.  This is a long time for a communications
  162.    program to be absent from the processor's attention.  Bytes coming in
  163.    on the serial port can overflow the one-byte buffer in the standard
  164.    UART chip, thereby causing some bytes to be lost.  Depending on the
  165.    robustness of your communications software and the protocol it uses,
  166.    lost bytes will result in a delayed transfer while the errors are
  167.    corrected, corrupted files, or an aborted download.  The section
  168.    below on the 16550A UART will have more to say on this subject.
  169.  
  170.    In fact, the situation isn't usually quite as bad as all that, since
  171.    not every program takes its full slice all the time.  DESQview-aware
  172.    programs inform DESQview whenever they have finished a task, and can
  173.    therefore be suspended until there's more work to do.  Programs that
  174.    have been written with no particular consideration for DESQview, are
  175.    monitored while they are in the background -- when they do not have
  176.    access to the keyboard.  If such a program is waiting for keyboard
  177.    input, DESQview will abridge that program's time slice, and will not
  178.    switch back to it until that program is put to the foreground again.
  179.    And in fact, the situation is STILL better than the above might
  180.    suggest.  DESQview manages all of the interrupt request lines by
  181.    reprogramming the programmable interrupt controller chip.  When a
  182.    hardware interrupt is asserted, DESQview determines which process
  183.    needs urgent attention, and passes control to that program's
  184.    interrupt handler.  DESQview also prevents timer, mouse, and keyboard
  185.    interrupts from interfering while a communications interrupt is being
  186.    handled, thus giving your program time to catch up and manage the
  187.    incoming data.  If you have programs that are running in background,
  188.    they may be suspended temporarily to improve the smoothness of
  189.    communications; at the DESQview menu, type Rearrange / Tune
  190.    Performance / Runs in Background / No.  If, despite all this, data is
  191.    still coming in faster than it can be managed, adding a larger buffer
  192.    to your serial port might help; see the section on the 16550A UART
  193.    below.
  194.  
  195.  
  196. B. DVP Settings
  197.  
  198. Three settings in your program's DESQview Program Information File
  199. (accessed by the Change a Program Menu) are crucial for communications.
  200.  
  201. 1) A communications program must be set to use the serial ports.  If the
  202.    modem uses COM 1, Uses Serial Ports can be set to 1.  If the modem
  203.    uses COM 2, Uses Serial Ports can be set to 2.  If the modem is on
  204.    COM 3 or COM 4, or if you are at all unsure about which serial port
  205.    the modem is on, set Uses Serial Ports to Y.  See Quarterdeck
  206.    Technical Note #145 (COM3N4.TEC -- COM Ports and DESQview) for more
  207.    information on this.
  208.  
  209.    In a given window, DESQview can hide a port by setting its I/O port
  210.    address to 0, rather than to its actual address.
  211.  
  212.  When Uses Serial Ports is set to    DESQview hides the port address of
  213.  ================================    ==================================
  214.              1                                    COM 2
  215.              2                                    COM 1
  216.              N                               Both COM ports
  217.  
  218.    If a port is hidden in a given window, programs running in that
  219.    window should be unable to access that port.  An exception to this is
  220.    noted below, in the section headed "Programs that initialize the
  221.    serial ports".  DESQview never hides the port address of COM3 or COM4,
  222.    regardless of the "Uses serial ports" setting.
  223.  
  224. 2) A communications program must be set to run in background.  Valid
  225.    settings for Runs in Background are Y, N, or blank.  If the field is
  226.    left blank, DESQview will continue to run a program in background if
  227.    Uses Serial Ports is set to Y.
  228.  
  229.  
  230. 3) A communications program must be set not to swap out.  Valid settings
  231.    for Can be Swapped Out are Y, N, and blank, but a communications
  232.    program should be set explicitly not to swap out.  If the program is
  233.    swapped out, it will be suspended.  If it is suspended, at very least
  234.    data will be lost, and at worst, a system crash could result.
  235.  
  236. Other settings are important, too.
  237.  
  238. 1) As with all programs running under DESQview, allocating enough memory to
  239.    the program is important.  Many communications programs call on
  240.    external programs -- most often to use download protocols which are
  241.    not built-in to the program.  At the point where the external
  242.    protocol is called, the application will typically need more memory
  243.    than it has been using up to that point.  Take this into account when
  244.    allocating memory usage in the DESQview Change a Program Menu.
  245.  
  246. 2) Communications programs use "protocols" for file transfers -- these
  247.    are schemes which govern how the connected computers relate to each
  248.    other, how the information is organized, what error-checking routines
  249.    are going to be used, and so on.  Communications programs typically
  250.    support at least a few protocols directly, and often provide for
  251.    other protocols to be added externally.  What typically happens is
  252.    that such a program will allow the user to "shell out" to DOS
  253.    temporarily, and start a program which handles the file transfer with
  254.    the desired protocol.
  255.  
  256.    External protocols may cause a window to close prematurely if
  257.    Close on Exit is set to Y.  When an external protocol finishes a file
  258.    transfer, and issues a DOS Terminate Program call, DESQview may close
  259.    the window in which the communications program is running.  If you
  260.    are using an external protocol with your communications software and
  261.    the window closes after a file transfer, try setting Close on Exit
  262.    to N.  If you are using a batch file to load TSRs and a
  263.    communications program within a DESQview window, you will find that
  264.    the window remains open after the batch file has been completed; make
  265.    "exit" the last line of the batch file.
  266.  
  267. 3) A program which writes either graphics or text directly to screen must be
  268.    configured NOT to do so, if it is to run in background without corrupting
  269.    the screen of foreground applications.
  270.  
  271.    a) The ideal is for a program to be "DESQview- or TopView aware".  Such
  272.       programs write directly to screen normally, but write to DESQview's own
  273.       video buffer when running under DESQview.
  274.  
  275.    b) Programs which write directly to screen often have configuration options
  276.       which alter this strategy. Settings of this kind are often referred to
  277.       as "uses DOS calls for screen writes" or "uses BIOS writes", or "do not
  278.       write directly to screen".
  279.  
  280.    c) DESQview-386 refers to QEMM-386 and DESQview running together, on an
  281.       80386 or an i486 processor.  Programs running under DESQview-386 can be
  282.       "virtualized"; that is, DESQview 386 will intercept and properly manage
  283.       the screen writes of programs that write directly to the video hardware.
  284.  
  285.  
  286.    If none of these configurations is possible, there are two unpleasant
  287.    prospects.  The first is that the program must be suspended while it is in
  288.    background.  DESQview will suspend a background program that writes
  289.    directly to screen:
  290.  
  291.    a) if "Runs in Background" is set to N or blank, AND
  292.    b) if "Uses Serial Ports" is set to N.
  293.  
  294.    Suspending a communications program is unacceptable, since the essence
  295.    of a communications program is to exchange information continuously.
  296.    DESQview will therefore keep running a background program that
  297.    writes directly to screen:
  298.  
  299.    a) if "Runs in Background" is set to Y, OR
  300.    b) if "Runs in Background" is blank AND Uses Serial Ports is Set to 1, 2,
  301.       or Y
  302.  
  303. In this case, the program will continue to write directly to screen while in
  304. background, thus corrupting the display of foreground applications.  If you
  305. are not using DESQview 386, and if your program writes directly to the screen
  306. and cannot be dissuaded from doing so, you will be forced to tolerate the
  307. corrupted display or to change your communications software to a package that
  308. does not write directly to the screen or is DESQview-aware.  See the files
  309. DIRECTLY.TEC and VIRTUALI.TEC for more information on display and
  310. virtualization.
  311.  
  312. Q. Why does my download report serial communications errors when I move
  313.    my mouse?
  314.  
  315. Since many communications programs are text-oriented, and therefore
  316. don't use a mouse, having the mouse and the modem share an IRQ is not a
  317. particularly severe problem unless you are using both at the same time.
  318. DESQview allows -- and even encourages -- the user to do exactly that.
  319. An IRQ will be asserted every time the mouse moves, and consequently, if
  320. there is a modem on the same IRQ, contention for the processor's
  321. attention may result.  The issue here is to ensure that the mouse and
  322. the modem are not on the same IRQ.  A good rule of thumb is that if your
  323. mouse is on an even-numbered COM port, the modem should be on an
  324. odd-numbered one, and vice versa.
  325.  
  326.  
  327. Q. Why do I drop characters on downloads, when I never seem to drop
  328.    characters on uploads?
  329.  
  330. This is because on an upload, your machine is setting the pace;
  331. uploading is a "processor-driven" activity.  Your machine sends bytes
  332. out the serial ports whenever it's ready; if a lot of multitasking is
  333. going on, and if your processor is heavily loaded, the bytes are simply
  334. sent out more slowly.  The remote machine doesn't mind; it simply waits
  335. patiently for each byte.  The data being sent is important, but not
  336. urgent.
  337.  
  338. On a download, bytes come into the serial port continuously, and have to
  339. be handled quickly before more arrive.  Thus, downloading is
  340. "interrupt-driven" -- the processor is forced to divert its attention
  341. from whatever it's doing to handle the bytes in a time-critical way;
  342. downloading is important AND urgent.  If the processor can't handle the
  343. incoming bytes quickly enough, bytes are dropped, and depending on the
  344. robustness of the protocol, the download slows down, bytes are dropped
  345. and data is corrupted, or the download is aborted.  A 16550A buffered
  346.  
  347.  
  348. UART may help the situation (see below).  Some disk caches which use
  349. exTENded memory (XMS) can lock interrupts for long enough to interfere
  350. with smooth downloading; try the EMS configuration of such disk caches,
  351. or check the cache's documentation for tips on reducing interrupt
  352. overhead.
  353.  
  354. Q. What is a 16550A buffered UART?  How can it help high-speed
  355.    communications?
  356.  
  357. Serial connections on the PC and the modem are handled by a chip called a
  358. Universal Asynchronous Receiver Transmitter, or UART.  The kind of UART you
  359. have on your serial port can make a great deal of difference if you are
  360. multitasking and simultaneously communicating with another computer at high
  361. speed -- 9600 bps or greater.  The standard 8250 or 16450 UART chips which are
  362. found on most machines and on most add-in serial ports have a buffer, or
  363. temporary holding area, one byte in size.  Essentially, this means that the
  364. UART can store one byte while it is processing another.  When two computers
  365. are communicating at high speed, and while multitasking is going on, these
  366. buffers can overflow as described above.  The 16550A buffered UART provides a
  367. 16-byte buffer, which should be ample for high-speed communications.  The chip
  368. can be inserted into the same socket as the 8250 or 16450 -- if yours is
  369. socketed, rather than soldered to the system board or serial port; otherwise,
  370. an add-on serial port with a socketed UART may be needed if you intend to add
  371. a 16550A to your system.  Fortunately, both 16550As and serial cards are quite
  372. reasonably priced.  Your communications software must support the 16550A in
  373. order to take advantage of its buffering; otherwise, the 16550A will behave
  374. exactly like a 16450.
  375.  
  376.  
  377. Q. Somebody told me that communications programs must be loaded in the
  378.    first window.  Is this true?
  379.  
  380. If you are running DESQview on an 80286 or earlier processor, you may need to
  381. load your communications program in the first window.  The 80286 architecture
  382. and its forebears present a number of issues for DESQview users; these
  383. considerations are discussed in Quarterdeck White Paper #195, DESQview on
  384. 8088, 8086, and 80286 Processors.
  385.  
  386. On 286s or earlier, DESQview uses exPANded memory hardware for multitasking.
  387. Alternate mapping registers help DESQview to multitask more smoothly, and
  388. assist DESQview in managing high-speed communications programs.  DESQview uses
  389. one map for itself, and one alternate map, if available, for each open window.
  390. If you have alternate map sets available, high-speed communications can be
  391. done with little or no degradation in performance.
  392.  
  393. Some EMS boards only provide one alternate map set; if this is the case with
  394. your hardware, you may need to load your communications program in the first
  395. window.  Check the documentation that comes with your expanded memory board to
  396. see if it provides alternate maps, and if so, how many.  Make sure that there
  397. is an alternate map available for the window in which your communications
  398. program is loading.  Manifest reports this information to you, on the
  399. Expanded/Overview screen.
  400.  
  401.  
  402. On 80386 or i486 processors, QEMM-386 supplies eight real alternate maps by
  403. default, and allows this value to be adjusted in the unlikely event that you
  404. need to change it.  Thus, high-speed communications programs need not be
  405. loaded in the first window if you are running DESQview 386 (DESQview and
  406. QEMM-386 running together on an 80386 or i486).
  407.  
  408.  
  409. Q.  What is keyboard polling?  How can it interfere with multitasking?
  410.     How can I stop a program from excessive keyboard polling?
  411.  
  412. When DESQview sees a program running in background and waiting for keyboard
  413. input, that program will not be given its time slice until it comes to the
  414. foreground again.  This improves the smoothness of multitasking.  DESQview's
  415. presumption is that if the application is waiting for keyboard input before it
  416. does something, then there is no point in giving a full time slice to it while
  417. it can't see the keyboard.
  418.  
  419. An application -- especially one which is not DESQview-aware -- may take time
  420. away from the processor by "polling" for keyboard input instead of simply
  421. stopping when there is none.  That is, as part of a loop, an application may
  422. do a number of things, one of which may be to check if the user has pressed a
  423. key.  If the user has not pressed a key, the application will continue the
  424. loop, perhaps doing some useful work.  Unfortunately, once all useful work is
  425. done, the application simply checks the keyboard more or less continuously.
  426.  
  427. If the program is merely checking or "polling" for input, as part of a loop in
  428. which other potentially useful work is done, DESQview will not suspend that
  429. program.  If the application is in background under DESQview, it does not have
  430. access to the keyboard, and therefore this polling for input is futile until
  431. the application comes to the foreground again.  Keyboard polling wastes
  432. processor time; applications that run under DESQview, and which have no hope
  433. of doing real work until the user presses a key, should wait for keyboard
  434. input instead.
  435.  
  436. DESQview-aware programs may implement the DESQview API Pause call, which
  437. informs DESQview that the program does not need its time slice until it has
  438. more useful work to do.  DESQview cuts short the time slice of applications
  439. making the Pause call, and gives the time slice to the next task -- the
  440. foreground program, or an application that has useful work to do in
  441. background.
  442.  
  443. Some DESQview utility programs, distributed as shareware, monitor applications
  444. which poll the keyboard, and issue the Pause call for applications which seem
  445. to be polling the keyboard without doing other useful work.  Some of these
  446. utilities are available on the Quarterdeck BBS at (310) 314-3227, on
  447. Compuserve (in the PCVENB section), or in the DESQview or multitasking
  448. conferences on large local BBS systems.
  449.  
  450.  
  451. Q. When I start a new window under DESQview, my download is cut off.
  452.    What's going on?
  453.  
  454. Some ill-mannered programs initialize the serial ports as part of their
  455. start-up routines.  If, when you start a program under DESQview, you find your
  456. background communications session suddenly aborted, the new program may have
  457. cleared the serial ports.  DESQview can sometimes hide the serial ports from
  458. applications that inquire about the ports installed on the machine (try
  459. setting "Uses Serial Ports" to N in the Change a Program Menu of the offending
  460. application) but programs may also clear the serial ports unilaterally without
  461. asking about their status.  DESQview cannot prevent this, and in fact the
  462. prognosis for coexisting with programs that clear the serial ports is poor.
  463. If there is no way to configure the offending program to avoid doing this, the
  464. only workaround is to load such a program before starting your communications
  465. program, and to contact the developer of the intrusive application to request
  466. that this behaviour be altered.
  467.  
  468.  
  469. Summary
  470. =======
  471.  
  472. DESQview supports high-speed communications better than any DOS multitasker on
  473. the market.  It is important to ensure that your communications ports are set
  474. up correctly, and that no other devices on your system are contending for
  475. IRQs.
  476.  
  477. The settings in Setup DESQview should be as follows:
  478.  
  479. Optimize Communications = Y (or the number of the IRQ that should
  480.                              receive highest priority).
  481.  
  482. Clock Ticks should be set to a relatively low and relatively even value to
  483. ensure the smoothness of multitasking and downloadind.
  484.  
  485. The DESQview Change a Program Menu should contain the following settings:
  486.  
  487. Uses Serial Ports  = Y (or 1 or 2, for the number of the serial port used)
  488. Runs in Background = Y
  489. Can be Swapped Out = N
  490.  
  491. Enough memory should be allocated to the application.
  492.  
  493. If the communications program writes directly to screen, it should be
  494. virtualized on a 386 machine running DESQview 386.
  495.  
  496. Uploading is processor-driven, and requires little extra configuration;
  497. downloading is interrupt-driven, and can require some special considerations.
  498.  
  499. Beware of XMS disk caches that lock out interrupts for too long.
  500.  
  501. Keyboard polling can be suppressed to smooth both multitasking and
  502. communications.
  503.  
  504. Beware of programs that initialize the serial ports.
  505.  
  506. A 16550A buffered UART may be needed for high-speed communications.
  507.  
  508.  
  509.   ************************************************************************
  510.   *This technical note may be copied and distributed freely as long as it*
  511.   *is distributed in its entirety and it is not distributed for profit.  *
  512.   *         Copyright (C) 1991-2 by Quarterdeck Office Systems           *
  513.   ************************ E N D   O F   F I L E *************************
  514.