FBSF - Field Based Script Formatting (C) Erik Bogeholt (De Zeurkous), 2004 What is FBSF? First, it's _not_ a programming language. It's a way to write down commands. The commands differ from programming language to programming language. An adapted version of BASIC, C, etc. may be used, or a totally new language. It also incorporates a feature called "Specificed Line-Number Based Program Advancement" or SLNBPA. What is SLNBPA? Basically, this means that each line has a number, and at the end of the line the number of the next line to be executed is given. For example, if you are at line 5133, and the next command to be executed is on line 7752, you write a line with line number 7752, and provide that number at the end of line 5133. What is the format of a FBSF line? 0000000000, "COMMAND","Argument(s)",0000000000 ^^^ ^^^ Command ^^^ Argument(s) ^^^ Number of the next line to be executed (32-bit) Number of the current line (32-bit) Why seperate the command from the argument(s)? To enable the program language to use more complex argument structures, in an easier _and_ faster way. Let's take a simple command for printing text as an example: ----CODE--- 0134532546, "SetCommandArgument("TextToPrint")", "Hello!", 0134532547 0134532547, "SetCommandArgument("TextStyle")", "Bold", 0134532548 0134532548, "ExecuteCommand", "PrintTextToScreen", 0134532549 0134532549, "ClearAllCommandArguments", "", 0134532550 ---CODE--- Let's see what each command exactly does: ---CODE--- 0134532546, "SetCommandArgument("TextToPrint")", "Hello!", 0134532547 ---CODE--- Will set the argument "TextToPrint" to "Hello!"; ---CODE--- 0134532547, "SetCommandArgument("TextStyle")", "Bold", 0134532548 ---CODE--- Will set the argument "TextStyle" to "Bold"; ---CODE--- 0134532548, "ExecuteCommand", "PrintTextToScreen", 0134532549 ---CODE--- Will execute the command "PrintTextToScreen", with the given arguments; ---CODE--- 0134532549, "ClearAllCommandArguments", "", 0134532550 ---CODE--- And finally, clear up the given arguments. Doesn't this example seem to be a little complicated for a simple command? Maybe the example was too simple ;-) If you want to give 20 arguments to a command that is executed 10 times, and you want to change only 2 of the arguments, you can simply change only these 2 arguments, and execute the command again. None of the other arguments will be cleared up unless ordered so.