home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / DRI-archive / roche / GSX13ART.TXT < prev    next >
Internet Message Format  |  2009-12-11  |  29KB

  1. From: "French Luser" <Bill.Ga...@microsoft.com>
  2. Newsgroups: comp.os.cpm
  3. Subject: GSX-86 Version 1.3
  4. Date: Wed, 2 Feb 2005 13:48:22 +0100
  5. X-Priority: 3
  6. X-MSMail-Priority: Normal
  7. X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
  8. X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
  9. Lines: 715
  10. Message-ID: <4200ccb7$0$6614$8fcfb975@news.wanadoo.fr>
  11. Organization: les newsgroups par Wanadoo
  12. NNTP-Posting-Host: 81.49.7.71
  13. X-Trace: 1107348664 news.wanadoo.fr 6614 81.49.7.71:20096
  14. X-Complaints-To: abuse@wanadoo.fr
  15.  
  16. GSX13ART.TXT
  17. ------------
  18.  
  19. "Digital Research's GSX: Graphics Portability"
  20.  by William G. Wong
  21.  in "MicroSystems", July 1984, p.74
  22.  
  23. (Retyped by Emmanuel ROCHE.)
  24. (Deals with GSX-86 v1.3 for the IBM PC.)
  25.  
  26.  
  27. Graphics software is becoming more and more common and important
  28. in  computer   applications.  However,   in  the   microcomputer
  29. industry, the lack of standard computer graphics interfaces  has
  30. led  to  applications  programs  that  must  be  customized  for
  31. different machines, or are available for  only one  machine. The
  32. reason  for  this situation  is that  the leading  microcomputer
  33. operating systems (CP/M-80, CP/M-86, Concurrent CP/M, MS-DOS and
  34. PC DOS) provide standard interfaces for disk storage  and simple
  35. character  I/O,  but  have  no similar  interfaces for  graphics
  36. peripherals.
  37.  
  38. The Graphics System eXtension (GSX) from Digital Research,  Inc.
  39. (DRI) provides a standard graphics interface  for the  operating
  40. systems mentioned above. GSX complements these operating systems
  41. and has a similar structure, as shown below.
  42.  
  43.         Graphics Program
  44.                 |
  45.                 V
  46.         Graphics Device Operating System (GDOS)
  47.         Graphics I/O System (GIOS
  48.                 |
  49.                 V
  50.         Graphics device: plotter, printer, etc.
  51.  
  52. It handles  internally all  graphics-related service  calls from
  53. the  application  program; service  calls for  disk storage  and
  54. character I/O are passed to the operating system for processing.
  55.  
  56.  
  57. Structure of GSX
  58. ----------------
  59.  
  60. GSX, like  CP/M or  PC DOS,  has two  principal components:  the
  61. Graphics  Device  Operating  System  (GDOS),  and  the  Graphics
  62. Input/Output System (GIOS). The GDOS, like CP/M's BDOS, provides
  63. a standard interface between  the applications  program and  the
  64. operating system. There is also a standard interface between the
  65. GDOS and the GIOS. Thus, GDOS and BDOS  each support  a standard
  66. set of functions that can be accessed by an application program,
  67. and that does not change from machine to machine.
  68.  
  69. The GIOS  and BIOS  consist of  hardware-dependent modules  that
  70. convert service requests to the GDOS and BDOS into commands that
  71. are  understood  by  the  peripheral devices.  The modules  that
  72. controls  a  specific  peripheral  is usually  called a  "device
  73. driver"; there is one device driver for each peripheral attached
  74. to the system. Thus, changing the  plotter merely  requires that
  75. the GIOS incorporate a device driver for the new plotter.
  76.  
  77. This structure  ensures that  an application  program will  run,
  78. without  modification,  on  any  machine that  supports GSX.  Of
  79. course, peripheral characteristics will affect the  results. For
  80. instance, a program on a machine with a high-resolution plotter,
  81. may draw green, red, and blue circles, while  the same  program,
  82. run on a machine that has  only a  low-resolution printer,  will
  83. give only good approximation of the circles in black and white.
  84.  
  85.  
  86. GSX environment
  87. ---------------
  88.  
  89. GSX is a dynamic system that is loaded before running a graphics
  90. program, and remains resident until explicitly removed from  the
  91. system, when no further graphics programs  are to  be run.  This
  92. means that the memory overhead for GSX (about  15K for  the 8080
  93. version, about 24K for the 8086 version) is not incurred  unless
  94. GSX is loaded.
  95.  
  96. The loading process brings the GDOS and GIOS into memory. Unlike
  97. CPM's BIOS, which always contains a  driver for  every character
  98. I/O device in the system, and is resident at all times, the GIOS
  99. contains only one device driver -- initially, the driver for the
  100. default graphics device. Of course, this does not mean that  you
  101. are restricted to one graphics peripheral: it merely  means that
  102. GSX can work with only one  peripheral at  a time,  so only  one
  103. device driver is loaded at any one time, though the  application
  104. program can request GSX to abandon the current device driver and
  105. load another one instead. This is the "workstation" concept.
  106.  
  107. A  given  workstation  has  one,  and  only  one,  device driver
  108. associated  with  it. An  applications program  can request  the
  109. opening of a workstation, in the same way that it  might request
  110. a file to be opened.
  111.  
  112. Some of the peripherals supported under  GSX on  the IBM  PC are
  113. listed in Table 1 below. You will note that these fall into four
  114. device types: displays, plotters, printers, and cameras.
  115.  
  116. Table 1. GSX drivers
  117.  
  118. Displays
  119. --------
  120. Artist 2 graphics card
  121. Hercules graphics card
  122. IBM PC color adapter (color mode)
  123. IBM PC color adapter (monochrome mode)
  124. IBM 3270-PC adapter (hi-res color mode)
  125. IBM 3270-PC adapter (monochrome mode)
  126. Plantronics PC+ Colorplus adapter
  127.  
  128. Plotters
  129. --------
  130. Hewlett-Packard 7470A/7475A
  131. Houston Instruments DMP-29/4X
  132. Strobe 100/200/260
  133.  
  134. Printers
  135. --------
  136. Anadex DP-9001A/9501A/9625A
  137. C.Itoh 8510A
  138. Centronics 351/352/353
  139. Data South DS-180
  140. DEC LA50 and LA100
  141. Diablo C150 Ink Jet
  142. IBM/EPSON FX-80 graphics printers
  143. IDS Prism 80/132/480 (monochrome)
  144. Mannesmann Tally MT160 (hi-res mode)
  145. Okidata MicroLine 92A/93A/84/92/93
  146. Phillips GP300L
  147. Printronics MVP
  148. Transtar Color
  149.  
  150. Cameras
  151. -------
  152. Polaroid Palette
  153.  
  154. Table  2   shows  the   workstation  (logical   device)  numbers
  155. associated with each device class.
  156.  
  157. Table 2. Logical device numbers
  158.  
  159. Logical device number   Device class
  160. ---------------------   ------------
  161.          1-10           Display
  162.         11-20           Plotter
  163.         21-30           Printer
  164.         31-40           (reserved for Metafile)
  165.         41-50           Other devices
  166.  
  167. The  association  of  workstation  (logical  device)  numbers to
  168. device drivers  is accomplished  by means  of a  file designated
  169. ASSIGN.SYS. Each entry in  this file  consists of  a workstation
  170. number, the name of  the file  containing the  associated device
  171. driver, and (where necessary) a comment preceded by  a semicolon
  172. (";").
  173.  
  174. The following is an example of an ASSIGN.SYS file:
  175.  
  176.  1 A:IBMBLMP2 ; IBM Color adapter, monochrome mode
  177.  2 A:IBMBLCP2 ; IBM Color adapter, color mode
  178. 11 B:IBMHP7472 ; Hewlett-Packard 7470A/7475A Plotter
  179. 21 B:DD3EPSNH ; IBM/Epson FX-80 hi-res Printer
  180.  
  181. This file may be  created or  modified with  the aid  of a  text
  182. editor, or by using the GSX  GINSTALL program.  This program  is
  183. menu driven and easy to use; it shows you the current status  of
  184. the ASSIGN.SYS file, and  allows you  to make  changes via  menu
  185. selection,  presenting  device  driver  descriptions instead  of
  186. merely the rather cryptic filenames.
  187.  
  188. When  your  selections  are  complete,  GINSTALL  saves the  new
  189. ASSIGN.SYS file, and copies all necessary device driver files to
  190. the selected program disk. Note that ASSIGN.SYS may specify more
  191. than one workstation number of a  given class  (e.g., the  above
  192. example specifies two display devices), but a workstation number
  193. must be  assigned to  one, and  only one,  unique device  driver
  194. name.
  195.  
  196. Once ASSIGN.SYS has been set up, running an  application program
  197. under GSX is easy. For example, to run DR DRAW under PC DOS, you
  198. would enter:
  199.  
  200. GSX
  201. DRAW
  202.  
  203. A   similar   sequence  would   start  any   GSX-based  graphics
  204. application under PC DOS (under CP/M-86, GSX.EXE is  replaced by
  205. GRAPHICS.CMD).
  206.  
  207. (ROCHE> On my IBM Clown, I need to insert a "MOUSE" line between
  208. GSX and DRAW8086...)
  209.  
  210.  
  211. GDOS program interface
  212. ----------------------
  213.  
  214. The program/GDOS interface is very similar  to the  program/BDOS
  215. interface. There is a single entry point that accepts a function
  216. code (indicating a GSX call) and a ref to a parameter block. The
  217. GDOS performs the function, using the specified parameters,  and
  218. then returns to the  calling program.  A status  result for  the
  219. open  workstation  is  returned  in the  accumulator; any  other
  220. results  are  returned through  the parameter  block. Listing  1
  221. shows typical  GSX calling  sequences in  assembly language  for
  222. 8080 and 8086 machines.
  223.  
  224. Listing 1. GSX calling sequences
  225.  
  226. A) in 8080 assembly language:
  227.  
  228. bdos    EQU     0005H           ; CP/M-80 entry point
  229. gsx     EQU     115             ; GSX function number
  230. ;
  231.         MVI     C,gsx           ;  C = GSX function number
  232.         LXI     D,param         ; DE = GSX parameter block
  233.         CALL    bdos            ; Perform GSX function
  234.  
  235. B) in 8086 assembly language:
  236.  
  237. cpm     EQU     224             ; CP/M-86 entry point
  238. gsx     EQU     473h            ; GSX function number
  239. ;
  240.         MOV     DX,OFFSET param ; DX = offset  of param block
  241.         MOV     DS,SEG param    ; DS = segment of param block
  242.         MOV     CX,gsx          ; CX = GSX function number
  243.         INT     cpm             ; Perform GSX function
  244.  
  245. The parameter block, of which the  FWA (First  Word Address)  is
  246. given in the calling sequence, contains five refs, as follows:
  247.  
  248. 1. FWA of control array
  249. 2. FWA of input parameter array
  250. 3. FWA of input coordinate array
  251. 4. FWA of output parameter array
  252. 5. FWA of output coordinate array
  253.  
  254. In the case of 8-bit machines, these FWAs are 16-bit  addresses;
  255. in the case of 16-bit machines, they are standard 32-bit segment
  256. offsets. The arrays themselves are made  up of  16-bit integers,
  257. regardless of the implementation.  The length  of each  array is
  258. dependent upon the function to be performed, and is specified in
  259. the first part of the control array, as follows:
  260.  
  261. 1. GSX function number
  262. 2. Input coordinate array size
  263. 3. Output coordinate array size
  264. 4. Input parameter array size
  265. 5. Ouput parameter array size
  266.  
  267. Subsequent elements in the control array are dependent  upon the
  268. GSX function number, and are not always required. Note that  the
  269. coordinate array sizes come  before the  parameter array  sizes;
  270. this is done because the GDOS converts the coordinate arrays for
  271. the GIOS, and since some conversion  is always  done, coordinate
  272. array sizes must always be given, even if the size is zero.
  273.  
  274. Table 3 contains a list of the GSX function numbers.
  275.  
  276. Table 3. GSX function numbers
  277.  
  278.  #      Description
  279. --      -----------
  280.  1      Open workstation
  281.  2      Close workstation
  282.  3      Clear workstation
  283.  4      Update workstation
  284.  5      Escape (device-specific operation)
  285.  6      Draw polyline
  286.  7      Draw polymarkers
  287.  8      Draw text
  288.  9      Draw filled area (polygon outline)
  289. 10      Display cell array
  290. 11      Perform Generalized Drawing Primitive (GDP)
  291.          (such as drawing a circle or an arc)
  292. 12      Set character height
  293. 13      Set text direction
  294. 14      Set color representation
  295. 15      Set polyline line type
  296. 16      Set polyline line width
  297. 17      Set polyline color index
  298. 18      Set polymarker type
  299. 19      Set polymarker height
  300. 20      Set polymarker color
  301. 21      Set hardware text font
  302. 22      Set color index
  303. 23      Set interior fill style
  304. 24      Set fill style index
  305. 25      Set fill color
  306. 26      Return color representation
  307. 27      Return cell array definition
  308. 28      Return locator position
  309. 29      Return value of valuator device
  310. 30      Return choice device status keys
  311. 31      Return string from specified string device
  312. 32      Set writing mode
  313. 33      Set input mode
  314.  
  315. Most of the functions  are used  for interrogating  and changing
  316. the  status  of the  workstation, including  such operations  as
  317. selecting line types (solid, dotted, etc.)  or finding  out what
  318. font is being used. Graphics input devices can also be  accessed
  319. by  means  of the  GDOS functions;  many device  drivers include
  320. support  for  keyboards, cursor  keys, mice,  light pens,  touch
  321. screens, and graphic tablets.
  322.  
  323. Functions 6-11 are the ones that actually draw. Complex figures,
  324. such as arcs and  circles, are  drawn using  Generalized Drawing
  325. Primitives (GDP) function #11. Table 4  lists the  available GDP
  326. functions.
  327.  
  328. Table 4. Generalized Drawing Primitive (GDP) subfunctions
  329.  
  330. #       Description
  331. ----    -----------
  332. 1       Draw a bar
  333. 2       Draw an arc
  334. 3       Draw a pie slice (filled ard)
  335. 4       Draw a circle
  336. 5       Print graphic characters
  337. 6-7     Reserved for future use
  338. 8-10    Unused and available for special functions
  339.  
  340. The main difference between the GSX polyline and  polymarker and
  341. the corresponding GDP function is that the latter  requires only
  342. one call per figure.
  343.  
  344. Some devices support additional  modes and  operations, such  as
  345. reverse video or hard copy output  (display devices).  These are
  346. accessed  using  the  GSX  Escape  function  (#5),  instead   of
  347. enumerating them as primary GSX function numbers. Table  5 lists
  348. the current Escape functions.
  349.  
  350. Table 5. GSX Escape subfunctions
  351.  
  352. #       Descriptions
  353. ------  ------------
  354.  1      Inquire addressable character cells
  355.          (return number of rows and columns)
  356.  2      Enter graphics mode
  357.  3      Exit graphics mode
  358.  4      Move cursor up one row
  359.  5      Move cursor down one row
  360.  6      Move cursor right one column
  361.  7      Move cursor left one column
  362.  8      Move cursor to home position
  363.  9      Erase to end of screen
  364. 10      Erase to end of line
  365. 11      Move cursor to specified position
  366. 12      Output cursor addresssable text
  367. 13      Turn on reverse video for text
  368. 14      Turn off reverse video for text
  369. 15      Inquire current cursor address
  370.          (return current row and column)
  371. 16      inquire tablet status
  372. 17      Make hardcopy
  373. 18      Move graphic cursor to specified position
  374. 19      Do not display graphic cursor
  375. 20-50   Reserved for future expansion
  376. 51-100  Unused and available for special functions
  377.  
  378. Note that both the GDP functions and the GSX Escape subfunctions
  379. contain  reserved  functions  numbers,  as  well  as unused  but
  380. available numbers. This means that the  GSX can  be upgraded  by
  381. the addition of new operations, while still remaining compatible
  382. with existing software.
  383.  
  384. The  GSX  functions  can  support almost  any existing  graphics
  385. device. A device driver should recognize any valid GSX function,
  386. even if the device  does not  support the  function --  in which
  387. case no action should  be performed.  Devices with  new features
  388. can  be  supported  through  the  unused  GDP  and   GSX  Escape
  389. functions.
  390.  
  391. The line and marker drawing functions are optimized for multiple
  392. line segments. This allows an application to generate  a set  of
  393. points and let the  graphics device  draw each  item as  fast as
  394. possible, without requiring the applications program  to specify
  395. the individual segments. Listing 2 shows the source  code for  a
  396. program  that  draws  a  four-sided  box,  after  selecting  the
  397. appropriate line type, width  and color.  The polyline  function
  398. allows a single function call to  result in  the drawing  of all
  399. four sides, instead of  having to  perform four  function calls,
  400. one for each line segment.
  401.  
  402. ; GSXLINE.ASM
  403. ; -----------
  404. ;
  405. ; GSX line drawing example in 8080 assembler.
  406. ;
  407. ;--------------------------------
  408. ;
  409. bdos    EQU     0005H           ; CP/M-80 entry point
  410. gsx     EQU     115             ; GSX function number
  411. ;
  412. ;--------------------------------
  413. ;
  414.         ORG     0100H           ; Standard CP/M-80 COMmand file
  415. ;
  416. ;--------------------------------
  417. ; Draw a box using four line segments.
  418. ;
  419. sample: lxi     d,type          ; Set polyline type
  420.         call    doit            ;
  421.         lxi     d,width         ; Set polyline width
  422.         call    doit            ;
  423.         lxi     d,color         ; Set polyline color
  424.         call    doit            ;
  425.         lxi     d,box           ; Finally, draw box
  426. ;
  427. ; Fall through to GSX call.
  428. ;
  429. ; Input:
  430. ; DE = parameter block (detailing what to do)
  431. ;  C = GSX function number
  432. ;
  433. ; Output:
  434. ;  A = GSX function result
  435. ;
  436. doit:   mvi     c,gsx           ; Ask BDOS to perform
  437.         jmp     bdos            ;   a GSX function.
  438. ;
  439. ;--------------------------------
  440. ; Polyline type parameter block.
  441. ;
  442. type    DW      tpyca           ; Control array ref
  443.         DW      typipa          ; Input parameter array ref
  444.         DW      0               ; Input coordinate array ref
  445.         DW      typopa          ; Output parameter array ref
  446.         DW      0               ; Output coordinate array ref
  447. ;
  448. tpyca   DW      15              ; Set polyline type function num
  449.         DW      0               ; Input coordinate array size
  450.         DW      0               ; Output coordinate array size
  451. ;
  452. typipa  DW      1               ; Solid line
  453. ;
  454. typopa  DS      2               ; Actual line type used
  455. ;
  456. ;--------------------------------
  457. ; Polyline width parameter block.
  458. ;
  459. width   DW      widca           ; Control array ref
  460.         DW      0               ; Input parameter array ref
  461.         DW      widica          ; Input coordinate array ref
  462.         DW      0               ; Output parameter array ref
  463.         DW      widoca          ; Output coordinate array ref
  464. ;
  465. widca   DW      16              ; Set polyline type function num
  466.         DW      1               ; Input coordinate array size
  467.         DW      1               ; Output coordinate array size
  468. ;
  469. widica  DW      1,0             ; Line width = 1
  470. ;
  471. widoca  DS      4               ; Actual line width used
  472. ;
  473. ;--------------------------------
  474. ; Polyline color parameter block.
  475. ;
  476. color   DW      colca           ; Control array ref
  477.         DW      colipa          ; Input parameter array ref
  478.         DW      0               ; Input coordinate array ref
  479.         DW      colopa          ; Output parameter array ref
  480.         DW      0               ; Output coordinate array ref
  481. ;
  482. colca   DW      17              ; Set polyline function number
  483.         DW      0               ; Input coordinate array size
  484.         DW      0               ; Output coordinate array size
  485. ;
  486. colipa  DW      1               ; Color index = 1
  487. ;
  488. colopa  DS      2               ; Actual color index used
  489. ;
  490. ;--------------------------------
  491. ; Polyline box parameter block.
  492. ;
  493. box     DW      boxca           ; Control array ref
  494.         DW      0               ; Input parameter array ref
  495.         DW      boxica          ; Input coordinate array ref
  496.         DW      0               ; Output parameter array ref
  497.         DW      0               ; Output coordinate array ref
  498. ;
  499. boxca   DW      6               ; Draw polyline function number
  500.         DW      5               ; Number of vertices
  501.         DW      0               ; No output parameters
  502. ;
  503. boxica  DW       0,0            ; Starting point
  504.         DW       0,10           ; First line endpoint
  505.         DW      10,10           ; Second line endpoint
  506.         DW      10,0            ; Third line endpoint
  507.         DW       0,0            ; Fourth line endpoint
  508. ;
  509. ;--------------------------------
  510. ;
  511.         END     0100H           ; Standard CP/M-80 COMmand file
  512.  
  513. The parameter blocks for setting the polyline parameters tend to
  514. be large in comparison to the box example. However, the setup is
  515. normally done only once, and the figures often  consist of  more
  516. than the four lines required in the example. In that  case, more
  517. memory is required for the polyline endpoints.
  518.  
  519.  
  520. GIOS/GDOS interface
  521. -------------------
  522.  
  523. The GIOS/GDOS  interface is  referred to  as the  Virtual Device
  524. Interface (VDI); this VDI  provides a  consistent interface  for
  525. device drivers.  Each device  driver receives  a pointer  to the
  526. same  parameter  block that  was passed  to the  GDOS; the  main
  527. difference is that the GIOS does not require a function  code to
  528. be passed in a  register, since  a device  driver can  work only
  529. with its corresponding device.
  530.  
  531.  
  532. Normalized device coordinates
  533. -----------------------------
  534.  
  535. It might  seem that  the GDOS  does nothing  more than  load the
  536. device   drivers   and  pass   function  requests   between  the
  537. application and the driver.  In fact,  when passing  information
  538. between the  applications program  and the  GIOS, the  GDOS does
  539. quite  a  lot of  conversion, because  the applications  program
  540. specifies  Normalized  Device  Coordinates  (NDC),  whereas  the
  541. device driver expects Real Coordinates (RC).
  542.  
  543. The range for normalized device coordinates never changes: it is
  544. always 0 to 32,767 for both x- and  y-axes. On  the other  hand,
  545. the range for real coordinates may vary from  device to  device.
  546. For example, a typical display device has a  range of  0-319 for
  547. the x-axis, and 0-199 for the y-axis.
  548.  
  549. One consequence of this  mapping is  that a  figure will  always
  550. appear on the drawing surface of a device. Also, it is up to the
  551. applications program to take into account any aspect  ratio that
  552. the graphic peripheral may have -- otherwise, circles may end up
  553. as  ovals.  This  may  be  acceptable  in  some   circumstances.
  554. Information about a device's real coordinate  system and  aspect
  555. ratio is available to an application program when  a workstation
  556. is opened.
  557.  
  558.  
  559. Device drivers
  560. --------------
  561.  
  562. Device drivers perform the graphic operations  specified by  the
  563. GDOS  functions.  Drivers  for  displays,  plotters,  and camera
  564. devices tend  to be  straightforward, since  hardware operations
  565. match the GDOS functions. The display and camera devices usually
  566. have sufficient memory allocated for the entire drawing  surface
  567. of a CRT screen.
  568.  
  569. Printer  drivers,  on  the  other hand,  tend to  be a  bit more
  570. difficult because  the hardware  normally prints  one line  at a
  571. time, whereas GSX expects a two-dimensional  drawing surface  at
  572. all  times.  GSX  printer  drivers must  therefore perform  some
  573. special operations to accommodate GSX.
  574.  
  575. A printer driver should  first record  all GDOS  commands in  an
  576. "object list", until a workstation update command is issued. The
  577. object list is kept in RAM, or on  a disk  file if  insufficient
  578. RAM  is  available.  The  object list  is then  used to  draw an
  579. internal copy of the graphics figures in a raster buffer that is
  580. also kept in RAM.  The internal  copy is  then printed  out, one
  581. line at a time.
  582.  
  583. Unfortunately,  the  raster  buffer  can grow  quite large  if a
  584. printer has very high resolution. The DRI printer drivers use an
  585. additional step to keep the raster buffer to a manageable  size,
  586. even though a full-size raster buffer  may exceed  one megabyte.
  587. The figure is logically divided into a number of strips, each of
  588. which has the full width of the printer, and is  some convenient
  589. number of printer lines in depth.
  590.  
  591. Thus, each strip may be considered as a window through  which to
  592. view a portion of the complete figure. The display list  is used
  593. to draw the figure onto each strip in turn, clipping any drawing
  594. operations at the edges of the strip. The raster buffer  is then
  595. mapped onto the current  strip and  printed out,  one line  at a
  596. time.
  597.  
  598. Obviously, this process requires the complete figure to be drawn
  599. several times -- the exact number depends upon the resolution of
  600. the printer and the  size of  the raster  buffer. Low-resolution
  601. printers require  only a  few iterations,  while high-resolution
  602. printers can require a dozen or more iterations, even with  a 40
  603. KB raster buffer.
  604.  
  605. The disadvantage is that the iterations  make the  process slow;
  606. the advantage is that high-quality graphics can be  printed even
  607. if only limited RAM is available.
  608.  
  609.  
  610. Software
  611. --------
  612.  
  613. Applications
  614. ------------
  615.  
  616. Programs that use graphics  can be  purchased from  a number  of
  617. vendors. Three graphic programs from DRI are: DR GRAPH, DR DRAW,
  618. and ACCESS 10.
  619.  
  620. DR GRAPH provides business  graphics, including  pie charts  and
  621. bar  graphs;  it  can  take data  from many  popular spreadsheet
  622. programs  and  convert  it  to graphs,  or data  may be  entered
  623. directly from the keyboard.
  624.  
  625. DR  DRAW  is  a  very  flexible  free-form drawing  and drafting
  626. program; it even includes mouse support on the IBM PC.
  627.  
  628. ACCESS 10 is a Tektronix 4010/14 graphics terminal emulator that
  629. allows  a  microcomputer  to  be  connected  to a  graphics host
  630. computer.
  631.  
  632. Other products  using GSX  include the  SuperCalc 3  spreadsheet
  633. from Sorcim, and GraphPlan from Chang Labs.
  634.  
  635.  
  636. Program development
  637. -------------------
  638.  
  639. GSX  is  normally included  with either  a graphics  application
  640. program or the operating  system. This  environment is  intended
  641. for running graphics application  programs, although  it can  be
  642. used for program development as well.
  643.  
  644. For  the  more  serious   programmer,  there   is  the   "GSX-86
  645. Programmer's Toolkit", available from DRI for $350. This package
  646. comes  with  information  on  the  GINSTALL  program,  including
  647. customization notes, the GIOS interface, the GDOS interface, and
  648. support for compiled high-level languages.
  649.  
  650. Also included are two  diskettes containing  device drivers  for
  651. the IBM PC and more than 20 other drivers (running under PC DOS,
  652. CP/M-86,  and  Concurrent  CP/M)  for devices  ranging from  the
  653. popular  IBM  PC  color  adapter  card  to  the  high-resolution
  654. Polaroid Palette color camera.
  655.  
  656. The  high-level  language  support  is in  the form  of language
  657. bindings for the 16-bit DRI compiler-based  languages, including
  658. C, Pascal-MT+,  PL/I, CBASIC,  and Fortran-77.  A demo  program,
  659. with source code, is provided for each language.
  660.  
  661. The  language  bindings  allow   graphics  applications   to  be
  662. developed in a high-level language, without having to  resort to
  663. assembly language interfaces. Support for large and small memory
  664. models is included.
  665.  
  666. The best  part of  the deal  is that  the Toolkit  comes with  a
  667. licence to distribute GSX with a graphics application to IBM PC,
  668. PC-XT, and  3270-PC users,  without having  to pay  royalties to
  669. DRI. The distribution rights cover the  set of  drivers supplied
  670. with the  package. You  can also  include your  own drivers  for
  671. peripherals  not   included  in   the  Toolkit   set.  Also,   a
  672. "Professional Programmer Support" contract can be purchased with
  673. the Toolkit, to provide additional GSX support from DRI.
  674.  
  675. The "GSX-86 Programmer's Toolkit"  is not  for everyone.  Casual
  676. programmers  can  make  use  of  GSX  interfaces  supplied  with
  677. languages such as CBASIC without having to purchase the Toolkit.
  678.  
  679.  
  680. 8087 support
  681. ------------
  682.  
  683. GSX  supports  the  Intel  8087  numeric  coprocessor  chip   in
  684. Fortran-77 applications only. The  8087 is  not usually  used by
  685. device drivers, but can  speed up  translation of  normalized to
  686. real coordinates. The amount  of speed  increase depends  on the
  687. device used and the type of figure being drawn.
  688.  
  689.  
  690. Summary
  691. -------
  692.  
  693. Version 1.3 is the latest release of GSX, and is  available now.
  694. Version 2 (ROCHE> Which became known as "GEM".) is in the works,
  695. and will be available  soon; it  will provide  better throughput
  696. and  more  graphics functions.  New complex  drawing primitives,
  697. such  as  ellipses  and  elliptical  arcs,  are to  be included.
  698. Mapping   between   normalized  device   coordinates  and   real
  699. coordinates  will  also  be  included, and  should simplify  the
  700. development of graphics applications and device  drivers. Raster
  701. operations, such as contour  fill, will  be supported.  Look for
  702. GSX running under UNIX  System V,  which DRI  is putting  on the
  703. Intel 80286, as well as on new 68000-based machines (ROCHE>  The
  704. Atari 520ST family.).
  705.  
  706. From a programmer's point of view, GSX has  certain limitations:
  707. it allows only one workstation to be open  at a  time, and  this
  708. prevents sophisticated programs from  driving two  devices (such
  709. as two displays) simultaneously.  However, GSX  does permit  the
  710. switching of workstations; DR DRAW, for example, lets you create
  711. a figure on a display device and immediately run off a copy on a
  712. printer, plotter, or camera device.
  713.  
  714. GSX offers a standard method of  dealing with  graphics devices.
  715. New  devices  can be  installed, merely  by running  GINSTALL to
  716. include the proper driver. Device drivers  are usually  supplied
  717. by the  hardware manufacturer,  and this  allows a  GSX graphics
  718. application  program  to  take  advantage of  new and  different
  719. peripherals.
  720.  
  721. Graphics applications programs can  be run  without modification
  722. on any machine that supports GSX. Couple this  with the  ability
  723. to select a wide  variety of  device, and  you get  an extremely
  724. rich  and  flexible graphics  environment. GSX  is definitely  a
  725. winner.
  726.  
  727.  
  728. EOF
  729.