home *** CD-ROM | disk | FTP | other *** search
/ Sound, Music & MIDI Collection 2 / SMMVOL2.bin / PROG / BWSB120B.ZIP / SETUP / PRINT.ASM < prev    next >
Encoding:
Assembly Source File  |  1995-03-14  |  3.1 KB  |  188 lines

  1. ;Some little direct screen write routines...
  2. ;Copyright (c) 1994-95, Edward Schlunder
  3.  
  4. .model medium, c
  5. .386
  6. .Data
  7.  
  8.     Color   db      07h
  9.     Row     db      0
  10.     Col     db      0
  11.  
  12. .Code
  13.  
  14. Locate          proc        NewRow:byte, NewCol:byte
  15.     mov     al, NewRow
  16.     or      al, al
  17.     jz      @F
  18.     dec     al
  19.     mov     Row, al
  20.  
  21. @@: mov     al, NewCol
  22.     or      al, al
  23.     jz      @F
  24.     dec     al
  25.     mov     Col, al
  26.  
  27. @@: ret
  28. Locate          endp
  29.  
  30. XColor          Proc        Forg:byte, Back:byte
  31.     mov     ah, Forg
  32.     mov     al, Back
  33.     shl     al, 4
  34.     and     ah, 0Fh
  35.     or      al, ah
  36.     mov     Color, al
  37.     ret
  38. XColor          endp
  39.  
  40. XColorFill      Proc        Uses si, TxtLen:word
  41.     mov     cx, TxtLen
  42.  
  43.     mov     ax, 0B800h
  44.     mov     es, ax
  45.  
  46.     mov     bl, Row
  47.     mov     al, 80
  48.     mul     bl
  49.     add     al, Col
  50.     adc     ah, 0
  51.     shl     ax, 1
  52.     mov     bx, ax
  53.     inc     bx
  54.  
  55.     cld
  56.     add     Col, cl
  57.     mov     ah, Color
  58. ColorLoop:
  59.     lodsb
  60.     mov     es:[bx], ah
  61.     add     bx, 2
  62.     dec     cx
  63.     jnz     ColorLoop
  64.  
  65.     ret
  66. XColorFill      endp
  67.  
  68. End
  69.  
  70. PrintChar       Proc        Uses si, TxtOff:word
  71.     mov     si, TxtOff
  72.  
  73.     mov     ax, 0B800h
  74.     mov     es, ax
  75.  
  76.     mov     bl, Row
  77.     mov     al, 80
  78.     mul     bl
  79.     add     al, Col
  80.     adc     ah, 0
  81.     shl     ax, 1
  82.     mov     bx, ax
  83.  
  84.     cld
  85.     jmp     GetChar
  86. PrintLoop:
  87.     mov     es:[bx], al
  88.     add     bx, 2
  89. GetChar:
  90.     lodsb
  91.     or      al, al
  92.     jnz     PrintLoop
  93.  
  94.     ret
  95. PrintChar       endp
  96.  
  97. LineFeed        proc
  98.     mov     Col, 0
  99.     inc     Row
  100.     ret
  101. LineFeed        endp
  102.  
  103. BLocate         proc        NewRow:byte, NewCol:byte
  104.     mov     al, NewRow
  105.     or      al, al
  106.     jz      @F
  107.     dec     al
  108.     mov     Row, al
  109.  
  110. @@: mov     al, NewCol
  111.     or      al, al
  112.     jz      @F
  113.     dec     al
  114.     mov     Col, al
  115.  
  116.     mov     ah, 0Fh
  117.     int     10h
  118.  
  119.     mov     ah, 02h                    ;Set cursor location via BIOS
  120.     mov     dh, Row
  121.     mov     dl, Col
  122.     int     10h
  123.  
  124. @@: ret
  125. BLocate         endp
  126.  
  127. ClearEOL        proc
  128.     mov     ax, 0B800h
  129.     mov     es, ax
  130.  
  131.     mov     bl, Row
  132.     mov     al, 80
  133.     mul     bl
  134.     add     al, Col
  135.     adc     ah, 0
  136.     shl     ax, 1
  137.     mov     bx, ax
  138.  
  139.     cld
  140.     xor     al, al
  141.     mov     ah, Color
  142.     mov     cl, 80
  143.     sub     cl, Col
  144.     jz      Exit
  145. PrintLoop:
  146.     mov     es:[bx], ax
  147.     add     bx, 2
  148.     dec     cl
  149.     jnz     PrintLoop
  150. Exit:
  151.     ret
  152. ClearEOL        endp
  153.  
  154. XPrint          proc        Uses si, TxtOff:word
  155.     mov     si, TxtOff
  156.  
  157.     mov     ax, 0B800h
  158.     mov     es, ax
  159.  
  160.     mov     bl, Row
  161.     mov     al, 80
  162.     mul     bl
  163.     add     al, Col
  164.     adc     ah, 0
  165.     shl     ax, 1
  166.     mov     bx, ax
  167.  
  168.     cld
  169.     add     Col, cl
  170.     mov     ah, Color
  171.  
  172.     jmp     GetChar
  173. PrintLoop:
  174.     mov     es:[bx], ax
  175.     add     bx, 2
  176.     inc     Col
  177. GetChar:
  178.     lodsb
  179.     or      al, al
  180.     jnz     PrintLoop
  181.  
  182.     cmp     Col, 80
  183.     jb      Exit
  184.     mov     Col, 79
  185. Exit:
  186.     ret
  187. XPrint          endp
  188.