home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-12-30 | 70.5 KB | 1,680 lines |
-
-
-
-
-
-
-
-
- ____________________
- / \
- / Advanced T-Robots v1.1 \
- / -------------- \
- ----------===========< By: Ed T. Toton III >===========----------
- \ (c) copyright 1992 /
- \ All rights reserved. /
- \______________________/
-
- Special thanks to Jeremy Kusnetz
- & Kenneth B. Foreman
- & Erik McClenney
-
-
-
- Note- I wish to apologize in advance for the spelling
- errors and other such nonsense. I also would like
- to apologize for the arcane nature of the text,
- as writing technical documentation is not one
- of my stronger points.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 0
-
- --- Table of Contents ---
-
-
- Things you should have............................2
-
- Legal Stuff.......................................2
-
- Introduction to AT-robots.........................2
-
- Technical information.............................3
-
- Running AT-Robots.................................3
-
- Acronyms..........................................5
-
- Update/History....................................5
-
- Basics of AT-Robots...............................6
-
- Compiler..........................................7
-
- The programming language..........................7
-
- Registers.........................................9
-
- Command lists and descriptions....................9
-
- Ports............................................12
-
- Interrupts.......................................14
-
- Vars, Memory.....................................15
-
- Peicing it all together..........................15
-
- Errors...........................................18
-
- Programming the robots...........................20
-
- Mnemonics and Constants..........................22
-
- Staging a competition............................23
-
- Trouble-shooting and Speed-control...............23
-
- More legal stuff.................................24
-
- Final Notes......................................25
-
- Other Software...................................25
-
-
-
-
-
-
- [ ED. Note- It is HIGHLY suggested that you make a print-out of this file! ]
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 1
- -----------------------------------------------------------------------------
- THINGS YOU SHOULD HAVE
-
- You need a text editor! Writing programs will be very difficult without
- one. DOS 5.0 has a nice editor (that's what I'm using to write this), or you
- can use a programming environment (like Turbo Pascal or C or Quick-Basic),
- or you can even use some word processors. If you use basic or or something
- like Word Perfect, you will need to remember to save it as "dos text" or
- "ascii format".
-
- Here are the files you should have:
-
- ATROBOTS.EXE - The program.
- ATROBOTS.DOC - This file.
- PRINTDOC.BAT - Batch file to print out this documentation.
- COMMENTS.TXT - Comments written by other AT-robots users.
- README.1ST - Important notices. You should have read it by now.
- DEMO.BAT - The demonstration run. Run this for a demo.
- DEMO.DAT - The demonstration config file.
- SAMPLE.ATR \
- RANDMAN.ATR >- These are some sample robots.
- SNIPER.ATR /
- ????????.ATR - Other robots written for use with this program.
- ALL AT-Robots robots MUST have the .ATR extension.
-
-
-
- -----------------------------------------------------------------------------
- TRADEMARKS & COPYRIGHTS:
-
- AT-Robots (c) 1992 Ed T. Toton III
- T-Robots (c) 1991, 1992 Ed T. Toton III
- P-Robots (c) 1988 David Malmberg
- C-Robots (c) 1985 Tom Poindexter
- Turbo Pascal is a registered trademark of Borland International.
-
-
- -----------------------------------------------------------------------------
- AT-ROBOTS: "Ay-Tee Robots"
-
- AT-Robots is designed to allow people to design and program robots to
- fight one another. Competitions between people is what it's all about!!
- The robots are programmed in a simple language which will be explained
- shortly.
- AT-Robots stands for "Advanced T-Robots". T-Robots was the predecessor
- program to this. It was inspired by P-Robots (written by David Malmberg),
- which was in turn inspired by C-robots (written by Tom Poindexter). T-Robots
- and AT-Robots are designed with the idea of programming robots, without going
- to the lengths of learning to program in high-level languages, but to still
- allow fairly simple program design. In the case of AT-Robots, the language
- has some similarities to assembly. Basically, T-Robots allowed you to use
- T-Robot-Basic to program the robots, and now in AT-Robots you use T-Robot
- assembly. Instead of having simple commands for complex tasks, you have
- simple commands to do simple tasks. You will have to design subroutines to
- access the specific devices/ports/memory areas of the robot specifically in
- your program. The language has a small amount of available commands, thus
- making it easy to learn, while offering experienced programmers an interesting
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 2
-
- challenge. Though it is not a real programming language of sorts, it can
- still teach the basic concepts of programming and logical thinking.
- The system may still have bugs or discrepencies. Please contact me
- if you spot one!! Also, please let me know if I have left anything out of
- the documentation that you think I should include. And in addition to that,
- please inform me if you have any ideas of new commands to add to the
- programming language.
-
-
- -----------------------------------------------------------------------------
- TECHNICAL INFO: (most graphic cards supported!)
-
- AT-Robots requires a VGA (graphic driver #9 with the -M setting and
- mode #2 with the -L setting) for some specific features, but otherwise
- supports most graphic cards.
- AT-Robots is written in Turbo Pascal 6.0 and Turbo Assembler. It does
- not multi-task, it simulates it.
- AT-Robots should be used on 286's and better. It may run too slowly on
- slower computers.
- AT-Robots consists of over 2500 lines of source code.
-
- -----------------------------------------------------------------------------
- RUNNING AT-ROBOTS
-
- To run AT-robots, you must have at least one robot program ready, and you
- must make a configuration file to use it. To run AT-Robots, you type
- "atrobots", then a space, then the name of the config file.
- ex: ATROBOTS MYFILE.DAT
- The config file tells AT-Robots what settings to use, and which robots to run.
- Inside the file you put ONE item per line. Settings start with a dash (-),
- and sometimes have a parameter number. For the robots you put the name of the
- robot file, but without the ATR extension. The settings will be explained
- shortly. Here is an example:
-
- -d0
- -gn
- -s100
- myrobot
- robot1
- robot1
-
- This file would tell AT-robots to have no delay (thus run at the maximum
- speed), with NO graphics (so as to get a quick result), and to update the
- output every 100 cycles (again to increase speed. This setting usually
- defaults to 10). It then loads MYROBOT.ATR into robot #1, ROBOT1.ATR into
- robot #2, and ROBOT1.ATR into robot #3. There can be up to 6 robots,
- and in this case only 3 are used.
-
- On the following page you will find the settings and graphic modes. There
- are some features that will be unavailable to those not using mode #9 (VGA).
- These are:
- 1. Fancy status bars that are easy to read.
- 2. On-screen display of error-codes generated
- by robots.
-
-
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 3
-
- Note that all those things can only be used if the -A option is used,
- and you are using mode 9. If you have an 8514 and want these, you'll need
- to put a -M9 in the config file.
-
-
- The settings are as follows:
-
- -D## Sets the delay in hundredths of a second. Should never be over 20
- (unless in combination with -N#).
- -A If graphics are on, this will allow the status bars to be displayed.
- -GN Turns the graphics OFF.
- -S## Number of cycles between output updates. (increase for greater speed)
- only works with the graphics turned off.
- -N## Cycles between each delay. Usually 1, but can be increased when using
- it with -D1 to speed things up (to make it faster than -D1 by itself).
- -P## Increases the number of program commands each robot executes each
- cycle. Can be useful when using complicated programs. Don't set too
- high though, it can mess things up.
- -R## Tells AT-robots to Run a number of battles as you specify.
- -TN Turns off the title screen. Once you've seen it a few times, you'll
- get tired of it and this is here for that purpose.
- -Q Sets AT-Robots to run in Quiet mode.
- -C Tell AT-Robots to save compiled versions of the robots in binary
- files. As of yet there is no purpose for it.
- -M# Force a specific graphic driver (usually automatic). Drivers are listed
- later. Modes are set automatically ONLY if driver is automatic.
- -L# Graphics mode setting.
-
- Here are the default settings:
- -D 1
- -A off, you must use -A if you want status bars on.
- -GN on, you must use -GN if you want the graphics off.
- -TN on, you must use -TN if you want the the title screen off.
- -S 10
- -N 1
- -P 9
- -R 1
- -Q on, you must use -Q if you want the sound off.
- -M 0 (auto-detect)
- -L 0 (auto-detect if -M is 0, otherwise it's the mode number)
-
- Graphic drivers:
- 0 : Autodetect (default) 6 : IBM 8514 SVGA
- 1 : CGA 7 : Hercules
- 2 : MCGA 8 : AT&T400
- 3 : EGA 9 : VGA *
- 4 : EGA64 10 : PC3270
- 5 : EGA mono
-
- * Vga is required for a few special features (with -L2).
- (for a list of modes, see the file called MODES.DOC)
- There are several keyboard commands you must know before you start. One is
- the quit key, which is 'Q'. Another command, which only works if you are
- running multiple matches, is the 'N' key, which aborts the present match
- and starts the next. The final one is the 'P' key, it pauses the simulation
- until you press another key.
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 4
-
- If you want to run the included demo, drop to dos and run the batch file
- called DEMO. That's right, in dos type DEMO and hit enter. It will run
- the demo for you.
- When running multiple matches you should still baby-sit the program because
- somtimes robots will end up in opposite corners, or whatever, and will be
- unable to hit each other, in which case you need to press 'N' to skip to the
- next round.
-
-
-
- [ Special Note- In your robot programs you may put a setting ]
- [ which will over-ride the -P setting in the config file. It ]
- [ will only take effect if the new setting is smaller than the ]
- [ -P in the config. Here is the usage: #SPD <speed> ]
- [ Example: ]
- [ #SPD 5 ]
- [ ]
- [ In this example, it would let the robot do no more than 5 ]
- [ program cycles at a time, as if the -P setting were 5. Useful ]
- [ to keep robots from over-heating, and moving before turning ]
- [ all the way, etc... ]
-
- -----------------------------------------------------------------------------
- ACRONYMS:
-
- Here in ATR (see, there's one already) we use several acronyms that you
- may or may not already be familiar with. At anyrate, here they are:
-
- Acronym: Meaning:
- ATR Advanced T-Robots.
- ATRA Advanced T-Robots Assembly.
- BIOS Basic Input/Output System
- ERR Error
- GSB Gosub (a call to a subroutine)
- I/O Input/Output
- INT Interrupt
- JMP Jump (like a GOTO in basic)
- OP Op-Code (numeric codes that commands get turned into)
- RAM Random-Access Memory.
- REG Register
- ROM Read-Only Memory.
- ROS Robot Operating System.
- SPD Speed
- VAR Variable
-
- -----------------------------------------------------------------------------
- UPDATES & HISTORY:
-
- For those of you already familiar with T-Robots, you will have a fairly
- easy time adjusting to AT-Robots. The arena is the same, the robots have been
- slightly modified, but are otherwise the same as well. The most significant
- changes are the programming language, and some improvements to the workings
- of the main program.
- Once a maintenance crewman got killed by an accident involving the missile
- launchers, they were instantly banned from the arena. However, to replace
- the missile launchers on the robots, they started installing swivel mounts to
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 5
-
- the lasers. This gives the laser the ability to swivel up to 8 degrees in
- either direction without moving the turret.
- Since then, the robot's main processors have gone under major revision
- also. The now outdated T10 and XT20 processors (used on T-Robots) have been
- replaced with the new 16-bit AT version (The AT10).
-
- For those of you who are interested, the names for those processors were
- quite easy to decide upon. The T10 is for T-Robots v1.0, hence "T10". The
- XT20 is for T-Robots v2.0, and is the eXtended processor, hence "XT20". The
- AT10 is the Advanced T-Robots v1.0 processor, and thus it is called the
- "AT10". The second reason for these names is that it pokes fun at the chips
- for the IBM compatable computers. The XT is the outdated series, while the AT
- series of processors are current.
-
-
- -----------------------------------------------------------------------------
- BASICS:
-
- The arena is 1 kilometer wide and 1 kilometer long. The coordinate system is
- set up such that (0,0) is at the upper-left corner and (1000,1000) is at the
- lower-right.
- The screen is set up as follows:
-
- 0,0 ________________________________________ 1000,0
- | | |
- | | |
- | |----------|
- | | status |
- | | areas |
- | |----------| (side of
- | Arena | | screen)
- | | |
- | |----------|
- | | |
- | | |
- | |----------|
- | | |
- | | |
- | | |
- 0,1000 |________________________________________| 1000,1000|
-
-
-
-
- Navigation is done in a 360 degree circle. Here are the directions for
- each course:
- 0 (360)
- |
- 315 | 45
- \ | /
- 270 ----- + ----- 90
- / | \
- 225 | 135
- |
- 180
-
- The Robots are all equipped with a scanner, armor, and a laser.
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 6
-
- Robots don't stop, start, or turn on a dime. When you tell the robot to
- move at a certain speed, it will accelerate until it reaches that speed or
- it collides with something. Once it has reached that speed it will remain
- there until you change it or it collides with something.
- When you instruct the robot to turn, it will rotate until it faces the
- new direction, or you tell it to do otherwise. The robot will always rotate
- in the direction that is shortest to face the target heading. if you tell
- it to turn 270 degrees to the right, it will turn 90 to the left (it's
- shorter, and is still the same heading). Also note that since it takes time
- to start/stop/turn, that the program may have executed many commands before
- the thing actually gets to it's new speed or heading.
- Each robot has two status bars (if you used the -A option). The upper one,
- which is in the same color as the robot if you have a color display, is
- the robot's armor. The one below it is the robot's heat scale.
-
-
- -----------------------------------------------------------------------------
- THE COMPILER:
-
- AT-Robots is equipped with a compiler. It reads in your robot programs and
- turns them into numeric data that the robots follow as a set of instructions.
- These numeric codes are called OP-CODES. If you use the -C option in the
- config file you can see these op-codes saved in binary format.
- The compiler writes the programs to the screen as it compiles them. Thus,
- if there's an error, you can see where it was in your program.
- When a program is compiled, EACH word is directly converted into a
- pre-defined op-code, no matter where it is. As explained in more detail
- later, you can interchange variables, registers, numbers, and commands,
- and still get a clean compile, AND a functional program.
-
- -----------------------------------------------------------------------------
- THE PROGRAMMING LANGUAGE IN GENERAL:
-
-
- The language is used as follows:
-
- The programming language consists of four basic types of statements.
-
- 1) Remarks. - These are not compiled into your program, they are simply
- notes that you can read when viewing programs.
- 2) Var Defs - Variable definitions. This is how you define variable names.
- Read on..
- 3) Labels. - These are the target locations for JUMP and GOSUB commands.
- They are not executed and do not use your robots time.
- 4) Commands.- These are the functions of your robot. They command the robot
- to perform specified activities.
- 5) Variables- Variables are a major programming thingie. They may have values
- from -9999 to 9999. You may define up to 80 of them, and they
- may be no longer than 16 characters long. They must contain
- only letters and underscores. NO numbers or symbol-characters!
-
-
-
-
-
-
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 7
-
- Remarks:
-
- Syntax:
- ; <statement>
- The semi-colon MUST be the FIRST character on the line (other than
- spaces), and whatever you put on the line with it will be ignored by the
- compiler.
- OP-CODE: none
-
-
- Labels:
-
- Syntax:
- :####
- The colon MUST be the FIRST character on the line (except for spacs).
- RIGHT after it, without any spaces in-between, you put a number anywhere
- from 1 to 8999. That number is the label. Do not use the same number
- twice within the same program.
- NOTE- labels 9000 or higher are INVALID.
- OP-CODE: 1000 + <label number>
-
-
-
- Commands:
-
- Syntax:
- Command [parameters]
- The command may or may not have parameters, but if there are, you
- seperate them from the command with spaces. Only one command may be
- put on each line. Also note that you must not use any punctuation unless
- it is a remark, or a label.
- OP-CODE: defined on chart below.
-
-
- Variable Definitions:
-
- Syntax:
- #def <variable name>
- The definition MUST come BEFORE the first time the variable is used
- in the program. Don't worry about putting the definitions inside loops,
- or after the program starts, these can be put just about anywhere, and
- are not compiled into the program. They are used to figure out how to
- compile the program, but do not get turned into executable code.
- OP-CODE: none
-
- Variables:
-
- Once a variable has been declared, it can be used anywhere in the
- program any way you like. The compiler is VERY flexible. All the things
- you can get away with are described later, but remember, you can do just
- about anything with these suckers..
- OP-CODE: 10000 + <mem address>
-
-
-
-
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 8
- ------------------------------------------------------------------------------
- REGISTERS:
-
- The ROS (Robot Operating System) has a series of several memory locations
- that are set aside for certain functions. They are called registers. They
- are used for various things, mostly for interrupts and comparisons. The
- following are their most common uses and their memory-locations and op-codes.
-
- Register: Mem: Op: Function:
- AX 100 10100 Interrupt-instruction
- AY 101 10101 Reserved for your use.
- AZ 102 10102 Interrupt returns
- BX 103 10103 Interrupt instructions and returns
- BY 104 10104 Interrupt returns
- BZ 105 10105 Reserved for your use.
- CX 106 10106 Interrupt-instruction (rarely)
- CY 107 10107 Variable exchanges (XCHG command)
- CZ 108 10108 Comparisons only.
- CT 118 10118 Loop-Counts
- FL 119 10119 Status flags (not yet functional)
-
-
-
- ------------------------------------------------------------------------------
- COMMANDS:
-
- These are the instructions that the robots use to do things. The Op-Codes
- are what the robots actually use (this holds true for everything). These
- code-words however are used in place of the numbers for understandability.
- Note that the compiler turns them into the op-codes, and leaves numbers as
- they are, and thus if you wish you may program your robots using the op-codes
- instead of the command-names.
-
- (The speeds listed are actually execution-time numbers. Those numbers
- indicate how much of your robot's time each command uses. The amount
- of time your robot gets total is determined by the -P setting in the
- config file)
-
- (Also note that below, if parameters are listed as VARs then they
- MUST be variables or pointers. If they are VALs they can be anything).
-
- OP: Spd: Name: Function & syntax:
-
- 1 1 set Syntax: SET <var1> <val1>
- -Sets VAR1 equal to VAL1.
-
- 2 1 add Syntax: ADD <var1> <val1> <val2>
- -Adds VAL1 and VAL2 and puts the result in VAR1.
-
- 3 1 sub Syntax: SUB <var1> <val1> <val2>
- -Subtracts VAL2 from VAL1 and puts the result in VAR1.
-
- 4 3 mpy Syntax: MPY <var1> <val1> <val2>
- -Multiplies VAL1 by VAL2 and puts the result in VAR1.
-
- 5 3 div Syntax: DIV <var1> <val1> <val2>
- -Divides VAL1 by VAL2 and puts the integer result in VAR1
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 9
-
- 6 1 put Syntax: PUT <val1> <mem location>
- -Sets the byte at the given location equal to VAL1.
- NOTE- the location is not a pointer.
-
- 7 3/0 int Syntax: INT <num>
- -Executes an interrupt. (interrupt number <num>)
- (has speed of 3 usually, but if you re-define the
- interrupt vector to run a subroutine, then it is
- speed 0).
-
- 8 1 get Syntax: GET <var1> <mem location>
- -Sets VAR1 equal to data at mem location.
-
- 9 1 loc Syntax: LOC <var1> <var2>
- -Sets VAR1 equal to the address of the memory location
- that VAR2 is stored in (not a pointer though).
-
- 10 1 cmp Syntax: CMP <val1> <val2>
- -Compares VAL1 and VAL2 (by subtraction) and puts the
- result in the CZ register.
- Note- same as "SUB cz <val1> <val2>"
-
- 11 0 gsb Syntax: GSB <label>
- -"GOSUB". Goes to label as defined. Returns to the GOSUB
- call when a RET is encounterd. Same as GOSUB in basic.
-
- 12 0 ret Syntax: RET
- -"RETURN". Returns after a gosub or a conditional jump
- that was set to "gosub". Same as RETURN in basic.
-
- 13 0 jmp Syntax: JMP <label>
- -"GOTO". Goes to label as specified. Does not return
- with a RET. Same as GOTO in basic.
-
- 14 0 jls Syntax: JLS <label> [code]
- -Like "jmp" but only actually does the jump if the CZ
- register is negative (in a comparison with "CMP", the
- cz register would be negative if the first value was
- less than the other). If the CODE is present, AND it is
- not zero, this command will act more like "GSB", and
- thus GOSUB to the label.
-
- 15 0 jgr Syntax: JGR <label> [code]
- -Like "jmp" but only actually does the jump if the CZ
- register is positive (in a comparison with "CMP", the
- cz register would be positive if the first value was
- greater than the other). If the CODE is present, AND
- it is not zero, this command will act more like "GSB",
- and thus GOSUB to the label.
-
- 16 0 jeq Syntax: JEQ <label> [code]
- -Like "jmp" but only actually does the jump if the CZ
- register is zero (in a comparison with "CMP", the CZ
- register would be zero if the first value was equal to
- the other). If the CODE is present, AND it is not zero,
- this command will act more like "GSB", and thus GOSUB
- to the label.
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 10
-
- 17 0 jne Syntax: JNE <label> [code]
- -Like "jmp" but only actually does the jump if the CZ
- register is not zero (in a comparison with "CMP", the
- cz register wouldn't be zero if the first value was
- not equal to the other). If the CODE is present, AND
- it is not zero, this command will act more like "GSB",
- and thus GOSUB to the label.
-
- 18 3? ipo Syntax: IPO <port num> <var1>
- -Input to from port. This command takes a byte of input
- from the given port and puts it into VAR1. Note that
- the command will do nothing if the port is an input
- port.
- NOTE- Accessing certain ports can have a slow-down effect
-
- 19 3? opo Syntax: OPO <port num> <var1>
- -Output to port. This command takes what's stored in
- VAR1 and sends it to the given port. Note that the
- command will do nothing if the port is an output port.
- NOTE- Accessing certain ports can have a slow-down effect
-
- 20 ? del Syntax: DEL <val1>
- -Delays for length of time defined by VAL1. Time is
- in increments of program commands. Thus if you set it
- to 5, then the robot will not execute commands for
- the amount of time in which 5 commands could be executed.
-
- 21 1 mod Syntax: MOD <var1> <val1> <val2>
- -MOD's VAL1 and VAL2 and puts the result in VAR1.
- For an example, look below.
-
- 22 2 and Syntax: AND <var1> <val1> <val2>
- -AND's VAL1 and VAL2 and puts the result in VAR1.
-
- 23 2 or Syntax: OR <var1> <val1> <val2>
- -OR's VAL1 and VAL2 and puts the result in VAR1.
-
- 24 2 xor Syntax: XOR <var1> <val1> <val2>
- -XOR's VAL1 and VAL2 and puts the result in VAR1.
-
- 25 2 not Syntax: NOT <var1> <val1>
- -NOT's VAL1 and puts the result in VAR1.
-
- 26 3 xchg Syntax: XCHG <var1> <var2>
- -Exchanges the values of VAR1 and VAR2.
- NOTE- changes the CY register (it uses it
- as a temporary storage facility).
- ALSO NOTE- You can use the word SWAP instead of XCHG.
- It may be easier to remember.
-
- 27 1 do Syntax: DO <val1>
- -Sets the CT register (counter) to VAL1. When using loops
- this has the effect of determining how many times to
- execute that which is in the loop.
-
-
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 11
-
- 28 1 loop Syntax: LOOP <label>
- -This decrements the CT register and loops back to
- <label> if the CT register is greater than 0 after
- the decrement.
-
- 29 1 push Syntax: PUSH <val1>
- -This takes VAL1 and puts it on the stack.
-
- 30 1 pop Syntax: POP <var1>
- -Takes the last number put onto the stack, pops it
- off the stack, and returns the value in VAR1.
-
-
- AT-Robots has several mathematical instructions for your use. If you
- already understand them, you can skip to the next section. For those who
- don't know what MOD does, read on.
-
- If you don't understand OR, XOR, AND, and NOT, don't worry about it. You
- don't need these instructions, they were simply included just in case someone
- needs them somewhere sometime.
-
- When you divide two numbers, what you get is the integer part of the
- result. Example:
-
- DIV result 11 3
-
- In this example, it would divide 11 by 3, which is 3.66666. Thus, the
- variable "result" would now equal 3.
-
- The MOD instruction returns the remainder in such a division operation.
- since 11 divided by 3 is 3 with a remainder of 2, then the same example can
- be applied below and have a result of 2.
-
- MOD result 11 3
-
- As stated, "result" would now equal 2.
-
- -----------------------------------------------------------------------------
- PORTS:
-
- Each robot is equipped with various peripheral devices. Each one has one
- or more I/O ports through which the robot's program accesses them. Each
- port does either input OR output and not both. Some ports take more time to
- access than others, and so a number will be given for slow ones indicating
- just how much slower they are.
-
- (The speeds listed below are actually the additional amount of time
- used by the robot to access the port. It simply means that those
- particular ports require different lengths of time to do their
- jobs).
-
-
-
-
-
-
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 12
-
- Port: Spd: Name: I/O: Function:
-
- 1 0 Spedometer I Returns present speed. (0-100)
-
- 2 0 Heat sensors I Returns present heat level (0-500)
-
- 3 0 Compass I Returns present heading (0-360)
-
- 4 0 Turret Sensor I Returns offset of turret
-
- 5 0 Turret Sensor I Returns absolute heading of turret.
-
- 6 0 Damage Sensor I Returns armor level remaining (0-100)
-
- 7 1 Scan enemies I Returns range to nearest enemy within
- scan arc (points in direction of turret,
- and has arc radius set by port 18) and
- within max range set by port 20. Sets
- Laser accuracy setting based upon present
- settings. Returns a number greater than
- 1000 (maximum laser range) if no enemy
- found (specifically, 5000).
-
- 8 0 Accuracy set I Returns accuracy setting that was
- determined by last run of port 7.
-
- 9 0 Radar I Returns range to nearest target but is not
- limited to the arc width setting.
-
- 10 0 Random GeneratIr Returns a random number from 0 to 9999.
-
- 11 0 Drive System O Sets throttle to given setting.
-
- 12 0 Turret O Offsets turret from present setting by
- given angle. (cumulative)
-
- 13 0 Turret O Sets turret offset to given direction.
- (0=forward, 180=back) (absolute).
-
- 14 0 Steering O Sets Heading relative to current direction.
-
- 15 1 Laser O Fires laser with given accuracy setting.
-
- 16 0 Sonar I Not installed.
-
- 17 0 Arc-width I Returns present scan-arc width.
-
- 18 0 Arc-width O Sets scan-arc width to given setting.
-
- 19 0 Range I Returns present max-range.
-
- 20 0 Range O Sets max-range to given setting.
-
- 21 0 Over-burn I Returns present overburn status
- (0=off, 1=on).
-
- 22 0 Over-burn O Sets overburn status to given setting.
- (0=off, non-0=on);
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 13
- -----------------------------------------------------------------------------
- BIOS INTERRUPTS: (BIOS= Basic Input/Output System)
-
- In addition to I/O ports, the robot is equipped with some built-in
- functions that can be used. These functions are called interrupts. When
- and interrupt is generated, the computer makes a note on the stack (so it
- knows where to return to), then it stops what it's doing and executes the
- interrupt funtion. Afterwards, it checks the stack, and returns to what it
- was doing. In your programs you can use the INT command to execute an
- interrupt. When you call an interrupt, you will often need to set some of
- the system registers before executing it, to tell it what to do.
- Note that in the robot's RAM there are interrupt-vectors. If these are
- set to 0, they execute the following. If you re-define an interrupt vector,
- then the interrupt will doa GOSUB to the label you set the vector to, instead
- of doing the following (as explained later).
- Also note that there are 20 interrupts, but only the following have
- pre-determined functions.
-
- (The speeds listed below are the additional amount of time
- used by the interrupt to do it's job).
-
-
- Int: Spd: AX: BX: CX: Returns/Function:
-
- 1 0 - - - Reset's Robot.
-
- 2 0 - - - Destruct.
-
- 3 0 port Output - Accesses a port. If you are
- sending data, set the BX
- register. If receiving data,
- the AZ register holds that
- data.
-
- 4 0 port - - Returns status of port
- (0=functional,
- 1=damaged,
- 2=destroyed).
- (not yet installed)
-
- 5 0 - - - Returns location of your
- robot. (BX=x, BY=y)
-
- 6 0 Int # label - Sets an interrupt vector as
- noted in AX to the label as
- specified in BX.
-
- 7 0 Direction - - Turns Robot number of degrees
- specified in AX, and turn
- turret same amount in opposite
- direction.
-
- 8 0 Heading - - Turns robot to face the new
- absolute heading specified
- in AX.
-
-
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 14
-
- 9 0 Error - - Generates the error-code you
- specify in the AX register.
- Particularly useful if you
- want to be informed of how
- often something in your
- program happens, or whatever.
- errors can be from 0 to 99,
- 0 itself will never be
- generated as a real Error.
-
- 10 0 - - - Scans for enemies, just like
- port 7. The distance is to the
- nearest enemy within scan arc
- is returned in AX. The ID
- number for the robot is
- returned in BX. This can be
- used for team robots, etc.
-
- 11 0 - - - Get's ID code. Basically,
- this routine returns what YOUR
- robot's ID number is in AX.
-
-
- ------------------------------------------------------------------------------
- VARIABLES, MEMORY, & PIECING IT ALL TOGETHER:
-
- In your programs, you may use variables as you wish (up to 80). The
- compiler uses the #DEF statements to find out what YOU call your variables,
- but in the end they get converted into OP-codes. Likewise you can simply
- use the op-codes in your program without ever defining a variable and get
- the same effect.
-
- First you should be made aware of the memory set-up...
-
- Each robot is equipped with 300 bytes of RAM (random-access memory). The
- robot-program itself is stored elsewhere in ROM (read-only memory). Each byte
- consists of 16 bits and stores a signed integer value (-32767 to +32767).
- (We realize usually one byte is 8-bit, but this is A. T-Robots). The first
- 100 bytes are system-memory (0 to 99). Not all of it is used, but it is set
- aside for future improvements. In this range is where the interrupt vectors
- are stored. The next 20 bytes after that (100-119) are reserved for
- system-registers. Not all 20 are used, so far there are only 9 registers,
- but they are set aside for future improvements to the ROS (Robot Operating
- System). The remaining 180 bytes are free RAM. Everytime you declare a
- variable, it is assigned a memory location in this area, and everywhere that
- variable is encountered in the program, it is replaced with a pointer to that
- memory location. You can use this memory directly as well for whatever you
- wish.
-
-
-
-
-
-
-
-
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 15
-
- Here is a listing of memory locations and their uses:
-
- Address: Function:
- 0 Target speed (speed your robot is trying to acheive)
- 1 Target heading (heading your robot is trying to acheive)
- 2 Turret position.
- 3 Accuracy setting (set by port 7).
- 4-29 Not in use
- 30 Random numbers from 0 to 9999.
- 31-50 Interrupt vectors 1 to 20 respectively.
- 51-99 Not in use.
- 100 AX register
- 101 AY register
- 102 AZ register
- 103 BX register
- 104 BY register
- 105 BZ register
- 106 CX register
- 107 CY register
- 108 CZ register
- 109-117 Not in use. (additions to register table will go here)
- 118 CT register
- 119 FL (flags) register (not yet in use)
- 120-299 Free RAM. Within the range of 120-199 is where variables
- are placed. All RAM thereafter is useable RAM for anything
- else (200 to 299).
-
- A memory location that is defined in the range of 0 to 299 is called a
- "memory address". The op-code for a memory location is 10000 + <mem address>,
- and that is called a "pointer". Anytime the robot comes across a pointer
- in the program (unless specified otherwise by a particular command), it
- instantly accesses that location in RAM to get a value to use. This holds
- true even for commands. This means you can store commands in your RAM, which
- your robot can change later, thus making it possible to make self-rewriting
- programs.
- Example:
- #def com
- set com 7
- com 2
-
- This sample code would destruct the robot. It defines a variable called
- "com", then sets "com" equal to "7". The third line basically makes the
- robot look inside "com" to find out what command to execute. It finds a "7"
- which is an interrupt call. The parameter is a "2" which thus means that
- interrupt #2 is to be executed, which is "Destruct". The same set of code
- can be re-written as the following:
- #def com
- set com 7
- com add
-
- The word "add" has an op-code of "2". Since it is the second thing on the
- line, it is used as a parameter instead of a command, thus it means "2".
- If the variable "com" was the first variable declared in the program, it's
- memory address would be "120". It's op-code would then be "10120", thus the
- same thing could be done like this:
- set 10120 7
- 10120 add
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 16
-
- The same thing can be done using a register:
-
- set az 7
- az add
-
- Or the address of the register:
-
- set 10102 7
- 10102 add
-
- In fact the whole thing can be done using only op-codes:
-
- 1 10102 7
- 10102 2
-
- Note that in all of these examples, no one particular method is more
- effective. They all mean the same thing, they all do the same thing, they're
- simply different ways of phrasing the commands.
-
-
- CMP's:
- Now, remember that comparisons (CMP command) set the CZ register to the
- result. Since the CMP command is the only thing that can change the CZ
- register without you specifically accessing it, you'll be able to make
- multiple references to it with conditional jumps (JMP et. al.), and since
- the jump commands don't use your robots time, there is nothing to be lost in
- using several of them. The following is an example...
-
- CMP armor 50
- jls 100
- jgr 200
- jeq 300
-
- In that set of code, if ARMOR is less than 50, the program will jump to
- the label "100". If it's greater, it'll go to "200" and if it equals it, then
- it'll go to "300". And the whole list of commands will only take up one of
- your robot's program cycles. The CMP command uses time, but not the jumps.
-
- LOOP's:
- In loops, the code will be executed the number of times you set in CT. In
- this way it is like a FOR loop in other languages. They are set up like this:
-
- DO <number of times>
- :<label>
- ..<commands>
- ..<commands>
- LOOP <label>
-
- An example is:
-
- DO 5
- :444
- opo 15 0
- LOOP 444
-
-
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 17
-
- In this example the commands would instruct the robot to fire 5 times. It
- would take a total of 26 program cycles to execute. Note that the following
- code is not good. It will repeat the loop until your robot lies dead.
-
- :444
- DO 5
- opo 15 0
- LOOP 444
-
- It would keep looping and keep setting the CT register back to 5, and since
- it never reaches 0, it never stops.
- Also note that nested loops are not possible without a little extra effort.
- Here is an example of a nested loop:
-
- DO 10
- :444
- set bz ct
-
- DO 5
- :555
- opo 15 0
- Loop 555
-
- set ct bz
- opo 14 9
- LOOP 444
-
- In that example, you save the contents of CT in BZ while you do the inner
- loop, and then set it back. This code would have the effect that you would
- fire 5 times, then rotate 9 degrees to the right, and repeat that whole
- sequence 10 times. Another way to do it would be to use the stack as shown
- here:
-
- DO 10
- :444
- push ct
-
- DO 5
- :555
- opo 15 0
- Loop 555
-
- pop ct
- opo 14 9
- LOOP 444
-
-
- -----------------------------------------------------------------------------
- ERRORS AND OTHER USEFUL INFO:
-
- Your robots should never generate a runtime error (either in terms of the
- robot, OR the main game itself, but in this case we mean in terms of the
- robot). If they do make one, and you have the graphics and status bars turned
- on, you'll be made aware of it. If the sound is on, then you'll hear it as
- well. If you have the graphics off, the bottom row of the status reports
- shows the last error code genereated by your robot. If your robot works
- properly, it should always be 0.
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 18
-
- When a robot has a runtime error, the program will continue on and simply
- not do the command that created the error. Note that the command that had
- the error STILL uses your robot's time.
- If you have all the stuff on listed above, you'll be able to find out what
- the error is. In the status area for your robot, next to the name, a number
- will appear. This is the error code. It will change color everytime an error
- is generated, so that even if the same code keeps coming up you'll be able to
- tell that another error was generated.
-
-
- [ Note- on-screen error codes will be displayed only if you use the ]
- [ -A option in the config file and are using VGA driver 9 & mode 2 ]
-
-
- Here is a list of the error codes:
-
- Code: Meaning:
-
- 0 User-Error
- Hmmm, if you got this error you must have programmed it in
- yourself. I certainly hope you know what to do with this
- one.
-
- 1 Stack full.
- This means that you are trying to call GSB or a conditional
- jump with a non-zero second parameter (which makes it act
- like GSB) and the stack is full. Since the stack is a pretty
- decent size, you either wrote an immensely complex (TOO
- complex) program, or you have left out a RET somewhere.
- It's also possible that you are using too many PUSH commands,
- as it puts data onto the stack.
-
- 2 Label not found.
- This means you are calling a GSB, JMP, etc. that is supposed
- to go to a label that doesn't exist. This one is easy to fix.
-
- 3 Cannot assign value/Illegal memory reference.
- Ok, this basically means that you were using a pointer that
- points to a non-existent memory location, OR you were trying
- to assign a value to a numeric constant (an example of which
- would be: SET 5 5).
-
- 4 Non-Existent port.
- To fix this, go check and see just what port you were trying
- to access..
-
- 5 Non-Existent Interrupt.
- Ahah! Cought you trying to create a new interrupt! There are
- 20 interrupts, not all of which are already in use. If you
- use one of those, you won't get this error.
-
- 6 Stack Empty.
- Ouch. I hope you aren't reading this because you got this
- error. At anyrate, it means you are calling too many RET's.
- Anytime you jump or GSB into a subroutine, you should have
- it generate one and only one RET in the subroutine, no more
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 19
-
- no less. You can have more, but make sure you only execute
- one per GSB or a GSB-like conditional jump. Never enter a
- subroutine that uses RET with a JMP or non-GSB-like
- conditional jump. Make sure for every PUSH there is one POP.
- The PUSH command puts data on the stack, and POP takes it
- off. This error could be caused by using too many POP's.
-
- For those of you who program in REAL assembly, we have some programming
- aids for you. There are alternate spellings for some commands that you can
- use (but remember, NO punctuation marks! That includes commas!! I know how
- attached you get to those commas, but you can't use them!!).
- Here they are:
-
- Command: Alternate spellings:
- SET MOV
- JEQ JE
- JGR JA
- JLS JB
- XCHG SWAP
- IPO IN
- OPO OUT
-
- -----------------------------------------------------------------------------
- PROGRAMMING THE ROBOTS:
-
- Ok, I'll bet you just glanced through the above information and are
- thinking, "Ok, great. It looks nice, but how do I use it?" I hope to explain
- a few details here, but I think the sample robot programs are by far the
- best source of information. Below are a few charts to refer back to at later
- times, and a few general rules to go by. Afterwards is some more text to help
- teach you about those strange little features that make the robots so much
- more deadly, but require some understanding first.
-
- General rules:
- 1. Try to make all the parameters line up in single columns,
- they're easier to read that way.
- 2. You MAY leave blank lines. The compiler ignores them.
- 3. One command is executed each cycle unless otherwise noted.
- 4. Examining the sample robots is the best teacher.
- 5. Commands may be upper-case, lower-case, or any combination.
- 6. Never make multiple labels of the same ID number within the
- same program.
- 7. All robots MUST have the extension ATR.
- ex- MYROBOT.ATR, or THISGUY.ATR
-
- Each command is executed in one program-cycle.
- (unless it is a particularly slow command)
-
-
-
-
-
-
-
-
-
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 20
-
- WATCH YOUR HEAT!! Over-heated robots can easily become DEAD robots!
-
- Here is the heat scale:
-
- 100+ Max speed reduced to 95%.
- 150+ Max speed reduced to 85%.
- 200+ Max speed reduced to 70%.
- 250+ Max speed reduced to 50%.
- 300+ Heat starts burning armor off.
- 400+ Robot stops executing commands until cools below 400 (shutdown).
- 500+ Robot explodes.
-
-
- OVER-BURN SHOULD BE USED WITH CAUTION!!!
-
- Overburn effects the following:
- 1) better acceleration, but more heat from it.
- 2) better turn speed, but more heat from it.
- 3) better laser effect, but more heat from it.
- 4) bigger explosion from death or self-destruct.
- 5) worse heat dissipation.
-
- (note that most things add to your heat, and on top
- of that your heat dissipation is lower. In other
- words, time to cook dinner on the armor plating).
-
- As you may have seen above, in the port listings, there is something
- called an "accuracy setting". This is a number from -2 to 2 that is set
- when you do a scan. Say for example that you have your arc-width set to
- 20 degrees. In this case, a robot can be 20 to the left OR right OR anywhere
- in between and still be registered in the scan. Now let's say the target is
- 20 degrees to the left. The scan would then set the accuracy to -2. It's
- negative because it's on the left, and it's 2 because the robot was at the
- edge of the scan arc. Likewise, if the robot were only 10 degrees to the
- left, the accuracy would be -1, because it was half-way to the side of the
- arc. Now let's say the robot is again 20 degrees off. Now when you fire the
- laser and give it the accuracy rating, it compares it to the arc-width and
- figures out that it's 20 degrees to the side. But the laser can only swivel
- up to 8 degrees, so it sets it to 8 and fires. Now if the robot was indeed
- 10 degrees to the side, the laser would still have to fire at 8 degrees,
- but it could be quite close, and perhaps the robot has moved into arc since
- the scan itself. Now of course, if you set your scan width to 8 or less,
- you'll never have to worry about a robot being beyond the laser's swivel
- range.
-
- There are several "setting" ports, such as the turret, and angle ports. The
- default settings are as follows: (in other words, it's as if these settings
- were at the front of your program, but they don't take time to execute):
-
- Item: Value:
- -----------------------
- Turret Offset 0
- Scan arc radius 10
- Max Range 1000
- Overburn off
-
- All variables are set to 0 at the beginning of the battle.
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 21
-
- Note that when you rotate the turret, EVERYthing that is on it turns
- with it. This includes the scanner AND the laser.
-
- If you really want to you can leave spaces before the commands, but the
- first non-space character must still be a semicolon for remarks, a colon
- for labels, and so forth..
-
- Another thing you will want to remember is that the stack for your robot is
- only 100 in size. That means you can call 100 GOSUB's or conditional JUMPS
- or PUSH's before calling a return (RET command) or a POP command. Be careful:
- if the stack fills up, and you call a GOSUB, it will be ignored. There is no
- problem with having excess RETURNS (in your main-loop anyway), if you call
- one when the stack is empty, it too will be ignored. Having misused or
- improperly used these two commands is the greatest cause of robot malfunction.
-
- There is an interrupt (int 9) that is used to generate errors. This can be
- useful for debugging robots. You can use it to see if your robot is executing
- a particular subroutine, or be informed of how often a certain area of code
- is executed, etc.. You should use either 0 or numbers in the 90's. This is
- a good safety precaution since more REAL error codes may be added in future
- versions of this program.
-
- -----------------------------------------------------------------------------
- MNEMONICS, CONSTANTS, ETC:
-
- There are many commands, constants, and so forth that can be used in this
- programming language. The constants are particularly useful, since with them
- you need not know which port and interrupt numbers are which.
-
- Number: Mnemonic: Port-Constant: Interrupt-Constant:
- 1 SET, MOV _SPEDOMETER _RESET
- 2 ADD _HEAT_SENSE _DESTRUCT
- 3 SUB _COMPASS _PORT
- 4 MPY _TURRET_OFS
- 5 DIV _TURRET_ABS _LOCATION
- 6 PUT _DAMAGE _SET_INT_VEC
- 7 INT _SCAN_ENEMY _TURN_NOTURRET
- 8 GET _ACCURACY _HEADING
- 9 LOC _RADAR _ERROR
- 10 CMP _RANDOM
- 11 GSB _THROTTLE
- 12 RET _OFS_TURRET
- 13 JMP _ABS_TURRET
- 14 JLS, JB _STEERING
- 15 JGR, JA _LASER
- 16 JEQ, JE
- 17 JNE _GET_ARC
- 18 IPO, IN _SET_ARC
- 19 OPO, OUT _GET_RANGE
- 20 DEL _SET_RANGE
- 21 MOD _GET_OVERBURN
- 22 AND _SET_OVERBURN
- 23 OR
- 24 XOR
- 25 NOT
- 26 XCHG, SWAP
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 22
-
- 27 DO
- 28 LOOP
- 29 PUSH
- 30 POP
-
-
-
- -----------------------------------------------------------------------------
- STAGING A COMPETITION
-
- When starting a competition, you should set up several "rules" in advance
- so that everyone involved can take them into account when writing their
- programs. Among the most important rules are:
- 1. Program speed. (the -P# setting)
- 2. What the other settings are.
-
-
-
- -----------------------------------------------------------------------------
- TROUBLE-SHOOTING & SPEED-CONTROL
-
- The AT-Robots program is basically fully automatic and self-contained. It
- will probably either work or it won't. If there is a problem, most likely
- (but not definitely) you are out of luck. Here are some possible causes of
- your difficulty:
-
- 1. Not enough memory.
- 2. Incompatable graphics adapter.
- 3. Damaged copy of AT-robots.
- 4. Computer is not sufficiently IBM compatable.
- 5. You haven't followed any of the instructions.
- 6. Computer is damaged or not performing properly.
- 7. You're using too early a version of DOS.
- (suggest DOS 3.3 or higher)
-
-
- If you HAVE gotten the program to run, but it's too slow, there are some
- things you can do to speed it up. First, You can try putting only 2 or 3
- robots in the arena at once. You will find that the program slows down a lot
- when you put 5 or 6. Another thing you can do is put the -D0 setting in. That
- will turn off the delay that is placed in the program to keep it running at
- the proper speed on faster computers.
-
- If the problem is that the program runs TOO fast, then put the -D1 setting
- in. You can also put the -N command. Keep playing with different settings on
- the -N until you get it where you want it. If the speed is too fast, you
- may want to put more robots, since there's nothing to stop you from doing it.
-
- Also keep in mind that the -A command slows the entire simulation
- dramatically. It is suggested that you use it when you have the speed to
- spare, and not when it's too slow.
-
- The correlation between -D and -N needs to be explained. The delay will be
- implemented every N cycles. Now here's how the delay works: If the number of
- hundredths of a second (as determined by -D) haven't gone by yet, then the
-
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 23
-
- program will sit and wait for the time to go by. If the amount of time HAS
- gone by, then it doesn't bother to wait for it. So if you set -N10 and -D10,
- you will probably not see any effect at all (unless your computer is pretty
- fast), simply because it will probably take more than ten hundredths
- (or rather one tenth) of a second to perform 10 cycles.
-
- -----------------------------------------------------------------------------
- NOTICE:
-
- This program is being distributed on the "shareware" concept. It is by
- no means completely free. If you think the program is of use to you, please
- send a registration fee of $14. If you think that is rediculous, then send
- less (or more for that matter). If you hate the program or found too many
- bugs, write me and tell me, and include a graphic explanation (but don't
- be too harsh!! Heheheh). In any event, write to:
-
- Ed T. Toton III
- 7101 Talisman Lane
- Columbia Md 21045
-
-
-
- And WHY should you register it?
- 1. Because you're supposed to. If you use AT-robots somewhat often,
- or several people use a copy off the same computer, or you
- keep it on your hard drive for lengthy periods, then it
- should be registered!
- 2. To support my continuing efforts to bring you some level of
- functional programs. If I get no cash, you get no improvements
- in these programs, and I won't be encouraged to make new and
- better software!
- 3. To get that warm glow for knowing that you supported the author
- of at least one of the many shareware programs you probably use.
- 4. To find out if there is a newer version. All you need to do is
- ask! But letters with money take priority!
- 5. You could be sick and demented and thus register everything you
- get your hands on.
- 6. To find out about my other programs you need only ask!
- But again, letters with money take precedence.
-
-
- Source code is not yet available. It may be in later versions.
-
- I regret to say that the free StratSys registrations have been discontinued.
-
- -----------------------------------------------------------------------------
- DISCLAIMER:
-
- This program is provided "AS IS" and I make no gauruntees about it's
- performance. I will not be and can not be held responsible for any damages
- incurred during it's use, or as a result of it's use. It's on a "use at your
- own risk" basis. Nothing at all should happen, the program is harmless,
- but I have to say it anyway
-
-
-
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 24
- -----------------------------------------------------------------------------
- COPYRIGHT:
-
- This program may be freely distributed (which is actually encouraged)
- AS IS. No one may modify this program in ANY way. ESPECIALLY where names
- and credit is given, and INCLUDING all the documentation, data files, and
- executable program files. It may NOT be used for commercial or profit-turning
- ventures of any kind, including sale by disk vendors, without the written
- consent by ME, with ONE exception: Disk vendors MAY sell it without my
- written consent ONLY if they charge no more than $5 higher then the cost of
- the disk (excluding any shipping and handling charges). NOTHING may be added
- to it either (except in the case of writing to the file COMMENTS.TXT, and
- in the case of adding more robot program files). NO BBS ads are allowed EXCEPT
- as zip comments, or as a single SEPERATE text file.
- Any robots you write for use with AT-Robots are yours and you may do what
- you wish with them. It is encouraged that you distribute robots around as
- well as this program.
-
-
-
- -----------------------------------------------------------------------------
- FINAL NOTE:
-
- If you have any questions, concerns, suggestions, criticisms, donations,
- remarks, praise or opinions, please write! I WANT TO HEAR FROM YOU!!
- (the address is listed above).
-
-
- Ed T. Toton III
- "Necromancer"
- -1992
-
-
- Oh, and one more thing. Your comments are welcome! If there are any
- statements or comments or suggestions you would like to make to those who
- later try to use AT-Robots, please feel free to add them to the file called
- COMMENTS.TXT. And if you think the comments are good (either yours, or the
- ones already in your COMMENTS.TXT file), please send them to me! I might
- make them a part of the next release of the program (if there is one).
-
-
- OTHER SOFTWARE:
-
- I have made several programs that may be of interest to you. Here is
- a list of some of them: (as of 12/17/92)
-
-
- Ramble v1.0 : =Ramble combines all the elements of Nonsense and
- Quick-Quotes into one full-color real-time
- environment where you can set the priority and
- influence each time of sentance generator has
- on the output. Ramble is better than the sum
- of it's parts (blab and Quick-Quotes)!
-
- SourceGen v1.0 : =Generates silly source code based upon text
- files you supply. Can generate gigabytes of
- meaningless babble at the press of a key!
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 25
-
- Nonsense v1.2 : =Generates silly text based upon text files you
- supply. Can generate gigabytes of meaningless
- babble at the press of a key!
-
- Quick-Quotes 2.3 : =Generates silly random quotes and text. You can have
- it do a "quote of the day" when you boot your computer,
- or a quote for when someone logs onto your bbs, or
- you can generate megs of nonsensical text.
-
- PigLatin v1.0 : =Turns text into pig-latin!!!
-
- Anti-Speller v1.0 : =Destroys your spelling. It is the opposite of a
- spell-checker. I don't think it is humanly
- possible to spell this badly, even on purpose!
-
- Blaze v2.6 : =VGA screen-saver. Supports password security,
- and a customization system (config file). Has
- been known to travel quickly through BBS's.
-
- FireDots v1.3 : =VGA Screen-Saver. Fireworks program, even simulates
- duds! Highly configurable.
-
- GeoSave v1.2 : =VGA Screen-Saver. Small geometric shapes and strange
- objects float and bounce around the screen.
- Configurable, supports password, and includes an
- image editor so that you can edit the existing images
- or create your own.
-
- CompWar v2.6 : =Latest release of CompWar, the on-line game for
- use with WWIV BBS systems.
-
- Date-Matcher v1.5 : =On-line match-maker program for BBS's that support
- DOS interrupt driven door programs (such as WWIV).
-
- Virus Farm : =On-line game. Players are viruses attempting
- to take over the hard drive. Designed mostly for
- WWIV BBS's.
-
- T-Robots v2.0 : =(one of my masterpeices) T-Robots is a system in
- which you program robots to fight one another. It
- uses a simple programming language, and you create
- the programs with your favorite text-editor. Great
- for competitions! Supports VGA, EGA, CGA, MCGA,
- Hercules, and many more graphics devices.
-
- AT-Robots v1.1 : =Advanced T-robots. Extremely similar to T-Robots 2.0
- except the system has been improved. It supports most
- graphics adapters in existance (CGA, EGA, VGA, MCGA,
- Hercules, etc). In this one you program the robots
- using ATR assembly (Advanced T-Robots Assembly). Now
- you design your own subroutines, and access specific
- device ports and memory locations. The ultimate in
- competions of logical thought.
-
-
-
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 26
-
- StratSys v2.1 : =A 2-player VGA combat strategy game. VERY flexible.
- Comes with 4 game scenarios (Cival War, Naval Battle,
- Robot Conquest, and a medieval scenario). Expansion
- packs are available (at the moment one with 12
- scenarios). Comes with an editor for the images and
- maps, so you can make your own scenarios!
-
- Dragon's Domain 1 : =A graphic adventure game. The first in the series.
- Each sequal also brings improvements to the graphics
- and the interface.
-
- Dragon's Domain 2 : =The story continues, and the challenge gets more
- challenging!
-
- Dragon's Domain 3 : =Yet another one!! Will it never end??
-
- Dragon's Domain 4 : =Now it supports Adlib! Will wonders never cease??
-
- My-Gags set 2.2 : =A set of small gag programs that I have made. They
- are designed to be placed in the autoexec.bat file.
- Over Half of them are TSR's, including one that
- creates "line-noise" through the keyboard buffer,
- one that beeps occasionally, and one that keeps
- changing you caps-lock/numlock/scroll-lock.
-
- Toton Utilities 1.0 =A set of 8 SMALL but potentially useful utilities.
- Most are TSR's. Several of them make alternate
- drive-lights out of other peripherals. You can make
- a drive LED on your screen in the corner, or make
- your scroll-lock act as a drive light. Included
- is also a program to make clicking sounds as you
- press keys, and a program to turn your num-lock
- off during boot-up (for those of you that hate your
- num-lock staying on after boot-up).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- A. T-Robots = (c) 1992 = Ed T. Toton III pg 27