JohnS737
-
Posts
11 -
Joined
-
Last visited
Content Type
Profiles
Forums
Events
Gallery
Downloads
Posts posted by JohnS737
-
-
On a related topic, according to popular legend, when Shell found oil in the UK North Sea, they named their first field AUK, and where planning to name subsequent fields, BUK, CUK etc..
However, in an amazing lack of foresight, nobody thought they'd get as far as F, and by that time it was too late, so since AUK was a seabird, and the oilfields were at sea, they decided to name the fields after birds (e.g. Brent, Cormorant, etc...)
-
Pete
Enrico has already set up the web page. As he points out though, we probably need a good name for this project. I called it FSA because it's version A. Any better ideas?
http://www.schiratti.com/starkie
p.s. I don't know what to do about support yet. john.starkie at ntlworld.com will do for now.
-
Pete
I missed your reply (in another post) on Friday afternoon, so I'll ask Enrico later in the week (and maybe extend the feature set in the meantime).
I can't post it here. Its 560Kb (including docs).
-
Pete
Thanks. Will do. I'll send it Monday morning.
p.s. The code I supplied has a bug, as some of the variables are two bytes long. They should have been 'shortint' s.
Have a nice weekend. I hear it's snowing in the UK.
-
Here's a way to do it using my FSUIPC compiler/interpreter
This will work if you hit control X. Assume you want to pause 10,000 metres before you get to waypoint 7.
Wait until you've crossed waypoint 6.
Wait until you're within 10,000 metres of the next waypoint
Pause
Coded as follows:
int current_waypoint at 0x616C;
int pause_control at 0x0262;
int wp_distance at 0x60EC;
key(Control,'X'){
while(current_waypoint < 6)
wait(1);
while(wp_distance < 10000)
wait(1);
pause_control = 1;
}
I now have this application ready for release, but do not have access to a website. If anyone wants to host it, please let me know.
JohnS
-
Pete,
Apologies for any confusion.
600C is seconds since midnight.
6190 is the time at which the waypoint was crossed (zulu time, in seconds since midnight)
61B8 is the number of seconds since some arbitary starting point, divided by 5
61B0 is the time at which 61B8 was last updated (zulu time, in seconds since midnight)
I'm confident that when 61B8 is incremented, some other variables are also adjusted, I just haven't yet found out which ones they are.
Cheers
JohnS
-
Pete
int GPS_6190 at $6190; // Time when waypoint was crossed,
int GPS_61B0 at $61B0; // Time of last update, see 61B8
int GPS_61B8 at $61B8; // Counter, incremented once every five seconds
6168 is a counter, it is incremented by one every five seconds. From what I remember, it starts at zero. When the counter is incremented, the time is copied into 61B0 (seconds since midnight).
6190 is the time the last waypoint was crossed. I don't know if this is set when 61B8 is updated or at the exact second.
I've sent a copy of the program to jon@scruffyduck.co.uk, and am aiming for a full release by early next week. I wanted to include versioning (which I have now done) and #defines. At present the keywords Control and Alt are defined in the language definition. I want to change them to integers so that we can add new definitions later via #defines (I believe you have added the Window and Menu keys lately), and ensure that all releases are backward compatible with my first release, so that no one is forced to change code when the compiler gets updated.
JohnS
-
Pete,
Here are some FSUIPC variables in the GPS area
int GPS_600C at $600C; // Zulu time in seconds since midnight
float GPS_6068 at $6068; // Track Error (TKE), in radians
float GPS_60EC at $60EC; // Distance to next waypoint, in metres
float GPS_60F4 at $60F4; // Distance between previous and next waypoint, in metres
float GPS_610C at $610C; // Course to Set (CTS), in radians
char GPS_6137[5] at $6137; // Flightplan destination airport
char GPS_6140[8] at $6140; // Approach name
char GPS_6154[8] at $6154; // Approach transition name
int GPS_6190 at $6190; // Time when waypoint was crossed,
float GPS_61A0 at $61A0; // Route total distance, in metres
float GPS_61A8 at $61A8; // Estimated fuel burn, in gallons
int GPS_61B0 at $61B0; // Time of last update, see 61B8
int GPS_61B8 at $61B8; // Counter, incremented once every five seconds
Also, there are three floating point variables at 6178, 6180 and 6188. I haven't found out what they do yet, but when flying between waypoints A and B they have values of X, Y and Z for example. On the return journey, between C and B they have values -X, -Y and -Z.
Also, 6008 starts a flight plan as 12, and is incremented when the approach is loaded, not not incremented when the approach is activated, and incremented when VTF is activated. If you then select another flightplan, it gets incremented by six.
JohnS
-
Pete
I don't want to release this for use on unregistered copies of FSUIPC to protect you. It could act as a back door to FSUIPC, especially if I implement the interpreter as a DLL (which I'm planning to do). That way, you pass the compiled code to the DLL, which drives FSUIPC and provides text feedback via callbacks.
The program is in a workable state now. It doesn't have a full C implementation yet, but I'm working on it. It supports mixed integer/floating point arithmetic, printf (%s, %x, %f and %d only), if, else, while, pointers, arrays, functions (with parameters), returns, #include etc., but not much else.
One thing I have been doing with this is finding new GPS variables in the 0x6000 area. I have about eight so far. I'm updating your 'FSUIPC for programmers', and will release it when I've done sufficient changes.
I don't have access to a website because I am working in Kenya (as an IT contractor. I live in the UK). I have a UK website provided by my ISP but haven't used it and can't access it from here. Email works OK, but internet access is so unreliable that even the posts I put on here often fail. I'll be in the UK over Easter.
JohnS
-
I am working on a compiler/interpreter that will execute FSUIPC commands. The language is based on C with a few extensions.
Here is an example
int Gear_Control at 0x0BE8; // See Pete's Programming Guide
GearUp(){
Gear_Control = 0; // Raise landing gear
}
//
// The 'Key' function is a built in language extension that
// allows us to respond to FS input. In this case, it executes
// when it receives a Control G from FS
//
key(Control,'G'){
GearUp();
}
So far, the language has functions, parameters, mixed integer and floating point arithmetic, program control (if then else). I'm adding more daily, and would like a full C implementation.
I have compiled and run a program that will fly a 737 (on autopilot) without touching FS at all except to type Control A to start. It takes off the brakes, runs up the engines, takes off and sets the autopilot parameters all the way up to finding the approach (it will do this if you set an approach in the GPS).
I intend to release this as freeware but at the moment do not have a website as I am working away from home.
Any questions?
Any interest?
If anything positive, I will tidy up the user documentation and release it.
extracting data
in FSUIPC Support Pete Dowson Modules
Posted
Mike
I have developed and published an application that may be able to help you here. You should be able to get it from http://www.schiratti.com/starkie.
It is a programming environment based on a subset of C, with extensions that allow you to define FSUIPC variables. e.g. You define a variable such as "int altitude at $4000", taking the figures from Pete's documentation.
It will generate diagnostic output that you can control using printf. The output goes to a tabbed page in the same program.
If you have any questions, please post an answer to this board.
p.s. I have been working on enhancements to this program, but have been busy at work. The (as yet unreleased) new version supports plug-in DLLs. I will include a few DLLs before releasing, and tidy up the user interface.