A.N.A.L.O.G. ISSUE 58 / MARCH 1987 / PAGE 8
Your bed still likes you, even if you have been gone a long time—and you still like your bed. You hit the sack at about 10:00 p.m. and have been snoozing comfortably for nearly five hours, when…there’s a crash and a bright flash of white light. Amazing how none of your neighbors have been awakened, isn’t it?
You leap from bed, as best you can, don your robe and slippers, step on the dog, trip over your stuffed Komodo dragon doll and stumble down the stairs. The back door opens, even though you wanted it to, and you’re outside. Over in the vegetable garden, right on top of the corn that just started to come in, between the carrots and the peas, is a crater the size of your pumpkin patch. [Hey, where did the pumpkin patch go?]
Against your best judgment, you approach this crater—waiting for a big green thing with scales to jump at your throat, but no such luck. There’s just a blackened box, with a panel and a button, sitting there. You’re about to re-enter your humble abode and pass this occurrence off as a normal everyday kinda thing, when you notice the words Press START on the panel.
Well, you thought that addiction to computer games was cured, didn’t you? Not quite. Against your will you press START and…
Listing 1 contains the BASIC data statements used to create the ROBOX.COM file on your disk. Please refer to the “M/L Editor,” found elsewhere in this issue for instructions on keying in ROBOX.
Once the ROBOX.COM file has been created, simply binary load it from DOS. If you’re not sure how to do this, please refer to your DOS manual for instructions.
You are now the proud owner of a slightly used alien computer, sent to Earth for reasons unknown. One nice thing about these aliens is that they speak the English tongue.
The computer uses the universal QWERTY keyboard as an input device and has a built-in CRT terminal for output. There also must be a disk in drive 1 at all times during play.
ROBOX has a total of 42 points. There is a point display at the bottom of the screen; keep a close eye on it, because it tells you if you did something right or wrong. For each new thing you discover, you receive 1 point. If you then do the thing wrong, after having done it right, you will lose 1 point.
Learning how to save/load a game also gives you points, so you may want to figure out how to do these operations first.
There are a couple of options available to you, that just make playing more fun. You will notice messages are printed to the screen slowly; to speed things up, press the inverse (Atari logo) key. Pressing it again will toggle it back to slow mode.
The other option is a key-click toggle. There is normally no click, so if you like the click, just press CTRL-CAPS. Press CTRL-CAPS again to turn off the click.
ROBOX operates in graphics mode 0, on a narrow playfield. The wonderful moving graphs at the bottom of the screen were accomplished by defining a pair of characters with a pattern that would meet at both ends if folded over (like a sine wave). Then, every three vertical blanks, the character definition is shifted to the left with the ROL, LSR instructions, checking to see if the carry was set. If so, bit 7 of the rightmost character is set.
We used a custom screen print routine (the OS will not do narrow playfields) that accesses screen memory directly—this bugger can fill a screen with straight ATASCII text in the wink of an eye. Try that with CIO someday. (Our print routine also does word wraps, making the text easier to read.) There’s a custom input routine used that will allow only sixty-four character inputs, alphanumeric only.
All game messages are tokenized to save memory. This also means that you can’t look at the disk file for clues. By tokenizing the messages, we probably saved upwards of fifteen sectors. The Scott Adams adventures also used a technique similar to this, so all his adventures could fit into 16K.
We hope ROBOX keeps you busy for the next month. You may want to schedule an appointment at the Hair Transplant Salon in the near future [you could be pulling out quite a bit].
ANALOG Computing will not give clues over the phone. If you’d like a copy of the game’s solution, send a stamped, self-addressed envelope to: ROBOX Solution, c/o ANALOG Computing, P.O. Box 23, Worcester, MA 01603.
Barry Kolbe is a mathematics teacher in Madison, WI. He uses the Atari to demonstrate graphing in his classroom. His former student, Bryan Schappel, is studying Computer Science at the University of Wisconsin. This is their fourth team project for ANALOG Computing.
1000 DATA 255,255,0,32,251,32,0,0,0,0,0,0,0,0,0,24,3724 1010 DATA 24,24,24,0,24,0,0,102,102,10 2,0,0,0,0,0,102,5660 1020 DATA 255,102,102,255,102,0,24,126 ,96,126,6,126,24,0,0,102,137 1030 DATA 108,24,48,102,70,0,28,54,28, 56,111,102,59,0,0,24,7124 1040 DATA 24,24,0,0,0,0,0,30,28,24,24, 28,30,0,0,120,4754 1050 DATA 56,24,24,56,120,0,0,102,60,2 55,60,102,0,0,0,24,8224 1060 DATA 24,126,24,24,0,0,0,0,0,0,0,2 8,28,56,0,0,2988 1070 DATA 0,126,126,0,0,0,0,0,0,0,0,28 ,28,0,0,0,2400 1080 DATA 7,12,24,48,224,0,0,126,102,1 10,118,102,126,0,0,120,1601 1090 DATA 24,24,24,24,126,0,0,126,6,12 6,96,96,126,0,0,126,144 1100 DATA 6,62,6,6,126,0,0,108,108,108 ,124,12,12,0,0,126,8498 1110 DATA 96,126,6,6,62,0,0,124,96,126 ,102,102,126,0,0,126,926 1120 DATA 6,14,28,56,48,0,0,126,102,60 ,102,102,126,0,0,126,228 1130 DATA 102,126,6,6,126,0,0,56,56,0, 56,56,0,0,0,56,5292 1140 DATA 56,0,56,56,56,112,0,30,48,96 ,48,30,0,0,0,0,5060 1150 DATA 126,0,0,126,0,0,0,120,12,6,1 2,120,0,0,0,126,6496 1160 DATA 102,12,252,32,247,33,24,0,24 ,0,0,126,102,110,110,96,1551 1170 DATA 126,0,0,126,102,102,126,102, 102,0,0,126,102,124,102,102,3274 1180 DATA 126,0,0,126,96,96,96,96,126, 0,0,124,102,102,102,102,2844 1190 DATA 124,0,0,126,96,124,96,96,126 ,0,0,126,96,124,96,96,3088 1200 DATA 96,0,0,126,96,96,110,102,126 ,0,0,102,102,126,102,102,3052 1210 DATA 102,0,0,56,56,56,56,56,56,0, 0,6,6,6,6,102,5452 1220 DATA 126,0,0,96,102,108,126,102,1 02,0,0,96,96,96,96,102,2320 1230 DATA 126,0,0,99,119,127,99,99,99, 0,0,124,102,102,102,102,2889 1240 DATA 102,0,0,126,102,102,102,102, 126,0,0,126,102,102,126,96,3324 1250 DATA 96,0,0,126,102,102,102,108,1 18,0,0,126,102,102,124,108,3466 1260 DATA 102,0,0,124,96,126,6,6,62,0, 0,126,24,24,24,24,6646 1270 DATA 24,0,0,102,102,102,102,102,1 26,0,0,102,102,102,102,60,1956 1280 DATA 24,0,0,99,99,99,127,119,99,0 ,0,102,102,60,60,102,1443 1290 DATA 102,0,0,102,102,126,24,24,24 ,0,0,126,108,24,48,102,9246 1300 DATA 126,0,0,30,24,24,24,24,30,0, 0,0,224,48,24,12,6576 1310 DATA 7,0,0,120,24,24,24,24,120,0, 0,8,28,54,99,99,7786 1320 DATA 0,0,248,33,243,34,0,0,0,0,0, 0,255,255,0,0,500 1330 DATA 60,126,0,126,60,0,0,93,84,93 ,0,1,0,1,0,1,4918 1340 DATA 0,17,16,17,0,0,192,192,192,1 92,192,192,192,192,192,192,3570 1350 DATA 192,192,208,204,252,0,0,0,48 ,120,204,198,3,0,0,12,1109 1360 DATA 30,51,97,192,128,0,0,0,63,12 7,224,192,192,192,0,0,4980 1370 DATA 255,255,0,0,0,0,0,0,252,254, 7,115,59,27,192,192,5497 1380 DATA 192,192,192,192,192,192,3,3, 3,3,3,3,3,3,192,216,2000 1390 DATA 216,204,224,127,63,0,0,0,0,0 ,0,255,255,0,3,3,9977 1400 DATA 3,3,7,254,252,0,255,129,129, 129,129,129,129,255,0,0,7188 1410 DATA 15,8,8,8,248,0,0,0,224,32,32 ,32,63,0,0,16,6884 1420 DATA 24,252,252,24,16,0,0,8,24,63 ,63,24,8,0,0,0,4875 1430 DATA 0,255,255,0,0,0,0,0,3,3,3,3, 0,0,0,0,2831 1440 DATA 192,192,192,192,0,0,0,0,0,0, 0,0,0,0,0,0,3360 1450 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,1450 1460 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,24,1844 1470 DATA 60,126,24,24,24,0,0,24,24,24 ,126,60,24,0,0,24,5520 1480 DATA 48,126,244,34,239,35,48,24,0 ,0,0,24,12,126,12,24,7353 1490 DATA 0,0,0,24,60,126,126,60,24,0, 0,0,126,6,126,102,9464 1500 DATA 126,0,0,96,96,126,102,102,12 6,0,0,0,124,96,96,96,1842 1510 DATA 124,0,0,6,6,126,102,102,126, 0,0,0,126,102,126,96,1600 1520 DATA 124,0,0,30,24,126,24,24,24,0 ,0,0,126,102,102,126,9828 1530 DATA 6,126,0,96,96,126,102,102,10 2,0,0,24,0,56,24,24,7672 1540 DATA 24,0,0,6,0,6,6,6,6,62,0,96,9 6,108,120,108,9828 1550 DATA 102,0,0,56,24,24,24,24,24,0, 0,0,198,238,254,198,5600 1560 DATA 198,0,0,0,126,102,102,102,10 2,0,0,0,126,102,102,102,1676 1570 DATA 126,0,0,0,126,102,102,126,96 ,96,0,0,126,102,102,126,3096 1580 DATA 6,6,0,0,126,102,96,96,96,0,0 ,0,126,96,126,6,112 1590 DATA 126,0,0,24,126,24,24,24,30,0 ,0,0,102,102,102,102,9132 1600 DATA 126,0,0,0,102,102,102,60,24, 0,0,0,99,99,127,62,9828 1610 DATA 54,0,0,0,102,60,24,60,102,0, 0,0,102,102,102,126,400 1620 DATA 14,126,0,0,126,14,24,112,126 ,0,0,24,60,126,126,24,9904 1630 DATA 60,0,24,24,24,24,24,24,24,24 ,0,126,120,124,110,102,1028 1640 DATA 6,0,240,35,255,35,8,24,56,12 0,56,24,8,0,16,24,7575 1650 DATA 28,30,28,24,16,0,0,40,251,40 ,112,112,112,240,66,78,4607 1660 DATA 40,160,66,0,59,2,2,2,2,2,2,2 ,2,2,2,2,2755 1670 DATA 2,2,2,2,160,66,110,40,2,2,2, 66,110,40,65,0,7793 1680 DATA 40,112,112,112,112,112,112,1 12,112,112,66,238,40,112,2,65,4508 1690 DATA 39,40,64,0,32,96,32,64,0,96, 4,146,2,10,10,12,6737 1700 DATA 111,115,119,123,127,131,135, 139,192,128,180,229,242,237,233,238,78 71 1710 DATA 225,236,128,180,249,240,229, 154,128,184,182,141,162,162,171,143,49 44 1720 DATA 151,173,154,177,179,175,128, 192,192,128,213,212,212,212,212,212,79 55 1730 DATA 212,210,128,192,79,79,79,79, 79,79,79,79,192,128,211,212,9731 1740 DATA 212,212,212,212,212,214,128, 192,128,128,0,71,72,72,73,0,4959 1750 DATA 128,128,128,128,128,128,128, 128,128,128,128,128,128,128,128,128,91 58 1760 DATA 0,71,72,72,73,0,128,128,128, 128,0,74,69,70,75,0,1013 1770 DATA 0,65,67,0,85,82,0,16,16,0,83 ,86,0,0,65,67,7282 1780 DATA 0,74,80,81,75,0,128,128,128, 128,0,76,77,77,78,0,1380 1790 DATA 0,66,68,128,128,128,128,128, 128,128,128,128,128,128,66,68,6876 1800 DATA 0,76,77,77,78,0,128,128,0,0, 0,0,0,0,0,0,4801 1810 DATA 0,0,0,0,0,112,252,40,247,41, 114,101,115,115,0,0,2770 1820 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,1820 1830 DATA 0,0,0,0,0,0,0,0,128,179,180, 161,178,180,128,0,5438 1840 DATA 0,0,0,0,0,0,0,0,0,0,0,0,255, 254,253,159,5050 1850 DATA 158,157,156,155,127,126,125, 31,30,29,28,27,64,95,129,160,3773 1860 DATA 169,39,141,48,2,169,40,141,4 9,2,169,0,141,198,2,141,4365 1870 DATA 200,2,160,0,140,197,2,32,190 ,41,32,190,41,200,192,16,5927 1880 DATA 208,242,169,1,141,111,2,173, 31,208,201,6,208,249,169,0,9219 1890 DATA 141,48,2,169,40,141,49,2,160 ,3,169,255,153,13,208,169,8598 1900 DATA 0,153,192,2,169,3,153,8,208, 136,16,238,162,61,160,3,6460 1910 DATA 185,62,41,153,0,208,136,16,2 47,32,190,41,32,190,41,32,4610 1920 DATA 190,41,206,62,41,206,63,41,2 38,64,41,238,65,41,202,16,6062 1930 DATA 221,169,0,162,3,157,0,208,20 2,16,250,96,72,169,0,133,7068 1940 DATA 20,165,20,240,252,104,96,169 ,0,168,153,0,36,153,0,37,3783 1950 DATA 153,0,38,153,0,39,200,208,24 1,96,169,125,201,155,208,9,662 1960 DATA 169,0,133,139,230,140,76,109 ,42,201,126,208,12,32,48,42,4744 1970 DATA 32,73,42,169,0,168,248,41,24 3,42,145,141,96,201,125,208,1181 1980 DATA 20,160,0,152,153,0,59,153,0, 60,153,0,61,200,208,244,8230 1990 DATA 133,139,133,140,96,32,171,42 ,72,32,73,42,160,0,104,145,3800 2000 DATA 141,166,139,232,224,32,144,7 ,230,140,32,109,42,162,0,134,6282 2010 DATA 139,96,165,139,170,5,140,240 ,17,202,16,12,162,31,164,140,6905 2020 DATA 208,4,162,0,240,2,198,140,13 4,139,96,169,224,133,141,169,1713 2030 DATA 58,133,142,164,140,165,141,2 4,105,32,133,141,144,2,230,142,8347 2040 DATA 136,16,242,165,141,24,101,13 9,133,141,144,2,230,142,96,164,9519 2050 DATA 140,192,13,144,55,169,12,133 ,140,169,0,133,141,169,59,133,7384 2060 DATA 142,169,32,133,143,169,59,13 3,144,162,0,160,31,177,143,145,8556 2070 DATA 141,136,16,249,165,144,133,1 42,165,143,133,141,24,105,32,133,7743 2080 DATA 143,165,144,105,0,133,144,23 2,224,13,208,223,96,32,189,42,9380 2090 DATA 29,56,40,166,137,96,32,189,4 2,29,60,40,166,137,96,72,4488 2100 DATA 42,42,42,42,41,3,134,137,170 ,104,41,159,96,134,136,32,5382 2110 DATA 222,41,166,136,96,173,252,2, 201,255,240,249,162,255,142,252,8579 2120 DATA 2,133,128,168,192,192,144,2, 160,154,177,121,133,147,201,128,1809 2130 DATA 240,227,201,129,208,9,244,42 ,239,43,165,149,73,1,133,149,8607 2140 DATA 76,211,42,201,130,208,9,165, 148,73,64,133,148,76,211,42,8036 2150 DATA 201,131,208,6,169,64,133,148 ,208,191,201,132,208,9,165,150,1887 2160 DATA 73,1,133,150,76,211,42,201,1 33,240,174,165,128,201,64,144,2015 2170 DATA 19,165,147,201,97,144,13,201 ,123,176,9,165,148,240,5,5,7197 2180 DATA 128,76,225,42,162,15,189,46, 41,197,147,240,5,202,16,246,9799 2190 DATA 165,147,201,32,144,131,164,1 50,240,13,160,127,140,31,208,162,774 2200 DATA 8,202,208,253,136,16,245,96, 32,200,43,169,0,133,129,169,8797 2210 DATA 5,133,130,169,0,133,131,160, 0,177,129,153,0,6,200,201,7867 2220 DATA 155,208,4,230,131,208,17,192 ,32,208,238,136,177,129,201,32,1533 2230 DATA 240,5,136,208,247,160,31,200 ,132,132,160,0,177,129,132,133,215 2240 DATA 201,155,240,3,32,222,41,165, 149,240,6,32,190,41,32,190,7337 2250 DATA 41,164,133,200,196,132,208,2 28,152,24,101,129,133,129,144,2,8864 2260 DATA 230,130,165,139,240,3,32,226 ,41,165,131,240,170,96,133,129,1004 2270 DATA 132,130,162,255,160,255,200, 232,177,129,157,0,5,201,155,208,2896 2280 DATA 1,96,41,127,201,32,176,238,1 77,129,16,5,41,127,24,105,4907 2290 DATA 32,132,133,10,168,185,240,43 ,235,44,24,57,141,1,44,185,5969 2300 DATA 25,57,141,2,44,160,255,202,2 00,232,185,255,255,157,0,5,2259 2310 DATA 16,246,41,127,157,0,5,164,13 3,76,208,43,169,62,32,222,7439 2320 DATA 41,162,1,134,135,202,134,134 ,134,136,32,211,42,166,136,201,697 2330 DATA 155,240,57,41,127,201,32,144 ,239,201,126,208,11,224,0,240,1679 2340 DATA 231,202,32,203,42,76,30,44,2 01,96,240,220,201,123,176,216,3591 2350 DATA 133,138,201,65,144,7,201,91, 176,3,24,105,32,224,63,240,7994 2360 DATA 199,157,0,6,165,138,32,203,4 2,232,208,188,157,0,6,134,7915 2370 DATA 134,198,135,76,222,41,216,16 9,0,170,157,0,36,232,208,250,2092 2380 DATA 165,135,240,52,165,139,10,10 ,24,105,64,141,0,208,165,140,6841 2390 DATA 10,10,10,24,105,58,170,173,4 3,2,240,11,169,240,157,0,7084 2400 DATA 36,133,145,169,60,133,146,16 5,145,198,146,208,8,160,30,132,9546 2410 DATA 146,73,240,133,145,157,0,36, 230,154,165,154,201,2,208,51,9759 2420 DATA 169,0,133,154,162,7,189,48,3 4,10,157,48,34,62,40,34,1326 2430 DATA 144,9,169,1,24,125,48,34,157 ,48,34,189,136,34,10,157,4022 2440 DATA 136,34,62,128,34,144,9,169,1 ,24,125,136,34,157,136,34,4271 2450 DATA 202,16,211,76,98,228,236,44, 229,45,169,0,133,151,166,155,666 2460 DATA 240,66,230,153,166,153,224,8 ,208,58,133,153,164,152,200,192,3597 2470 DATA 8,208,2,160,0,132,152,185,70 ,40,141,1,208,152,73,7,5508 2480 DATA 168,185,70,40,141,2,208,160, 12,185,24,34,201,208,240,4,8660 2490 DATA 136,16,246,200,169,192,153,2 4,34,169,208,192,0,208,2,160,9546 2500 DATA 13,153,23,34,76,95,228,72,13 8,72,166,151,189,64,40,141,7955 2510 DATA 24,208,141,10,212,189,67,40, 141,23,208,141,10,212,230,151,839 2520 DATA 104,170,104,64,165,121,5,122 ,208,6,169,254,133,121,133,122,303 2530 DATA 32,220,41,133,135,141,200,2, 133,148,133,149,230,149,133,150,1993 2540 DATA 133,151,133,152,133,153,133, 154,133,155,169,32,141,244,2,169,701 2550 DATA 240,133,145,169,30,133,146,1 69,61,141,47,2,169,7,160,108,6412 2560 DATA 162,44,32,92,228,169,6,160,2 36,162,44,32,92,228,169,57,9197 2570 DATA 141,0,2,169,45,141,1,2,169,1 92,141,14,212,32,66,41,4497 2580 DATA 169,32,141,7,212,169,3,141,2 9,208,32,201,41,141,8,208,7547 2590 DATA 141,9,208,141,10,208,169,68, 141,192,2,169,56,141,193,2,7830 2600 DATA 169,168,141,194,2,230,155,16 0,5,169,120,153,183,37,153,215,1582 2610 DATA 38,136,16,247,230,45,225,46, 216,162,0,189,195,51,24,105,8440 2620 DATA 5,157,195,51,232,224,188,208 ,242,169,1,141,68,2,169,255,2310 2630 DATA 133,161,169,176,160,51,32,98 ,43,32,226,41,32,18,44,162,4015 2640 DATA 255,134,160,173,0,6,201,155, 208,10,169,0,160,6,32,98,5061 2650 DATA 43,76,7,46,162,0,134,159,188 ,139,52,185,195,51,16,10,5593 2660 DATA 169,32,160,53,32,98,43,76,7, 46,205,0,6,240,6,232,5260 2670 DATA 208,228,76,7,46,162,0,232,20 0,185,195,51,48,7,221,0,7092 2680 DATA 6,240,244,208,7,41,127,221,0 ,6,240,6,32,201,46,76,5576 2690 DATA 7,46,134,158,166,159,189,44, 58,208,6,254,44,58,32,187,7854 2700 DATA 50,166,158,232,189,0,6,201,1 55,208,3,76,8,47,201,32,5788 2710 DATA 240,3,76,90,46,232,134,157,1 62,0,134,160,188,148,52,185,468 2720 DATA 241,51,48,47,166,157,221,0,6 ,240,5,166,160,232,208,234,3407 2730 DATA 232,200,185,241,51,48,7,221, 0,6,240,244,208,15,41,127,8430 2740 DATA 221,0,6,208,8,232,189,0,6,20 1,155,240,77,32,201,46,8415 2750 DATA 76,7,46,166,157,32,201,46,76 ,7,46,134,156,162,0,189,6582 2760 DATA 0,6,157,112,58,232,228,156,2 08,245,160,0,185,42,53,157,599 2770 DATA 112,58,232,200,226,46,221,47 ,192,7,208,244,164,156,185,0,1928 2780 DATA 6,201,155,240,10,9,128,157,1 12,58,200,232,185,0,6,157,8448 2790 DATA 112,58,201,155,208,244,169,1 12,160,58,32,98,43,96,165,159,9294 2800 DATA 10,170,189,86,58,141,25,47,1 89,87,58,141,26,47,32,255,6205 2810 DATA 255,76,7,46,169,49,160,53,32 ,98,43,169,60,160,53,32,4201 2820 DATA 98,43,169,68,160,53,32,98,43 ,169,71,160,53,32,98,43,3982 2830 DATA 169,74,160,53,32,98,43,169,7 7,160,53,32,98,43,96,166,5472 2840 DATA 160,240,8,169,178,160,53,32, 98,43,96,173,78,58,208,6,6143 2850 DATA 238,78,58,32,187,50,169,115, 160,52,32,98,43,169,127,160,7762 2860 DATA 52,32,98,43,162,3,134,156,16 9,240,160,52,32,98,43,166,7850 2870 DATA 156,202,16,242,169,252,160,5 2,32,98,43,169,8,160,53,32,5759 2880 DATA 98,43,169,20,160,53,32,98,43 ,96,166,160,224,1,240,15,7636 2890 DATA 224,3,208,3,76,236,50,169,17 8,160,53,32,98,43,96,32,5251 2900 DATA 128,50,144,1,96,169,190,160, 53,32,98,43,32,18,44,162,3979 2910 DATA 0,134,161,188,189,52,185,153 ,52,48,10,205,0,6,240,17,5663 2920 DATA 166,161,232,208,236,169,195, 160,52,32,98,43,169,255,133,161,2495 2930 DATA 96,162,0,232,222,47,217,48,2 00,185,153,52,48,7,221,0,7567 2940 DATA 6,208,225,240,242,41,127,221 ,0,6,208,221,166,161,189,52,2189 2950 DATA 58,208,6,254,52,58,32,187,50 ,169,213,160,52,32,98,43,6471 2960 DATA 96,169,179,160,56,32,98,43,3 2,226,41,230,149,165,165,201,1770 2970 DATA 42,240,76,169,189,160,56,32, 98,43,32,126,48,169,253,162,9502 2980 DATA 0,32,144,48,142,47,2,142,29, 208,169,64,141,14,212,169,8691 2990 DATA 42,141,200,2,162,228,160,95, 169,6,32,92,228,162,228,160,2229 3000 DATA 98,169,7,32,92,228,169,0,162 ,3,157,0,208,202,16,250,9583 3010 DATA 169,255,162,160,32,144,48,16 9,0,141,200,2,76,98,48,169,6945 3020 DATA 23,141,208,56,169,189,160,56 ,32,98,43,169,210,160,56,32,7811 3030 DATA 98,43,32,126,48,76,98,48,32, 226,41,169,229,160,56,32,7176 3040 DATA 98,43,169,249,160,56,32,98,4 3,96,133,19,134,20,165,19,4710 3050 DATA 48,252,96,166,160,224,1,240, 8,169,178,160,53,32,98,43,7560 3060 DATA 96,32,128,50,144,1,96,165,16 1,16,8,169,205,160,52,32,6444 3070 DATA 98,43,96,10,170,189,102,58,1 41,200,48,189,103,58,141,201,291 3080 DATA 48,32,255,255,166,161,189,57 ,58,208,6,254,57,58,32,187,9293 3090 DATA 50,76,7,46,218,48,213,49,169 ,227,160,52,32,98,43,162,7958 3100 DATA 41,189,44,58,157,112,58,202, 16,247,169,4,32,40,49,16,3850 3110 DATA 10,169,18,160,58,32,98,43,32 ,74,49,169,7,32,85,49,1857 3120 DATA 162,41,189,44,58,29,112,58,1 57,44,58,202,16,244,32,187,7830 3130 DATA 50,96,169,217,160,52,32,98,4 3,169,8,32,40,49,48,209,4686 3140 DATA 169,11,32,85,49,96,72,32,74, 49,104,162,32,157,74,3,3364 3150 DATA 169,3,157,66,3,169,58,157,69 ,3,169,34,157,68,3,169,5411 3160 DATA 0,157,75,3,32,86,228,96,162, 32,169,12,157,66,3,32,4054 3170 DATA 86,228,96,162,32,157,66,3,16 9,58,157,69,3,169,44,157,6469 3180 DATA 68,3,169,36,157,72,3,169,0,1 57,73,3,32,86,228,32,4456 3190 DATA 74,49,96,166,160,224,2,208,2 3,32,128,50,144,1,96,169,6701 3200 DATA 157,160,56,32,98,43,32,18,44 ,173,0,6,201,49,176,8,3354 3210 DATA 169,178,160,53,32,98,43,96,2 01,51,176,244,56,233,49,133,280 3220 DATA 164,208,11,169,52,133,163,16 9,7,133,162,76,184,49,169,52,8592 3230 DATA 133,163,169,61,133,162,162,0 ,134,156,169,32,32,222,41,169,9063 3240 DATA 48,32,222,41,165,156,9,48,32 ,222,41,169,32,32,222,41,6227 3250 DATA 32,18,44,166,214,49,209,50,1 56,188,170,56,232,189,170,56,2275 3260 DATA 133,157,162,0,173,0,6,201,15 5,240,11,189,0,6,209,162,8703 3270 DATA 240,50,201,155,240,55,166,15 6,165,164,208,14,189,62,58,240,2389 3280 DATA 6,222,62,58,32,187,50,76,19, 50,189,70,58,240,248,222,1364 3290 DATA 70,58,76,2,50,166,156,232,22 4,8,208,160,169,150,160,56,1803 3300 DATA 32,98,43,96,196,157,240,237, 232,200,76,226,49,166,156,165,5116 3310 DATA 164,208,14,189,62,58,208,6,2 54,62,58,32,187,50,76,19,5353 3320 DATA 50,189,70,58,208,248,254,70, 58,76,57,50,169,199,160,53,9796 3330 DATA 32,98,43,96,169,90,160,54,32 ,98,43,96,169,7,160,55,5476 3340 DATA 32,98,43,169,79,160,55,32,98 ,43,96,169,172,160,55,32,6578 3350 DATA 98,43,169,254,160,55,32,98,4 3,96,169,25,160,56,32,98,5613 3360 DATA 43,96,173,79,58,240,2,24,96, 169,121,160,56,32,98,43,5505 3370 DATA 32,18,44,162,255,160,254,232 ,200,200,189,0,6,217,115,52,1639 3380 DATA 208,18,224,5,208,241,169,140 ,160,56,32,98,43,169,1,141,7829 3390 DATA 79,58,24,96,169,131,160,56,3 2,98,43,56,96,169,0,133,5395 3400 DATA 165,162,41,189,44,58,24,101, 165,133,165,202,16,245,162,0,9434 3410 DATA 56,233,10,48,210,50,205,51,5 ,240,18,232,208,246,24,105,962 3420 DATA 10,9,16,141,190,40,138,9,16, 141,189,40,96,232,169,0,7432 3430 DATA 240,239,173,81,58,208,6,238, 81,58,32,187,50,173,80,58,7580 3440 DATA 208,52,169,121,160,56,32,98, 43,32,18,44,162,255,160,254,460 3450 DATA 232,200,200,189,0,6,217,127, 52,208,6,224,5,208,241,240,3743 3460 DATA 8,169,131,160,56,32,98,43,96 ,238,80,58,32,187,50,169,7649 3470 DATA 140,160,56,32,98,43,169,85,1 60,53,32,98,43,32,226,41,5388 3480 DATA 169,95,160,53,32,98,43,32,22 6,41,169,53,162,123,32,117,6955 3490 DATA 51,162,0,32,148,51,169,53,16 2,135,32,117,51,162,1,32,4668 3500 DATA 148,51,169,53,162,151,32,117 ,51,162,2,32,148,51,169,53,5851 3510 DATA 162,161,32,117,51,162,3,32,1 48,51,96,133,130,134,129,160,8617 3520 DATA 0,177,129,48,10,132,157,32,2 22,41,164,157,200,208,242,41,2544 3530 DATA 127,32,222,41,169,32,32,222, 41,96,134,156,32,18,44,166,6247 3540 DATA 156,173,0,6,221,174,53,240,9 ,169,0,157,82,58,32,187,7511 3550 DATA 50,96,169,1,208,245,84,101,1 14,109,105,110,97,108,32,65,7093 3560 DATA 99,116,105,118,97,116,101,10 0,155,94,92,111,92,103,106,226,9889 3570 DATA 95,112,104,235,206,51,201,52 ,96,105,98,92,98,224,103,92,9823 3580 DATA 112,105,94,227,107,103,92,24 4,109,96,111,109,100,96,113,224,1234 3590 DATA 110,111,106,109,224,114,109, 100,111,224,250,110,111,92,94,230,3173 3600 DATA 111,92,107,224,107,109,106,9 8,109,92,232,109,106,104,40,221,558 3610 DATA 250,100,105,95,27,52,51,110, 111,95,27,109,96,98,92,100,5593 3620 DATA 105,95,27,45,110,111,95,27,1 09,96,98,93,100,105,95,27,5035 3630 DATA 50,43,110,111,95,27,109,96,9 8,94,97,109,106,27,47,46,4102 3640 DATA 44,45,99,92,103,111,250,100, 105,95,27,52,46,110,111,95,6309 3650 DATA 27,109,96,98,92,100,105,95,2 7,44,110,111,95,27,109,96,5139 3660 DATA 98,93,100,105,95,27,46,45,11 0,111,95,27,109,96,98,94,5187 3670 DATA 97,109,106,27,45,44,46,47,99 ,92,103,111,250,92,27,105,6497 3680 DATA 27,92,27,103,27,106,27,98,15 0,48,32,49,32,49,32,48,1248 3690 DATA 32,48,32,49,155,0,7,11,17,23 ,27,35,40,45,0,5,7352 3700 DATA 9,16,21,111,114,105,103,105, 238,97,110,116,97,114,101,248,1063 3710 DATA 108,97,110,100,105,110,231,1 08,97,117,110,99,104,105,110,231,1017 3720 DATA 115,116,97,116,117,243,255,0 ,6,13,20,29,35,110,111,32,3574 3730 DATA 115,117,99,104,202,52,197,53 ,32,0,155,0,32,110,111,116,5387 3740 DATA 32,3,155,0,32,3,155,115,116, 111,114,105,110,103,32,1,4462 3750 DATA 155,114,101,116,114,105,101, 118,105,110,103,32,1,155,48,32,4728 3760 DATA 48,32,48,32,48,32,48,32,48,1 55,48,32,48,32,48,32,366 3770 DATA 55,32,100,32,52,155,98,32,48 ,32,101,32,102,32,49,32,1717 3780 DATA 99,155,52,32,48,32,57,32,50, 32,97,32,101,155,17,32,2031 3790 DATA 99,111,109,109,97,110,100,15 5,45,101,114,114,111,114,32,108,7243 3800 DATA 105,98,114,97,114,121,32,0,1 15,155,32,111,114,105,103,105,6797 3810 DATA 110,155,32,5,155,32,13,155,3 2,14,155,32,115,116,97,116,5591 3820 DATA 117,115,155,14,32,99,111,110 ,116,114,111,108,155,49,46,32,5703 3830 DATA 111,112,101,110,32,50,46,32, 99,108,111,115,101,32,51,46,3780 3840 DATA 32,110,101,117,116,114,97,10 8,155,103,121,114,111,32,99,111,7946 3850 DATA 110,116,114,111,236,104,121, 100,114,111,45,108,105,102,116,32,7401 3860 DATA 118,97,108,118,229,114,98,52 ,50,32,118,97,108,118,229,102,9254 3870 DATA 114,97,98,101,114,32,115,119 ,105,116,99,232,50,49,51,49,6258 3880 DATA 17,32,111,112,101,114,97,116 ,105,111,110,155,119,104,105,99,8825 3890 DATA 104,32,0,63,198,53,193,54,15 5,4,32,119,97,115,32,115,5807 3900 DATA 101,110,116,32,102,114,111,1 09,32,5,32,116,111,32,119,97,4850 3910 DATA 114,110,32,101,97,114,116,10 4,32,116,104,97,116,32,105,116,6700 3920 DATA 32,105,115,32,111,110,32,97, 32,6,32,16,32,119,105,116,3255 3930 DATA 104,32,97,32,11,46,32,4,32,1 04,97,115,32,115,101,110,4180 3940 DATA 115,111,114,115,32,116,111,3 2,103,97,21,114,32,1,46,32,2096 3950 DATA 119,104,101,110,32,4,32,114, 101,116,117,114,110,115,32,116,6440 3960 DATA 111,32,5,32,119,101,32,119,1 05,108,108,32,97,108,116,101,6381 3970 DATA 114,32,21,32,16,32,111,102,3 2,21,32,11,32,97,110,100,2210 3980 DATA 32,97,118,111,105,100,32,97, 32,6,46,155,5,32,105,115,3771 3990 DATA 32,21,32,102,111,117,114,116 ,104,32,112,108,97,110,101,116,7507 4000 DATA 32,102,114,111,109,32,21,32, 115,116,97,114,32,103,114,105,6040 4010 DATA 110,100,108,32,105,110,32,97 ,32,112,97,114,97,108,108,101,6809 4020 DATA 108,32,117,110,105,118,101,1 14,115,101,46,32,5,32,104,97,4395 4030 DATA 115,32,50,32,109,111,111,110 ,115,32,97,110,100,32,97,32,4812 4040 DATA 103,114,97,118,105,116,97,11 6,105,111,110,97,108,32,102,111,7549 4050 DATA 114,99,101,32,194,54,189,55, 111,102,32,55,48,46,32,105,4309 4060 DATA 116,32,104,97,115,32,97,32,1 00,105,97,109,101,116,101,114,7243 4070 DATA 32,111,102,32,49,55,44,48,48 ,48,32,10,46,32,5,32,9042 4080 DATA 105,115,32,57,56,32,109,105, 108,108,105,111,110,32,10,32,3893 4090 DATA 102,114,111,109,32,103,114,1 05,110,100,108,46,155,116,104,101,8150 4100 DATA 32,13,32,8,32,9,32,8,46,32,1 2,32,99,111,109,109,2258 4110 DATA 97,110,100,115,46,32,18,100, 44,115,116,32,2,108,116,32,3531 4120 DATA 105,115,32,117,115,101,100,3 2,116,111,32,101,110,100,32,8,4312 4130 DATA 109,105,110,103,46,32,1,32,1 05,115,32,115,116,111,114,101,6091 4140 DATA 100,32,105,110,155,51,32,114 ,101,103,105,115,116,101,114,115,8222 4150 DATA 58,32,114,101,103,32,97,44,1 14,101,2,103,99,46,32,21,2797 4160 DATA 32,100,105,115,116,97,110,99 ,101,32,102,114,111,109,32,21,5395 4170 DATA 32,115,116,97,114,32,105,115 ,32,112,117,116,32,105,110,32,5720 4180 DATA 114,101,103,97,46,32,109,111 ,111,2,105,116,121,32,19,32,3650 4190 DATA 114,101,103,99,46,32,21,32,1 3,32,20,32,52,51,49,50,2 4200 DATA 46,155,21,32,14,32,8,32,9,32 ,8,46,32,12,32,99,9010 4210 DATA 111,109,32,2,190,55,185,56,1 8,32,2,32,100,44,102,114,3824 4220 DATA 111,44,104,97,108,116,46,32, 104,97,108,116,32,105,115,32,5542 4230 DATA 117,115,101,100,2,101,103,99 ,46,32,21,32,100,105,115,116,5109 4240 DATA 97,110,2,111,111,110,32,100, 97,116,97,32,19,32,114,101,4751 4250 DATA 103,2,32,103,114,97,118,155, 2,104,101,32,14,32,20,32,2078 4260 DATA 114,101,118,2,32,102,101,114 ,32,116,111,32,114,111,109,45,5773 4270 DATA 98,46,155,97,108,108,32,115, 121,115,116,101,109,115,32,97,7431 4280 DATA 114,101,32,102,117,110,99,11 6,105,111,110,105,110,103,32,101,7459 4290 DATA 120,99,101,112,116,32,21,32, 13,32,97,110,100,32,14,32,1828 4300 DATA 97,117,116,111,32,8,109,105, 110,103,32,119,101,114,101,32,5970 4310 DATA 100,105,115,114,117,112,116, 101,100,32,100,117,114,105,110,103,827 2 4320 DATA 32,97,32,109,97,103,110,101, 116,105,99,32,115,116,111,114,7934 4330 DATA 109,46,155,112,97,115,115,11 9,111,114,100,63,155,7,32,100,6564 4340 DATA 101,110,105,101,100,155,7,32 ,97,108,108,111,119,101,100,155,8529 4350 DATA 8,32,100,111,110,101,155,49, 46,32,13,32,50,46,32,14,1058 4360 DATA 32,8,63,155,0,6,14,19,27,33, 41,49,53,114,111,98,2633 4370 DATA 111,120,32,14,186,56,181,57, 46,46,155,121,111,117,114,32,7196 4380 DATA 109,105,115,115,105,111,110, 32,119,97,115,32,97,32,22,155,5930 4390 DATA 99,111,110,103,114,97,116,11 7,108,97,116,105,111,110,115,46,8275 4400 DATA 46,46,155,103,97,109,101,32, 99,111,109,112,108,105,109,101,8186 4410 DATA 110,116,115,32,111,102,155,6 6,97,114,114,121,32,75,111,108,7583 4420 DATA 98,101,32,97,110,100,32,66,1 14,121,97,110,32,83,99,104,6456 4430 DATA 97,112,112,101,108,155,72,57 ,76,57,80,57,93,57,98,57,5128 4440 DATA 103,57,110,57,119,57,125,57, 132,57,153,57,158,57,164,57,7832 4450 DATA 175,57,182,57,191,57,205,57, 211,57,218,57,230,57,242,57,2582 4460 DATA 1,58,4,58,11,58,116,97,112,2 29,100,97,116,225,46,46,8458 4470 DATA 100,97,116,97,32,108,111,115 ,116,46,174,114,101,97,100,249,946 4480 DATA 114,111,98,111,248,97,110,11 6,97,114,101,248,99,111,108,108,1363 4490 DATA 105,115,105,111,238,97,99,99 ,101,115,243,112,114,111,103,114,1322 4500 DATA 97,237,99,111,110,115,105,11 5,116,115,32,111,102,32,97,110,7574 4510 DATA 32,56,32,115,116,101,240,109 ,105,108,101,243,109,101,116,101,1187 4520 DATA 111,242,116,104,101,114,101, 32,97,114,101,32,180,108,97,110,8606 4530 DATA 100,105,110,231,182,57,111,5 8,108,97,117,110,99,104,105,110,9214 4540 DATA 231,109,117,115,116,32,98,10 1,32,112,117,116,32,105,238,99,9193 4550 DATA 111,117,114,115,229,105,108, 108,101,103,97,236,116,104,101,121,134 5 4560 DATA 32,97,114,101,58,32,105,238, 105,115,32,115,116,111,114,101,8868 4570 DATA 100,32,105,238,102,105,114,1 05,110,103,32,111,114,100,101,114,8704 4580 DATA 32,105,243,116,104,229,102,9 7,105,108,117,114,229,115,117,99,2005 4590 DATA 99,101,115,243,100,105,115,1 07,32,102,105,108,101,32,101,114,7858 4600 DATA 114,111,114,155,68,58,66,79, 88,46,68,65,84,155,0,0,3722 4610 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,4610 4620 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,4620 4630 DATA 0,0,0,0,0,0,0,0,30,47,73,47, 148,47,7,48,192 4640 DATA 153,48,218,48,20,49,117,49,7 4,50,82,50,90,50,105,50,4253 4650 DATA 120,50,226,2,227,2,86,45,0,0 ,0,0,0,0,0,0,7665
.OPT NOLIST ;SAVE#D:ROBOX.M65 ;asm,,#d:boxer ; ;------------------ ;the actual adventure ;is done here ; by Barry Kolbe ;------------------ ; *= $80 OLDC .DS 1 INDR .DS 2 EOLFLAG .DS 1 TEMP .DS 1 SAVEY .DS 1 ILEN .DS 1 IPUT .DS 1 ;input flag SAVEX .DS 1 SAVX2 .DS 1 CHAR .DS 1 XPOS .DS 1 YPOS .DS 1 SCR .DS 2 SCR2 .DS 2 CSHAPE .DS 1 BLINK .DS 1 OLDAC .DS 1 CAPS .DS 1 PAUSE? .DS 1 CLICK? .DS 1 DLIDX .DS 1 BLKPOS .DS 1 MYCOUNT .DS 1 MYCNT2 .DS 1 GOFLAG .DS 1 X1 .DS 1 X2 .DS 1 X3 .DS 1 VRBN .DS 1 NOUNN .DS 1 TAPEN .DS 1 CPL .DS 1 CPH .DS 1 TYPE .DS 1 SCORE .DS 1 ;----- EXPBUF = $0500 MYBUF = $0600 LINELEN = 32 SCMEM = $3B00 MYPM = $2000 PLR0 = MYPM+$0400 PLR1 = PLR0+$0100 PLR2 = PLR1+$0100 PLR3 = PLR2+$0100 BOTLIN = 13 ; .MACRO PRINT LDA #<%1 LDY #>%1 JSR EPRINT .ENDM ;----------- .MACRO PUTTER LDA #>%1 LDX #<%1 JSR MYPUT .ENDM ;----------- ; *= 0 PASS .= PASS+1 .IF PASS=1 .INCLUDE #D:ROBOX2.M65 .ENDIF ; *= $2000 .INCLUDE #D:ROBOX3.M65 *= $2800 .INCLUDE #D:ROBOX4.M65 ;-------- ;decode ;------- CLD LDX #0 ?DE LDA VERB,X CLC ADC #5 STA VERB,X INX CPX #188 BNE ?DE LDA #1 STA $0244 LDA #$FF STA TAPEN PRINT TRMACT GETCOM JSR PUTCR JSR INPUT LDX #$FF STX NOUNN LDA MYBUF CMP #EOL .LOCAL BNE ?B1 PRINT MYBUF JMP GETCOM ?B1 LDX #0 ?B2 STX VRBN LDY VL,X LDA VERB,Y BPL ?B9 PRINT SYNTAX JMP GETCOM ?B9 CMP MYBUF BEQ MATONE INX BNE ?B2 JMP GETCOM MATONE LDX #0 ?B8 INX INY LDA VERB,Y BMI ?LAST CMP MYBUF,X BEQ ?B8 BNE ?B3 ?LAST AND #$7F CMP MYBUF,X BEQ GOTVRB ?B3 JSR INSERR JMP GETCOM GOTVRB STX X3 LDX VRBN LDA VFG,X BNE ?VB INC VFG,X JSR GTSCR ?VB LDX X3 INX LDA MYBUF,X CMP #EOL BNE ?B5 JMP TRANS ?B5 CMP #$20 BEQ GTNOUN JMP ?B3 GTNOUN INX STX X2 LDX #0 ?N1 STX NOUNN LDY NL,X LDA NOUN,Y BMI NONUN LDX X2 CMP MYBUF,X BEQ GOTNUN LDX NOUNN INX BNE ?N1 GOTNUN INX INY LDA NOUN,Y BMI ?NLAST CMP MYBUF,X BEQ GOTNUN BNE ?N3 ?NLAST AND #$7F CMP MYBUF,X BNE ?N3 INX LDA MYBUF,X CMP #EOL BEQ TRANS ?N3 JSR INSERR JMP GETCOM NONUN LDX X2 JSR INSERR JMP GETCOM ;--------------------- ;insert -error & print ;--------------------- INSERR STX X1 LDX #0 ?B4 LDA MYBUF,X STA OUTBUF,X INX CPX X1 BNE ?B4 ?B0 LDY #0 ?B7 LDA ERR,Y STA OUTBUF,X INX INY CPY #7 BNE ?B7 LDY X1 LDA MYBUF,Y CMP #EOL BEQ ?B11 ORA #$80 STA OUTBUF,X ?B6 INY INX LDA MYBUF,Y ?B11 STA OUTBUF,X CMP #EOL BNE ?B6 ?B12 PRINT OUTBUF RTS ;--------------- ;handle input ;--------------- TRANS LDA VRBN ASL A TAX LDA JTAB,X STA JPER+1 LDA JTAB+1,X STA JPER+2 JPER JSR $FFFF JMP GETCOM ;--------------- ;pr cat ;------- JCT PRINT CATLOG PRINT T1 PRINT T2 PRINT T3 PRINT T4 PRINT T5 RTS ;------ ;dump st ;------- JDM LDX NOUNN BEQ ?JD1 PRINT COMERR RTS ?JD1 LDA NFG BNE ?JD3 INC NFG JSR GTSCR ?JD3 PRINT WALN PRINT CODE2 LDX #3 ?JD2 STX X1 PRINT PG1 LDX X1 DEX BPL ?JD2 PRINT PG2 PRINT PG3 PRINT PG4 RTS ;------ ;eng tap ;------- JEN LDX NOUNN CPX #1 BEQ ?JEN1 CPX #3 BNE ?RMM JMP ROMB ?RMM PRINT COMERR RTS ?JEN1 JSR PASWRD BCC ?JEN3 RTS ?JEN3 PRINT TAPNAM JSR INPUT LDX #0 ?EN3 STX TAPEN LDY TN,X LDA TNAM,Y BMI NOTAP CMP MYBUF BEQ ?EN2 ?EN6 LDX TAPEN INX BNE ?EN3 NOTAP PRINT NOTAVL LDA #$FF STA TAPEN RTS ?EN2 LDX #0 ?EN5 INX INY LDA TNAM,Y BMI ?EN4 CMP MYBUF,X BNE ?EN6 BEQ ?EN5 ?EN4 AND #$7F CMP MYBUF,X BNE NOTAP LDX TAPEN LDA EFG,X BNE ?ENA INC EFG,X JSR GTSCR ?ENA PRINT TREAD RTS ;---------- ;launch ;---------- JLA PRINT ROBLA JSR PUTCR INC PAUSE? LDA SCORE CMP #42 BEQ ?Z1 PRINT MISSON JSR FINI LDA #$FD LDX #$00 JSR FWAIT STX $022F STX $D01D LDA #$40 STA NMIEN LDA #$2A STA $02C8 LDX #$E4 LDY #$5F LDA #6 JSR SETVBV LDX #$E4 LDY #$62 LDA #7 JSR SETVBV LDA #0 LDX #3 ?KK STA HPOSP0,X DEX BPL ?KK LDA #$FF LDX #$A0 JSR FWAIT LDA #0 STA $02C8 ?Z3 JMP ?Z3 ?Z1 LDA #'. STA MISSON+19 PRINT MISSON PRINT CONGRT JSR FINI JMP ?Z3 ;--------- ;good bye! ;--------- FINI JSR PUTCR PRINT COMP PRINT COMP1 RTS ;------ ;time killer ;------ FWAIT STA RTCLOK-1 STX RTCLOK ?FW LDA RTCLOK-1 BMI ?FW RTS ;------- ;play tape ;--------- JPL LDX NOUNN CPX #1 BEQ ?PL3 PRINT COMERR RTS ?PL3 JSR PASWRD BCC ?PL1 RTS ?PL1 LDA TAPEN BPL ?PL2 PRINT NREAD RTS ?PL2 ASL A TAX LDA ETAB,X STA EJMP+1 LDA ETAB+1,X STA EJMP+2 EJMP JSR $FFFF LDX TAPEN LDA PLFG,X BNE ?PP INC PLFG,X JSR GTSCR ?PP JMP GETCOM ;--------- ;ret dat ;--------- JRE PRINT RTPRG LDX #41 ?JR3 LDA SCRTAB,X STA OUTBUF,X DEX BPL ?JR3 LDA #4 JSR OPENF BPL ?JR1 ?JR2 PRINT NODAT JSR CLOSE2 ?JR1 LDA #$07 JSR REWR LDX #41 ?JR5 LDA SCRTAB,X ORA OUTBUF,X STA SCRTAB,X DEX BPL ?JR5 JSR GTSCR RTS ;------- ;store dat ;------- JST PRINT STPRG LDA #8 JSR OPENF BMI ?JR2 LDA #$0B JSR REWR RTS ;----- ;open file ;----- OPENF PHA JSR CLOSE2 PLA LDX #$20 STA AUX1,X LDA #3 STA ICCOM,X LDA #>DISK STA ICBAH,X LDA #<DISK STA ICBAL,X LDA #0 STA AUX2,X JSR CIOV RTS ;---- ;close 2 ;----- CLOSE2 LDX #$20 LDA #$0C STA ICCOM,X JSR CIOV RTS ;------ ;read/write ;------ REWR LDX #$20 STA ICCOM,X LDA #>SCRTAB STA ICBAH,X LDA #<SCRTAB STA ICBAL,X LDA #36 STA ICBLL,X LDA #0 STA ICBLH,X JSR CIOV JSR CLOSE2 RTS ;-------- ;write prog ;-------- JWR LDX NOUNN CPX #2 BNE ?W3 JSR PASWRD BCC ?W1 RTS ?W1 PRINT WM JSR INPUT LDA MYBUF CMP #$31 BCS ?W2 ?W3 PRINT COMERR RTS ?W2 CMP #$33 BCS ?W3 SEC SBC #$31 STA TYPE BNE ?W4 LDA #>W1 STA CPH LDA #<W1 STA CPL JMP ?W5 ?W4 LDA #>W2 STA CPH LDA #<W2 STA CPL ?W5 LDX #0 ?W7 STX X1 LDA #$20 JSR EPUT LDA #$30 JSR EPUT LDA X1 ORA #$30 JSR EPUT LDA #$20 JSR EPUT JSR INPUT LDX X1 LDY WT,X INX LDA WT,X STA X2 LDX #0 ?W9 LDA MYBUF CMP #EOL BEQ ?WH LDA MYBUF,X CMP (CPL),Y BEQ ?W6 CMP #EOL BEQ ?W8 ?WH LDX X1 LDA TYPE BNE ?WD LDA W1FG,X BEQ ?WG DEC W1FG,X ?WF JSR GTSCR ?WG JMP ?W10 ?WD LDA W2FG,X BEQ ?WG DEC W2FG,X JMP ?WF ?W10 LDX X1 INX CPX #8 BNE ?W7 PRINT DONE RTS ?W6 CPY X2 BEQ ?W10 INX INY JMP ?W9 ?W8 LDX X1 LDA TYPE BNE ?WB LDA W1FG,X BNE ?WC INC W1FG,X ?WA JSR GTSCR ?WC JMP ?W10 ?WB LDA W2FG,X BNE ?WC INC W2FG,X JMP ?WA ;-------- ;print routines ;-------- POR PRINT ORM RTS PAN PRINT ANM RTS PLA PRINT LAM PRINT LAM1 RTS PLU PRINT LUM PRINT LUM1 RTS PST PRINT STM RTS ;------ ;password ;-------- PASWRD LDA PFG BEQ ?PS1 CLC RTS ?PS1 PRINT PASPMT JSR INPUT LDX #$FF LDY #$FE ?PS2 INX INY INY LDA MYBUF,X CMP WALN,Y BNE DENY CPX #5 BNE ?PS2 PRINT ACCES LDA #1 STA PFG CLC RTS DENY PRINT ACDENY SEC RTS ;-------- ;score ;-------- GTSCR LDA #0 STA SCORE LDX #41 ?GT LDA SCRTAB,X CLC ADC SCORE STA SCORE DEX BPL ?GT LDX #0 ?GT3 SEC SBC #$0A BMI ?GT2 BEQ ?GT4 INX BNE ?GT3 ?GT2 CLC ADC #$0A ?GT5 ORA #$10 STA BOTTOM+80 TXA ORA #$10 STA BOTTOM+79 RTS ?GT4 INX LDA #0 BEQ ?GT5 ;----------- ;rom-b ;----------- ROMB LDA RNOUN BNE ?RMZ INC RNOUN JSR GTSCR ?RMZ LDA ROMFLG BNE ROMOK PRINT PASPMT JSR INPUT LDX #$FF LDY #$FE ?RMA INX INY INY LDA MYBUF,X CMP CODE2,Y BNE ?RME CPX #5 BNE ?RMA BEQ ?RMB ?RME PRINT ACDENY RTS ?RMB INC ROMFLG JSR GTSCR PRINT ACCES ROMOK PRINT LENG JSR PUTCR PRINT OPT JSR PUTCR PUTTER RB1 LDX #0 JSR DOSCRE PUTTER RB2 LDX #1 JSR DOSCRE PUTTER RB3 LDX #2 JSR DOSCRE PUTTER RB4 LDX #3 JSR DOSCRE RTS ;----------- ;my put mess routine ;----------- MYPUT STA INDR+1 STX INDR LDY #0 ?MYA LDA (INDR),Y BMI ?MYB STY X2 JSR EPUT LDY X2 INY BNE ?MYA ?MYB AND #$7F JSR EPUT LDA #$20 JSR EPUT RTS ;--------- ;handle rom-b score ;--------- DOSCRE STX X1 JSR INPUT LDX X1 LDA MYBUF CMP RMTAB,X BEQ ?DS1 LDA #0 ?DS2 STA RMLFLG,X JSR GTSCR RTS ?DS1 LDA #1 BNE ?DS2 ;-------- TRMACT .BYTE "Terminal Activated",EOL VERB .BYTE +$FB,"catalogdumpengage" .BYTE +$FB,"launchplayretrieve" .BYTE +$FB,"storewrite",$FF NOUN .BYTE +$FB,"stacktapeprogramrom-b",$FF W1 .BYTE +$FB,"ind 98std regaind 2std regbind 70std regcfro 4312halt",$FF W2 .BYTE +$FB,"ind 93std regaind 1std regbind 32std regcfro 2134halt",$FF WALN .BYTE +$FB,"a n a l o g",EOL CODE2 .BYTE "0 1 1 0 0 1",EOL VL .BYTE 0,7,11,17,23,27,35,40,45 NL .BYTE 0,5,9,16,21 TNAM .BYTE "originantarexlandinglaunchingstatus",$FF TN .BYTE 0,6,13,20,29,35 NOTAVL .BYTE "no such .",EOL NREAD .BYTE ". not .",EOL TREAD .BYTE ". .",EOL STPRG .BYTE "storing .",EOL RTPRG .BYTE "retrieving .",EOL PG1 .BYTE "0 0 0 0 0 0",EOL PG2 .BYTE "0 0 0 7 d 4",EOL PG3 .BYTE "b 0 e f 1 c",EOL PG4 .BYTE "4 0 9 2 a e",EOL SYNTAX .BYTE ". command",EOL ERR .BYTE "-error " CATLOG .BYTE "library .s",EOL T1 .BYTE " origin",EOL T2 .BYTE " .",EOL T3 .BYTE " .",EOL T4 .BYTE " .",EOL T5 .BYTE " status",EOL ;----- LENG .BYTE ". control",EOL OPT .BYTE "1. open 2. close 3. neutral",EOL RB1 .CBYTE "gyro control" RB2 .CBYTE "hydro-lift valve" RB3 .CBYTE "rb42 valve" RB4 .CBYTE "fraber switch" RMTAB .BYTE "2131" COMERR .BYTE ". operation",EOL TAPNAM .BYTE "which .?",EOL ORM .BYTE ". was sent from . to warn earth that it is on a . . with a .." .BYTE " . has sensors to ga.r .. when . returns to . we will alter . . " .BYTE "of . . and avoid a ..",EOL ANM .BYTE ". is . fourth planet from . star grindl in a parallel universe. " .BYTE ". has 2 moons and a gravitational force of 70. it has a diameter of 17,000 .. " .BYTE ". is 98 million . from grindl.",EOL LAM .BYTE "the . . . .. . commands. .d,st .lt is used to end .ming. . is stored in",EOL LAM1 .BYTE "3 registers: reg a,re.gc. . distance from . star is put in rega. moo.ity . regc. . . . 4312." .BYTE EOL LUM .BYTE ". . . . .. . com .. . d,fro,halt. halt is used.egc. . distan.oon data . reg. grav",EOL LUM1 .BYTE ".he . . rev. fer to rom-b.",EOL STM .BYTE "all systems are functioning except . . and . auto .ming were " .BYTE "disrupted during a magnetic storm.",EOL PASPMT .BYTE "password?",EOL ACDENY .BYTE ". denied",EOL ACCES .BYTE ". allowed",EOL DONE .BYTE ". done",EOL WM .BYTE "1. . 2. . .?",EOL WT .BYTE 0,6,14,19,27,33,41,49,53 ROBLA .BYTE "robox ...",EOL MISSON .BYTE "your mission was a .",EOL CONGRT .BYTE "congratulations...",EOL COMP .BYTE "game compliments of",EOL COMP1 .BYTE "Barry Kolbe and Bryan Schappel",EOL TOKADR .WORD R1 .WORD R2 .WORD R3 .WORD R4 .WORD R5 .WORD R6 .WORD R7 .WORD R8 .WORD R9 .WORD RA .WORD RB .WORD RC .WORD RD .WORD RE .WORD RF .WORD RG .WORD RH .WORD RI .WORD RJ .WORD RK .WORD RL .WORD RM .WORD RN .WORD RO ;--------- R1 .CBYTE "tape" R2 .CBYTE "data" R3 .CBYTE "..data lost.." R4 .CBYTE "ready" R5 .CBYTE "robox" R6 .CBYTE "antarex" R7 .CBYTE "collision" R8 .CBYTE "access" R9 .CBYTE "program" RA .CBYTE "consists of an 8 step" RB .CBYTE "miles" RC .CBYTE "meteor" RD .CBYTE "there are 4" RE .CBYTE "landing" RF .CBYTE "launching" RG .CBYTE "must be put in" RH .CBYTE "course" RI .CBYTE "illegal" RJ .CBYTE "they are: in" RK .CBYTE "is stored in" RL .CBYTE "firing order is" RM .CBYTE "the" RN .CBYTE "failure" RO .CBYTE "success" NODAT .BYTE "disk file error",EOL DISK .BYTE "D:BOX.DAT",EOL SCRTAB VFG .BYTE 0,0,0,0,0,0,0,0 EFG .BYTE 0,0,0,0,0 PLFG .BYTE 0,0,0,0,0 W1FG .BYTE 0,0,0,0,0,0,0,0 W2FG .BYTE 0,0,0,0,0,0,0,0 NFG .BYTE 0 PFG .BYTE 0 ROMFLG .BYTE 0 RNOUN .BYTE 0 RMLFLG .BYTE 0,0,0,0 JTAB .WORD JCT .WORD JDM .WORD JEN .WORD JLA .WORD JPL .WORD JRE .WORD JST .WORD JWR ;------- ETAB .WORD POR .WORD PAN .WORD PLA .WORD PLU .WORD PST ;-------- OUTBUF *= *+60 .OPT LIST ENDPRG *= *+1 *= $02E0 .WORD BEGIN .OPT NOLIST .END ;------------------------ ;SYSTEM EQUATES FILE FOR ;ATARI HOME COMPUTERS ;------------------------ ; ;DISK I/O ; DSKINV = $E453 SIOV = $E459 DDEVIC = $0300 DUNIT = $0301 ;D: UNIT DCOMND = $0302 ;D: command DSTATS = $0303 DBUFLO = $0304 ;sector buffer DBUFHI = $0305 DTIMLO = $0306 DBYTLO = $0308 DBYTHI = $0309 DSECLO = $030A ;sector # DSECHI = $030B ; ;CIO ROUTINES ; CIOV = $E456 ;CIO vector ICCOM = $0342 ;command ICBAL = $0344 ;buffer address ICBAH = $0345 ICBLL = $0348 ;buffer len ICBLH = $0349 AUX1 = $034A AUX2 = $034B RUNAD = $02E0 INITAD = $02E2 ; ;SCREEN HANDLER/INTERRUPTS ; VDSLST = $0200 ;DLI vector VBREAK = $0206 ;BRK vector VKEYBD = $0208 ;keyboard vec SRTIMR = $022B ;key repeat SDMCTL = $022F ;DMA control SDLSTL = $0230 ;display list PCOLR0 = $02C0 PCOLR1 = $02C1 PCOLR2 = $02C2 PCOLR3 = $02C3 COLOR0 = $02C4 COLOR1 = $02C5 COLOR2 = $02C6 COLOR3 = $02C7 COLOR4 = $02C8 CHBAS = $02F4 ;char set SETVBV = $E45C SYSVBV = $E45F XITVBV = $E462 NMIEN = $D40E VCOUNT = $D40B CHBASE = $D409 WSYNC = $D40A CHACT = $02F3 CHACTL = $D401 CRSINH = $02F0 CHRSET = $E000 ;ROM characters ; ;MISC. ; CONSOL = $D01F ;console keys RTCLOK = $14 CH = $02FC MEMLO = $02E7 SHFLOK = $02BE WARMSV = $E474 COLDSV = $E477 LBUFF = $0580 EOL = $9B ; ;Device Vectors ; HATABS = $031A EDITRV = $E400 SCRENV = $E410 KEYBDV = $E420 PRINTV = $E430 CASETV = $E440 ; ;PAGE ZERO LOCATIONS ; CASINI = $02 TRAMSZ = $06 WARMST = $08 BOOT? = $09 DOSVEC = $0A DOSINI = $0C POKMSK = $10 BRKKEY = $11 SOUNDR = $41 CRITIC = $42 ATRACT = $4D KEYDEF = $79 LMARGN = $52 RMARGN = $53 ROWCRS = $54 COLCRS = $55 SAVMSC = $58 RAMTOP = $6A ; ;FLOATING POINT ; FR0 = $D4 FRE = $DA FR1 = $E0 FR2 = $E6 FRX = $EC EEXP = $ED NSIGN = $EE ESIGN = $EF FCHRFLG = $F0 DIGRT = $F1 CIX = $F2 INBUFF = $F3 RADFLG = $FB AFP = $D800 FASC = $D8E6 IFP = $D9AA FPI = $D9D2 ZFR0 = $DA44 ZF1 = $DA46 FSUB = $DA60 FADD = $DA66 FMUL = $DADB FDIV = $DB28 PLYEVL = $DD40 FMOVE = $DDB6 EXP = $DDC0 EXP10 = $DDCC LOG = $DECD LOG10 = $DED1 ; ;STICK, PADDLES, TRIGGERS ; PADDL0 = $0270 PADDL1 = $0271 PADDL2 = $0272 PADDL3 = $0273 STICK0 = $0278 STICK1 = $0279 PTRIG0 = $027C PTRIG1 = $027D PTRIG2 = $027E PTRIG3 = $027F STRIG0 = $0284 STRIG1 = $0285 ; ;AUDIO CONTROL ; AUDF1 = $D200 AUDC1 = $D201 AUDF2 = $D202 AUDC2 = $D203 AUDF3 = $D204 AUDC3 = $D205 AUDF4 = $D206 AUDC4 = $D207 AUDCTL = $D208 SKCTL = $D20F ; ;P/M GRAPHICS ; PMBASE = $D407 GPRIOR = $026F HPOSP0 = $D000 HPOSP1 = $D001 HPOSP2 = $D002 HPOSP3 = $D003 M0PF = $D000 M1PF = $D001 M2PF = $D002 M3PF = $D003 HPOSM0 = $D004 HPOSM1 = $D005 HPOSM2 = $D006 HPOSM3 = $D007 P0PF = $D004 P1PF = $D005 P2PF = $D006 P3PF = $D007 SIZEP0 = $D008 SIZEP1 = $D009 SIZEP2 = $D00A SIZEP3 = $D00B M0PL = $D008 M1PL = $D009 M2PL = $D00A M3PL = $D00B SIZEM = $D00C ;missile size P0PL = $D00C ;player/pf P1PL = $D00D P2PL = $D00E P3PL = $D00F COLPM0 = $D012 COLPM1 = $D013 COLPM2 = $D014 COLPM3 = $D015 COLPF0 = $D016 COLPF1 = $D017 COLPF2 = $D018 COLPF3 = $D019 COLBK = $D01A GRACTL = $D01D HITCLR = $D01E GRAFP0 = $D00D GRAFP1 = $D00E GRAFP2 = $D00F GRAFP3 = $D010 GRAFM = $D011 CHARSET .BYTE $00,$00,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$18,$18,$18 .BYTE $18,$00,$18,$00 .BYTE $00,$66,$66,$66 .BYTE $00,$00,$00,$00 .BYTE $00,$66,$FF,$66 .BYTE $66,$FF,$66,$00 .BYTE $18,$7E,$60,$7E .BYTE $06,$7E,$18,$00 .BYTE $00,$66,$6C,$18 .BYTE $30,$66,$46,$00 .BYTE $1C,$36,$1C,$38 .BYTE $6F,$66,$3B,$00 .BYTE $00,$18,$18,$18 .BYTE $00,$00,$00,$00 .BYTE $00,$1E,$1C,$18 .BYTE $18,$1C,$1E,$00 .BYTE $00,$78,$38,$18 .BYTE $18,$38,$78,$00 .BYTE $00,$66,$3C,$FF .BYTE $3C,$66,$00,$00 .BYTE $00,$18,$18,$7E .BYTE $18,$18,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$1C,$1C,$38 .BYTE $00,$00,$00,$7E .BYTE $7E,$00,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$1C,$1C,$00 .BYTE $00,$00,$07,$0C .BYTE $18,$30,$E0,$00 .BYTE $00,$7E,$66,$6E .BYTE $76,$66,$7E,$00 .BYTE $00,$78,$18,$18 .BYTE $18,$18,$7E,$00 .BYTE $00,$7E,$06,$7E .BYTE $60,$60,$7E,$00 .BYTE $00,$7E,$06,$3E .BYTE $06,$06,$7E,$00 .BYTE $00,$6C,$6C,$6C .BYTE $7C,$0C,$0C,$00 .BYTE $00,$7E,$60,$7E .BYTE $06,$06,$3E,$00 .BYTE $00,$7C,$60,$7E .BYTE $66,$66,$7E,$00 .BYTE $00,$7E,$06,$0E .BYTE $1C,$38,$30,$00 .BYTE $00,$7E,$66,$3C .BYTE $66,$66,$7E,$00 .BYTE $00,$7E,$66,$7E .BYTE $06,$06,$7E,$00 .BYTE $00,$38,$38,$00 .BYTE $38,$38,$00,$00 .BYTE $00,$38,$38,$00 .BYTE $38,$38,$38,$70 .BYTE $00,$1E,$30,$60 .BYTE $30,$1E,$00,$00 .BYTE $00,$00,$7E,$00 .BYTE $00,$7E,$00,$00 .BYTE $00,$78,$0C,$06 .BYTE $0C,$78,$00,$00 .BYTE $00,$7E,$66,$0C .BYTE $18,$00,$18,$00 .BYTE $00,$7E,$66,$6E .BYTE $6E,$60,$7E,$00 .BYTE $00,$7E,$66,$66 .BYTE $7E,$66,$66,$00 .BYTE $00,$7E,$66,$7C .BYTE $66,$66,$7E,$00 .BYTE $00,$7E,$60,$60 .BYTE $60,$60,$7E,$00 .BYTE $00,$7C,$66,$66 .BYTE $66,$66,$7C,$00 .BYTE $00,$7E,$60,$7C .BYTE $60,$60,$7E,$00 .BYTE $00,$7E,$60,$7C .BYTE $60,$60,$60,$00 .BYTE $00,$7E,$60,$60 .BYTE $6E,$66,$7E,$00 .BYTE $00,$66,$66,$7E .BYTE $66,$66,$66,$00 .BYTE $00,$38,$38,$38 .BYTE $38,$38,$38,$00 .BYTE $00,$06,$06,$06 .BYTE $06,$66,$7E,$00 .BYTE $00,$60,$66,$6C .BYTE $7E,$66,$66,$00 .BYTE $00,$60,$60,$60 .BYTE $60,$66,$7E,$00 .BYTE $00,$63,$77,$7F .BYTE $63,$63,$63,$00 .BYTE $00,$7C,$66,$66 .BYTE $66,$66,$66,$00 .BYTE $00,$7E,$66,$66 .BYTE $66,$66,$7E,$00 .BYTE $00,$7E,$66,$66 .BYTE $7E,$60,$60,$00 .BYTE $00,$7E,$66,$66 .BYTE $66,$6C,$76,$00 .BYTE $00,$7E,$66,$66 .BYTE $7C,$6C,$66,$00 .BYTE $00,$7C,$60,$7E .BYTE $06,$06,$3E,$00 .BYTE $00,$7E,$18,$18 .BYTE $18,$18,$18,$00 .BYTE $00,$66,$66,$66 .BYTE $66,$66,$7E,$00 .BYTE $00,$66,$66,$66 .BYTE $66,$3C,$18,$00 .BYTE $00,$63,$63,$63 .BYTE $7F,$77,$63,$00 .BYTE $00,$66,$66,$3C .BYTE $3C,$66,$66,$00 .BYTE $00,$66,$66,$7E .BYTE $18,$18,$18,$00 .BYTE $00,$7E,$6C,$18 .BYTE $30,$66,$7E,$00 .BYTE $00,$1E,$18,$18 .BYTE $18,$18,$1E,$00 .BYTE $00,$00,$E0,$30 .BYTE $18,$0C,$07,$00 .BYTE $00,$78,$18,$18 .BYTE $18,$18,$78,$00 .BYTE $00,$08,$1C,$36 .BYTE $63,$63,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$00,$FF,$FF .BYTE $00,$00,$3C,$7E .BYTE $00,$7E,$3C,$00 .BYTE $00,$5D,$54,$5D .BYTE $00,$01,$00,$01 .BYTE $00,$01,$00,$11 .BYTE $10,$11,$00,$00 .BYTE $C0,$C0,$C0,$C0 .BYTE $C0,$C0,$C0,$C0 .BYTE $C0,$C0,$C0,$C0 .BYTE $D0,$CC,$FC,$00 .BYTE $00,$00,$30,$78 .BYTE $CC,$C6,$03,$00 .BYTE $00,$0C,$1E,$33 .BYTE $61,$C0,$80,$00 .BYTE $00,$00,$3F,$7F .BYTE $E0,$C0,$C0,$C0 .BYTE $00,$00,$FF,$FF .BYTE $00,$00,$00,$00 .BYTE $00,$00,$FC,$FE .BYTE $07,$73,$3B,$1B .BYTE $C0,$C0,$C0,$C0 .BYTE $C0,$C0,$C0,$C0 .BYTE $03,$03,$03,$03 .BYTE $03,$03,$03,$03 .BYTE $C0,$D8,$D8,$CC .BYTE $E0,$7F,$3F,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$FF,$FF,$00 .BYTE $03,$03,$03,$03 .BYTE $07,$FE,$FC,$00 .BYTE $FF,$81,$81,$81 .BYTE $81,$81,$81,$FF .BYTE $00,$00,$0F,$08 .BYTE $08,$08,$F8,$00 .BYTE $00,$00,$E0,$20 .BYTE $20,$20,$3F,$00 .BYTE $00,$10,$18,$FC .BYTE $FC,$18,$10,$00 .BYTE $00,$08,$18,$3F .BYTE $3F,$18,$08,$00 .BYTE $00,$00,$00,$FF .BYTE $FF,$00,$00,$00 .BYTE $00,$00,$03,$03 .BYTE $03,$03,$00,$00 .BYTE $00,$00,$C0,$C0 .BYTE $C0,$C0,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$18,$3C,$7E .BYTE $18,$18,$18,$00 .BYTE $00,$18,$18,$18 .BYTE $7E,$3C,$18,$00 .BYTE $00,$18,$30,$7E .BYTE $30,$18,$00,$00 .BYTE $00,$18,$0C,$7E .BYTE $0C,$18,$00,$00 .BYTE $00,$18,$3C,$7E .BYTE $7E,$3C,$18,$00 .BYTE $00,$00,$7E,$06 .BYTE $7E,$66,$7E,$00 .BYTE $00,$60,$60,$7E .BYTE $66,$66,$7E,$00 .BYTE $00,$00,$7C,$60 .BYTE $60,$60,$7C,$00 .BYTE $00,$06,$06,$7E .BYTE $66,$66,$7E,$00 .BYTE $00,$00,$7E,$66 .BYTE $7E,$60,$7C,$00 .BYTE $00,$1E,$18,$7E .BYTE $18,$18,$18,$00 .BYTE $00,$00,$7E,$66 .BYTE $66,$7E,$06,$7E .BYTE $00,$60,$60,$7E .BYTE $66,$66,$66,$00 .BYTE $00,$18,$00,$38 .BYTE $18,$18,$18,$00 .BYTE $00,$06,$00,$06 .BYTE $06,$06,$06,$3E .BYTE $00,$60,$60,$6C .BYTE $78,$6C,$66,$00 .BYTE $00,$38,$18,$18 .BYTE $18,$18,$18,$00 .BYTE $00,$00,$C6,$EE .BYTE $FE,$C6,$C6,$00 .BYTE $00,$00,$7E,$66 .BYTE $66,$66,$66,$00 .BYTE $00,$00,$7E,$66 .BYTE $66,$66,$7E,$00 .BYTE $00,$00,$7E,$66 .BYTE $66,$7E,$60,$60 .BYTE $00,$00,$7E,$66 .BYTE $66,$7E,$06,$06 .BYTE $00,$00,$7E,$66 .BYTE $60,$60,$60,$00 .BYTE $00,$00,$7E,$60 .BYTE $7E,$06,$7E,$00 .BYTE $00,$18,$7E,$18 .BYTE $18,$18,$1E,$00 .BYTE $00,$00,$66,$66 .BYTE $66,$66,$7E,$00 .BYTE $00,$00,$66,$66 .BYTE $66,$3C,$18,$00 .BYTE $00,$00,$63,$63 .BYTE $7F,$3E,$36,$00 .BYTE $00,$00,$66,$3C .BYTE $18,$3C,$66,$00 .BYTE $00,$00,$66,$66 .BYTE $66,$7E,$0E,$7E .BYTE $00,$00,$7E,$0E .BYTE $18,$70,$7E,$00 .BYTE $00,$18,$3C,$7E .BYTE $7E,$18,$3C,$00 .BYTE $18,$18,$18,$18 .BYTE $18,$18,$18,$18 .BYTE $00,$7E,$78,$7C .BYTE $6E,$66,$06,$00 .BYTE $08,$18,$38,$78 .BYTE $38,$18,$08,$00 .BYTE $10,$18,$1C,$1E .BYTE $1C,$18,$10,$00 ; SAVE#D:ROBOX4.M65 ; DLIST .BYTE $70,$70,$70,$F0,$42 .WORD STATUS .BYTE $A0,$42 .WORD SCMEM .BYTE 2,2,2,2,2,2,2,2,2,2,2 .BYTE 2,2,2,2,$A0,$42 .WORD BOTTOM .BYTE 2,2,2,$42 .WORD BOTTOM .BYTE $41 .WORD DLIST ; ;Introduction Display List ; IDLST .BYTE $70,$70,$70,$70,$70 .BYTE $70,$70,$70,$70,$42 .WORD ITEXT .BYTE $70,$02,$41 .WORD IDLST ; A2I .BYTE $40,$00,$20,$60 I2A .BYTE $20,$40,$00,$60 DLICLRS .BYTE $04,$92,$02 DLICLRS2 .BYTE $0A,$0A,$0C BOXPOS .BYTE 111,115,119,123,127,131,135,139 ; STATUS .SBYTE ". Terminal Type: XV-BBK/7M:QSO ." BOTTOM .SBYTE ". ........ .......... ........ ." .SBYTE " .... .... " .SBYTE " .... .. .. 00 .. .. .... " .SBYTE " .... .. .. .... " ITEXT .SBYTE " press " .SBYTE " START " ; ;Special Keys codes ; KEYS .BYTE $FF,$FE,$FD,$9F,$9E .BYTE $9D,$9C,$9B,$7F,$7E .BYTE $7D,$1F,$1E,$1D,$1C .BYTE $1B ;INTRO PLAYER POSITS PLXPOS .BYTE 64,95,129,160 ; INTRO LDA #<IDLST STA SDLSTL LDA #>IDLST STA SDLSTL+1 LDA #0 STA COLOR2 STA COLOR4 ; LDY #0 SETC1 STY COLOR1 JSR WAITJIFF JSR WAITJIFF INY CPY #16 BNE SETC1 LDA #1 STA GPRIOR ; WAITCN LDA CONSOL CMP #6 BNE WAITCN ; LDA #<DLIST STA SDLSTL LDA #>DLIST STA SDLSTL+1 ; LDY #3 SETP1 LDA #$FF STA GRAFP0,Y LDA #0 STA PCOLR0,Y LDA #3 STA SIZEP0,Y DEY BPL SETP1 ; LDX #61 MOVP1 LDY #3 MOVP2 LDA PLXPOS,Y STA HPOSP0,Y DEY BPL MOVP2 JSR WAITJIFF JSR WAITJIFF JSR WAITJIFF DEC PLXPOS DEC PLXPOS+1 INC PLXPOS+2 INC PLXPOS+3 DEX BPL MOVP1 LDA #0 LDX #3 CLRP1 STA HPOSP0,X DEX BPL CLRP1 RTS WAITJIFF PHA LDA #0 STA RTCLOK WAITJ1 LDA RTCLOK BEQ WAITJ1 PLA RTS ; ERASEPM LDA #0 TAY ERPM STA PLR0,Y STA PLR1,Y STA PLR2,Y STA PLR3,Y INY BNE ERPM RTS ; ;Put a byte to the screen ; CLRSCR LDA #125 EPUT CMP #EOL ;a CR? BNE TRYDEL PUTCR LDA #0 STA XPOS INC YPOS JMP SCROLL ; TRYDEL CMP #126 ;delete? BNE TRYCLR JSR MOVELEFT JSR GETSCR LDA #0 TAY STA (SCR),Y RTS TRYCLR CMP #125 BNE NORMAL LDY #0 TYA CLRSC STA SCMEM,Y STA SCMEM+$0100,Y STA SCMEM+$0200,Y INY BNE CLRSC STA XPOS STA YPOS RTS ; NORMAL JSR ASC2IC PHA JSR GETSCR LDY #0 PLA STA (SCR),Y ; GORIGHT LDX XPOS INX CPX #$20 BCC EPLEAV INC YPOS JSR SCROLL LDX #0 EPLEAV STX XPOS RTS ; MOVELEFT LDA XPOS TAX ORA YPOS BEQ GOLEAV DEX BPL GOX LDX #31 LDY YPOS BNE MVUP LDX #0 BEQ GOX MVUP DEC YPOS GOX STX XPOS GOLEAV RTS ; GETSCR LDA #<[SCMEM-32] STA SCR LDA #>[SCMEM-32] STA SCR+1 LDY YPOS GETSC1 LDA SCR CLC ADC #$20 STA SCR BCC GODWN INC SCR+1 GODWN DEY BPL GETSC1 LDA SCR CLC ADC XPOS STA SCR BCC GETSCDN INC SCR+1 GETSCDN RTS ; SCROLL LDY YPOS CPY #BOTLIN BCC SCMOVEDN LDA #BOTLIN-1 STA YPOS LDA #<SCMEM STA SCR LDA #>SCMEM STA SCR+1 LDA #<[SCMEM+32] STA SCR2 LDA #>[SCMEM+32] STA SCR2+1 LDX #0 SCMOVE LDY #31 SCMOVIT LDA (SCR2),Y STA (SCR),Y DEY BPL SCMOVIT LDA SCR2+1 STA SCR+1 LDA SCR2 STA SCR CLC ADC #$20 STA SCR2 LDA SCR2+1 ADC #0 STA SCR2+1 INX CPX #BOTLIN BNE SCMOVE SCMOVEDN RTS ; ; ASC2IC JSR BITER ORA A2I,X LDX SAVX2 RTS ; ; IC2ASC JSR BITER ORA I2A,X LDX SAVX2 RTS ; BITER PHA ROL A ROL A ROL A ROL A AND #3 STX SAVX2 TAX PLA AND #$9F RTS ; EPUTX STX SAVEX JSR EPUT LDX SAVEX RTS ; GETKEY LDA CH CMP #$FF BEQ GETKEY LDX #$FF STX CH STA OLDC K0 TAY CPY #192 BCC K1 LDY #$9A K1 LDA (KEYDEF),Y STA OLDAC CMP #$80 BEQ GETKEY CMP #$81 BNE K2 LDA PAUSE? EOR #1 STA PAUSE? JMP GETKEY ; K2 CMP #$82 BNE K3 LDA CAPS EOR #$40 STA CAPS JMP GETKEY ; K3 CMP #$83 BNE K4 LDA #$40 STA CAPS BNE GETKEY ; K4 CMP #$84 BNE K5 ;click? LDA CLICK? EOR #1 STA CLICK? JMP GETKEY ; K5 CMP #$85 BEQ GETKEY LDA OLDC CMP #64 BCC K6 LDA OLDAC CMP #97 BCC K6 CMP #123 BCS K6 LDA CAPS BEQ K6 ORA OLDC JMP K0 ; K6 LDX #15 K7 LDA KEYS,X CMP OLDAC BEQ K9 DEX BPL K7 LDA OLDAC K9 CMP #$20 BCC GETKEY LDY CLICK? BEQ K10 LDY #$7F CLKIT STY CONSOL LDX #8 CLK1 DEX BNE CLK1 DEY BPL CLKIT K10 RTS ; EPRINT JSR EXPANDIT LDA #<EXPBUF STA INDR LDA #>EXPBUF STA INDR+1 LDA #0 STA EOLFLAG PPAGE LDY #0 PLINE LDA (INDR),Y STA MYBUF,Y INY CMP #EOL BNE PLN2 INC EOLFLAG BNE BREAK PLN2 CPY #LINELEN BNE PLINE DEY SLOOP LDA (INDR),Y CMP #32 BEQ SBRK DEY BNE SLOOP LDY #LINELEN-1 SBRK INY BREAK STY TEMP LDY #0 COPY LDA (INDR),Y STY SAVEY CMP #EOL BEQ COP1 JSR EPUT COP1 LDA PAUSE? BEQ RESY JSR WAITJIFF JSR WAITJIFF RESY LDY SAVEY INY CPY TEMP BNE COPY TYA CLC ADC INDR STA INDR BCC EPRPOS INC INDR+1 EPRPOS LDA XPOS BEQ EOLTEST JSR PUTCR EOLTEST LDA EOLFLAG BEQ PPAGE RTS ; EXPANDIT STA INDR STY INDR+1 LDX #$FF ;RESULT LDY #$FF ;ENTRY EXP1 INY INX LDA (INDR),Y STA EXPBUF,X CMP #EOL BNE EXP2 RTS ;FINISHED! EXP2 AND #$7F CMP #$20 BCS EXP1 LDA (INDR),Y BPL EXPNV AND #$7F CLC ADC #$20 EXPNV STY SAVEY ASL A TAY LDA TOKADR,Y STA EXPADR+1 LDA TOKADR+1,Y STA EXPADR+2 LDY #$FF DEX EXPLP INY INX EXPADR LDA $FFFF,Y STA EXPBUF,X BPL EXPLP AND #$7F STA EXPBUF,X LDY SAVEY JMP EXP1 ;Input Routine ; INPUT LDA #'> JSR EPUT LDX #1 STX IPUT DEX STX ILEN ; INLOOP STX SAVEX JSR GETKEY LDX SAVEX CMP #EOL BEQ INDONE AND #$7F CMP #$20 BCC INLOOP CMP #126 ;Delete? BNE INEXT CPX #$00 BEQ INLOOP DEX JSR EPUTX JMP INLOOP ; INEXT CMP #96 BEQ INLOOP CMP #123 BCS INLOOP STA CHAR CMP #'A BCC NOTUP CMP #'Z+1 BCS NOTUP CLC ADC #$20 NOTUP CPX #63 BEQ INLOOP STA MYBUF,X LDA CHAR JSR EPUTX INX BNE INLOOP ; INDONE STA MYBUF,X STX ILEN DEC IPUT JMP EPUT ; VBLANK CLD LDA #0 TAX VBL1 STA PLR0,X INX BNE VBL1 LDA IPUT BEQ VBI1.OUT LDA XPOS ASL A ASL A CLC ADC #48+16 STA HPOSP0 LDA YPOS ASL A ASL A ASL A CLC ADC #39+19 TAX ; LDA SRTIMR BEQ BLINK? ; LDA #$F0 STA PLR0,X STA CSHAPE LDA #60 STA BLINK ; BLINK? LDA CSHAPE DEC BLINK BNE VEXIT ; LDY #30 STY BLINK EOR #$F0 STA CSHAPE VEXIT STA PLR0,X ; VBI1.OUT INC MYCNT2 LDA MYCNT2 CMP #2 BNE VBI1.XIT LDA #0 STA MYCNT2 ROTAT LDX #7 MAPSCV LDA CHARSET+$0230,X ;^F ASL A STA CHARSET+$0230,X ROL CHARSET+$0228,X BCC MAPP2 LDA #1 CLC ADC CHARSET+$0230,X STA CHARSET+$0230,X MAPP2 LDA CHARSET+$0288,X ASL A STA CHARSET+$0288,X ROL CHARSET+$0280,X BCC MAPP3 LDA #1 CLC ADC CHARSET+$0288,X STA CHARSET+$0288,X MAPP3 DEX BPL MAPSCV VBI1.XIT JMP XITVBV ; ;Immediate Vblank ; VBI2 LDA #0 STA DLIDX LDX GOFLAG BEQ VBI2.XIT INC MYCOUNT LDX MYCOUNT CPX #8 BNE VBI2.XIT STA MYCOUNT LDY BLKPOS INY CPY #8 BNE NON0 LDY #0 NON0 STY BLKPOS LDA BOXPOS,Y STA HPOSP1 TYA EOR #7 TAY LDA BOXPOS,Y STA HPOSP2 ; LDY #12 VB2F LDA CHARSET+$0218,Y CMP #$D0 BEQ VB2FN DEY BPL VB2F INY VB2FN LDA #$C0 STA CHARSET+$0218,Y LDA #$D0 CPY #0 BNE VB2OK LDY #13 VB2OK STA CHARSET+$0217,Y VBI2.XIT JMP SYSVBV ; ;Display List Interrupt ; DLI1 PHA TXA PHA LDX DLIDX LDA DLICLRS,X STA COLPF2 STA WSYNC LDA DLICLRS2,X STA COLPF1 STA WSYNC INC DLIDX PLA TAX PLA RTI ; ;Routine Test ; BEGIN LDA KEYDEF ORA KEYDEF+1 BNE GOCLR LDA #$FE STA KEYDEF STA KEYDEF+1 GOCLR JSR CLRSCR STA IPUT STA COLOR4 STA CAPS STA PAUSE? INC PAUSE? STA CLICK? STA DLIDX STA BLKPOS STA MYCOUNT STA MYCNT2 STA GOFLAG LDA #>CHARSET STA CHBAS LDA #$F0 STA CSHAPE LDA #30 STA BLINK LDA #61 STA SDMCTL LDA #7 LDY #<VBLANK LDX #>VBLANK JSR SETVBV LDA #6 LDY #<VBI2 LDX #>VBI2 JSR SETVBV LDA #<DLI1 STA VDSLST LDA #>DLI1 STA VDSLST+1 LDA #$C0 STA NMIEN JSR INTRO LDA #>MYPM STA PMBASE LDA #3 STA GRACTL JSR ERASEPM STA SIZEP0 STA SIZEP1 STA SIZEP2 LDA #$44 STA PCOLR0 LDA #$38 STA PCOLR1 LDA #$A8 STA PCOLR2 INC GOFLAG LDY #5 LDA #$78 DEFP1 STA PLR1+183,Y STA PLR2+215,Y DEY BPL DEFP1