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