home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / p / portclnt.tec < prev    next >
Text File  |  1993-03-21  |  9KB  |  177 lines

  1. ID:XC Porting X Window System programs to DESQview/X
  2. Quarterdeck Technical Note #262
  3. by Brian Cunningham
  4. Last revision:  24 September 1992
  5.  
  6. INTRODUCTION
  7.  
  8. The following technote was written to help those who are somewhat familiar 
  9. with X Window programming determine what tools they will need to port X Window 
  10. applications to the DESQview /X environment.  For an introduction to X Window 
  11. programming, see the "Introduction to Writing X Window Clients" technote 
  12. available from Quarterdeck as well.
  13.  
  14. AN OVERVIEW OF THE X WINDOW SYSTEM
  15.  
  16. It is important to realize that the X Window System is nothing more (nor 
  17. less!) than a system-independent GRAPHICS standard.  It is NOT a computer-
  18. independent OPERATING SYSTEM standard.  Especially in terms of disk access, 
  19. memory allocation and multitasking, each operating system is different - even 
  20. when the X Window System is running.  Because this is true there are many 
  21. reasons that programs will or must contain code that won't work at all on 
  22. another type of system.
  23.  
  24. From the perspective of an application programmer, X Windows is a collection 
  25. of pre-written program elements (called "libraries") that can be used in any 
  26. program when graphics need to be manipulated.  X Windows also accepts user 
  27. input specifying the location of the display hardware (this control is not 
  28. part of an application, however, so the application programmer does not need 
  29. to write code to handle this type of user input).  Since user input - from 
  30. either a keyboard or a mouse - is usually required to work with information 
  31. displayed on the screen, the X Window System also provides standard libraries 
  32. for responding to input activity as well.
  33.  
  34. Although the X Window System can be found on many computers, it is currently 
  35. most common on Unix machines.  As a result, the following two porting 
  36. scenarios are both related to porting X Window programs (called "clients") 
  37. from Unix to DOS.  There will be similar operating system specific issues to 
  38. address when porting X Windows clients to DESQview/X from ANY other operating 
  39. system (e.g., MacIntosh or VMS based X Window clients).
  40.  
  41. EXAMPLE ONE - MULTITASKING
  42.  
  43. In a program written for a Unix machine, each part of a program can run 
  44. independently of the rest of the program.  These "parts" are called processes. 
  45. No matter which program is responsible for starting a process each process 
  46. will be stored in a queue by the operating system.  Thus the operating system 
  47. determines how much time to give a particular program based on how many 
  48. separate processes it has in the queue, as well as what priority each of those 
  49. processes have been assigned.
  50.  
  51. The command that is used to run a process is "fork".  In Unix programs, 
  52. processes are "forked" all the time.  Unfortunately, there is nothing even 
  53. remotely similar to "fork" in DOS.
  54.  
  55. In a single-tasking operating system, like DOS, there is no queue.  Whatever 
  56. program is running has complete control of the processor and is responsible 
  57. for running any subprograms that it needs, each of which will control the 
  58. processor entirely until it finishes.
  59.  
  60. Multitasking in the DOS environment is basically a matter of switching whole 
  61. programs in and out of the one megabyte DOS limit and then giving the programs 
  62. some fixed amount of processing time while they are there, even if they don't 
  63. need to do anything at all at that time!
  64.  
  65. This implies, of course, that programs that are ported from Unix to DOS must 
  66. have all commands that attempt to run separate processes removed.
  67.  
  68. Although this is normally true, DESQview/X, which has the multitasking 
  69. features of DESQview built in, allows a programmer (in SOME cases) to replace 
  70. the "fork" command with the app_start() function from the DESQview API (A 
  71. library of DESQview-specific multitasking functions).
  72.  
  73. To decide whether references to separate processes should be removed or 
  74. modified when porting to DOS it will be important to become familiar with the 
  75. DESQview API documentation.  The documentation describes the purpose and 
  76. function of each API call in detail.
  77.  
  78. EXAMPLE TWO - MEMORY
  79.  
  80. Using and allocating memory is another area where Unix and DOS environments 
  81. differ.  Unix systems use what is known as a "flat" memory model.  That is, 
  82. the memory is all of one type and linear.  Memory, if present, is simply 
  83. allocated when needed.
  84.  
  85. With a DOS machine the situation is quite different.  No matter how much 
  86. memory is physically installed in the system, DOS limits the executable 
  87. program size to one megabyte or less.  Furthermore, in a DOS machine, 
  88. addresses between 640k and one megabyte are normally used by hardware and, 
  89. potentially, by programs such as device drivers and TSRs (programs that stay 
  90. resident in memory after terminating, often re-activated using a program 
  91. specific key combination).  Thus the effective maximum size of an application 
  92. is usually 640k MINUS the space used by DOS and any device drivers and TSRs 
  93. that are too large to load between 640k and one megabyte.  DOS uses anywhere 
  94. from 20k to 80k.
  95.  
  96. DESQview/X and network drivers will also consume memory inside the one 
  97. megabyte limit.  Therefore it is a good idea to make a program as small as 
  98. possible.  Inside DESQview/X, on a networked computer, the program space may 
  99. sometimes be limited to less than 450k (although a typical system will usually 
  100. have 520k to 580k of conventional memory free).  Generally users will be able 
  101. to increase their window size to a certain extent by following the procedures 
  102. outlined in MAXWINDO.TEC, a technote available from Quarterdeck.  Since there 
  103. are programs that require  more than 450k of RAM, various methods are used to 
  104. access more than the first megabyte of address space.
  105.  
  106. 1) Replace DOS
  107.  
  108. DOS Extenders allow 32-bit programs to use many megabytes of RAM for the 
  109. program space.  The extender is incorporated into the program rather than into 
  110. DOS.  Using a DOS extender allows a program to be ported to DOS without 
  111. worrying about altering its memory model (there are some special 
  112. considerations, however, but the details are specific to the brand of DOS 
  113. extender and will only be found in the documentation for such a product). 
  114. Using a DOS Extender is generally the simplest way to port large, 32-bit 
  115. programs to DOS.
  116.  
  117. 2) Use expanded memory
  118.  
  119. A memory device can be added to a DOS system that is capable of both 
  120. controlling a number of megabytes of memory, as well as swapping the contents 
  121. of that memory in and out of a 64k address range inside DOS's one megabyte 
  122. limit.  This device is known as an expanded memory board.  Because the memory 
  123. that contains a running program must be contiguous (i.e., sequential) and 
  124. entirely inside the one megabyte DOS limit, expanded memory boards are not 
  125. capable of running programs.  They can, however, be used for storing large 
  126. quantities of data.  A programmer should be aware of this kind of memory only 
  127. when the program being ported is small (500k or less) but uses a large data 
  128. space.  In this case the programmer may wish to use expanded memory simply 
  129. because there are so many systems with this type of memory board installed.
  130.  
  131. Also, expanded memory hardware may be emulated by a special program called an 
  132. "expanded memory manager" on 80386 and i486 based machines.  Quarterdeck's 
  133. pioneering expanded memory manager, QEMM-386, is an integral part of 
  134. DESQview/X.  Thus expanded memory is available to every program that is 
  135. running inside of DESQview/X.
  136.  
  137. WHAT YOU WILL NEED TO LEARN
  138.  
  139. If you really want to port programs from Unix to DOS (and vice versa), you 
  140. will need to become familiar with writing programs from scratch for both 
  141. environments.  Only by studying DOS programming will it become clear how to 
  142. modify existing Unix programs.
  143.  
  144. To become proficient in DOS programming, especially as this relates to writing 
  145. DESQview/X programs, you will need quite a bit of information.  If you already 
  146. know how to write X Window system programs in C then you will need to read the 
  147. following as well.
  148.  
  149. C Compiler Manual - DOS based
  150.  
  151. DOS Extender Manual
  152.  
  153. A DOS programming guide
  154.  
  155. DESQview API Documentation
  156.  
  157. DESQview /X X11 Toolkit Documentation
  158.  
  159. CONCLUSION
  160.  
  161. As a final note it should be mentioned that it IS possible to write a program 
  162. that can be ported EASILY from Unix or other non-DOS X/Windows systems to DOS. 
  163. Programs like Xeyes that use no operating system specific code can be ported 
  164. in a matter of minutes - as long as the C compiler and DOS Extender elements 
  165. are all in place.  Using only ANSI C standard library calls and standard X 
  166. Window library calls will make simple porting a reality.  If your goal as a 
  167. programmer is to write portable code, then using standard C library calls, 
  168. rather than operating system or hardware specific code, should be your normal 
  169. practice.
  170.  
  171.   ************************************************************************
  172.   *          Trademarks are property of their respective owners.         *
  173.   *This technical note may be copied and distributed freely as long as it*
  174.   *is distributed in its entirety and it is not distributed for profit.  *
  175.   *          Copyright (C) 1992 by Quarterdeck Office Systems            *
  176.   ************************ E N D   O F   F I L E *************************
  177.