OCCRA
Go to Post Surely any group of rational human beings (which FIRST seems to attract) can work this out. - Billfred [more]
Home
Go Back   Chief Delphi > Old Forum Archives > 2001
CD-Events   CD-Media   CD-Spy   FRC-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
 
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 06-24-2002, 01:20 AM
archiver archiver is offline
Forum Archival System
#0047 (ChiefDelphi)
 
Join Date: May 2001
Location: Pontiac, MI
Posts: 21,214
archiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond repute
Anyone looking for more program space?

Posted by Travis Hoffman at 03/14/2001 7:56 PM EST


Engineer on team #48, Delphi E.L.I.T.E., from Warren G. Harding High School and Delphi Automotive Systems .



For all I know, this may already be common knowledge,
but does anyone need or want to know how to take advantage of the Basic Stamp II SX's ability to store and execute up to 8 2K-sized programs "at the same time"? After getting a headache trying to cram all the features of Xtremachen4's control program into a thimble sized 2K program, I got fed up and, darnit, I did something about it. I broke up the program into six separate subprograms, downloaded them to our backup control system, ran our Labview dashboard, and everything appeared to function correctly. I will have to wait to test the new setup on the actual control system at the Great Lakes regional, but for now, I feel that a great weight has been lifted off my shoulders. Huzzah!

Travis Hoffman, Controls Captain, Team #48
Beware of "The Claw"



__________________
This message was archived from an earlier forum system. Some information may have been left out. Start new discussion in the current forums, and refer back to these threads when necessary.
  #2   Spotlight this post!  
Unread 06-24-2002, 01:20 AM
archiver archiver is offline
Forum Archival System
#0047 (ChiefDelphi)
 
Join Date: May 2001
Location: Pontiac, MI
Posts: 21,214
archiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond repute
Re: Anyone looking for more program space?

Posted by Stephen at 03/14/2001 9:10 PM EST


Other on team #122, NASA Knights, from Grafton High School (Robotics team is at NHGS) and NASA.


In Reply to: Anyone looking for more program space?
Posted by Travis Hoffman on 03/14/2001 7:56 PM EST:



Hey,
you were right next to us in the pits (team 122) - great job at VCU.
any way, our code is 1300 + (comments included) lines of code, and the other day, it literally ran out of memory at "stop" so I just took "stop" out of the code, since the program never reaches it. With 4 potentiometers, 16 digital inputs, a y-cable for the joysticks, and 6 pre-defined positions, our code is just about as compressed as it can get. I would greatly appreciate any information on this feature - I have talked about it with the other programmers, and we just didn't have (well, at least I didn't have) information on how to use it. I mean, do you have multiple serin and serout commands (1 in each program), can the programs share common variables, do you get 26 bytes in each of the programs, or 26 total, to be shared amongst the programs, etc.

: For all I know, this may already be common knowledge,
: but does anyone need or want to know how to take advantage of the Basic Stamp II SX's ability to store and execute up to 8 2K-sized programs "at the same time"? After getting a headache trying to cram all the features of Xtremachen4's control program into a thimble sized 2K program, I got fed up and, darnit, I did something about it. I broke up the program into six separate subprograms, downloaded them to our backup control system, ran our Labview dashboard, and everything appeared to function correctly. I will have to wait to test the new setup on the actual control system at the Great Lakes regional, but for now, I feel that a great weight has been lifted off my shoulders. Huzzah!

: Travis Hoffman, Controls Captain, Team #48
: Beware of "The Claw"





__________________
This message was archived from an earlier forum system. Some information may have been left out. Start new discussion in the current forums, and refer back to these threads when necessary.
  #3   Spotlight this post!  
Unread 06-24-2002, 01:20 AM
archiver archiver is offline
Forum Archival System
#0047 (ChiefDelphi)
 
Join Date: May 2001
Location: Pontiac, MI
Posts: 21,214
archiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond repute
Re: Anyone looking for more program space?

Posted by Travis Hoffman at 03/15/2001 11:27 AM EST


Engineer on team #48, Delphi E.L.I.T.E., from Warren G. Harding High School and Delphi Automotive Systems .


In Reply to: Re: Anyone looking for more program space?
Posted by Stephen on 03/14/2001 9:10 PM EST:



: Hey,
: you were right next to us in the pits (team 122) - great job at VCU.

Thanks. I think. You and I were watching the same regional, right?

: any way, our code is 1300 + (comments included) lines of code, and the other day, it literally ran out of memory at "stop" so I just took "stop" out of the code, since the program never reaches it. With 4 potentiometers, 16 digital inputs, a y-cable for the joysticks, and 6 pre-defined positions, our code is just about as compressed as it can get. I would greatly appreciate any information on this feature - I have talked about it with the other programmers, and we just didn't have (well, at least I didn't have) information on how to use it. I mean, do you have multiple serin and serout commands (1 in each program), can the programs share common variables, do you get 26 bytes in each of the programs, or 26 total, to be shared amongst the programs, etc.

You still only get 26 total bytes of variable space. Variable and scratchpad RAM is shared by all the programs you download to the Basic Stamp.

At the beginning of your main control program listing (program 0), you should see a directive that looks something like the following:

' {$STAMP BS2SX}

Well, to break up your program into multiple programs, modify the directive to read

' {$STAMP BS2SX,program1,program2,...,program7}

Where programs 1-7 are the names of your subprograms stored in the same directory as program 0. Note that you don't have to have seven subprograms; you can break up your program however you like. You can also call the subprograms whatever you want.

Once you have modified the directive, create new programs using the names specified in the directive and save them to the same directory as your base program. For each subprogram, copy your ENTIRE variable declaration listing from the main program into every subprogram you create. I believe this would include everything in your program listed before the DEFINE CONSTANTS FOR INITIALIZATION section. Now you are ready to break apart your main program.

Assuming you want to break your control program into a main program (program 0) and two subprograms (programs 1 and 2), break your program up according to the following:

For Program 0:

(EVERYTHING IN YOUR PROGRAM UP TO AND INCLUDING THE "PBASIC - MASTER uP INITIALIZATION ROUTINE". This includes your custom variable initialization stuff.)

RUN 1 'Call Subprogram 1. Jump completely out of
'program 0, never to return until you reset

SUBROUTINES RELATED TO PROGRAM 0

**************END PROGRAM 0**********************

For Program 1:

VARIABLE DECLARATIONS

CONSTANT DECLARATIONS

SERIN Statement 'The first thing after the "MainLoop:"
'label in your original program.
'This is important.

(WHATEVER ELSE YOU WANT TO INCLUDE IN THIS SUBPROGRAM)

RUN 2 'Jump out of this program and into program 2

SUBROUTINES RELATED TO PROGRAM 1

******************END PROGRAM 1***********************

For Program 2:

VARIABLE DECLARATIONS

CONSTANT DECLARATIONS

(THE REST OF YOUR ORIGINAL CODE)

RUN 1 'Analogous to "GOTO MainLoop" in original code

STOP

SUBROUTINES RELATED TO PROGRAM 2

******************END PROGRAM 2**********************

That should be it. Make sure you individually save all your programs. Click on program 0 and download in the same manner as you have always done. Multiple progress bars will track the download status of each subprogram into the uP's EEPROM. To open your project in the future, just open program 0 and the rest will automatically open in the programming software.

Please test your new code thoroughly to make sure it does the same thing as your original program. In the future, if you make any changes to variable declarations or constants, YOU MUST MAKE CERTAIN you make these changes in ALL of your subprograms.

If you need more information, or I have confused you to the point of extreme annoyance, download the BASIC Stamp Windows 95/98/NT4.0 Interface Manual version 1.3 from the Parallax website using the link listed below.

Good Luck!

Travis

: : For all I know, this may already be common knowledge,
: : but does anyone need or want to know how to take advantage of the Basic Stamp II SX's ability to store and execute up to 8 2K-sized programs "at the same time"? After getting a headache trying to cram all the features of Xtremachen4's control program into a thimble sized 2K program, I got fed up and, darnit, I did something about it. I broke up the program into six separate subprograms, downloaded them to our backup control system, ran our Labview dashboard, and everything appeared to function correctly. I will have to wait to test the new setup on the actual control system at the Great Lakes regional, but for now, I feel that a great weight has been lifted off my shoulders. Huzzah!

: : Travis Hoffman, Controls Captain, Team #48
: : Beware of "The Claw"


__________________
This message was archived from an earlier forum system. Some information may have been left out. Start new discussion in the current forums, and refer back to these threads when necessary.
  #4   Spotlight this post!  
Unread 06-24-2002, 01:20 AM
archiver archiver is offline
Forum Archival System
#0047 (ChiefDelphi)
 
Join Date: May 2001
Location: Pontiac, MI
Posts: 21,214
archiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond repute
Re: Execution???

Posted by Patrick Butler at 03/15/2001 3:48 PM EST


Student on team #122, NASA Knights, from NHGS and NASA Langley Research Center.


In Reply to: Re: Anyone looking for more program space?
Posted by Travis Hoffman on 03/15/2001 11:27 AM EST:



The question remains is the execution parallel, if so how does it all execute 1 per each per cycle? Maybe I'll just RTFM. . .

Patrik


__________________
This message was archived from an earlier forum system. Some information may have been left out. Start new discussion in the current forums, and refer back to these threads when necessary.
  #5   Spotlight this post!  
Unread 06-24-2002, 01:20 AM
archiver archiver is offline
Forum Archival System
#0047 (ChiefDelphi)
 
Join Date: May 2001
Location: Pontiac, MI
Posts: 21,214
archiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond repute
Re: Execution???

Posted by Stephen at 03/15/2001 5:58 PM EST


Student on team #122, NASA Knights, from Grafton High School (Robotics team is at NHGS) and NASA.


In Reply to: Re: Execution???
Posted by Patrick Butler on 03/15/2001 3:48 PM EST:



I may be wrong,
but what I got out of that is program 0 starts. Program 0 calls program 1. Program 1 calls program 2. We create an infinite loop by having program 2 call program 1. (this asumes you have 3 programs, the number, of course, could vary) I guess you only have one serin, and 1 serout statement. Since you copy your variable and constant declarations, I guess you can call any variable or constant from any of the subprogams.
: The question remains is the execution parallel, if so how does it all execute 1 per each per cycle? Maybe I'll just RTFM. . .

: Patrik


__________________
This message was archived from an earlier forum system. Some information may have been left out. Start new discussion in the current forums, and refer back to these threads when necessary.
  #6   Spotlight this post!  
Unread 06-24-2002, 01:20 AM
archiver archiver is offline
Forum Archival System
#0047 (ChiefDelphi)
 
Join Date: May 2001
Location: Pontiac, MI
Posts: 21,214
archiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond repute
Re: Execution???

Posted by Travis Hoffman at 03/15/2001 6:05 PM EST


Engineer on team #48, Delphi E.L.I.T.E., from Warren G. Harding High School and Delphi Automotive Systems .


In Reply to: Re: Execution???
Posted by Stephen on 03/15/2001 5:58 PM EST:



: I may be wrong,
: but what I got out of that is program 0 starts. Program 0 calls program 1. Program 1 calls program 2. We create an infinite loop by having program 2 call program 1. (this asumes you have 3 programs, the number, of course, could vary) I guess you only have one serin, and 1 serout statement. Since you copy your variable and constant declarations, I guess you can call any variable or constant from any of the subprogams.

Oh my, someone was actually able to comprehend what I was trying to say. Shocking. The only pain in the butt I can see with the new system is that if you change a constant or variable declaration, you have to change it everywhere. You just have to be careful.

Travis


: : The question remains is the execution parallel, if so how does it all execute 1 per each per cycle? Maybe I'll just RTFM. . .

: : Patrik


__________________
This message was archived from an earlier forum system. Some information may have been left out. Start new discussion in the current forums, and refer back to these threads when necessary.
  #7   Spotlight this post!  
Unread 06-24-2002, 01:20 AM
archiver archiver is offline
Forum Archival System
#0047 (ChiefDelphi)
 
Join Date: May 2001
Location: Pontiac, MI
Posts: 21,214
archiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond repute
Re: Execution???

Posted by Stephen at 03/15/2001 7:01 PM EST


Student on team #122, NASA Knights, from Grafton High School (Robotics team is at NHGS) and NASA.


In Reply to: Re: Execution???
Posted by Travis Hoffman on 03/15/2001 6:05 PM EST:



Well,
one could write a program to copy all the var and con declarations from one file to all the subprograms in the appropriate spots. Well, I have 5 days till Philly, I guess I'll get to work.


__________________
This message was archived from an earlier forum system. Some information may have been left out. Start new discussion in the current forums, and refer back to these threads when necessary.
  #8   Spotlight this post!  
Unread 06-24-2002, 01:20 AM
archiver archiver is offline
Forum Archival System
#0047 (ChiefDelphi)
 
Join Date: May 2001
Location: Pontiac, MI
Posts: 21,214
archiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond repute
Re: Execution???

Posted by Gregory Ross at 03/16/2001 3:06 AM EST


Engineer on team #330, Beach Bots, from Hope Chapel Academy and NASA/JPL.


In Reply to: Re: Execution???
Posted by Stephen on 03/15/2001 7:01 PM EST:



I have already written a preprocessor which will insert an include file into the various files in your project, so don't do that.

I have it to the point where I am about ready to release it. If you want a copy, let me know.

Greg


: Well,
: one could write a program to copy all the var and con declarations from one file to all the subprograms in the appropriate spots. Well, I have 5 days till Philly, I guess I'll get to work.


__________________
This message was archived from an earlier forum system. Some information may have been left out. Start new discussion in the current forums, and refer back to these threads when necessary.
  #9   Spotlight this post!  
Unread 06-24-2002, 01:20 AM
archiver archiver is offline
Forum Archival System
#0047 (ChiefDelphi)
 
Join Date: May 2001
Location: Pontiac, MI
Posts: 21,214
archiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond repute
Re: Execution???

Posted by Stephen at 03/16/2001 5:34 PM EST


Student on team #122, NASA Knights, from Grafton High School (Robotics team is at NHGS) and NASA.


In Reply to: Re: Execution???
Posted by Gregory Ross on 03/16/2001 3:06 AM EST:



thank you, I would appreciate that.
Too late to stop me from programming, though, I just finished. I learned perl today (I bought a book, and spent most of my time in class reading it). When I got home, I started programming - and it's done know. I think that's the first time I've learned a programming language in a day; well I obviously haven't learned all of perl, but enough to do what I needed.





__________________
This message was archived from an earlier forum system. Some information may have been left out. Start new discussion in the current forums, and refer back to these threads when necessary.
  #10   Spotlight this post!  
Unread 06-24-2002, 01:20 AM
archiver archiver is offline
Forum Archival System
#0047 (ChiefDelphi)
 
Join Date: May 2001
Location: Pontiac, MI
Posts: 21,214
archiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond repute
I e-mailed you the program (EOM)

Posted by Gregory Ross at 03/17/2001 9:30 AM EST


Engineer on team #330, Beach Bots, from Hope Chapel Academy and NASA/JPL.


In Reply to: Re: Execution???
Posted by Stephen on 03/16/2001 5:34 PM EST:



: thank you, I would appreciate that.
: Too late to stop me from programming, though, I just finished. I learned perl today (I bought a book, and spent most of my time in class reading it). When I got home, I started programming - and it's done know. I think that's the first time I've learned a programming language in a day; well I obviously haven't learned all of perl, but enough to do what I needed.


__________________
This message was archived from an earlier forum system. Some information may have been left out. Start new discussion in the current forums, and refer back to these threads when necessary.
  #11   Spotlight this post!  
Unread 06-24-2002, 01:20 AM
archiver archiver is offline
Forum Archival System
#0047 (ChiefDelphi)
 
Join Date: May 2001
Location: Pontiac, MI
Posts: 21,214
archiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond repute
I'll take a copy too, if you don't mind (EOM)

Posted by Adam Krajewski at 03/20/2001 1:13 AM EST


Engineer on team #221, MI Roboworks, from CCISD and Michigan Tech..


In Reply to: I e-mailed you the program (EOM)
Posted by Gregory Ross on 03/17/2001 9:30 AM EST:



.
__________________
This message was archived from an earlier forum system. Some information may have been left out. Start new discussion in the current forums, and refer back to these threads when necessary.
  #12   Spotlight this post!  
Unread 06-24-2002, 01:20 AM
archiver archiver is offline
Forum Archival System
#0047 (ChiefDelphi)
 
Join Date: May 2001
Location: Pontiac, MI
Posts: 21,214
archiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond repute
Done (EOM)

Posted by Gregory Ross at 03/21/2001 1:57 AM EST


Engineer on team #330, Beach Bots, from Hope Chapel Academy and NASA/JPL.


In Reply to: I'll take a copy too, if you don't mind (EOM)
Posted by Adam Krajewski on 03/20/2001 1:13 AM EST:



: .


__________________
This message was archived from an earlier forum system. Some information may have been left out. Start new discussion in the current forums, and refer back to these threads when necessary.
  #13   Spotlight this post!  
Unread 06-24-2002, 01:20 AM
archiver archiver is offline
Forum Archival System
#0047 (ChiefDelphi)
 
Join Date: May 2001
Location: Pontiac, MI
Posts: 21,214
archiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond repute
Re: Execution???

Posted by Travis Hoffman at 03/15/2001 6:04 PM EST


Engineer on team #48, Delphi E.L.I.T.E., from Warren G. Harding High School and Delphi Automotive Systems .


In Reply to: Re: Execution???
Posted by Patrick Butler on 03/15/2001 3:48 PM EST:



: The question remains is the execution parallel, if so how does it all execute 1 per each per cycle? Maybe I'll just RTFM. . .

: Patrik

No, it is most definitely serial execution. No more than one program is running at a time.

Program 0
|
\/
Program 1
__________________
This message was archived from an earlier forum system. Some information may have been left out. Start new discussion in the current forums, and refer back to these threads when necessary.
  #14   Spotlight this post!  
Unread 06-24-2002, 01:20 AM
archiver archiver is offline
Forum Archival System
#0047 (ChiefDelphi)
 
Join Date: May 2001
Location: Pontiac, MI
Posts: 21,214
archiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond reputearchiver has a reputation beyond repute
So I stink at ASCII flowcharts. Sue me.

Posted by Travis Hoffman at 03/15/2001 6:17 PM EST


Engineer on team #48, Delphi E.L.I.T.E., from Warren G. Harding High School and Delphi Automotive Systems .


In Reply to: Re: Execution???
Posted by Travis Hoffman on 03/15/2001 6:04 PM EST:



: : The question remains is the execution parallel, if so how does it all execute 1 per each per cycle? Maybe I'll just RTFM. . .

: : Patrik

: No, it is most definitely serial execution. No more than one program is running at a time.

: Program 0
: |
: \/
: Program 1
__________________
This message was archived from an earlier forum system. Some information may have been left out. Start new discussion in the current forums, and refer back to these threads when necessary.
 


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Fried program slots? Jeff Waegelin Programming 18 03-19-2003 05:08 PM
St. Louis anyone? Jeremy_Mc Regional Competitions 8 02-07-2003 11:06 AM
Slightly humorous story about global warming & space explor. archiver 2001 3 06-24-2002 03:01 AM
Ahh! Program trick confusing! archiver 2001 9 06-24-2002 01:26 AM
KSC Results archiver 2000 2 06-23-2002 09:19 PM


All times are GMT -5. The time now is 07:33 PM.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi