From Tom@takdsign.demon.co.uk Fri Sep 30 17:33:31 EDT 1994 Article: 13831 of comp.robotics Newsgroups: sci.electronics,comp.robotics,comp.realtime,alt.comp.hardware.homebuilt From: Tom@takdsign.demon.co.uk (Tom Kellett) Path: cantaloupe.srv.cs.cmu.edu!das-news.harvard.edu!news2.near.net!MathWorks.Com!europa.eng.gtefsd.com!howland.reston.ans.net!news.sprintlink.net!demon!takdsign.demon.co.uk!Tom Subject: FAQ: Microchip PIC Series Distribution: world Organization: T.A.K.DesignS Warrington Reply-To: Tom@takdsign.demon.co.uk Date: Mon, 26 Sep 1994 01:11:20 +0000 Message-ID: <264698571wnr@takdsign.demon.co.uk> Sender: usenet@demon.co.uk Lines: 854 Xref: glinda.oz.cs.cmu.edu sci.electronics:102082 comp.robotics:13831 comp.realtime:6953 PIC-FAQ Issue 2.01 This article is a collection of information sources for the PIC family of microcontrollers (and variants). The following topics are addressed: 0 ) Index 1 ) ABOUT THIS FAQ 1.1) Who put this FAQ together? 1.2) How can I contribute to this FAQ? 1.3) What newsgroups will this FAQ be posted to? 1.4) Mailing lists of interest to PIC fettlers 1.5) Other FAQs of possible interest 1.6) Can I distribute this FAQ or post it somewhere else? 2 ) ABOUT THE PIC 2.1) The PIC microcontroller 2.2) PIC variants 2.3) Notes for programmers 2.4) PIC contacts and representatives 3 ) PIC Utilities 3.1) FTP sites for the PIC 3.2) BBSs that support the PIC 3.3) Programming languages (3rd Party) 3.4) Programming hardware (3rd Party) 4 ) PIC DOCUMENTATION 4.1) Periodicals that cover the PIC 4.2) Books on the PIC 4.3) Miscellaneous documentation on the PIC 5 ) What's next. ============================================================================= 1) ABOUT THIS FAQ 1.1) Who put this FAQ together? The denizens of "E-world" i.e. yourselves. 1.2) How can I contribute to this list? Please, if you have any suggestions corrections or additions, notify me by E-MAIL. : Tom@takdsign.demon.co.uk Thank you. 1.3) What newsgroups will this FAQ be posted to? This FAQ will be posted to the following newsgroups: sci.electronics Y comp.robotics Y comp.realtime Y comp.answers Y When it's compliant alt.comp.hardware.homebuilt ? ???.????? suggestions ? The schedule for posting will be once a month. 1.4) Mailing lists of interest The pic list address is: Administrative matters go to: 1.5) Other FAQs of possible interest The 8051FAQ posted by Russ Hersch - sibit@datasrv.co.il Available in comp.sys.intel comp.realtime comp.robotics comp.lang.forth sci.electronics 1.6) Can I post this FAQ to my local BBS? I am putting no restrictions on the use of this FAQ except - It must be distributed in its entirety and no financial gain may be realized from it. ============================================================================= 2) ABOUT THE PIC ----------------------------------------------------------------------------- 2.1) The PIC microcontroller The PIC series are eprom based 8-bit microcontrollers developed by Microchip Technology ----------------------------------------------------------------------------- 2.2) PIC Variants PIC processors are available in three families, which Microchip refers to as the PIC16C5x, PIC16Cxx, and PIC17Cxx families. PIC16C5x: 12 bit program word size, 33 instructions, 2 level stack, no interrupts Program Data Max. Voltage Typical Digikey memory memory I/O freq. Range Current Price (words) (bytes) pins (MHz) (Volts) (mA) (US $) ---------- --------- --------- ----- ----- -------- ------- ------- PIC16C54 512 25 12 20 2.5-6.25 2 4.39 PIC16C54A 512 25 12 20 2.5-6.25 2 PIC16CR54 512 ROM 25 12 20 2.0-6.25 1 PIC16CR54A 512 ROM 25 12 20 2.0-6.25 1 PIC16C55 512 24 20 20 2.5-6.25 2 5.44 PIC16C56 1024 25 12 20 2.5-6.25 2 5.03 PIC16C57 2048 72 20 20 2.5-6.25 2 6.24 PIC16CR57A 2048 ROM 72 20 20 2.0-6.25 1 PIC16C58A 2048 73 12 20 2.5-6.25 1 PIC16Cxx: 14 bit word size, 35 instructions, 8 level stack Program Data Max. Voltage Typical Digikey memory memory I/O freq. Range Current Price (words) (bytes) pins (MHz) (Volts) (mA) (US $) ---------- --------- --------- ----- ----- -------- ------- ------- PIC16C64 2048 128 33 20 2.0-6.0 3 11.05 PIC16C71 1024 36 13 16 3.0-6.0 2 14.38 PIC16C74 4096 192 PIC16C84 1024 EE 36 + 64 EE 13 10 2.0-6.0 2 10.15 PIC17Cxx: 16 bit word size, 55 instructions, 16 level stack: Program Data Max. Voltage Typical Digikey memory memory I/O freq. Range Current Price (words) (bytes) pins (MHz) (Volts) (mA) (US $) ---------- --------- --------- ----- ----- -------- ------- ------- PIC17C42 2048 256 33 25 4.5-5.5 6 15,15 PIC17C44 8192 480 33 25 Notes: 1. Program memory is EPROM unless otherwise noted. 2. Data memory is number of usable bytes, not including special function registers. 3. Digikey prices are quantity 10 prices for 4 MHz DIP packaged OTP parts with RC oscillator option (where applicable), except that the 16C84 uses EEPROM program memory, and the slowest speed 17C42 is rated at 16 MHz. Prices are from Digikey catalog number 943 for May/June 1994. Other distributors often have lower prices, but typically also have high minimum order requirements. Digikey also usually has plenty of parts in stock. Windowed EPROM parts cost substantially more. ----------------------------------------------------------------------------- 2.3) Notes for programmers: All PIC instructions are a single word. The equivalent of the immediate address mode of other processors is the literal mode, used by instructions ending in "LW", such as MOVLW, ADDLW, SUBLW, ANDLW, IORLW, XORLW, and RETLW. The byte of data used by these instructions is directly encoded in the instruction itself. All PIC instructions take a single instruction cycle (four oscillator cycles) to execute, unless a conditional test is TRUE or the program counter is changed as a result of an instruction, in this case the execution takes two instruction cycles. For example: movlw 37 goto next next: movwf porta The goto instruction takes two cycles (1 to get the value of label "next" and 1 to load that value into the program counter) This is useful as a two-cycle NOP, and is often written as "goto .+1" to avoid the need for a label. The W register is equivalent to the accumulator on other processors. Almost all data movement, arithmetic, and logic operations use W. Instructions that operate on W and a register (i.e., instructions ending in "WF", like ADDWF and MOVWF) allow the result to be placed in either W or the register (but not both). This is specified by a ",W" or ",F" after the operand. The default is ",F", which will place the result in the register. This can cause a lot of confusion if you're not careful, so I recommend always specifying the destination explicitly. An example of a confusing instruction: incf foo,w ; w := foo+1 note that foo is unchanged! If you want the result in both W and the register, you can use either: incf foo,w mowwf foo or: incf foo,f movf foo,w The stack is not accessible to the programmer in any way other than the call and return instructions. There is no way to push or pull data, or even to examine the stack pointer. On the 16C5x family the stack has only two levels, so it is frequently necessary to write code in a different style than would be used on a typical processor; you can only call subroutines from your main code, or from a subroutine called from main, but no deeper. If you try to make a 3rd CALL, the 2nd return address is over-written so that the return from the 3rd CALL is OK but the return from the 2nd CALL ends up where the 1st CALL should return to. The 16CXX parts which implement an 8 level stack do so in a circular fashion, so that the 9th CALL over-writes the return address for the 1st CALL. The 16C5x family doesn't have a normal return instruction; instead it has RETLW, which stands for RETurn Literal Word. RETLW loads an eight bit constant into W (just as a MOVLW instruction would), then returns from the subroutine. This can be useful, but is agravating if you want to return a computed value. On the newer PIC families there is a normal RETURN instruction. With the exception of the 17Cxx family, there is no way for software to read an arbitrary location of program memory. In order to implement lookup tables, it is necessary to combine the use of the ADDWF and RETLW instructions. For example, the following code implements a lookup table of the first four odd prime numbers: primes: addwf pcl retlw 3 retlw 5 retlw 7 retlw 11 To use the table, load the appropriate index (in this case, 0 to 3) into W, and "call primes". The addwf instruction adds the contents of W to the PC, which has already been incremented to point to the "retlw 3". The table will return with the value in W. The total time taken is 6 instruction cycles, or 24 oscillator cycles. Note that while on most processors the use of an out-of-range index will result in the use of incorrect data, but the program execution will continue normally, on the PIC a bad index value will cause the execution of arbitrary instructions! i.e. the computed address must be in the top 1/2 of page. Normally the index would range from 0 to the size of the table minus one, but it is possible to use other ranges by putting the retlw instructions somewhere other than immediately following the "addwf pcl". It is also possible to implement tables using a "subwf pcl", or perhaps other instructions with pcl as the destination. The subtract instructions (SUBWF and SUBLW) work differently than most people expect. SUBWF subracts W *from* the contents of the register, and SUBLW subtracts W *from* the literal. (SUBLW is not available on the 16C5x family.) If you want to subtract a literal from W, it is easiest to use the ADDLW instruction with the two's complement of the literal. For example: addlw 0feh ; w := w - 2 Some assemblers allow this to be written as: addlw -2 There is no instruction to take the two's complement of W (like the NEG instruction on Motorola processors), but because of the way the subract instructions work you can use: sublw 0 On the 16C5x family, the CALL instruction can only address the first 256 words of a bank of program memory. It is common practice to use "call extenders", which are simply GOTO instructions in the first 256 words with a target in the last 256 words. On the 16C57 and 16C58, if you plan to use indirect addressing (via the FSR and IND registers), it is vitally important that your reset code clear FSR before using any other RAM locations. Otherwise you may start up in an arbitrary bank, and as soon as you change FSR all your carefully set up variables will effectively disappear. ----------------------------------------------------------------------------- 2.4) PIC contacts and representatives 12/06/94 12:12:51 I don't know where these are for sure. Advanced Trans Data tel:(214) 980- 2960 Programmer PGM16 & PGM 16x8 Gang Prog. fax:(214) 980-2937 No further information is available at this time Micro Engineering Labs tel:(719) 520-5323 makes PIC-Proto boards Myriad Development tel:(303) 692-3836 CCS - C compiler tel: (414) 781-2794 extension 30 Digi-Key tel:1-800-344-4539 Order electronic parts, carry 16C54,55,56,57,&71. ED Teck. Pubs tel:407-454-9905 Fred Eady BBS:407-454-3198 Writes articles for popular magazines. Has a PIC programmer kit for $70. BBS good source of information, very helpful. FAI tel:1-800-303-5701 Ask for Chris Electronics distributer, carry PIC's, Needham Electronics tel:(916) 924-8037 I don't know if they make PIC stuff, fax:(916) 972-9960 but they make an EPROM programmer, the PB-10 bbs:(916) 972-8042 Their emp-20 is great for Pics,Pals,Gala,EEproms etc but is ~$500 It can be set to auto program on start up. It takes about 4 seconds for a bat file to reassemble the source with new EQU's from the command line, recompile and program a part. Protel tel:1-800-544-4186 Builder of EASYTRAX, which is free-ware and a bunch of new stuff. Call Ext 225 ask for Louise Markham. bbs:1-408-243-0125 Bell Industries tel:1-800-525-6666 Electronic Distributor, including PIC's ......................................................................... Australia Microchip Technology tel:61 03 890 0970 Product information No further information is available at this time ......................................................................... Canada AP Circuits BBS 1-403-291-9342 (Canada) Can download EASYTRAX(V2.06), various utilities, GERBER file proofers, etc. You can upload PCB files and they will make boards and ship to you in about week. (about $100) Baradine Products Ltd tel:604-988-9853 Programmer Micro-Burner No further information is available at this time ......................................................................... Europe Data I/O Corp. tel:31(0)-6622866 Programmer Unisite with Site-48 module No further information is available at this time ......................................................................... France Arizona Microchip Technology SARL tel:33 01 6930 9090 2, Rue Du Buisson aux Fraises fax:33 01 6930 9079 F-91300 Massy, France Product information ......................................................................... Germany Arizona Microchip Technology GMBH tel:49 089 609 6072 Alte Landstrasse 12-14 fax:49 089 609 1997 D-8012 Ottobrunn, Germany Product information SMS tel:49-7522-4460 Programmer Sprint Expert No further information is available at this time ......................................................................... Hong Kong Microchip Technology Inc. tel:852 410 2716 Unit No. 2520-2525 fax: 852 418 1600 Tower 1, Metroplaza Hing Fong Road, Kwai Fong N.T., Hong Kong Product information ......................................................................... Italy Microchip Technology tel:39 039 689 9939 Product information No further information is available at this time ......................................................................... Japan Data I/O Corp. tel:(03) 432- 6991 Programmer Unisite with Site-48 module No further information is available at this time Microchip Technology International Inc. tel:81 45/471-6166 Shinyokohama Gotoh Bldg. 8F, 3-22-4 fax: 81 45/471-6122 Shinyokohama, Kohoku-Ku, Yokohama-Shi Kanagawa 222 Japan Product information ......................................................................... Korea Microchip Technology tel:82 2 518 8181 Product information No further information is available at this time ......................................................................... Singapore Microchip Technology tel:65 222 4962 Product information No further information is available at this time ......................................................................... Taiwan HI-LO tel:(02) 7640215 Programmer ALL-03 No further information is available at this time Microchip Technology tel:886 2 760 2028 Product information No further information is available at this time ......................................................................... U.K. Arizona Microchip Technology Ltd tel:44 062-885-1077 Unit 3, Meadow Bank, Furlong Rd fax: 44 062-885-0178 Bourne End, Bucks SL8 5AJ Product information Application Solutions Ltd tel:273-476608 Programmer PIC Programmer No further information is available at this time Citadel Products Ltd. tel:44-819-511-848 Programmer PC-82 No further information is available at this time Maple Technology Ltd tel:44-666-825-146 Programmer MQP-200 No further information is available at this time Stag Microsystems tel:44-707-332-148 Programmer PP39 No further information is available at this time ......................................................................... U.S. ADVIN Systems Inc tel:408-984-8600 Programmer PILOT U40 No further information is available at this time BP Microsystems tel:800-225-2102 Programmer CP-1128 tel:713-461-4958 No further information is available at this time Data I/O Corp. tel:800-288-4965 Programmer Unisite with Site-48 module No further information is available at this time Elan Digital Systems Ltd tel:(408) 946-3864 Programmer EF-PER 5000 Series Gang Programmer No further information is available at this time Link Computer Graphics tel:301-994-6669 Programmer CLK-3100 No further information is available at this time Logical Devices Inc tel:800-331-7766 Programmer ALLPRO 88 tel:305-974-0967 No further information is available at this time Micro Engineering Labs tel:719-520-5323 Box 7532 Colorado Springs, CO 80933 Has proto-type boards and demo kits, Good source of info, can do manufacturing, etc Microchip Technology Inc. tel:(602) 786-7200 2355 West Chandler Blvd. fax: (602) 899-9210 Chandler, AZ 85224-6199 Product information Parallax Inc tel:916-721-6669 6359 Auburn Blvd., Suite C fax: (916) 624-8003 Citrus Heights, CA 95621 USA bbs: (916) 624-7101 Assembler / Simulator Help 916-624-8333 The assembler takes either the standard instructions or parallax's 8051-like pseudo instructions Parallax Inc tel:916-721-6669 6359 Auburn Blvd., Suite C fax: (916) 624-8003 Citrus Heights, CA 95621 USA bbs: (916) 624-7101 Programmer PIC 16C5X-PGM Help 916-624-8333 If you call the BBS you can order info by mail. ============================================================================= 3) PIC Utilities PICSTART-16B-1 Features Supports only 16C5x,16C71 and 16C84,(INHX16, INHX8S, INHX8M, PICICE) compatible with a wide range of file formats comes with chips to play with. has a zif socket assembler has powerful macro capabilities also includes a powerful debugger PICSTART-16C Features To be announced ------------------------------------------------------------------------------- PARALLAX -------- Features Parallax's own instruction set Their assembler takes either the standard instructions or parallax's 8051-like pseudo instructions. needs only a 360k floppy, MSDOS 2.1, 128K RAM, mono. simulator software ----------------------------------------------------------------------------- 3.1) FTP sites for the PIC FTP SITE Directory ftp.sics.se /pub/mchipsoft/ The files here are publicly available from the Microchip BBS via Compuserve. Since many people interested in these files have an internet connection, the files have also graciously been made available at SICS by Anders Nobinder of Memec Scandinavia, Microchip's Swedish agent. ftp.funet.fi (nic.funet.fi) /pub/microprocs/PIC wpi.wpi.edu /stamp basic stamp information PLUS PIC "C" compiler ftp.luth.se /pub/misc/microchip ftp.oak.oakland.edu ftp.uni-erlangen.de, directory [ /mounts/epix/public/pub/Multimedia/VideoCrypt /microcontroller/microchip.bbs ] Markus Kuhn ----------------------------------------------------------------------------- 3.2) BBSs that support the PIC Microchip BBS Contact by dialing the same number you would use to get to Compuserve at 19200,n,8,1, except that you press + at the (garbage) prompt, followed by MCHIPBBS as the host (instead of CIS). Don Lekei BBS (Canada) (604) 597-3479 ----------------------------------------------------------------------------- 3.3) PIC programming languages (3rd Party) Host m/c PC Prog. Name ASPIC Shareware PIC assembler (reg = $100 CDN ($69 US)) **DESIGNED** for embedded controller design the shareware license has an unusual clause absolving those who only use it for non-commercial purposes Supplier/Author Don Lekei < 72677.2623@compuserve.com > BBS at (Canada) (604) 597-3479 Features - One assembler for 16c5X, 16c6X, 16c7X, 16c8X, 17c42 - Compatable with PICSIM (MPSIM) - Compatable with MAKE, and with auto-error tracking editors - Many times faster than PICALC (MPALC) - Standard base notation (Intel & Motorola format) - CODE and FUNCTION macros - Auto register bank management - Text/data translation - Automatically generates RETLW tables for text / data tables - Built-in version management and assembly control functions - user command-line switches - many other features -character set translation (eg. for LED,LCD,On Screen Displays) - bit labels, environment labels, etc. ------------------------------------------------------------------------------- Host m/c PC i386 /MSDOS/SunOS 4.1.1/NeXTSTEP 3.0. Prog Name B.LO.C release 1.0, version 4.0 Available for the PIC16CXX and PIC17CXX Supplier Butterfly Signal Processing Inc. 131 Bloor Street West #200-154 Toronto, Ontario, Canada M5S 1R8 Tel: (416) 929-5754 Fax: (416) 929-5744 Features `C-like' syntax Locally optimal code generation Superfast, one-pass compilation Zero stack and memory space used Produces fully annotated, easy-to-read - - assembly code to facilitate simulation Regular and in-line functions supported B.LO.C and assembly routines can be mixed In-line assembly code inclusion For more information contact asm@kalam.butterfly.com ------------------------------------------------------------------------------- Host m/c Macintosh Prog. Name uASM Supplier Micro Dialects Inc, PO Box 190, Loveland, OH 45140, Ph: 513/271-9100. Features: An integrated text editor, assembler and communications modules. fully supports macros, automatic labels, local labels, conditionally assembly, includes to 10 level deep. The editor supports up to 10 open files at a time, full search and replace including grep searches, file size limited only by RAM available. The emulator supports data transfer up to 38,400 baud. NOTE: The uASM code is incompatible with the MicroChip Simulator ------------------------------------------------------------------------------- Host m/c PC ? C5x compiler C5x series C71 compiler Supplier CCS PO Box 11191 Milwaukee, WI 53211 phone # : 414-781-2794 ext.30 (you leave your message on an answering machine) Features -libraries for RS232 serial I/O and precision delays -allow call trees deeper than the hardware stack ----------------------------------------------------------------------------- 3.4) PIC Programming Hardware (3rd Party) Product programmer Model Microburner 512 Supplier Beradine Products Ltd, PO Box 86757, North Vancouver, BC CANADA V7L4L3, Ph: 604/988-9853. Contact Gary Anderson Features RS-232 terminal serial port compatible programmer Supports communications up to 38,400 baud, stand-alone or host operation, PIC16C84 Programmer using PC parallel port. Schematic, C and QBasic source available from: Microchip BBS: In 3rdparty library as PIC84PGM.ZIP ftp://bode.ee.ualberta.ca /pub/cookbook/comp/ibm/pic84pgm.zip ftp://ftp.luth.se /pub/misc/microchip/16c84/pic84pgm.zip Contact: david.tait@man.ac.uk Author/Designer ============================================================================= 4) PIC DOCUMENTATION 4.1) Periodicals that may cover the PIC. The Computer Applications Journal (Circuit Cellar Ink) - programming and construction articles - POB 7694, Riverton, NJ 08077-8784 - FAX: (203)872-2204 - Voice orders: (609) 786-0409 - On-line orders (BBS): (203) 871-1988 - Email orders: ken.davidson@circellar.com - $21.95, $31.95 surface Canada and Mexico, $49.95 air all other countries Computer Design industry announcements and trends One Technology Park Drive, P.O. Box 990, Westford, MA 01886 (508)692-0700 The Computer Journal - programming and construction articles - PO Box 535, Lincoln 96648 Dr. Dobbs Journal - programming articles, concepts and designs - 411 Borel Ave., San Mateo, CA 94402 - (415)358-9500 Electronic Engineering Times - industry announcements and trends - 500-B Bi-County Boulevard, Farmingdale, NY 11735 - (516)293-3000 Electronics Now - construction articles - Box 55115, Boulder, CO 80321-5115 - $19.97 one year Elektor Electronics - programming and construction articles - World Wide Subscription Service Ltd Unit 4, Gibbs Reed Farm, Pashley Road Ticehurst TN5 7HE, England - 27 UK pounds or - Old Colony Sound Lab, - P.O. Box 243, Peterborough, NH 03458 - Tel. (603) 924-6371, 924-6526 - Fax: (603) 924-9467 - $57 USA and Canada per year Embedded Systems Programming - programming and systems design articles - Miller Freeman Publications - 500 Howard St., San Francisco, CA 94105 - (415) 397-1881 Microcomputer Journal (formerly Computer Craft) - programming and constructions articles - 76 N. Broadway, Hicksville, NY 11801 - $18.95 one year, foreign $23.00, foreign air mail $76.00 Midnight Engineering - 1700 Washington Ave., Rocky Road, CO 81067 - (719)254-4553 ============================================================================= 4.2) Books on the PIC A Beginners Guide to the Microchip PIC Nigel Gardner ISBN: 1 899013 00 8 Printed in the UK by Character Press Ltd. Software (on floppy) and hardware guide. Debugging techniques... Available from Polar Electronics in UK 19.95 UK Pounds ============================================================================= 4.3) Miscellaneous documentation on the PIC MicroChip Technology Incorporated - application notes ED Teck. Pubs Fred Eady 407-454-9905 BBS 407-454-3198 Writes articles for popular magazines. Has a PIC programmer kit for $70. BBS available, good source of information, very helpful. Parallax Stamps and programmer, etc. BBS 916-624-7101 Help 916-624-8333 AP Circuits BBS 1-403-291-9342 (Canada) Can download EASYTRAX(V2.06), various utilities, GERBER file proofers, etc. ============================================================================= 5) What's next. I'm working on it...... Suggestions welcome. I would like to thank the following individuals who have contributed to this accumulation. Jory Bell Don Lekei <72677.2623@compuserve.com> Eric Smith Jeff Dague Steven M. Davidson Ian King kalam ? David B. Thomas Martin Vuille NOTE: .......If your name should be here, apologies. some of the above has been dredged from Jory's archives in such a fashion as to make it less than convenient to work out with whom it originated. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Disclaimer: Inclusion of any code samples in this document does NOT imply any approval or guarantee as to the suitability of said samples for any purpose whatsoever other than as a self-training aid. I.E. If it blows your ICE, trashes your hard disc, wipes your backups, burns your building down or just plain don't work, #### IT AIN'T MY FAULT #### In the event of judicial ruling to the contrary, any liability shall be limited to the sum charged on you by me for the aforementioned document OR nothing, whichever is the lower. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Copyright (c) 1994 by T.A.Kellett, all rights reserved. _______________________________________________________________________________ Tom Kellett < Tom@takdsign.demon.co.uk > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~