!General Information 
Author: Mike Stortz\\
Language: ACTION!\\
Compiler/Interpreter: ACTION!\\
Published: Analog #31 (06/ 85)
----
!!!R.O.T.O.
----
''At 25. Mike Stortz is the P.D. Librarian for GRASP, the Richmond! Virginia Atari users group. Seemingly
unable to find work in the programming field, he is working on about thirty projects at once, including
a graphic arcade/adventure game.''
----
1996: Kara Hyke leaves show business after losing out in a disputed Oscar award.\\
1997: Kara Hyke enrolls at M.I.T.\\
2010: Kara Hyke discovers semi-matter.\\
2016: Hyke-Grey effect discovered.\\
2021: Hyke-Grey drive invented.\\
2030: Hyke and Grey found Arcadia on Proxima III.\\
2065: Hamner scout ship attacks Arcadia and is driven off after extensive damage to the city. Work on the shield begins.\\
Today: Hamner fleet attacks Arcadia...


''Deep in caverns under Arcadia, fuel cannisters of semi-matter ore to power the city's defensive shield
have been cached away against the day when the aliens would return. Composed of mixed-charge matter,
hyke (as it is called) is easily persuaded to annihilate itself in the manner of matter-antimatter reactions,
but is more easily stored.

Now that the attack has begun, brave volunteer retrievers must don helipacks, fly down into the caves and bring up the ore, so that Arcadia may not fall.


__R.O.T.O.__ is a game of coodination, reflexes, timing and a hint of strategy that should keep you going for
a while before Arcadia can claim victory.

Plug in your Action! cartridge and type in Listing 1. Action! is forgiving about case, spacing and line divisions, so you need not slavishly follow the format of the listing (which is compressed somewhat for purposes of publication).

SAVE it before attempting to RUN it! If you try to run __R.O.T.O.__ from memory, the source code will be
overwritten and ruined, causing much gnashing of teeth. Because __R.O.T.O.__ is so large, it must be compiled
off of disk or cassette.

!For disk.
After typing __R.O.T.O.__ in, save it with the command CTRL-W and type in the filename "ROTO.ACT" then RETURN. SHIFT-CLEAR the editor, enter the monitor with the CTRL-M command, enter C "ROTO.ACT" and RETURN. This will compile __R.O.T.O.__ into machine language. Now, save the compiled version by typing W "ROTO.AML" and RETURN. AML stands for Action! machine language. To run __R.O.T.O.__ now, just type R and RETURN. In the future, simply type CTRL-M to enter the monitor, D and RETURN to go to DOS, and then binary loading the file ROTO.AML from DOS by using the L command in DOS 2 or DOS 3—or type LOAD ROTO.AML if you have DOS-XL.

!For cassette.
Type in __R.O.T.O.__ and save it with the CTRL-W command. Do not use the "Screen Off?" option; it will upset the tape timing. Rewind your tape, press PLAY and RECORD, give the filename 'C:' and RETURN.

Go have lunch while the source code's being saved (about fifteen minutes). Come back, clear memory with the SHIFT CLEAR, and enter the monitor with the CTRL-M command.

Rewind the tape containing the __R.O.T.O.__ source code, press PLAY, type in R "C:" and RETURN. Have some more lunch. The computer is rereading the source code, compiling il as it does. When it's finished compiling, the game will automatically start.

In the future, you may play __R.O.T.O.__ by inserting the tape containing the source code into the recorder and typing the R "C:" command.

!Playing R.O.T.O.
After beginning, you should see the __R.O.T.O.__ logo and your man flying about it, while an explanatory message scrolls beneath. You may begin by pressing the START button or the fire button on joystick 1. You will see a portion of a cavernous network and four green blocks with Hs on them. This is the fuel intake.

<pic>

Cannisters of hyke are scattered about the caves. They look like the fuel intake, except that they're glowing. Pick up these cannisters by touching them, then return to the intake and touch it. This advances your score and charges the shield in accordance with however many cannisters you've deposited.

Each cannister is worth fifty points. Returning ore also refuels your helipack. Picking up more than ten cannisters before depositing them will cause their magnetic fields to interact with explosive results.

Your man moves up, down, left, right and diagonally in all directions, although he moves downwards faster than up. Moving against the screen's border will scroll more caverns into view, although you'll automatically stop at the far ends of the caves.

Don't run into a wall, or you'll lose a helipack. Watch your fuel. too. Running out will produce the expected effect.

Your retriever is also equipped with a molecular debonding device to facilitate going through rock. Press the fire button to let off a shot. The debonder will vaporize any chunk of rock you fire on. but you will lose a point for even' piece of the caves you eliminate (because you're reducing their structural integrity).

Unfortunately, the debonder will also affect a fuel cannister. Rupturing the magnetic bottle containing the hyke will produce a large explosion and prevent anyone else from retrieving fuel.

Also, attacks from the alien fleet will shake the caves periodically, causing rocks to break loose from the ceiling. Shooting rocks is worth one point each (for cleaning up). Don't run into them, and be careful that the tremors don't send you into a wall.

Pressing any key while a game is in progress will pause it. Press another key to resume play. If you want to begin again, press START.

If you play well and retrieve enough cannisters to top 1000 points, the shield will have stayed up long enough for reinforcements to arrive—and the city will be saved.

On the other hand, if you wreck while hauling cannisters, you could deplete the ore supply so that victory is impossible.

Remember which portions of the caverns you've mined out, and definitely recall the way back to the fuel intake. The cave network is generated randomly each game, so expect variety.

__R.O.T.O.__ may end in five ways:

# Most frequently, you run out of helipacks (while there are many volunteers, there are only three of the sophisticated flying apparatuses).
# The shield is battered down. This happens when you don't retrieve enough ore.
# A fuel cannister is shot.
# You carry more than ten cannisters at once.
# The least common ... Arcadia holds out, and the aliens are defeated — this time!

!That's it!
Action! deserves a word of praise here. __R.O.T.O.__ was designed half in advance and half as I thought of another feature to put in. The excellent editor made even major reshuffling and splitting of routines easy.

I shudder to think what I would have gone through using a conventional assembler. Even when the source code became too large to co-reside with the object code, I could compile off of my Axlon RAMDisk with little loss of development time.

The author would appreciate any letters of business offers, extravagant praise, or, failing that, constructive commept. Have fun and save Arcadia!
----
{{{
; R.O.T.O. by Mike Stortz
SET $000E=$4000
SET $0491=$4000

DEFINE bytes="64",lines="80",
    rock="194",pmb_page="128",
    cb_page="128",cb_adr=""32768",
    dl_page="136",dl_adr="34816"
    misc_page="137",misc_adr="35072",
    sc_page="140",sc_adr="35840"

BYTE
   rtclok=$14,atract=$4D,lmargin=$52,
   rowcrs=$54,dindex=$57,sdmctl=$22F,
   gprior=$26F,crsinh=$2F0,
   ch=$2FC,gractl=$D01D,
   hitclr=$D0lE,consol=$D0lF,
   audctl=$D208,skstat=$D20F,
   pmbase=$D407,wsync=$D40A,
   vcount=$D40B,nmien=$D40E,
   chbas=$2F4,chbase=$D409,
   hscrol=$D404,vscrol=$D405,
   pcolr0=$2C0,pcolrl=$2C1,
   pcolr2=$2C2,pcolr3=$2C3,
   colpm0=$D012,colpm1=$D013,
   colpm2-$D014,colpm3=$D015,
   colr0=$2C4,colr1=$2C5,
   colr2=$2C6,colr3=$2C7,
   colr4=$2C8,
   colpf0=$D016,colpf1=$D017,
   colpf2=$D018,colpf3=$D019,
   colpf4=$D01A

BYTE ARRAY hposp=$D000,mxpf=$D000,
           hposm=$D004,pxpf=$D004

CARD colcrs=$55,savmsc=$58,
     vdslst=$200,sdslst=$230,
     txtmsc=$294

BYTE i,j,k,l,cx,cy,x,y,xs,xsm,ys,joy,
     phase,mc,face,flag,bak,fore,
     fuel,packs,enable,whine,
     carried,end,cans,fallc,shake,
     shakec

BYTE ARRAY logo=
[85  85  88  88  88  88  85  85
128  96  88  88  88  88  96 128
  0   5  21  88  88  88  88  88
  0 128  96  88  88  88  88  88
  0 149 149   2   2   2   2   2
  0  85  85  80  80  80  80  80
  2   9  37  37  37  37  37  37
 80  84  37  37  37  37  37  37
 85  89  88  88  88  88   0   0
128  96  88  88  88  88  88   1
 88  88  88  88  88  88  21   5
 88  88  88  88  88  88  96 128
  2   2   2   2   2   2   2  66
 80  80  80  80  80  80  80  80
 37  37  37  37  37   9   2  64
 37  37  37  37  37  84  88   0],