Shop OBEX P1 Docs P2 Docs Learn Events
computerized watch ideah. any one interested in a project? — Parallax Forums

computerized watch ideah. any one interested in a project?

MMISCOOLMMISCOOL Posts: 36
edited 2005-11-28 12:27 in BASIC Stamp
about 3 or four days agoe i thought of an ideah. Iwanted to make an interperter that could use code and do things. this code could be modifyed without using a pc and the device using it could fit in a wrist watch (a bulky wrist watch but a wrist watch). I created the code below as a comand interperter that could store programs in the stamp's eprom. I am hopeing to generate soem interest in it. is there any one interested in basicly makeing there own programing langage for that runs on the basic stamp.


the comand interperter below only uses debug statemnts so there shood be no problem. you can interface it with an lcd or a couple of butons and get rid of the debug code. if you do please post it.

look at the code cloasly you sdood be able to figure some of it out. ask me any questions you like

link smbi.tripod.com/id12.html

if you have any ideahs for the project please send them. If you wish to get in on the project please email me @ mmiscool@gmail.com

some basic things such as an organiser wood be nice for this device so i will leave all options open

' {$STAMP BS2}
' {$PBASIC 2.5}
'------------[noparse][[/noparse](C) 2005, MICHAEL MOLINARI , you can use it any way you like]----------------
aa             VAR      Byte
bb             VAR      Byte
cc             VAR      Byte
dd             VAR      Byte
ee             VAR      Byte


CURENTLINE     VAR      Byte
BLA            VAR      Byte


A              VAR      Byte
B              VAR      Byte
C              VAR      Byte
D              VAR      Byte
E              VAR      Byte
F              VAR      Byte
G              VAR      Byte
H              VAR      Byte
I              VAR      Byte
J              VAR      Byte

OUT            VAR      Byte

BLABLA         VAR      Nib
EN             VAR      Byte

MENUE:

READ 0 , AA
READ 1 , BB
READ 2 , CC
READ 3 , DD
READ 4 , EE

CURENTLINE = 0
DEBUG "(A) EDIT (B) RUN"
DEBUGIN BLA
IF BLA = "A" THEN GOTO EDITOR ELSE GOTO EXICUTE

'-----[noparse][[/noparse]THIS IS THE EDITOR]---------------------------------------------------------------
EDITOR:
DEBUG "HOW MANY LINES?"
DEBUGIN EN
EN = EN - 65
EDITOR_LOOP:
DEBUG "[noparse][[/noparse]A] "
DEBUGIN BLA
WRITE BLABLA * 5 + 0, BLA

DEBUG "[b] "
DEBUGIN BLA
WRITE BLABLA * 5 + 1, BLA

DEBUG "[noparse][[/noparse]C] "
DEBUGIN BLA
WRITE BLABLA * 5 + 2, BLA

DEBUG "[noparse][[/noparse]D] "
DEBUGIN BLA
WRITE BLABLA * 5 + 3, BLA

DEBUG "[noparse][[/noparse]E] "
DEBUGIN BLA
WRITE BLABLA * 5 + 4, BLA

BLABLA = BLABLA + 1
IF BLABLA > EN THEN GOTO MENUE
GOTO EDITOR_LOOP



'-----[noparse][[/noparse]THIS IS THE INTERPERTER]------------------------------------------------------------
EXICUTE:

IF AA = "D" THEN GOSUB DISPLAY_IT
IF AA = "I" THEN GOSUB INPUT_IT
IF AA = "C" THEN GOSUB COMPARE_IT
IF AA = "E" THEN GOSUB EDIT_IT
IF AA = "M" THEN GOSUB MATH
IF AA = "O" THEN GOSUB PIN_H_L


IF AA = "G" THEN GOTO  GOTO_IT
IF CURENTLINE = EN THEN DEBUG "-DONE-":GOTO MENUE
GOTO GOTO_NEXT


DISPLAY_IT:
IF BB = "V" THEN GOTO DISPLAY_VAR
DEBUG CC
RETURN

DISPLAY_VAR:
IF CC = "A" THEN DEBUG A
IF CC = "B" THEN DEBUG B
IF CC = "C" THEN DEBUG C
IF CC = "D" THEN DEBUG D
IF CC = "E" THEN DEBUG E
IF CC = "F" THEN DEBUG F
IF CC = "G" THEN DEBUG G
IF CC = "H" THEN DEBUG H
IF CC = "I" THEN DEBUG I
IF CC = "J" THEN DEBUG J
RETURN


INPUT_IT:
DEBUG " ? "
IF BB = "A" THEN DEBUGIN A
IF BB = "B" THEN DEBUGIN B
IF BB = "C" THEN DEBUGIN C
IF BB = "D" THEN DEBUGIN D
IF BB = "E" THEN DEBUGIN E
IF BB = "F" THEN DEBUGIN F
IF BB = "G" THEN DEBUGIN G
IF BB = "H" THEN DEBUGIN H
IF BB = "I" THEN DEBUGIN I
IF BB = "J" THEN DEBUGIN J
RETURN


GOTO_NEXT:
BB = CURENTLINE + 66
GOTO_IT:

BLA = BB - 65
READ BLA * 5 + 0 , AA
READ BLA * 5 + 1 , BB
READ BLA * 5 + 2 , CC
READ BLA * 5 + 3 , DD
READ BLA * 5 + 4 , EE
CURENTLINE = BLA
GOTO EXICUTE

COMPARE_IT:
IF CC = DD THEN AA = "G"
RETURN

EDIT_IT:
IF DD = "V" THEN GOSUB EDIT_VAR
WRITE BB * 5 -1 + CC, EE
RETURN

EDIT_VAR:
IF DD = "A" THEN EE =  A
IF DD = "B" THEN EE =  B
IF DD = "C" THEN EE =  C
IF DD = "D" THEN EE =  D
IF DD = "E" THEN EE =  E
IF DD = "F" THEN EE =  F
IF DD = "G" THEN EE =  G
IF DD = "H" THEN EE =  H
IF DD = "I" THEN EE =  I
IF DD = "J" THEN EE =  J
RETURN

MATH:
IF BB = "+" THEN BLA = CC + DD
IF BB = "-" THEN BLA = CC - DD
IF BB = "*" THEN BLA = CC * DD
IF BB = "/" THEN BLA = CC / DD

IF EE = "A" THEN A = BLA
IF EE = "B" THEN B = BLA
IF EE = "C" THEN C = BLA
IF EE = "D" THEN D = BLA
IF EE = "E" THEN E = BLA
IF EE = "F" THEN F = BLA
IF EE = "G" THEN G = BLA
IF EE = "H" THEN H = BLA
IF EE = "I" THEN I = BLA
IF EE = "J" THEN J = BLA
RETURN

PIN_H_L:
IF BB = "H" THEN HIGH CC
IF BB = "L" THEN LOW CC
RETURN

LED_TEXT_OUT:
'PUT CODE HERE TO CONTROAL LED DISPLAY"
RETURN

CHAR_IN:
'PUT CODE TO GET CHARACTER FROM USER IN THIS AIRYA
RETURN[/b]

Post Edited (MMISCOOL) : 11/28/2005 2:47:15 AM GMT

Comments

  • Tracy AllenTracy Allen Posts: 6,658
    edited 2005-11-26 22:01
    I think a spell checker would be a cool addition to your project! Maybe a wrist watch where one could speak a word, and it would show possible spellings. How about you, cud you use that?

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Tracy Allen
    www.emesystems.com
  • MMISCOOLMMISCOOL Posts: 36
    edited 2005-11-26 22:05
    I thik it wood be a litle bulky. having a micraphone, stamp, lcd and all the boards requierd for voice recignition. there is one voice recinition board but it cost's about $80 and only reconised 40 words. a software speach recinition system like the one micrsoft puts out (microsoft agen) wood take up so much memory that you might as well duct tape a laptop to your wrist.
  • MMISCOOLMMISCOOL Posts: 36
    edited 2005-11-26 22:07
    good ideah though. mabe if anothere computer could be conected to it thrue an wireles conection like a data tranceiver.
  • metron9metron9 Posts: 1,100
    edited 2005-11-27 05:36
    I wrote an editor assembler for the commodore 64 twenty years ago that used the built in editor as the user interface that way I did not have to do all the house keeping, reading and saving, listing, editing etc.., It converted assembler OP codes to machine code and stored the finished program in memory. I used it to write games for commodore back then. If I remember I only had 4k to work with starting at $C000 I think it was.

    I think you will learn alot doing this kind of project. But from my perspective, unless you outline the Commands,and Syntax of your proposed language it is tough for me to test any aspects of it as the documents on what commands are available, and how they function are not SPELLED out [noparse]:)[/noparse]

    I ran your program on my BS2, but I don't have any idea what it is asking for in the DEBUG screen, You ask how many lines, but provide no line numbers, and there is no syntax checking as I can put anything on the line without any feedback from the editor that it is not understanding me.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Think outside the BOX!
  • El PaisaEl Paisa Posts: 375
    edited 2005-11-27 13:12
    You dont get it!
  • Tracy AllenTracy Allen Posts: 6,658
    edited 2005-11-27 18:07
    I agree with metron9. Define in clear wording what the program is supposed to do and define a clear user interface.

    I understand that you are in high school and just getting started with this stuff. But when I visit your web site it does not project a professional image, and certainly not one that would lead people to shell out $395 for your PC programming tools. Maybe you are the next Bil Gates (!?!?), but you really do need to pay attention in your writing and spelling classes, and the math too, and if they are boring then think outside the box, like metron9 says.

    Here is some competition for your watch:
    http://www.theregister.co.uk/2005/01/06/fossil_ships_wrist_pda_2/

    Remember, the BASIC Stamp is a controller chip. Define a project within its capabilities.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Tracy Allen
    www.emesystems.com
  • MMISCOOLMMISCOOL Posts: 36
    edited 2005-11-28 01:39
    yes. i have a wrist pda. it works fine but it is hard to use. I can only get about 2 hours of straght use out of it. all of my palm os apps work though so i don't complane. One bad thing about the wrist pda's though. You can scrach the screen very easly, (bumping against tables, wals key in pocket) and it is not water proof. i jumped in a pool with mine and had to wait a month for it to dry out. I got mine from tigerdirect when they were about $160.

    about my watch ideah.
    sofar i have not been able to get my hands on any reel stamp hardware since my homework board broke (radioshack for $80)
    i have to buy a new one. I have been cheeting thought. I downloaded the virtual stamp works program and using one of the examples i (can't edit the circut) can chaige the source code. I am playing with that right now. The program above has been chainged quite a bit so the source atached is the curent. I also include a hook up diagram to hook up the stamp to the 3 swiches it is going to use. thease swiches alow it to scroal thrue characters for data entry. To program the watch wile it is runing you have to first get in to the edit mode.

    If you run the program on on your stamp this shood be ez.

    The comands i have implemented for the interperter are

    d display
    i input
    g goto
    c compare (if then)
    e edit (self modifying code)
    m math + - * /

    the display comand is abriviated by a d
    you have to get into the program mode by presing the buton conected to pin 5 on the bs2 at the first debug sequence.
    you shood now se a leter going on and on and on on the screen. use the up and down buton to scroal thru the leters (butons conected to the stamp)
    scroal until you select b. then hit enter (buton conected to the stamp, labled in daiagram)
    selecting be set up a program with 2 lines of code.
    it shood have now shown the [noparse][[/noparse]A] folowed by the last scharacter you selected. scroal thrue untill you get to d and hit enter.
    it shood say folowed by the last character you had. scroal up untill you get nothing or the leter a. hit enter.
    next it shood say [noparse][[/noparse]C]. scroal thrue the characters untill you get to g. hit enter.
    now hold down enter to just get thrue the rest of it.
    you shood now see the text you saw when you firs started the stamp. hit the buton conected to pin 6 . You shood see
    "-G-[noparse][[/noparse]DONE]--(b 1 edit)(B 2 RUN)-"
    the G at the begining was the leter you tolde it to display.
    every thing in this language is set up with colomes and lines.
    lines corispond with a leter (A-Z).

    the comands are listed below. they shood be able to clairify any misunderstandings*

    display - displays one character at a time

    display a character - [noparse][[/noparse]A] d [noparse][[/noparse]C] charactr to be diplayed [noparse][[/noparse]D] [noparse][[/noparse]E]


    the v stands for variable
    - - - - - - - - - - - - - - - - - - - - - - - - - - - |
    displat contents of text variable - [noparse][[/noparse]A] d v [noparse][[/noparse]C] variable leter [noparse][[/noparse]D] [noparse][[/noparse]E]


    the n stands for nomber
    - - - - - - - - - - - - - - - - - - - - - - - - - - |
    display a nomber - [noparse][[/noparse]A] d [noparse][[/noparse]C] a [noparse][[/noparse]D] n [noparse][[/noparse]E]

    a nomber is nomber asociated with a character. it does not have to be a character stored in a variable. I can be the nomber asociated with the ANSI character set (asociated with each character).



    input - [noparse][[/noparse]A] i variable leter [noparse][[/noparse]C] [noparse][[/noparse]D] [noparse][[/noparse]E]

    this alows you to scroal thrue the characters and select one of them. the character will be stored in a variable.


    goto - [noparse][[/noparse]A] g leter of the line [noparse][[/noparse]C] [noparse][[/noparse]D] [noparse][[/noparse]E]

    this is a jump in a program and jumps the program to the line corisponding with the leter.



    compare - [noparse][[/noparse]A] c first character to be compare [noparse][[/noparse]C] second character to be compared [noparse][[/noparse]D] line leter to goto if b was = c [noparse][[/noparse]E]


    edit character- [noparse][[/noparse]A] e line leter [noparse][[/noparse]C] colome leter [noparse][[/noparse]D] character to put there [noparse][[/noparse]E]

    edit variable - [noparse][[/noparse]A] e line leter [noparse][[/noparse]C] colome leter [noparse][[/noparse]D] v [noparse][[/noparse]E] variable leter

    edit chainges the material at any point in the program wile the program runs.



    math - [noparse][[/noparse]A] m operation to do (+ - * /) [noparse][[/noparse]C] first nomber [noparse][[/noparse]D] second nomber [noparse][[/noparse]E] variable for answer to be stored to

    Post Edited (MMISCOOL) : 11/28/2005 11:52:56 AM GMT


    417 x 492 - 5K
  • MMISCOOLMMISCOOL Posts: 36
    edited 2005-11-28 11:55
    this is the curent code. It uses the same comands listed in the preiviouse but is updated.
    uses same circut above




    ' {$STAMP BS2}
    ' {$PBASIC 2.5}
    
    '------------[noparse][[/noparse](C) 2005, MICHAEL MOLINARI , you can use it any way you like]----------------
    aa             VAR      Byte
    bb             VAR      Byte
    cc             VAR      Byte
    dd             VAR      Byte
    ee             VAR      Byte
    
    
    CURENTLINE     VAR      Byte
    BLA            VAR      Word
    
    
    A              VAR      Byte
    B              VAR      Byte
    C              VAR      Byte
    D              VAR      Byte
    E              VAR      Byte
    F              VAR      Byte
    G              VAR      Byte
    H              VAR      Byte
    I              VAR      Byte
    J              VAR      Byte
    
    OUT            VAR      Byte
    
    BLABLA         VAR      Nib
    EN             VAR      Byte
    
    PROGRAMING     VAR      Byte
    
    oon            VAR      Nib
    
    
    
    MENUE:
    
    READ 0 , AA
    READ 1 , BB
    READ 2 , CC
    READ 3 , DD
    READ 4 , EE
    
    CURENTLINE = 0
    DEBUG "-(b 1 edit)(B 2 RUN)-"
    'DEBUGIN BLA
    menue_loop:
    IF IN6 = 0 THEN GOTO EXICUTE
    IF IN5 = 0 THEN GOTO EDITOR
    GOTO menue_loop
    
    
    '-----[noparse][[/noparse]THIS IS THE EDITOR]---------------------------------------------------------------
    EDITOR:
    PROGRAMING = 1
    EN = 0
    DEBUG "# OF LINES?"
    'DEBUGIN EN
    GOSUB char_in
    en = bla + 97
    EN = EN - 97
    EDITOR_LOOP:
    DEBUG "[noparse][[/noparse]A] "
    'DEBUGIN BLA
    GOSUB char_in
    WRITE BLABLA * 5 + 0, BLA + 97
    
    DEBUG "[b] "
    'DEBUGIN BLA
    GOSUB char_in
    WRITE BLABLA * 5 + 1, BLA + 97
    
    DEBUG "[noparse][[/noparse]C] "
    'DEBUGIN BLA
    GOSUB char_in
    WRITE BLABLA * 5 + 2, BLA + 97
    
    DEBUG "[noparse][[/noparse]D] "
    'DEBUGIN BLA
    GOSUB char_in
    WRITE BLABLA * 5 + 3, BLA + 97
    
    DEBUG "[noparse][[/noparse]E] "
    'DEBUGIN BLA
    GOSUB char_in
    WRITE BLABLA * 5 + 4, BLA + 97
    
    BLABLA = BLABLA + 1
    IF BLABLA > EN THEN GOTO MENUE
    GOTO EDITOR_LOOP
    
    
    
    '-----[noparse][[/noparse]THIS IS THE INTERPERTER]------------------------------------------------------------
    EXICUTE:
    PROGRAMING = 0
    IF AA = "d" THEN GOSUB DISPLAY_IT
    IF AA = "i" THEN GOSUB INPUT_IT
    IF AA = "c" THEN GOSUB COMPARE_IT
    IF AA = "e" THEN GOSUB EDIT_IT
    IF AA = "m" THEN GOSUB MATH
    IF AA = "o" THEN GOSUB PIN_H_L
    
    
    IF AA = "g" THEN GOTO  GOTO_IT
    IF CURENTLINE = EN THEN DEBUG "-DONE-":GOTO MENUE
    GOTO GOTO_NEXT
    
    
    DISPLAY_IT:
    IF BB = "v" THEN GOSUB look_up_VAR
    IF dd = "n" THEN GOTO dis_no
    'DEBUG CC
    
    IF cc = "A" OR cc = "a" THEN DEBUG "A"
    IF cc = "B" OR cc = "b" THEN DEBUG "B"
    IF cc = "C" OR cc = "c" THEN DEBUG "C"
    IF cc = "D" OR cc = "d" THEN DEBUG "D"
    IF cc = "E" OR cc = "e" THEN DEBUG "E"
    IF cc = "F" OR cc = "f" THEN DEBUG "F"
    IF cc = "G" OR cc = "g" THEN DEBUG "G"
    IF cc = "H" OR cc = "h" THEN DEBUG "H"
    IF cc = "I" OR cc = "i" THEN DEBUG "I"
    IF cc = "J" OR cc = "j" THEN DEBUG "J"
    IF cc = "K" OR cc = "k" THEN DEBUG "K"
    IF cc = "L" OR cc = "l" THEN DEBUG "L"
    IF cc = "M" OR cc = "m" THEN DEBUG "M"
    IF cc = "N" OR cc = "n" THEN DEBUG "N"
    IF cc = "O" OR cc = "o" THEN DEBUG "O"
    IF cc = "P" OR cc = "p" THEN DEBUG "P"
    IF cc = "Q" OR cc = "q" THEN DEBUG "Q"
    IF cc = "R" OR cc = "r" THEN DEBUG "R"
    IF cc = "S" OR cc = "s" THEN DEBUG "S"
    IF cc = "T" OR cc = "t" THEN DEBUG "T"
    IF cc = "U" OR cc = "u" THEN DEBUG "U"
    IF cc = "V" OR cc = "v" THEN DEBUG "V"
    IF cc = "W" OR cc = "w" THEN DEBUG "W"
    IF cc = "X" OR cc = "x" THEN DEBUG "X"
    IF cc = "Y" OR cc = "y" THEN DEBUG "Y"
    IF cc = "Z" OR cc = "z" THEN DEBUG "Z"
    
    RETURN
    
    dis_no:
    bla = cc
    
    oon = bla/100
    
    GOSUB dis_char_no
    
    oon = (bla - (oon * 100))/ 10
    
    GOSUB dis_char_no
    
    oon = bla - (oon * 10)
    
    GOSUB dis_char_no
    RETURN
    
    
    
    
    dis_char_no:
    IF oon = 0 THEN DEBUG "0"
    IF oon = 1 THEN DEBUG "1"
    IF oon = 2 THEN DEBUG "2"
    IF oon = 3 THEN DEBUG "3"
    IF oon = 4 THEN DEBUG "4"
    IF oon = 5 THEN DEBUG "5"
    IF oon = 6 THEN DEBUG "6"
    IF oon = 7 THEN DEBUG "7"
    IF oon = 8 THEN DEBUG "8"
    IF oon = 9 THEN DEBUG "9"
    RETURN
    
    
    look_up_VAR:
    IF CC = "a" THEN CC = A
    IF CC = "b" THEN CC = B
    IF CC = "c" THEN CC = C
    IF CC = "d" THEN CC = D
    IF CC = "e" THEN CC = E
    IF CC = "f" THEN CC = F
    IF CC = "g" THEN CC = G
    IF CC = "h" THEN CC = H
    IF CC = "i" THEN CC = I
    IF CC = "j" THEN CC = J
    bb = 0
    RETURN
    
    
    INPUT_IT:
    DEBUG "? "
    bla = 0
    
    
    GOSUB CHAR_IN
    bla = bla + 65
    'DEBUGIN BLA
    IF BB = "a" THEN A = BLA
    IF BB = "b" THEN B = BLA
    IF BB = "c" THEN C = BLA
    IF BB = "d" THEN D = BLA
    IF BB = "e" THEN E = BLA
    IF BB = "f" THEN F = BLA
    IF BB = "g" THEN G = BLA
    IF BB = "h" THEN H = BLA
    IF BB = "i" THEN I = BLA
    IF BB = "j" THEN J = BLA
    RETURN
    
    
    GOTO_NEXT:
    BB = CURENTLINE + 98
    GOTO_IT:
    
    BLA = BB - 97
    READ BLA * 5 + 0 , AA
    READ BLA * 5 + 1 , BB
    READ BLA * 5 + 2 , CC
    READ BLA * 5 + 3 , DD
    READ BLA * 5 + 4 , EE
    CURENTLINE = BLA
    GOTO EXICUTE
    
    COMPARE_IT:
    IF CC = DD THEN AA = "g"
    RETURN
    
    EDIT_IT:
    IF DD = "v" THEN GOSUB EDIT_VAR
    WRITE BB * 5 -1 + CC, EE
    RETURN
    
    EDIT_VAR:
    IF DD = "a" THEN EE =  A
    IF DD = "b" THEN EE =  B
    IF DD = "c" THEN EE =  C
    IF DD = "d" THEN EE =  D
    IF DD = "e" THEN EE =  E
    IF DD = "f" THEN EE =  F
    IF DD = "g" THEN EE =  G
    IF DD = "h" THEN EE =  H
    IF DD = "i" THEN EE =  I
    IF DD = "j" THEN EE =  J
    RETURN
    
    MATH:
    IF BB = "+" THEN BLA = CC + DD
    IF BB = "-" THEN BLA = CC - DD
    IF BB = "*" THEN BLA = CC * DD
    IF BB = "/" THEN BLA = CC / DD
    
    IF EE = "a" THEN A = BLA
    IF EE = "b" THEN B = BLA
    IF EE = "c" THEN C = BLA
    IF EE = "d" THEN D = BLA
    IF EE = "e" THEN E = BLA
    IF EE = "f" THEN F = BLA
    IF EE = "g" THEN G = BLA
    IF EE = "h" THEN H = BLA
    IF EE = "i" THEN I = BLA
    IF EE = "j" THEN J = BLA
    RETURN
    
    PIN_H_L:
    IF BB = "h" THEN HIGH CC
    IF BB = "j" THEN LOW CC
    RETURN
    
    LED_TEXT_OUT:
    'PUT CODE HERE TO CONTROAL LED DISPLAY"
    RETURN
    
    CHAR_IN:
    
    PAUSE 150
    IF IN4 = 0 THEN RETURN
    IF IN5 = 0 THEN bla = bla + 1
    IF IN6 = 0 THEN bla = bla - 1
    
    IF BLA > 26 THEN BLA = 0
    IF bla < 0  THEN bla = 0
    
    cc = bla + 65
    GOSUB display_it
    
     'PUT CODE TO GET CHARACTER FROM USER IN THIS AIRYA
    GOTO char_in[/b]
    
  • kb2hapkb2hap Posts: 218
    edited 2005-11-28 12:27
    Hey instead of keep posting your code over and over again make it an attachment and just edit the attachment in your first post.· I've seen your code posted quite a few times in quite a few threads in quite a few forums.

    keep it one spot. its easier to view in its the most current form this way.

    thanks

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    DTQ
Sign In or Register to comment.