home *** CD-ROM | disk | FTP | other *** search
- ; (c)Copyright Sequiter Software Inc., 1987, 1988, 1989
-
- ; These routines make sure no snow is displayed for color graphic cards
-
- W4ASM_TEXT SEGMENT WORD PUBLIC 'CODE'
- W4ASM_TEXT ENDS
- _DATA SEGMENT WORD PUBLIC 'DATA'
- _DATA ENDS
- _BSS SEGMENT WORD PUBLIC 'BSS'
- _BSS ENDS
- DGROUP GROUP _BSS, _DATA
- ASSUME CS: W4ASM_TEXT, DS: DGROUP, SS: DGROUP
- W4ASM_TEXT SEGMENT
- ASSUME CS: W4ASM_TEXT
-
- PUBLIC _W4WRITE_ASM
- _W4WRITE_ASM PROC FAR
-
- push bp
- mov bp,sp
-
- push es ; Save Registers for compatibility with any memory model
- push ds
- push di
- push si
-
- ; ptr = 6
- ; buffer = 10
- ; len = 14
-
- les di, DWORD PTR[bp+6] ; To Pointer
- lds si, DWORD PTR[bp+10] ; From Pointer
- mov cx, WORD PTR[bp+14] ; len
-
- cld
- mov dx, 03DAh ; port address
- mov bh, BYTE PTR[bp+8] ; load attribute into bh
-
-
- next_char:
-
- lodsb ; load source char into al
- mov bl, al ; save character into bl
-
- cli
-
- retrace_end:
-
- in al, dx
- and al, 1
- jnz retrace_end
-
- retrace_start:
-
- in al, dx
- and al, 1
- jz retrace_start
-
- mov es:[di],bl
-
- sti
-
- inc di
-
- loop next_char
-
- pop si
- pop di
- pop ds
- pop es
-
- mov sp,bp
- pop bp
- ret
-
- _W4WRITE_ASM ENDP
-
-
-
- PUBLIC _W4WRITE_ATT_ASM
- _W4WRITE_ATT_ASM PROC FAR
-
- push bp
- mov bp,sp
-
- push es ; Save Registers for compatibility with any memory model
- push ds
- push di
- push si
-
- ; ptr = 6
- ; buffer = 10
- ; len = 14
- ; att = 16
-
- les di, DWORD PTR[bp+6] ; To Address
- lds si, DWORD PTR[bp+10] ; From Address
-
- mov cx, WORD PTR[bp+14] ; len
-
- cld
- mov dx, 03DAh ; port address
- mov bh, BYTE PTR[bp+16] ; load attribute into bh
-
- next_char2:
-
- lodsb ; load source char into al
- mov bl, al ; save character into bl
-
- cli
-
- retrace_end2:
-
- in al, dx
- and al, 1
- jnz retrace_end2
-
- retrace_start2:
-
- in al, dx
- and al, 1
- jz retrace_start2
-
- mov es:[di],bl
- inc di
-
- retrace_end_att:
-
- in al, dx
- and al, 1
- jnz retrace_end_att
-
- retrace_start_att:
-
- in al, dx
- and al, 1
- jz retrace_start_att
-
- mov es:[di],bh
-
- sti
-
- inc di
-
- loop next_char2
-
-
- pop si
- pop di
- pop ds
- pop es
-
- mov sp,bp
- pop bp
- ret
-
- _W4WRITE_ATT_ASM ENDP
-
-
- PUBLIC _W4READ_ASM
- _W4READ_ASM PROC FAR
-
- push bp
- mov bp,sp
-
- push es ; Save Registers for compatibility with any memory model
- push ds
- push di
- push si
-
- ; ptr = 6
- ; buffer = 10
- ; len = 14
-
- les di, DWORD PTR[bp+10] ; To Pointer
- lds si, DWORD PTR[bp+6] ; From Pointer
- mov cx, WORD PTR[bp+14] ; len
-
- cld
- mov dx, 03DAh ; port address
- mov bh, BYTE PTR[bp+8] ; load attribute into bh
-
-
- next_char3:
-
- cli
-
- retrace_end3:
-
- in al, dx
- and al, 1
- jnz retrace_end3
-
- retrace_start3:
-
- in al, dx
- and al, 1
- jz retrace_start3
-
- mov bl,ds:[si]
-
- sti
-
- inc si
- mov al, bl
- stosb ; store source char from al
-
- loop next_char3
-
- pop si
- pop di
- pop ds
- pop es
-
- mov sp,bp
- pop bp
- ret
-
- _W4READ_ASM ENDP
-
-
- W4ASM_TEXT ENDS
- END
-