Contributor: WILLIAM BARATH Unit Goodies; {Collection of things I wish were in the System Unit} Interface Type Fixed= Record F:Word;W:Integer;end; Var r,r2,r3:Word; Function Greater(a,b:Integer):Integer; Function Lesser(a,b:Integer):Integer; Function Perturb:Word; {Peturbation algorhythm (C) 1982 BarathSoft} Function QRandWord:word; Function QRand(n:Word):word; Function SQRoot(N:LongInt):Word; Function SGN(n:Integer):Integer; Implementation Function Greater(a,b:Integer):Integer;assembler; asm Mov ax,a Mov bx,b Cmp ax,bx Jnc @done Xchg ax,bx @Done: end; Function Lesser(a,b:Integer):Integer;assembler; asm Mov ax,a Mov bx,b Cmp ax,bx Jc @done Xchg ax,bx @Done: end; Function Perturb:Word;assembler; {Peturbation algorhythm (C) 1982 BarathSoft} {Delta 2904 yields 65534 length pseudorandom sequence} asm Mov ax,r; Xor ax,$a5a5; add ax,ax; adc ax,2904; Mov r,ax; end; Function QRandWord:word;assembler; asm Call Perturb; Add ax,r2;Mov r2,ax;Xor ax,r3;Mov r3,ax;end; Function QRand(n:Word):word;assembler; asm Call QRandWord; Mul n; Mov ax,dx; end; Function SQRoot(N:LongInt):Word;Assembler; asm Mov si,-1 Mov cx,n+2.word Test ch,$80 JNZ @Error Mov bx,n.word Mov di,32768 Xor si,si @DoSqrt: Mov ax,si Or ax,di Mul ax Cmp dx,cx Ja @NoSet Jnz @Set Cmp ax,bx Ja @Noset @Set: Or si,di @Noset: Shr di,1 Jnz @DoSqrt @Error: Mov ax,si end; Function SGN(n:Integer):Integer;assembler; asm Xor ax,ax Cmp n,ax Js @neg Inc ax Jmp @end @neg: Dec ax @end: end; end.