home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / beehive / utilitys / swdemo15.arc / SWCPMUPD.ME < prev    next >
Text File  |  1991-08-11  |  6KB  |  153 lines

  1.  
  2.  
  3. New TCAP support for CPM:
  4.  
  5.   SWIND will now offer support for the new Z3 style TCAP functions
  6. of Graphics ON/OFF and business graphics. This is implemented in the
  7. main windowing library by providing the dependence routines of WCOUT
  8. and WGOXYC a special code for the attribute byte with bit 4 set.
  9. If this bit is set, the character for display is selected using the
  10. low 4 bits of the character data as an index into the TCAP data
  11. starting at the Upper Left Corner code. Also the internal window
  12. bordering routines will make automatic use of the ULC/URC/LLC/LRC/Hor/Ver
  13. codes for bordering.
  14.  
  15.  This provides a method of selection of any of 16 possible graphics
  16. characters for display in 'graphics' mode, but since the proposed TCAP
  17. defines only thirteen codes, all output greater than or equal to 0Dh will
  18. be displayed as non-graphics. See next paragraph.
  19.  
  20.  If the character code presented is greater than 0Ch, then graphics
  21. mode is automatically disabled and the character is presented in
  22. alpha-numerics, with an auto conversion back to graphics when the
  23. next code in the 0-0Ch range in received ( assuming that bit 4 of the
  24. attributes is still set thru all entries).
  25.  
  26.  In addition, if any of the low 4 bits of the attribute byte are set,
  27. the StandOut codes will also be activated for the character, else the
  28. Standout End codes will be used. As with all other attribute changes,
  29. the dependence routines are 'smart' in that they know if attributes/grpahics
  30. have changed since last entry and will only 'send' to the display if they
  31. have changed.
  32.  
  33.  SWIND now also supports the new TCAP proposal functions of Cursor ON/OFF.
  34. This is implemented in the library itself, and routines that will cause
  35. non-interactive window operations will now turn the cursor off, then back
  36. on at the end of the operation. Actual ON/OFF is performed by a routine
  37. in the dependence routine. This is only used if there are non-zero
  38. TCAP codes for these functions.
  39.  
  40. How do I use it?:
  41.  
  42.  SWIND provides three methods of displaying information.
  43.  
  44.  The lowest level is via the dependence routines of WCOUT and WGOXYC.
  45. These routines provide a method of 'writing on the glass' without window
  46. data base storage, IE: it is non-permanent and not maintained for any
  47. window in particular. To use these routines for graphics, the following
  48. calls and parameters will do:
  49.  
  50.     ld    hl,1000h    High byte is the attributes/low the character
  51.                 Select graphics mode, index character
  52.                 0 of the TCAP graphics characters, and
  53.                 display in non-standout video
  54.     push    hl        On the stack for C routine
  55.     ld    hl,4        C routine required # bytes on stack +2
  56.     call    wcout
  57.  
  58.       or
  59.  
  60.     ld    hl,1        Set X cursor position at 1
  61.     push    hl
  62.     ld    hl,10        Set Y cursor position at 10
  63.     push    hl
  64.     ld    hl,1111h    Select graphics mode, index character
  65.                 17 of the TCAP graphics characters, and
  66.                 display in StandOut video
  67.     push    hl
  68.     ld    hl,8        C routine required
  69.     call    wgoxyc
  70.  
  71.  
  72.  The next lowest level is thru the window data base raw mode output using
  73. the routine WPUTCH. Here characters and attributes are maintained in the
  74. data base under control of the windowing library, but are not 'cooked',
  75. Ie: no interpretations of the data is provided and it is stored as given
  76. at the current pen position under the rules of the current window flags.
  77.  
  78.  The attribute to use for the character is that as was last set using the
  79. call to WSCATT. As an example the following code will enable graphics
  80. mode, display TCAP graphics codes 0 thru 4, display alpha numerics 'EF',
  81. then convert back to graphics automatically.
  82.  
  83.     ld    hl,11h        Select graphics mode with Stand Out video
  84.     push    hl
  85.     ld    hl,4
  86.     call    wscatt
  87.     jr    t2
  88.  
  89. t1:    db    0,1,2,3,4,45h,46h,8,9    Characters to display are TCAP graphics
  90.                     characters 0 thru 9
  91.  
  92. t2:    ld    b,$-t1        Get count of characters to display
  93.     ld    hl,t1        Point to Array of characters to display
  94. t3:    push    bc        
  95.     push    hl
  96.     ld    e,(hl)        Get current character
  97.     ld    d,0
  98.     push    de        On the stack for the C routine
  99.     ld    hl,4        C language call overhead
  100.     call    wputch        Do it
  101.                 DE was 'popped' by the C interface routine
  102.     pop    hl
  103.     pop    bc
  104.     inc    hl
  105.     djnz    t3
  106.  
  107.  
  108.  The third method is thru the virtual terminal('cooked') mode output
  109. routine WDOCHR. This method is not recommended because of the cooking
  110. process, Ie: character codes 8 (BS), 9 (TAB), 0A (LF), 0D (CR) are
  111. interpreted and all others in the range of the graphics characters are
  112. passed as is to the dependence output routines with NO storage in the
  113. window data base. However, it is possible to use the 'escape' code
  114. for attribute setting for manipulation of the character attributes.
  115.  As an example:
  116.  
  117. t4:    db    1bh,'F',11h        Virtual terminal codes for
  118.                     set attributes
  119. t5:    db    9,8,7,6,5,4,3,2,1,0    Will display these characters
  120.  
  121.     ld    hl,t4            Point to the Virtual codes
  122.     ld    bc,3            Three of them
  123. t6:    push    hl
  124.     push    bc
  125.     ld    e,(hl)
  126.     ld    d,0
  127.     push    de            Put it on stack for C routine
  128.     ld    hl,4            C routine overhead
  129.     call    wdochr            Give this code to virtual terminal
  130.     pop    bc
  131.     pop    hl
  132.     inc    hl
  133.     djnz    t6
  134.     ld    hl,t5            Point to array of characters to display
  135.     ld    b,10            Ten of them
  136.     call    t3            Use routine from the last example
  137.                     to display them
  138.  
  139. In Summary:
  140.  
  141.  The method outlined above should provide complete TCAP dependence. It
  142. is the responsibilities of the dependence routine to provide actual TCAP
  143. usage ( which is supplied ).
  144.  
  145.  For those developers that do not want the TCAP dependence, the routines
  146. for WOPEN/WSBATT have been modified to allow specifying the codes to
  147. use for displaying the horizontal and vertical members of the borders, and
  148. a single character to use as the 'corners' of the windows. There are
  149. seperate libraries provided in the distribution package for both full TCAP
  150. business graphics support and no business graphics support. 
  151.  
  152. See the new SWFTNS1.ME file for a description of these changes.
  153.