(tm) Ed T. Toton III, 1994
If you've never used AT-Robots 1.x, this section may not mean much to you.
One of the most important changes is the memory addressing system, and how operands are stored and decoded internally. In ATR1, what an operand did was completely defined by its value. Anything over 10000 was a memory address. Now you have the full range of integer values to use as numbers, or as values in variables, since there is now seperate microcode stored to define the function of an operand.
A few of the I/O ports have changed, but most are the same. All of the Interrupts have been redefined. Most of the instructions in the language are the same, except conditional jumps can not be used as conditional gosubs, and basic math functions use only 2 operands instead of 3.
The list of registers has also changed. However, if you were simply using some of the old ones as generic variables, why not create them as variables if you convert your robots over? The variables that are used for passing values back and forth to interrupts have changed of course.
The accuracy setting parameter that you send to the weapon port is no longer translated into degrees automatically. You must do this yourself before passing the parameter.
One more MAJOR change is that the game uses a 256 degree circle instead of 360.
Why so many changes? Especially that circle thing? Here's why- I designed the original AT-Robots before my programming expertise really allowed me to do as good of a job as this project deserved. I was only starting to learn assembly at the time, and here I was making my own version! I was not yet used to dealing with powers of two, individual bits, bit-manipulation instructions, and hexidecimal. I ended up making the language in such a way as to steer you away from these valuable programming techniques, and was therefore teaching the wrong lessons! Now I'm going to beat hexidecimal and powers of two into everyone's skulls... :-)