This unit has some general crap that you will find yourself using all the time.. To register: Send me $5 ! No big deal. J. H. PO BOX 753 Matteson, IL 60443 You get the source code.. plus a copy of a BBS software written in pascal here is some of the procedures.. -------------------------------------------- procedure CLS; (* clear the screen *) no big whoop :) procedure cursoron; (* Turn the cursor on! *) procedure cursoroff; (* Turn the cursor off! *) very usefull procedure NL; (* Go down 1 line *) procedure color(x,y:integer); (* Change color *) procedure TC(a:integer); (* Change Foreground *) procedure TB(a:integer); (* Change background *) general junk procedure ucase(var sx:string); (* Capatolize a string *) procedure lcase(var sx:string); (* Lowercase a string *) usefull, since TP has really bad support for this procedure beep; (* Crappy beep thing *) whop whop procedure kill(s:string); (* erase a file spec *) great procedure doDOS(programname:string); (* DOS Shell something *) very well written procedure LSD(name:string); (* LSD box something *) try it out procedure cprint (sx:string); (* color PRINT but with |03's *) procedure cprompt(Sx:string); (* color PRINT; no @'s! *) renegade-BBS style color strings, VERY USEFULL! see demo.pas procedure mln (sx:string; size:integer); (* Write word and spaces of z *) procedure mln2 (sx:string; size:integer); (* REAL MLN but without color *) usefull procedure setblinkint(B:boolean); (* Set BLINK or INTENSE mode *) VERY COOL. procedure showbinpic(S:string); (* Show a thedraw .BIN file *) good for thedraw procedure checkvidseg; (* Check 4 mono or color scrn *) procedure savescreenm(var wind:windowrec; TLX,TLY,BRX,BRY:integer); procedure savescreen(var wind:windowrec); (* Same as above /w 1,1,25,80 *) procedure putscreen(wind:windowrec); (* Dump a wind to the screen *) blah blah blah, Procedure Set_Caps(On : boolean); (* Set Capslock to ON/OFF *) Procedure Set_Num(On : boolean); (* Set Numlock to ON/OFF *) Procedure Set_Scroll(On : boolean); (* Set scroll lock to ON/OFF *) another good one procedure SETMODE(mode : byte); (* Set vga mode - bios *) Function CapsOn: Boolean; (* What are caps set to? *) Function NumOn: Boolean; (* What are numlock set to? *) Function ScrollOn: Boolean; (* What is scrollock set to? *) blah blah blah function per(t,b:longint; approx:boolean):string; function bselect(b:boolean; s1,s2:string):string; give percent of something, bselect is also usefull function exists(fn:string):boolean; (* does that file exist? *) function soutsp(s:string):string; (* strip spaces for string *) function I2S(i: Longint): string; (* integer -> string *) ... function yesno(question:string):boolean; (* Yes/no toggle prompt *) function findcenter(sx:string):integer; (* Give the center as integer *) blah function stripcolor(thestr:string):string; (* Strip |03's out of string *) see cprint function yesnomain(question:string; ca,cb,c1,c2,c3,c4:integer):boolean; function nukedir(dirtonuke:string; nukestyle:integer):integer; variables in STUFF ---------------------- Type windowrec = array[0..4003] of byte; (* Text screen record *) Var Regs:Registers; (* Hardware/dos registers *) Const StuffVersion:string='6.4a'; (* Current stuff version *) vidseg:word=$B800; (* Text screen mem pos *) DefYN:boolean=false; (* DefYN gets reset to false *)