home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c160 / 1.ddi / SOURCE / W4ASM.ASM < prev    next >
Encoding:
Assembly Source File  |  1990-06-19  |  4.0 KB  |  225 lines

  1. ;       (c)Copyright Sequiter Software Inc., 1987, 1988, 1989
  2.  
  3. ;    These routines make sure no snow is displayed for color graphic cards
  4.  
  5. W4ASM_TEXT   SEGMENT  WORD PUBLIC 'CODE'
  6. W4ASM_TEXT   ENDS
  7. _DATA    SEGMENT  WORD PUBLIC 'DATA'
  8. _DATA    ENDS
  9. _BSS    SEGMENT  WORD PUBLIC 'BSS'
  10. _BSS    ENDS
  11. DGROUP    GROUP    _BSS, _DATA
  12.     ASSUME  CS: W4ASM_TEXT, DS: DGROUP, SS: DGROUP
  13. W4ASM_TEXT      SEGMENT
  14.     ASSUME    CS: W4ASM_TEXT
  15.  
  16.     PUBLIC    _W4WRITE_ASM
  17. _W4WRITE_ASM  PROC FAR
  18.  
  19.     push    bp
  20.     mov    bp,sp
  21.  
  22.         push    es   ; Save Registers for compatibility with any memory model
  23.         push    ds
  24.         push    di
  25.         push    si
  26.  
  27. ;    ptr = 6
  28. ;    buffer = 10
  29. ;    len = 14
  30.  
  31.         les    di, DWORD PTR[bp+6]      ; To Pointer
  32.         lds    si, DWORD PTR[bp+10]     ; From Pointer
  33.         mov    cx, WORD PTR[bp+14]      ; len
  34.  
  35.         cld 
  36.         mov    dx, 03DAh                ; port address
  37.         mov    bh, BYTE PTR[bp+8]       ; load attribute into bh
  38.  
  39.  
  40. next_char:
  41.  
  42.         lodsb                           ; load source char into al
  43.         mov    bl, al                   ; save character into bl
  44.  
  45.         cli
  46.  
  47. retrace_end:
  48.  
  49.         in    al, dx
  50.         and   al, 1
  51.         jnz   retrace_end
  52.  
  53. retrace_start:
  54.  
  55.         in    al, dx
  56.         and   al, 1
  57.         jz    retrace_start 
  58.  
  59.         mov   es:[di],bl
  60.  
  61.         sti
  62.  
  63.         inc   di
  64.  
  65.         loop  next_char
  66.  
  67.         pop     si
  68.         pop     di
  69.         pop     ds
  70.         pop     es
  71.  
  72.     mov    sp,bp
  73.     pop    bp
  74.     ret    
  75.  
  76. _W4WRITE_ASM   ENDP
  77.  
  78.  
  79.  
  80.     PUBLIC    _W4WRITE_ATT_ASM
  81. _W4WRITE_ATT_ASM  PROC FAR
  82.  
  83.     push    bp
  84.     mov    bp,sp
  85.  
  86.         push    es   ; Save Registers for compatibility with any memory model
  87.         push    ds
  88.         push    di
  89.         push    si
  90.  
  91. ;    ptr = 6
  92. ;    buffer = 10
  93. ;    len = 14
  94. ;    att = 16
  95.  
  96.         les    di, DWORD PTR[bp+6]      ; To Address
  97.         lds    si, DWORD PTR[bp+10]     ; From Address
  98.  
  99.         mov    cx, WORD PTR[bp+14]      ; len
  100.  
  101.         cld 
  102.         mov    dx, 03DAh                ; port address
  103.         mov    bh, BYTE PTR[bp+16]       ; load attribute into bh
  104.  
  105. next_char2:
  106.  
  107.         lodsb                           ; load source char into al
  108.         mov    bl, al                   ; save character into bl
  109.  
  110.         cli
  111.  
  112. retrace_end2:
  113.  
  114.         in    al, dx
  115.         and   al, 1
  116.         jnz   retrace_end2
  117.  
  118. retrace_start2:
  119.  
  120.         in    al, dx
  121.         and   al, 1
  122.         jz    retrace_start2
  123.  
  124.         mov   es:[di],bl
  125.         inc   di
  126.  
  127. retrace_end_att:
  128.  
  129.         in    al, dx
  130.         and   al, 1    
  131.         jnz   retrace_end_att
  132.  
  133. retrace_start_att:
  134.  
  135.         in    al, dx
  136.         and   al, 1
  137.         jz    retrace_start_att
  138.  
  139.         mov   es:[di],bh
  140.  
  141.         sti
  142.  
  143.         inc   di
  144.  
  145.         loop  next_char2
  146.  
  147.  
  148.         pop     si
  149.         pop     di
  150.         pop     ds
  151.         pop     es
  152.  
  153.     mov    sp,bp
  154.     pop    bp
  155.     ret    
  156.  
  157. _W4WRITE_ATT_ASM    ENDP
  158.  
  159.  
  160.     PUBLIC    _W4READ_ASM
  161. _W4READ_ASM  PROC FAR
  162.  
  163.     push    bp
  164.     mov    bp,sp
  165.  
  166.         push    es   ; Save Registers for compatibility with any memory model
  167.         push    ds
  168.         push    di
  169.         push    si
  170.  
  171. ;    ptr = 6
  172. ;    buffer = 10
  173. ;    len = 14
  174.  
  175.         les    di, DWORD PTR[bp+10]     ; To   Pointer
  176.         lds    si, DWORD PTR[bp+6]      ; From Pointer
  177.         mov    cx, WORD PTR[bp+14]      ; len
  178.  
  179.         cld 
  180.         mov    dx, 03DAh                ; port address
  181.         mov    bh, BYTE PTR[bp+8]       ; load attribute into bh
  182.  
  183.  
  184. next_char3:
  185.  
  186.         cli
  187.  
  188. retrace_end3:
  189.  
  190.         in    al, dx
  191.         and   al, 1
  192.         jnz   retrace_end3
  193.  
  194. retrace_start3:
  195.  
  196.         in    al, dx
  197.         and   al, 1
  198.         jz    retrace_start3
  199.  
  200.         mov   bl,ds:[si]
  201.  
  202.         sti
  203.  
  204.         inc   si
  205.         mov   al, bl                    
  206.         stosb                           ; store source char from al
  207.  
  208.         loop  next_char3
  209.  
  210.         pop     si
  211.         pop     di
  212.         pop     ds
  213.         pop     es
  214.  
  215.     mov    sp,bp
  216.     pop    bp
  217.     ret    
  218.  
  219. _W4READ_ASM   ENDP
  220.  
  221.  
  222. W4ASM_TEXT     ENDS
  223. END
  224. 
  225.