home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / progm / dpl.zip / DEMO.D < prev    next >
Text File  |  1988-07-11  |  4KB  |  177 lines

  1. PROG    DEMO
  2. ;
  3. ; Doug's Programming Language  -- DPL, Version 2.22
  4. ; Copyright (c) 1988 Douglas S. Cody, All rights reserved.
  5. ;
  6. ; This program demonstrates the use of a shade & how to manipulate it.
  7. ;
  8. ; The following structure is the video control block required by SHADE for
  9. ; every shade used on the screen. 
  10. ;
  11. SBLOCK1    LABEL    WORD
  12.     DW    0        ; Starting row
  13.     DW    1        ; Starting column
  14.     DW    17        ; Ending column
  15.     DW    4        ; Number of entries in the table
  16.     DW    VBUF1        ; Video buffer backup buffer
  17.     DW    02H        ; Border display attribute
  18.     DW    2FH        ; Box display Attribute
  19. SCB_OPT    DW    00        ; Last option choosen
  20.     DW    00        ; Shade is opened (internal use only)
  21.     DW    OFFSET M00    ; ASCIIZ strings
  22.     DW    OFFSET M01
  23.     DW    OFFSET NULL
  24.     DW    OFFSET M02
  25. ;
  26. SBLOCK2    LABEL    WORD
  27.     DW    5        ; Starting row
  28.     DW    10        ; Starting column
  29.     DW    50        ; Ending column
  30.     DW    5        ; Number of entries in the table
  31.     DW    VBUF2        ; Video buffer backup buffer
  32.     DW    70H        ; Border display attribute
  33.     DW    7FH        ; Box display Attribute
  34.     DW    00        ; Last option choosen
  35.     DW    00        ; Shade is opened (internal use only)
  36.     DW    OFFSET M05
  37.     DW    OFFSET M05
  38.     DW    OFFSET M05
  39.     DW    OFFSET M05
  40.     DW    OFFSET M05
  41.     DW    OFFSET M05
  42.     DW    OFFSET M05
  43.     DW    OFFSET M05
  44.     DW    OFFSET M05
  45.     DW    OFFSET M05
  46.     DW    OFFSET M05
  47.     DW    OFFSET M05
  48.     DW    OFFSET M05
  49.     DW    OFFSET M05
  50.     DW    OFFSET M05
  51.     DW    OFFSET M05
  52.     DW    OFFSET M05
  53.     DW    OFFSET M05
  54.     DW    OFFSET M05
  55.     DW    OFFSET M05
  56.     DW    OFFSET M05
  57.     DW    OFFSET M05
  58.     DW    OFFSET M05
  59.     DW    OFFSET M05
  60.     DW    OFFSET M05
  61. ;
  62. ; The video backup buffers are declared in the DATA segment. The following
  63. ; formula is used to calculate the required size of the buffer
  64. ;
  65. ; BUFFER SIZE = (# OF ENTRIES IN TABLE + 2) *
  66. ;        (ENDING COLUMN - STARTING COLUMN + 2) *
  67. ;        2
  68. ;
  69. VBUF1    DW    108 DUP(?)
  70. VBUF2    DW    2048 DUP(?)
  71. ;
  72. ; The follow is data to be used in the demonstration.
  73. ;
  74. DEFINE    M00,'Expand Shade'
  75. DEFINE    M01,'Contract Shade'
  76. DEFINE    M02,'Exit to DOS'
  77. ;
  78. DEFINE    M06,'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZAB'
  79. DEFINE    M05,'12345678901234567890123456789012345678901234567890123456789012345678901234567890'
  80. ;
  81. DEFINE    M10,'Use ARROW keys to select option & type ENTER'
  82. DEFINE    M11,'Use ARROW keys to select direction, ENTER to goto menu'
  83. DEFINE    BLANKS,'                                                                                '
  84. ;
  85. SET    ONE,1
  86. SET    TWO,2
  87. SET    FOUR,4
  88. ;
  89. BEGIN    DEMO
  90.     EXTRN    SHADE:NEAR, OPSHD:NEAR, CLSHD:NEAR
  91.     EXTRN    SHDDO:NEAR, SHDEXP:NEAR, SHDSML:NEAR
  92.     EXTRN    VIDWRT:NEAR, CLRSCR:NEAR, VIDON:NEAR, VIDOFF:NEAR
  93. ;
  94. ; CLEAR THE SCREEN USING THE BIOS SCROLL FUNCTION
  95. ;
  96.     CALL    CLRSCR
  97. ;
  98. ; FILL THE SCREEN WITH A PATTERN
  99. ;
  100.     CALL    FILL_IT
  101. ;
  102. A00:
  103. ;
  104. ; WRITE THE USER HELP MESSAGE AT THE BOTTOM OF THE SCREEN
  105. ;
  106.     CURSOR    24,0
  107.     CALL    VIDWRT 04 BLANKS 2FH
  108.     CALL    VIDWRT 00 M10
  109. ;
  110. ; PROMPT THE OPERATOR WITH A SHADE
  111. ;
  112.     CALL    SHADE SBLOCK1
  113. ;
  114. ; WE HAVE THE ANSWER IN SHADE CONTROL BLOCK #1, AT OFFSET 0EH. 'SCB_OPT' HAS
  115. ; BEEN DECLARE AT THIS POINT WITHIN THE BLOCK FOR EASE OF PROGRAMMING.
  116. ;
  117.     IF WORD SCB_OPT NE ONE GOTO B00
  118. ;
  119. ; WE ARE REQUESTED TO EXPAND THE SHADE, GIVE SOME DIRECTIONS & DO IT...
  120. ;
  121.     CALL    VIDWRT 04 BLANKS 2FH
  122.     CALL    VIDWRT 00 M11
  123.     CALL    SHDEXP SBLOCK2
  124.     GOTO    A00
  125. ;
  126. B00:
  127.     IF WORD SCB_OPT NE TWO GOTO C00
  128. ;
  129. ; WE ARE REQUESTED TO CONTRACT THE SHADE, GIVE SOME DIRECTIONS & DO IT...
  130. ;
  131.     CALL    VIDWRT 04 BLANKS 2FH
  132.     CALL    VIDWRT 00 M11
  133.     CALL    SHDSML SBLOCK2
  134.     GOTO    A00
  135. ;
  136. C00:
  137.     IF WORD SCB_OPT NE FOUR GOTO A00
  138. ;
  139. ; WE ARE REQUESTED TO EXIT TO DOS
  140. ;
  141.     CALL    VIDWRT 04 BLANKS 0FH    ; CLEAR LINE 25
  142.     CURSOR    23,0            ; MOVE TO LINE 24 FOR DOS'S CR/LF
  143.     STOP
  144. ;
  145. ;
  146. ;=====================
  147. ;   ROUTINE SECTION
  148. ;    LEVEL 1
  149. ;=====================
  150. ;
  151. ;
  152. ; F I L L _ I T  -- FILL THE SCREEN WITH OUR PATTERN.
  153. ;
  154. ; Entry conditions:
  155. ;    None
  156. ; Exit conditions:
  157. ;    None
  158. ;
  159. FILL_IT    PROC    NEAR
  160.     MOV    CX,23            ; # OF LINES TO MODIFY
  161.     CALL    VIDOFF            ; TURN OFF THE VIDEO DURING WRITE
  162. ;
  163. FLIT_05:
  164.     PUSH    CX
  165.     CURSOR    CX,0            ; FROM BOTTOM TO TOP!
  166.     CALL    VIDWRT 00 M06        ; WRITE DIRECTLY TO THE SCREEN
  167.     POP    CX
  168.     LOOP    FLIT_05            ; CONTINUE TILL ALL DONE
  169. ;
  170.     CALL    VIDON            ; TURN ON THE VIDEO...
  171.     RETURN
  172.  
  173. FILL_IT    ENDP
  174. ;
  175. ENDPGM    DEMO
  176. ;
  177.