home *** CD-ROM | disk | FTP | other *** search
- .386 ;v3.2
-
- _STACK SEGMENT STACK
- dw 100h dup (?)
- _STACK ENDS
-
- _DATA SEGMENT
- DATACOUNT db 0
- NUMDISPLAY db 50 dup (0)
- ALSO_MSG db 'Run ZTW_REG and type in the number given',0
- LINE1 equ 0B878h
- REGMEMNAMECNTR dw 0
- ACTUAL_LETTERS dw 0
- RED db 0
- GREEN db 0
- BLUE db 0
- COLOR db 63
- ISTHEREANERROR db 0
- INIT equ 1Fh
- INIT_COLOR equ 01F7Eh
- NAME_COLOR equ 1Fh
- NUM_COLOR equ 1Fh
- PRINT_NUM_CNT dw 22 ;and video address
- ERROR_MSG_COLOR equ 0Ch
- ERROR db 'Sorry bud, please read the instructions',0
- LOGO db 1 dup (0dh,0ah)
- UCF DB '─────────────────────────────────────────',10,13
- DB ' ▄▄▄ ▄▄▄ ▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄ ',10,13
- DB ' ███ ███ ███ ███▄▄▄ ',10,13
- DB ' ███▄ ███ ███▄ ███ ',10,13
- DB ' ▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀ ▀▀▀ ',10,13
- DB '─────────────────────────────────────────',10,13
- DB ' u N I T E D c R Æ C K I N G f O R C E ',10,13
- DB '─────────────────────────────────────────',10,13
- DB ' ZTWin 1.20 and 1.21 Beta Keymaker - 3 char min -',10,13
- DB ' By IllumiTIE[UCF] - Thanks to xOANON[UCF]',10,13,10,13
- db ' Name:$'
- SERIAL db 0dh,0ah,' Serial:$'
- NAMENOVMEM db 29 dup (0)
- _DATA ENDS
-
- _TEXT SEGMENT use16
- Assume CS:_TEXT, DS:_DATA, ES:_DATA, SS:_STACK
- INTRO:
- call FADEOUT
- mov ax,0003h
- int 10h
- mov ax,_DATA
- mov ds,ax
- mov ax,1015h
- mov bx,0007h
- int 10h
- mov GREEN,ch
- mov BLUE,cl
- mov RED,dh
- lea dx,LOGO
- mov ah,9
- int 21h
- call CLASS
- cld
- sub di,58 ;numbe of char *2
- jmp DISPLAY_TEXT
-
- ERROR_1:
- call ERROR_MSG
- DISPLAY_TEXT:
- call ASK
- cmp ISTHEREANERROR,1
- jz ERROR_1
- call ENKRYPT
- QUIT:
- call WRI_HEX_DIG
- call RESET_PAL
- call ALSO
- mov ax,4c00h
- int 21h
-
- WRI_HEX_DIG Proc
- push di
- push ax
- push dx
- cld
- mov di,LINE1+10
- mov es,di
- mov di,PRINT_NUM_CNT
- lea si,NUMDISPLAY
- L00PWRITE:
- lodsb
- mov ah,NUM_COLOR
- stosw
- or al,al
- jnz L00PWRITE
- pop dx
- pop ax
- pop di
- ret
- WRI_HEX_DIG EndP
- CLASS Proc
- mov bx,LINE1
- mov es,bx
- mov di,22
- mov ax,INIT_COLOR
- mov cx,29
- rep stosw
- mov ax,1000h
- xor bx,bx
- mov dx,1000h
- int 10h
- ret
- CLASS EndP
- DEL_ERR_MSG Proc
- push cx
- push ax
- push si
- push di
- push es
- mov di,LINE1-10
- mov es,di
- mov di,0
- xor ax,ax
- mov cx,40
- rep stosw
- pop es
- pop di
- pop si
- pop ax
- pop cx
- ret
- DEL_ERR_MSG EndP
- ERROR_MSG Proc
- push ax
- push esi
- push es
- push di
- dec ISTHEREANERROR
- mov di,LINE1-10
- mov es,di
- mov di,0
- mov esi,offset ERROR
- cld
- ERROR_1_1:
- lodsb
- mov ah,ERROR_MSG_COLOR
- stosw
- cmp al,0
- jne ERROR_1_1
- pop di
- pop es
- pop esi
- pop ax
- ret
- ERROR_MSG EndP
- ASK Proc
- STOP_1:
- call FLASHNOW
- xor ax,ax
- mov ah,01
- ;xor ah,ah
- int 16h
- jz STOP_1
- xor ah,ah
- int 16h
- call DEL_ERR_MSG
- cmp al,0dh
- jz DONE
- cmp al,08h
- jz NO_SAVE
- cmp ACTUAL_LETTERS,3
- jz ERROR_DONE
- IS_IT_NUM:
- cmp al,39h
- jle SAVE
- ; and al,05fh
- jmp short SAVE
- NO_SAVE:
- cmp ACTUAL_LETTERS,0
- jz ERROR_DONE
- std
- push ax
- dec di
- dec di
- mov ax,INIT_COLOR
- stosw
- inc di
- inc di
- pop ax
- cld
- dec ACTUAL_LETTERS
- dec ACTUAL_LETTERS
- dec REGMEMNAMECNTR
- jmp short BLAH
- SAVE:
- mov ah,NAME_COLOR
- stosw
- call SAVEINREGMEM
- BLAH:
- inc ACTUAL_LETTERS
- jmp STOP_1
- ERROR_DONE:
- mov ISTHEREANERROR,1
- ret
- DONE:
- cmp ACTUAL_LETTERS,3
- jl ERROR_DONE
- ret
- ASK EndP
- FLASHNOW Proc
- push ax
- push bx
- push cx
- push dx
- mov ax,1010h
- xor bh,bh
- mov bl,7
- mov cl,COLOR
- mov dh,COLOR
- mov ch,COLOR
- REDO:
- mov ax,1010h
- mov cl,COLOR
- mov ch,COLOR
- mov dh,COLOR
- int 10h
- dec COLOR
- or cl,cl
- jnz QUIT_COLOR
- mov COLOR,63
- QUIT_COLOR:
- pop dx
- pop cx
- pop bx
- pop ax
- ret
- FLASHNOW EndP
- RESET_PAL Proc
- mov ax,1010h
- xor bh,bh
- mov bl,7
- mov ch,GREEN
- mov cl,BLUE
- mov dh,RED
- int 10h
- ret
- RESET_PAL EndP
- SAVEINREGMEM Proc
- push es
- push ax
- push di
- push ds
- pop es
- mov edi,offset NAMENOVMEM
- add di,REGMEMNAMECNTR
- stosb
- inc REGMEMNAMECNTR
- pop di
- pop ax
- pop es
- ret
- SAVEINREGMEM EndP
- ENKRYPT Proc
- push ax
- mov ah,09
- push dx
- lea dx,SERIAL
- int 21h
- pop dx
- pop ax
- push si
- push di
- lea si,NAMENOVMEM
- lea di,NUMDISPLAY
- mov ax,ACTUAL_LETTERS
- mov ah,al
- add al,ah
- dec al
- mov DATACOUNT,al
- xor ah,ah
- cld
- lodsb
- mov bp,ax
- shl ax,4 ;It's a #
- shr al,4
- cmp al,0Ah
- jb SAFE
- call ITS_A_LETTER
- jmp ALMSAFE
- SAFE:
- add al,30h
- ALMSAFE:
- xchg ah,al
- cmp al,0Ah
- jb SAFEENOUGH
- call ITS_A_LETTER
- jmp ALMSAFEENOUGH
- SAFEENOUGH:
- add al,30h
- ALMSAFEENOUGH:
- lea di,NUMDISPLAY
- add di,word ptr[DATACOUNT]
- mov [di],al
- dec DATACOUNT
- xchg ah,al
- lea di,NUMDISPLAY
- add di,word ptr[DATACOUNT]
- mov [di],al
- dec DATACOUNT
- mov cx,ACTUAL_LETTERS
- NEXT_SECT:
- mov bx,001bh
- sub bx,bp
- xor bh,bh
- @L00P:
- cld
- xor ah,ah
- lodsb
- sub al,bl
-
- shl ax,4 ;It's a #
- shr al,4
- cmp al,0Ah
- jb XSAFE
- call ITS_A_LETTER
- jmp XALMSAFE
- XSAFE:
- add al,30h
- XALMSAFE:
- xchg ah,al
- cmp al,0Ah
- jb XSAFEENOUGH
- call ITS_A_LETTER
- jmp XALMSAFEENOUGH
- XSAFEENOUGH:
- add al,30h
- XALMSAFEENOUGH:
- lea di,NUMDISPLAY
- add di,word ptr[DATACOUNT]
- mov [di],al
- dec DATACOUNT
- xchg ah,al
- lea di,NUMDISPLAY
- add di,word ptr[DATACOUNT]
- mov [di],al
- dec DATACOUNT
-
- loop @L00P
-
- RETURN:
- pop si
- pop di
- ret ;value NUMDISPLAY
- ENKRYPT EndP
- ALSO Proc
- push ax
- push esi
- push es
- push di
- mov di,LINE1-10
- mov es,di
- mov di,0
- mov esi,offset ALSO_MSG
- cld
- ALSO_1_1:
- lodsb
- mov ah,ERROR_MSG_COLOR
- stosw
- cmp al,0
- jne ALSO_1_1
- pop di
- pop es
- pop esi
- pop ax
- ret
- ALSO EndP
- ITS_A_LETTER Proc
- cmp al,0Ah
- jz @A
- cmp al,0Bh
- jz @B
- cmp al,0Ch
- jz @C
- cmp al,0Dh
- jz @D
- cmp al,0Eh
- jz @E
- @F:
- mov al,46h
- ret
- @A:
- mov al,41h
- ret
- @B:
- mov al,42h
- ret
- @C:
- mov al,43h
- ret
- @D:
- mov al,44h
- ret
- @E:
- mov al,45h
- ret
- ITS_A_LETTER EndP
- FadeOUT PROC Near
- call WaitVGA
- ; kill the screen
- ;
- mov cx,2Ah
- RepeatKilling:
- mov dx,3C8h
- mov al,07h
- out dx,al
- inc dx
- mov ax,cx
- dec ax
- out dx,al
- jmp short $ + 2
- out dx,al
- jmp short $ + 2
- out dx,al
- ;
- call WaitVGA
- loop RepeatKilling
- FadeOut ENDP
- WaitVGA PROC Near
- pushf
- push ax
- push dx
- mov dx,3DAh
- Test1AgainVGA:
- in al,dx
- test al,8
- jnz Test1AgainVGA
- Test2AgainVGA:
- in al,dx
- test al,8
- jz Test2AgainVGA
- ;
- pop dx
- pop ax
- popf
- ret
- WaitVGA ENDP
-
- _TEXT ENDS
- END INTRO
-