; Source for WaveDisp 1.0 ; by Lars Ahlzen ; (could be compiled with TASM) .MODEL tiny .386 BASEADDR EQU 0220h OWNSCR EQU 8000h .CODE .STARTUP jmp beginhere B_TYPE dw 1 SPEED dw 0 XVAL dw ? beginhere: mov ax,00013h int 010h call col1 call clearvirt loopMain: mov word ptr [xval],0 mov ax,OWNSCR mov es,ax loopRefresh: mov dx,BASEADDR+Ch mov al,020h out dx,al add dx,002h L: in al,dx or al,al jns L sub dx,004h xor ax,ax in al,dx shr ax,1 xor ah,ah add ax,36 mov dx,320 mul dx add ax,[xval] mov di,ax mov byte ptr es:[di],254 inc word ptr [xval] cmp word ptr [xval],319 jne looprefresh mov cx,[speed] inc cx vanta_lite: call wai loop vanta_lite call swappage call blurit mov ah,01 int 16h jz loopmain mov ah,00 int 16h cmp ah,59 jne ejf1 mov [b_type],0 ejf1: cmp ah,60 jne ejf2 mov [b_type],1 ejf2: cmp ah,61 jne ejf3 mov [b_type],2 ejf3: cmp ah,62 jne ejf4 mov [b_type],3 ejf4: cmp ah,63 jne ejf5 mov [b_type],4 ejf5: cmp ah,79 jne ejkp1 push ax call col1 pop ax ejkp1: cmp ah,80 jne ejkp2 push ax call col2 pop ax ejkp2: cmp ah,81 jne ejkp3 push ax call col3 pop ax ejkp3: cmp ah,75 jne ejkp4 push ax call col4 pop ax ejkp4: cmp ah,2 jne ejett inc [speed] ejett: cmp ah,3 jne ejtva cmp [speed],0 je ejtva dec [speed] ejtva: cmp ah,1 je quit jmp loopmain ; QUIT ThE PROGRAM QUIT: mov ax,00003h int 010h ret ; .. . terminate... proc waitkey mov ah,8h int 21h ret endp waitkey proc clearvirt mov ax,OWNSCR mov es,ax mov cx,16000 mov eax,0 mov di,0 rep stosd ret endp clearvirt proc blurit mov ax,[b_type] cmp ax,0 jne ejtyp0 call clearvirt ejtyp0: mov ax,[b_type] cmp ax,1 jne ejtyp1 call blurpage ejtyp1: mov ax,b_type cmp ax,2 jne ejtyp2 call blurpage2 ejtyp2: mov ax,b_type cmp ax,3 jne ejtyp3 call blurpage3 ejtyp3: mov ax,b_type cmp ax,4 jne ejtyp4 call blurpage4 ejtyp4: ret endp blurit proc swappage mov ax,OWNSCR mov ds,ax mov si,0 mov ax,0a000h mov es,ax mov di,0 mov cx,16000 rep movsd ret endp swappage proc blurpage mov ax,OWNSCR mov es,ax mov di,322 mov cx,63000 BLOOP: xor ah,ah mov al,es:[di] mov dx,ax shl ax,3 sub ax,dx shr ax,3 stosb loop bloop ret endp blurpage proc blurpage2 mov ax,OWNSCR mov es,ax mov di,640 mov cx,58000 B2LOOP: xor al,al xor dx,dx mov al,es:[di-320] mov dl,es:[di] add ax,dx shr ax,1 jz ejdark dec al ejdark: stosb loop b2loop ret endp blurpage2 proc blurpage3 mov ax,OWNSCR mov es,ax mov di,640 mov cx,62000 B3LOOP: xor ax,ax xor dx,dx mov al,es:[di+321] mov dl,es:[di] add ax,dx shr ax,1 jz ejdark2 dec al ejdark2:stosb loop b3loop ret endp blurpage3 proc blurpage4 mov ax,OWNSCR mov es,ax mov di,1280 mov cx,62000 B4LOOP: xor ax,ax xor dx,dx mov al,es:[di] mov dl,es:[di-1] add ax,dx shr ax,1 cmp al,2 jb ejdark4 sub al,2 ejdark4:stosb loop b4loop ret endp blurpage4 WAI PROC push ax push dx mov dx,3dah lab1: in al,dx and al,08h jnz lab1 lab2: in al,dx and al,08h jz lab2 pop dx pop ax RET WAI ENDP COL1 PROC mov cx,255 mov dx,03C8h coloop: mov al,cl out dx,al inc dx mov al,cl shr al,4 out dx,al mov al,cl shr al,3 out dx,al mov al,cl shr al,2 out dx,al dec dx loop coloop ret COL1 ENDP COL2 PROC mov cx,255 mov dx,03C8h coloop2:mov al,cl out dx,al inc dx mov al,cl shr al,2 out dx,al mov al,cl shr al,3 out dx,al mov al,cl shr al,4 out dx,al dec dx loop coloop2 ret COL2 ENDP COL3 PROC mov cx,255 mov dx,03C8h coloop3:mov al,cl out dx,al inc dx mov al,cl shr al,2 out dx,al out dx,al mov al,0 out dx,al dec dx loop coloop3 ret COL3 ENDP col4 proc mov ax,13h int 10h ret col4 endp END