{$A+,B-,D+,E-,F-,G+,I+,L+,N+,O-,P-,Q-,R-,S+,T-,V+,X+} {$M 16384,0,655360} {$M $4000,0,65536} {* Set heap size to zero !!! *} Program UniversialKeymaker; uses palette,dos,crt,keyinput,modplay; {$L ULONGS.OBJ} { link in the assembly code } FUNCTION LongADD (Addend1,Addend2:LONGINT):LONGINT; EXTERNAL; FUNCTION LongSUB (LongWord,Subtrahend:LONGINT):LONGINT; EXTERNAL; FUNCTION LongMUL (Multiplicand,Multiplier:LONGINT):LONGINT; EXTERNAL; FUNCTION LongDIV (Dividend,Divisor:LONGINT):LONGINT; EXTERNAL; FUNCTION LongMOD (Dividend,Divisor:LONGINT):LONGINT; EXTERNAL; PROCEDURE WriteULong (LongWord:LONGINT; { the longword } Width:BYTE; { _minimum_ field width } FillChar:CHAR; { leading space char } Base:BYTE); EXTERNAL; { number base 2..26 } Var sk : array[1..8000] of byte absolute $b800:0000; i,numwritten:integer; ToF:File; Output : String; Type String8 = String[8]; Const AskName=1; AskCompany=0; Procedure LongToHex(AnyLong : LongInt; Var HexString : String8); Var ALong : LongInt; ch : Char; Index : Byte; begin HexString := '00000000'; { default to zero } Index := Length(HexString); { String length } While AnyLong <> 0 do begin { loop 'til done } ch := Chr(48 + Byte(AnyLong) and $0F); { 0..9 -> '0'..'9' } if ch > '9' then Inc(ch, 39); { 10..15 -> 'A'..'F'} HexString[Index] := ch; { insert Char } Dec(Index); { adjust chr Index } AnyLong := AnyLong SHR 4; { For next nibble } end; end; Procedure Curs(n:integer); Var regs : registers; Begin regs.ah:=1; case n of 0 : begin regs.cl:=32; regs.ch:=32; end; 1 : begin regs.cl:=8; regs.ch:=7; end; end; intr($10,regs); End; PROCEDURE SwitchTo25; ASSEMBLER; ASM MOV AX,$1114 INT $10 END; Function GenerateReg:String; Var lic,eax,ebx,ecx,edx,edi,esi,ebp:Longint; xs,Name,Company:String; bx,y,i,bp:integer; MyStr : String8; Begin bx:=wherey; repeat GetInput(Name,'',20,25,bx,0,7,' ',false); val(name,lic,bp); until bp=0; writeln; val(name,edi,i); edi:=edi and $ffff; ecx:=longadd($90b96501,0); eax:=longadd($11d06967,0); ecx:=ecx xor edi; eax:=eax and $ffff; ecx:=longadd(ecx,ecx); ecx:=ecx xor eax; write(' ž Lic No. : 1RE'); WriteULong(ecx,0,' ',10); end; { end;} Begin writeln(' Cabinet Manager v1.5.25 (c) Microlog'); writeln('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ| MiRaMaX |ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ'); writeln(' ÜÜÜ ÜÜÜ ÜÜÜÜÜÜÜÜÜ ÜÜÜÜÜÜÜÜÜ '); writeln(' ŪŪŪ ŪŪŪ ŪŪŪ ŪŪŪÜÜÜ '); writeln(' ŪŪŪÜ ŪŪŪ ŪŪŪÜ ŪŪŪ '); writeln(' ßßßßßßßßß ßßßßßßßßß ßßß '); writeln('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ'); writeln(' u N I T E D c R A C K I N G f O R C E '); writeln('[kEYMAKER]ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ[dEC 1997]'); writeln; write(' ž Enter your Cert No.: '); Output:=GenerateReg; writeln; end.