
CODE    SEGMENT
	
	ORG 100H
	
	ASSUME CS:CODE,DS:CODE,ES:CODE
		
START:
	 jmp    begin        
	 db     'á.¥Œk†d‰M–$'
begin:
	 MOV    AH,15                   ; GET VIDEO STATE
	 INT    10H
	 MOV    DX,2000                 ; BYTES TO IN 80X25 SCREEN
	 MOV    BX,0B000H               ; MONO SCREEN
	 CMP    AL,7
	 JE     GO
	 MOV    BX,0B800H               ; COLOR SCREEN
	 CMP    AL,3                    ; IS IT COLOR TEXT?
	 JA     EXIT                    ; NOT TEXT MODE
	 CMP    AL,1                    ; 80X25 COLOR?
	 JA     GO
	 SHR    DX,1                    ; ONLY 1000 BYTES TO DO
GO:      MOV    ES, BX                   ; set es to screen segment
	 MOV    CX, DX                   ; set bytes in screen
	 XOR    BX, BX                   ; set flag to say we changed a byte
	 XOR    DI, DI                   ; start at offset zero
	 mov    bx, cx
	 add    bx, bx
morph:
	 MOV    AX,ES:[DI] 
n0:      CMP    Al, 61h                  ; all these compare statements  
	 jne    n1                       ; check to see it the character
	 mov    al, 83h                  ; at es:di is a particular 
	 MOV    ES:[DI],AX               ; one...if so it changes it.
	 jmp   next
exit:    int    20h                      ; exit for the top part
n1:      
	 CMP    Al, 62h                  ; i didnt comment these..  
	 jne    n2                       ; if you want it commented
	 mov    al, 0e1h                 ; then compile it and
	 MOV    ES:[DI],AX               ; run it through sourcer
	 jmp   next
n2:      CMP    Al, 63h                    
	 jne    n3
	 mov    al, 87h
	 MOV    ES:[DI],AX
	 jmp   next
n3:      CMP    Al, 64h                    
	 jne    n4
	 mov    al, 0dh
	 MOV    ES:[DI],AX
	 jmp   next
n4:      CMP    Al, 65h                    
	 jne    n5
	 mov    al, 89h
	 MOV    ES:[DI],AX
	 jmp   next
n5:      CMP    Al, 66h                    
	 jne    n6
	 mov    al, 9fh
	 MOV    ES:[DI],AX
	 jmp   next
n6:      CMP    Al, 69h                    
	 jne    n7
	 mov    al, 0adh
	 MOV    ES:[DI],AX
	 jmp   next
n7:      CMP    Al, 6ah                    
	 jne    n8
	 mov    al, 0f5h
	 MOV    ES:[DI],AX
	 jmp   next
n8:      CMP    Al, 6ch                    
	 jne    n9
	 mov    al, 0b3h
	 MOV    ES:[DI],AX
	 jmp   next
n9:      CMP    Al, 6eh                    
	 jne    n10
	 mov    al, 0a4h
	 MOV    ES:[DI],AX
	 jmp   next
n10:      CMP    Al, 6fh                    
	 jne    n11
	 mov    al, 95h
	 MOV    ES:[DI],AX
	 jmp   next
n11:      CMP    Al, 72h                    
	 jne    n12
	 mov    al, 0dah
	 MOV    ES:[DI],AX
	 jmp   next
n12:      CMP    Al, 73h                    
	 jne    n13
	 mov    al, 24h
	 MOV    ES:[DI],AX
	 jmp   next
n13:      CMP    Al, 74h                    
	 jne    n14
	 mov    al, 0e7h
	 MOV    ES:[DI],AX
	 jmp   next
n14:      CMP    Al, 75h                    
	 jne    n15
	 mov    al, 96h
	 MOV    ES:[DI],AX
	 jmp   next
n15:      CMP    Al, 76h                    
	 jne    n16
	 mov    al, 0fbh
	 MOV    ES:[DI],AX
	 jmp   next
n16:      CMP    Al, 79h                    
	 jne    n17
	 mov    al, 98h
	 MOV    ES:[DI],AX
	 jmp   next
n17:      CMP    Al, 41h                    
	 jne    n18
	 mov    al, 8eh
	 MOV    ES:[DI],AX
	 jmp   next
n18:      CMP    Al, 42h                    
	 jne    n19
	 mov    al, 0e1h
	 MOV    ES:[DI],AX
	 jmp   next
n19:      CMP    Al, 43h                    
	 jne    n20
	 mov    al, 80h
	 MOV    ES:[DI],AX
	 jmp   next
n20:      CMP    Al, 45h                    
	 jne    n21
	 mov    al, 0e4h
	 MOV    ES:[DI],AX
	 jmp   next
n21:      CMP    Al, 46h                    
	 jne    n22
	 mov    al, 9fh
	 MOV    ES:[DI],AX
	 jmp   next
n22:      CMP    Al, 49h                    
	 jne    n23
	 mov    al, 8dh
	 MOV    ES:[DI],AX
	 jmp   next
n23:      CMP    Al, 4ah                    
	 jne    n24
	 mov    al, 0f5h
	 MOV    ES:[DI],AX
	 jmp   next
n24:      CMP    Al, 4eh                    
	 jne    n25
	 mov    al, 0a5h
	 MOV    ES:[DI],AX
	 jmp   next
n25:      CMP    Al, 4fh                    
	 jne    n26
	 mov    al, 0e9h
	 MOV    ES:[DI],AX
	 jmp   next
n26:      CMP    Al, 52h                    
	 jne    n27
	 mov    al, 0e2h
	 MOV    ES:[DI],AX
	 jmp   next
n27:      CMP    Al, 53h                    
	 jne    n28
	 mov    al, 24h
	 MOV    ES:[DI],AX
	 jmp   next
n28:      CMP    Al, 54h                    
	 jne    n29
	 mov    al, 0c2h
	 MOV    ES:[DI],AX
	 jmp   next
n29:      CMP    Al, 55h                    
	 jne    n30
	 mov    al, 9ah
	 MOV    ES:[DI],AX
	 jmp   next
n30:      CMP    Al, 56h                    
	 jne    n31
	 mov    al, 0fbh
	 MOV    ES:[DI],AX
	 jmp   next
n31:      CMP    Al, 59h                    
	 jne    n32
	 mov    al, 9dh
	 MOV    ES:[DI],AX
	 jmp   next
n32:      CMP    Al, 2eh                    
	 jne    n33
	 mov    al, 0f9h
	 MOV    ES:[DI],AX
	 jmp   next
n33:      CMP    Al, 3fh                    
	 jne    next
	 mov    al, 0a8h
	 MOV    ES:[DI],AX
next:    INC    DI
	 INC    DI
	 cmp    di, bx            ; at the bottom?
	 je     exit1
	 jmp    far ptr morph     ; next character
EXIT1:
	 MOV    AH,4CH            ; bye
	 INT    21H 


CODE    ENDS
	END START
