home *** CD-ROM | disk | FTP | other *** search
-
- 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
-