;!!!!!! TRANSPARENT NEW COPPER !!!!!! FREELINE equ 200 ALIGN 2 newrows LABEL WORD cc=0 REPT 200 dw cc cc=cc+320 ENDM PUBLIC _newsinus,_newsinusx _newsinus dw 512 dup(0) _newsinusx dw -1 newgroup PROC NEAR ;hline list in gs:si push ds mov ax,SEG newdata1 mov ds,ax mov ax,SEG newdata2 mov fs,ax mov bx,gs:[si] shl bx,1 mov bx,cs:newrows[bx] add si,2 mov al,gs:color1 @@1: mov edx,gs:[si] cmp dx,-32767 je @@2 mov di,dx shr edx,16 add si,4 cmp di,dx jl @@133 xchg di,dx @@133: cmp di,1 jl @@11 @@111: cmp dx,319 jg @@12 @@122: add di,bx xor ds:[di],al shr di,2 mov byte ptr fs:[di],1 mov di,dx add di,bx xor ds:[di],al shr di,2 mov byte ptr fs:[di],1 @@0: add bx,320 jmp @@1 @@2: pop ds ret @@11: mov di,1 cmp dx,1 jl @@0 jmp @@111 @@12: mov dx,319 cmp di,319 jg @@0 jmp @@122 newgroup ENDP PUBLIC _initnewgroup _initnewgroup PROC FAR CBEG mov ax,SEG newdata2 mov ds,ax mov ax,-1 mov ds:[8000h],ax mov ds:[8000h+4000h],ax CEND _initnewgroup ENDP ALIGN 2 dng_bgcolor dw 0 dng_rowbase dw 0 dng_random dw 0 dng_page dw 8000h checkdword PROC NEAR mov edx,fs:[bx] xor eax,eax mov fs:[bx],eax ;=0 or dl,dl jnz @@1 @@1b: or dh,dh jnz @@2 @@2b: shr edx,16 or dl,dl jnz @@3 @@3b: or dh,dh jnz @@4 ret @@4: mov al,dh shl eax,16 lea ax,[bx+3] mov ds:[si],eax add si,4 ret @@3: mov al,dl shl eax,16 lea ax,[bx+2] mov ds:[si],eax add si,4 jmp @@3b @@2: mov al,dh shl eax,16 lea ax,[bx+1] mov ds:[si],eax add si,4 jmp @@2b @@1: mov al,dl shl eax,16 lea ax,[bx] mov ds:[si],eax add si,4 jmp @@1b checkdword ENDP PUBLIC _drawnewgroup _drawnewgroup PROC FAR CBEG LOADDS cld mov dx,3c4h mov ax,0f02h out dx,ax ;mov ax,SEG newdata1 ;mov ds,ax ;xor si,si ;mov ax,0a000h ;mov es,ax ;xor di,di ;mov cx,16000 ;rep movsd mov ax,SEG newdata2 mov es,ax mov ax,SEG newdata1 mov fs,ax xor di,di mov ax,SEG newdata2 mov ds,ax mov si,cs:dng_page xor si,4000h mov cs:dng_page,si INT3 mov cx,4000 @@9: xor eax,eax repz scasd jcxz @@10 lea bx,[di-4] mov edx,es:[bx] mov es:[bx],eax ;=0 shl bx,2 or dl,dl jz @@c1 xchg ebp,edx call checkdword xchg ebp,edx @@c1: add bx,4 or dh,dh jz @@c2 xchg ebp,edx call checkdword xchg ebp,edx @@c2: add bx,4 shr edx,16 or dl,dl jz @@c3 xchg ebp,edx call checkdword xchg ebp,edx @@c3: add bx,4 or dh,dh jz @@c4 xchg ebp,edx call checkdword xchg ebp,edx @@c4: jmp @@9 ; @@10: mov eax,-1 mov ds:[si],eax setborder 4 mov ax,0a000h mov es,ax xor di,di mov si,cs:dng_page mov bx,si xor bx,4000h xor ax,ax ;si=new bx=last ;cx=newpos dx=lastpos ;al=newcol ah=lastcol mov edx,ds:[bx] add bx,4 mov ecx,ds:[si] add si,4 ; @@21: cmp dx,cx jb @@23 je @@22 ;cx