A.N.A.L.O.G. ISSUE 59 / APRIL 1988 / PAGE 81

Labyrinths

An aMAZE-ing 3-D adventure game

by Steven Lashower

Finally, some time to yourself—the first time in many days. You sit down at your computer for a nice intellectual game of Star Raiders. Just as you’re ready to zap some Zylons, the doorbell rings.

“Somebody better have a very good reason for this,” you mumble as you go to the door and open it. On the other side of the door is an alien. “Hello, earthling,” he says. “My name is Beef Strovanoff and I’m from the planet of Argonia.”

The alien continues: “You have been selected to represent your local star system in the Labyrinths of Argonia. If you accomplish this impossible task, you will be rewarded with treasures beyond your wildest dreams. But if you fail, you will be disposed of…We love incentive.”

The alien then raises what looks like a “Kill-O-Zap” brand atomic teleport gun. He fires it at you.

Playing Labyrinths

Labyrinths is a one-player maze game written in 100 percent machine language and will run on all 8-bit Atari computers. It features colorful first perspective graphics that really place you in the maze. Type in Listing 1 using M/L Editor (see page 80) to create your copy of the game. Load the game using option L from the Atari DOS menu.

When the game boots up, you’re presented with the title page. Here, you can select between several options.

Pressing OPTION will change the number of “Argonian Patrollers” that are in the maze with you. You can choose from 0 to 6 Patrollers. The more Patrollers in the maze, the more difficult the game is. Pressing SELECT will determine whether the game is played in a “daytime” or “nightime” atmosphere and pressing START will, of course, begin the game. At any point during the game, pressing ESC will return you to the title page.

You—the flashing blue dot—appear in the upper-left corner of the maze. The object, simple enough, is to escape from the maze. The exit is in the lower-right corner of the maze. In the center of the screen is a graphic window of what appears in the maze. To the right of this is a black area that will fill up with the maze as you explore new areas of it. If you’re playing with Argonian Patrollers, they will also appear in this area as white dots.

At the bottom of the screen is a timer that displays how long you’ve been in the maze. There’s also a compass to show which direction you’re facing.

You move through the maze by using a joystick plugged into port 1. Pushing the stick forward will move you in the direction the compass is facing. Pulling back on the stick will move you backward (away from the direction the compass is facing). Pushing the stick to the left or right will turn you in the appropriate direction.

If you happen to come across a Patroller in the maze, it will appear as a pulsing square in the graphic window. The size of this square depends on how close the Patroller is to you. Coming in contact with a Patroller means immediate destruction for you (these things really are mean).

So, what are you waiting for? Get lost in Labyrinths.


Steven Lashower, a high school senior, has owned an Atari for seven years. He’s been programming in assembly language for almost two years. Labyrinths is his first major machine language project. He also has a part-time job at Disneyland.


Listing 1.
“M/L Editor” Data

1000 DATA 255,255,0,120,251,120,169,0,141,47,2,133,138,169,255,133,8873
1010 DATA 154,32,42,128,169,92,133,132,169,135,133,133,32,147,132,169,8338
1020 DATA 197,141,47,142,169,65,141,159,126,169,129,141,160,126,169,0,8016
1030 DATA 162,0,149,148,232,224,5,208,249,133,147,169,60,141,28,2,6856
1040 DATA 160,186,162,120,169,7,32,92,228,169,1,133,140,169,2,133,6078
1050 DATA 141,169,3,133,144,169,50,133,142,32,206,125,76,160,122,72,6792
1060 DATA 138,72,166,147,224,0,208,25,232,134,147,162,144,142,23,208,9726
1070 DATA 232,232,141,10,212,224,160,208,244,169,10,141,23,208,76,182,368
1080 DATA 120,169,10,141,24,208,169,4,141,23,208,166,147,165,155,201,256
1090 DATA 0,208,6,189,78,124,76,150,120,189,96,124,141,20,208,141,8149
1100 DATA 21,208,232,134,147,224,17,208,19,169,0,133,147,169,248,141,341
1110 DATA 22,208,169,10,141,23,208,169,0,141,24,208,104,170,104,64,6232
1120 DATA 238,192,2,238,193,2,173,193,2,201,159,208,5,169,144,141,9552
1130 DATA 193,2,165,187,201,0,240,2,198,187,165,138,201,255,208,3,1745
1140 DATA 76,98,228,173,28,2,201,0,208,27,169,60,141,28,2,230,5003
1150 DATA 148,162,0,181,148,221,36,134,208,6,169,0,149,148,246,149,9610
1160 DATA 232,224,252,120,247,121,5,208,238,162,0,181,148,24,105,16,6761
1170 DATA 188,31,134,153,147,129,232,224,5,208,240,165,154,201,255,240,6585
1180 DATA 8,198,154,24,101,158,141,1,210,162,0,181,223,201,69,240,860
1190 DATA 17,201,160,208,8,169,0,142,0,208,76,98,228,232,224,5,8855
1200 DATA 208,233,189,41,134,141,0,208,189,47,134,141,8,208,189,62,7965
1210 DATA 134,133,157,160,0,169,0,153,0,116,200,208,250,189,57,134,9710
1220 DATA 168,189,52,134,153,0,116,200,196,157,208,245,76,98,228,169,2681
1230 DATA 92,133,132,169,135,133,133,136,192,0,240,8,165,142,32,124,7213
1240 DATA 122,76,109,121,138,32,124,122,162,0,165,144,201,1,208,46,6535
1250 DATA 165,142,32,124,122,160,0,177,132,133,146,165,142,24,105,1,5154
1260 DATA 32,134,122,160,0,177,132,149,203,200,177,132,149,193,200,177,3573
1270 DATA 132,149,213,232,165,142,32,134,122,224,8,208,230,96,165,144,1275
1280 DATA 201,3,208,46,160,0,165,142,32,134,122,177,132,133,146,165,8888
1290 DATA 142,56,233,1,32,124,122,160,0,177,132,149,213,200,177,132,631
1300 DATA 149,193,200,177,132,149,203,232,165,142,32,124,122,224,8,208,889
1310 DATA 230,96,165,144,201,4,208,64,160,0,177,132,153,193,0,200,8662
1320 DATA 192,8,248,121,243,122,208,246,160,0,169,1,32,134,122,177,8392
1330 DATA 132,133,146,169,1,32,124,122,165,142,32,134,122,177,132,153,8240
1340 DATA 203,0,200,192,8,208,246,165,142,24,101,142,32,124,122,160,8116
1350 DATA 0,177,132,153,213,0,200,192,8,208,246,96,160,0,162,0,7233
1360 DATA 177,132,149,193,169,1,32,134,122,232,224,8,208,242,169,9,9916
1370 DATA 32,124,122,177,132,133,146,169,1,24,101,142,32,134,122,162,6334
1380 DATA 0,177,132,149,213,169,1,32,134,122,232,224,8,208,242,169,2084
1390 DATA 8,24,101,142,101,142,32,124,122,162,0,177,132,149,203,169,9283
1400 DATA 1,32,134,122,232,224,8,208,242,96,24,101,132,133,132,144,9055
1410 DATA 16,230,133,96,133,143,56,165,132,229,143,133,132,176,2,198,9929
1420 DATA 133,96,160,32,160,32,197,197,0,0,10,10,0,10,164,141,1386
1430 DATA 166,140,32,101,121,32,244,133,160,0,132,138,185,193,0,162,8192
1440 DATA 0,201,197,208,5,133,138,76,114,124,201,160,208,3,76,114,7769
1450 DATA 124,152,24,133,159,125,154,122,168,185,203,0,201,69,208,2,8407
1460 DATA 169,32,134,153,221,148,122,208,7,164,159,134,138,32,43,123,7133
1470 DATA 166,153,232,164,159,224,6,208,216,200,192,5,208,190,169,7,1266
1480 DATA 133,85,244,122,239,123,169,2,133,145,164,145,169,0,133,143,8806
1490 DATA 32,219,126,230,145,165,145,201,12,208,239,160,5,185,193,0,9883
1500 DATA 200,201,160,208,5,169,5,76,35,123,201,197,208,5,169,0,6525
1510 DATA 76,35,123,169,7,133,143,32,219,126,76,195,124,132,134,185,9628
1520 DATA 162,127,170,202,165,138,201,3,240,8,201,5,240,4,201,2,7072
1530 DATA 208,12,169,12,56,229,134,133,135,160,0,76,85,123,169,2,5094
1540 DATA 24,101,134,133,135,160,0,232,200,152,24,105,4,133,84,165,6849
1550 DATA 135,133,85,165,138,201,0,240,29,201,2,240,19,201,3,240,8801
1560 DATA 9,201,1,240,5,169,0,76,135,123,189,13,124,76,135,123,5930
1570 DATA 189,214,123,76,135,123,189,159,123,134,136,132,137,133,143,32,8695
1580 DATA 219,126,166,136,164,137,192,11,208,189,164,134,169,0,133,138,9741
1590 DATA 96,6,1,1,1,1,1,1,1,1,1,3,0,6,1,1,1912
1600 DATA 1,1,1,1,1,3,0,0,0,6,1,1,1,1,1,3,1806
1610 DATA 0,0,0,0,0,6,1,1,1,3,0,0,0,0,0,0,1700
1620 DATA 0,6,1,3,0,0,0,0,4,1,1,1,1,1,1,1,1774
1630 DATA 1,1,2,0,4,1,1,1,1,1,1,1,2,0,0,0,1748
1640 DATA 4,1,240,123,235,124,1,1,1,1,2,0,0,0,0,0,4833
1650 DATA 4,1,1,1,2,0,0,0,0,0,0,0,4,1,2,0,1769
1660 DATA 0,0,0,0,5,5,5,5,5,5,5,5,5,0,0,0,2065
1670 DATA 5,5,5,5,5,5,5,0,0,0,0,0,5,5,5,5,2100
1680 DATA 5,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,1835
1690 DATA 0,0,0,0,5,0,0,0,0,0,9,7,5,3,1,3,2068
1700 DATA 4,5,6,7,0,159,157,155,153,151,149,147,145,240,242,244,4122
1710 DATA 246,248,250,252,0,0,0,0,0,0,0,0,0,0,0,0,4210
1720 DATA 0,2,4,6,8,10,0,0,136,132,134,185,68,124,133,139,4937
1730 DATA 185,73,124,133,85,185,162,127,170,202,133,134,166,134,160,0,9705
1740 DATA 152,133,84,230,84,230,84,200,232,132,137,134,136,165,138,201,3205
1750 DATA 197,208,5,169,0,76,165,124,189,13,124,133,143,164,84,32,6375
1760 DATA 219,126,164,137,166,136,192,10,208,214,198,139,165,139,240,9,2034
1770 DATA 230,85,166,134,160,0,76,138,124,32,221,127,165,194,133,163,495
1780 DATA 165,146,133,164,165,155,201,1,240,33,32,70,128,162,0,169,6780
1790 DATA 0,157,0,117,232,208,248,165,140,24,105,145,141,1,208,24,7782
1800 DATA 165,141,236,124,231,125,24,105,74,168,169,1,153,0,117,162,6917
1810 DATA 1,189,137,132,56,233,128,188,142,132,153,147,129,232,224,5,1616
1820 DATA 208,239,164,144,185,137,132,190,142,132,157,147,129,169,62,141,1083
1830 DATA 47,2,32,170,126,166,140,164,141,32,101,121,32,244,133,173,9322
1840 DATA 120,2,201,15,240,236,173,120,2,201,14,208,40,165,163,201,583
1850 DATA 32,240,14,201,69,240,10,201,197,208,3,76,67,134,76,112,7148
1860 DATA 125,166,144,202,189,12,134,168,24,185,140,0,125,4,134,153,6601
1870 DATA 140,0,76,185,125,201,13,208,43,165,164,201,32,240,17,201,64
1880 DATA 69,240,13,201,197,208,3,76,67,134,32,178,127,76,24,125,5640
1890 DATA 166,144,202,189,12,134,168,24,185,140,0,125,8,134,153,140,7018
1900 DATA 0,76,185,125,201,11,208,18,32,207,127,230,144,165,144,201,1851
1910 DATA 5,208,32,169,1,133,144,76,185,125,201,7,240,3,76,24,5418
1920 DATA 125,32,207,127,198,144,165,144,201,0,208,7,169,4,133,144,8132
1930 DATA 76,185,125,32,191,125,76,160,122,169,0,133,20,32,170,126,6054
1940 DATA 165,20,56,233,6,144,246,96,169,13,141,199,2,169,0,141,6867
1950 DATA 198,2,133,189,169,4,141,196,2,169,144,141,193,2,169,2,6819
1960 DATA 141,111,232,125,227,126,2,169,52,141,48,2,169,126,141,49,6066
1970 DATA 2,169,120,141,1,2,169,89,141,0,2,169,192,141,14,212,6537
1980 DATA 169,3,141,10,208,141,11,208,169,104,141,2,208,169,116,141,9447
1990 DATA 3,208,162,0,169,0,157,0,116,157,0,117,169,255,157,0,6979
2000 DATA 118,157,0,119,232,208,237,169,112,141,7,212,169,2,141,29,8170
2010 DATA 208,96,112,112,240,70,188,134,12,32,2,0,2,2,48,128,474
2020 DATA 78,0,144,14,14,14,14,14,14,14,14,14,142,14,14,14,6014
2030 DATA 14,14,14,14,14,142,14,14,14,14,14,14,14,142,14,14,6494
2040 DATA 14,14,14,142,14,14,14,142,14,14,142,14,142,14,142,142,2520
2050 DATA 14,14,142,14,142,14,14,14,142,14,14,14,14,14,142,14,8050
2060 DATA 14,14,14,14,14,14,142,14,14,14,14,14,14,14,14,142,6908
2070 DATA 14,14,14,14,14,14,14,14,14,14,142,112,66,0,0,2,6636
2080 DATA 2,2,2,2,2,65,52,126,32,0,103,162,255,165,191,240,9567
2090 DATA 17,232,181,165,197,140,208,6,181,172,197,141,240,5,228,191,3977
2100 DATA 208,239,96,169,113,141,159,126,169,131,141,160,126,169,69,133,751
2110 DATA 223,169,0,141,0,210,76,79,134,185,86,127,133,128,169,0,7241
2120 DATA 133,129,228,126,223,127,6,128,38,129,6,128,38,129,165,128,6699
2130 DATA 24,105,0,133,130,165,129,105,80,133,131,6,128,38,129,6,4069
2140 DATA 128,38,129,165,128,24,101,130,133,130,165,129,101,131,133,131,9020
2150 DATA 165,130,24,101,85,105,12,133,130,144,2,230,131,164,143,185,9750
2160 DATA 169,127,133,128,169,0,133,129,133,162,24,105,127,133,129,165,8731
2170 DATA 128,24,105,98,133,128,144,2,230,129,164,162,177,128,160,0,9111
2180 DATA 145,130,230,162,165,162,201,8,240,13,165,130,24,105,20,133,7066
2190 DATA 130,144,231,230,131,208,227,96,1,5,13,21,29,37,45,53,1353
2200 DATA 61,69,77,85,0,0,0,0,0,0,0,0,255,191,255,247,6736
2210 DATA 255,255,223,255,255,127,63,31,15,7,3,1,255,254,254,248,2289
2220 DATA 240,224,192,128,1,3,7,15,31,63,127,255,87,255,213,213,858
2230 DATA 213,255,87,87,128,192,224,240,248,252,254,255,0,129,227,255,8739
2240 DATA 255,195,129,0,0,11,22,33,44,55,66,0,8,16,24,32,6628
2250 DATA 40,48,56,64,169,70,141,0,210,169,15,133,154,169,0,133,6899
2260 DATA 158,173,120,2,133,188,32,170,126,165,188,205,120,2,240,246,2945
2270 DATA 96,169,0,141,0,210,169,8,133,154,169,32,133,158,96,169,8840
2280 DATA 0,133,224,127,219,128,128,169,80,133,129,169,0,133,130,169,9850
2290 DATA 144,133,131,165,128,24,105,80,133,128,144,2,230,129,160,14,7417
2300 DATA 169,89,133,143,162,32,177,128,145,130,200,192,25,208,247,160,3494
2310 DATA 14,165,128,24,105,20,133,128,144,2,230,129,165,130,24,105,7133
2320 DATA 40,133,130,144,2,230,131,198,143,165,143,201,0,208,215,96,2078
2330 DATA 169,137,133,129,169,0,133,128,160,0,169,0,145,128,200,192,9536
2340 DATA 0,208,249,230,129,165,129,201,160,208,237,96,165,140,133,160,4508
2350 DATA 165,141,133,161,169,2,133,156,162,0,169,16,133,132,169,144,8801
2360 DATA 133,133,164,144,134,136,165,144,201,1,240,9,201,4,240,5,8536
2370 DATA 138,24,105,10,170,181,203,201,160,208,11,185,26,134,170,214,1925
2380 DATA 160,32,194,128,246,160,166,136,165,144,201,2,240,9,201,3,9607
2390 DATA 240,5,138,24,105,10,170,181,203,201,160,208,11,185,26,134,9733
2400 DATA 170,246,160,32,194,128,214,160,166,136,181,193,201,160,240,20,4120
2410 DATA 24,185,21,134,170,181,160,121,16,134,149,160,166,136,232,224,3596
2420 DATA 6,208,161,96,32,194,128,96,72,138,72,152,72,165,161,10,7162
2430 DATA 133,128,169,0,42,133,129,6,128,38,129,6,128,165,128,133,6330
2440 DATA 130,38,220,128,215,129,129,165,129,133,131,6,128,38,129,6,6121
2450 DATA 128,38,129,165,128,24,101,130,133,128,165,129,101,131,133,129,9278
2460 DATA 165,132,24,105,10,24,101,128,133,128,165,133,101,129,133,129,8372
2470 DATA 165,160,41,3,170,165,160,74,74,24,101,128,133,128,165,129,8255
2480 DATA 105,0,133,129,164,156,189,61,129,57,53,129,133,159,189,57,8631
2490 DATA 129,160,0,49,128,5,159,145,128,104,168,104,170,104,96,0,6472
2500 DATA 85,170,255,63,207,243,252,192,48,12,3,0,0,81,82,82,3996
2510 DATA 82,82,82,82,82,82,82,82,82,82,69,0,0,0,0,0,7779
2520 DATA 0,0,0,0,0,0,0,35,111,109,112,97,115,115,0,0,390
2530 DATA 0,0,0,0,0,124,52,105,109,101,0,37,108,97,112,115,3195
2540 DATA 101,100,124,0,0,0,0,0,0,0,0,0,0,0,0,0,3213
2550 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,16,4542
2560 DATA 26,16,16,26,16,16,14,16,16,0,124,0,0,0,0,0,4680
2570 DATA 0,0,0,0,0,0,0,0,46,111,114,116,104,0,0,0,8092
2580 DATA 0,0,0,0,0,90,82,82,82,82,82,82,82,82,82,82,2550
2590 DATA 82,82,67,0,0,0,0,0,0,0,0,0,0,0,0,0,3037
2600 DATA 0,0,216,129,211,130,92,0,0,0,0,0,0,0,0,0,6243
2610 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2610
2620 DATA 0,0,0,0,0,0,0,0,55,101,115,116,0,94,0,95,9618
2630 DATA 0,37,97,115,116,0,0,0,0,0,0,0,0,0,0,0,4035
2640 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2640
2650 DATA 0,0,0,0,0,0,93,0,0,0,0,0,0,0,0,0,3301
2660 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2660
2670 DATA 0,0,0,0,0,0,0,0,0,0,0,0,51,111,117,116,8498
2680 DATA 104,0,0,0,0,0,0,0,0,0,0,0,0,35,111,110,6699
2690 DATA 103,114,97,116,117,108,97,116,105,111,110,115,0,48,97,116,5244
2700 DATA 104,102,105,110,100,101,114,1,1,0,0,0,0,0,0,0,5684
2710 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2710
2720 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2720
2730 DATA 0,0,0,0,0,0,0,0,0,0,0,30,57,111,117,0,7140
2740 DATA 104,97,118,101,0,101,115,99,97,112,101,100,0,116,104,101,5103
2750 DATA 0,44,97,98,121,114,105,110,116,104,28,0,0,0,0,0,8817
2760 DATA 0,0,212,130,207,131,0,0,0,0,0,0,0,0,0,0,5737
2770 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2770
2780 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2780
2790 DATA 0,0,0,57,111,117,114,0,116,105,109,101,0,119,97,115,4539
2800 DATA 0,16,26,16,16,26,16,16,14,16,16,0,0,0,0,0,3912
2810 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2810
2820 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2820
2830 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2830
2840 DATA 0,0,48,114,101,115,115,0,214,180,242,233,231,231,229,242,8168
2850 DATA 194,0,116,111,0,50,101,115,116,97,114,116,0,0,0,0,423
2860 DATA 0,0,0,0,0,0,0,0,0,0,0,0,57,111,117,0,6910
2870 DATA 104,97,118,101,0,98,101,101,110,0,99,97,112,116,117,114,5931
2880 DATA 101,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3181
2890 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2890
2900 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2900
2910 DATA 0,0,0,0,0,0,0,0,57,111,117,0,119,105,108,108,2185
2920 DATA 0,98,208,131,203,132,101,0,100,105,115,112,111,115,101,100,7505
2930 DATA 0,111,102,0,97,116,0,116,104,101,0,0,0,0,0,0,7513
2940 DATA 0,0,0,0,0,110,101,120,116,0,116,105,109,101,0,99,3262
2950 DATA 111,110,118,105,101,110,101,110,116,0,102,111,114,0,121,111,5378
2960 DATA 117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,3989
2970 DATA 111,117,114,0,116,105,109,101,0,119,97,115,0,16,26,16,945
2980 DATA 16,26,16,16,14,16,16,0,0,0,0,0,0,0,0,0,3438
2990 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2990
3000 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3000
3010 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,114,5554
3020 DATA 101,115,115,0,214,180,242,233,231,231,229,242,194,0,116,111,5254
3030 DATA 0,50,101,115,116,97,114,116,0,0,0,0,0,0,0,0,6781
3040 DATA 220,222,221,223,0,69,108,149,110,165,132,133,128,165,133,133,1406
3050 DATA 129,162,0,160,0,169,160,145,128,200,192,49,208,249,169,0,2014
3060 DATA 145,128,24,165,128,105,50,133,128,144,2,230,129,232,224,35,1096
3070 DATA 208,225,169,0,133,130,165,132,133,128,165,133,133,129,24,165,314
3080 DATA 128,105,204,132,199,133,53,133,128,144,2,230,129,160,0,169,9781
3090 DATA 5,145,128,173,10,210,41,7,133,153,165,153,56,233,4,176,9358
3100 DATA 242,165,153,133,143,165,128,133,130,165,129,133,131,165,153,201,3687
3110 DATA 0,208,14,24,165,130,105,2,133,130,144,62,230,131,76,64,7833
3120 DATA 133,165,153,201,1,208,14,56,165,130,233,100,133,130,176,42,54
3130 DATA 198,131,76,64,133,165,153,201,2,208,14,56,165,130,233,2,8824
3140 DATA 133,130,176,22,198,131,76,64,133,165,153,201,3,208,11,24,7411
3150 DATA 165,130,105,100,133,130,144,2,230,131,160,0,177,130,201,160,1595
3160 DATA 208,35,165,153,24,105,1,160,0,201,0,208,2,169,32,145,6280
3170 DATA 130,32,166,133,160,0,169,32,145,128,165,130,133,128,165,131,685
3180 DATA 133,129,76,217,132,165,153,201,3,208,7,169,0,133,153,76,8581
3190 DATA 122,133,230,153,165,153,197,143,240,3,76,235,132,160,0,177,1780
3200 DATA 128,133,153,169,32,145,128,165,153,56,233,5,176,95,198,153,1571
3210 DATA 166,153,189,0,134,133,153,32,166,133,32,166,133,76,217,132,372
3220 DATA 165,153,201,0,208,14,24,165,128,105,1,133,128,144,62,230,9005
3230 DATA 129,76,243,133,165,153,201,1,208,14,56,165,128,233,50,133,342
3240 DATA 128,176,200,133,195,134,42,198,129,76,243,133,165,153,201,2,2033
3250 DATA 208,14,56,165,128,233,1,133,128,176,22,198,129,76,243,133,1467
3260 DATA 165,153,201,3,208,11,24,165,128,105,50,133,128,144,2,230,8678
3270 DATA 129,96,162,0,181,193,149,223,232,224,7,208,247,96,2,3,501
3280 DATA 0,1,255,255,1,1,1,1,255,255,1,0,1,0,0,255,4042
3290 DATA 255,1,1,0,1,0,1,0,0,0,1,0,1,8,7,5,3883
3300 DATA 4,2,10,6,10,6,10,110,110,110,110,122,0,3,3,3,9297
3310 DATA 3,0,255,126,60,24,24,84,92,100,108,116,154,146,138,130,8470
3320 DATA 122,169,89,141,159,126,169,130,141,160,126,133,131,173,160,126,2777
3330 DATA 133,131,173,159,126,24,105,180,133,130,144,2,230,131,162,0,9188
3340 DATA 165,223,201,69,240,42,169,255,133,138,169,3,141,8,208,141,1298
3350 DATA 9,208,32,22,126,162,166,169,255,232,157,0,116,157,0,117,9995
3360 DATA 224,229,208,245,169,32,141,0,208,169,192,141,1,208,162,0,391
3370 DATA 181,148,24,105,16,188,31,134,145,130,232,224,5,208,241,165,3913
3380 DATA 223,201,69,240,11,173,10,210,141,18,208,141,19,208,230,159,2597
3390 DATA 173,132,2,201,1,240,232,76,0,105,0,0,0,0,0,108,1092
3400 DATA 97,98,196,134,91,135,121,114,105,110,116,104,115,0,0,0,3905
3410 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3410
3420 DATA 0,0,0,0,0,0,0,0,0,0,52,104,101,0,53,108,9076
3430 DATA 116,105,109,97,116,101,0,19,13,36,0,45,97,122,101,0,1310
3440 DATA 0,33,100,118,101,110,116,117,114,101,0,0,0,0,0,0,9227
3450 DATA 0,0,0,8,35,9,0,17,25,24,23,0,0,33,114,103,8385
3460 DATA 111,51,111,102,116,0,48,114,111,100,117,99,116,105,111,110,7119
3470 DATA 115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3585
3480 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3480
3490 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,5138
3500 DATA 251,103,173,252,2,201,28,208,3,76,0,105,165,187,201,0,8385
3510 DATA 240,3,76,106,103,169,16,133,187,166,189,169,0,133,156,32,9277
3520 DATA 220,103,165,144,133,186,166,189,181,179,133,144,181,172,168,181,6259
3530 DATA 165,170,169,32,133,190,32,43,104,166,189,181,172,168,181,165,3833
3540 DATA 170,32,101,121,166,189,165,186,133,144,165,194,201,32,208,58,3057
3550 DATA 32,246,103,166,189,169,3,133,156,230,189,164,189,136,196,191,6199
3560 DATA 240,6,32,220,103,76,19,103,169,0,133,189,169,69,133,190,166
3570 DATA 166,189,228,191,240,15,181,172,168,181,165,170,32,43,104,230,2930
3580 DATA 189,197,191,208,231,169,0,133,189,96,173,10,210,24,105,128,174
3590 DATA 144,18,165,203,201,160,240,3,76,188,103,165,213,201,160,240,6246
3600 DATA 21,76,204,103,165,213,201,160,240,3,76,204,103,165,203,201,4971
3610 DATA 160,240,3,76,188,103,173,10,210,24,105,128,144,16,181,179,9908
3620 DATA 168,185,199,103,149,179,76,81,103,0,2,3,4,1,181,179,4796
3630 DATA 168,185,215,103,149,179,76,81,103,0,4,1,2,3,181,165,4630
3640 DATA 133,160,181,172,133,161,169,16,133,132,169,144,133,133,165,155,2916
3650 DATA 201,0,208,3,32,194,128,96,166,189,181,179,170,202,252,103,5464
3660 DATA 74,104,189,18,104,24,101,189,168,24,185,165,0,125,14,104,6855
3670 DATA 153,165,0,96,255,255,1,1,7,0,7,0,20,48,48,2,9181
3680 DATA 48,9,11,20,34,2,20,20,2,2,4,4,4,1,4,3,4645
3690 DATA 3,169,92,133,132,169,135,133,133,136,192,0,240,8,169,50,9758
3700 DATA 32,124,122,76,51,104,138,32,124,122,160,0,165,190,145,132,9939
3710 DATA 96,0,105,251,105,169,64,141,14,212,169,0,141,0,212,141,9614
3720 DATA 1,210,162,0,142,8,208,142,9,208,149,223,232,224,6,208,4023
3730 DATA 249,142,0,208,142,1,208,162,0,189,22,104,149,165,232,224,3254
3740 DATA 20,208,246,169,255,133,138,169,0,133,145,133,192,76,149,105,1977
3750 DATA 72,138,72,152,72,165,192,201,0,208,16,162,144,142,22,208,942
3760 DATA 232,141,10,212,224,159,208,245,76,131,105,201,1,240,4,201,2852
3770 DATA 2,208,17,162,0,142,22,208,232,232,141,10,212,224,16,208,3096
3780 DATA 244,76,131,105,164,145,185,76,108,141,24,208,230,145,165,145,3539
3790 DATA 201,6,208,4,169,0,133,145,230,192,165,192,201,9,208,4,1611
3800 DATA 169,0,133,192,104,168,104,170,104,64,169,91,141,48,2,169,8518
3810 DATA 106,141,49,2,169,59,141,0,2,169,105,141,1,2,169,192,6742
3820 DATA 141,14,212,169,0,141,198,2,169,34,141,47,2,165,155,76,7402
3830 DATA 48,106,164,191,162,0,185,144,108,168,185,82,108,201,91,240,3697
3840 DATA 8,157,242,107,200,232,76,197,105,165,191,24,105,16,141,167,1176
3850 DATA 107,173,31,208,201,5,208,7,169,1,133,159,76,0,106,201,8471
3860 DATA 3,240,18,201,6,208,226,169,0,141,252,2,169,0,133,138,19
3870 DATA 133,252,105,247,106,159,76,0,120,169,48,141,0,210,169,15,8531
3880 DATA 141,28,2,173,28,2,24,105,160,141,1,210,201,160,208,243,3177
3890 DATA 141,1,210,165,159,201,0,240,41,169,0,133,159,230,155,165,3151
3900 DATA 155,201,2,208,4,169,0,133,155,168,162,0,185,169,108,168,1329
3910 DATA 185,151,108,201,91,208,3,76,189,105,157,194,107,200,232,76,3550
3920 DATA 55,106,230,191,165,191,201,7,240,3,76,189,105,169,0,133,228
3930 DATA 191,76,189,105,112,112,112,66,128,106,2,240,7,0,240,6,6705
3940 DATA 128,6,112,2,112,2,112,2,112,240,0,130,0,130,112,112,6056
3950 DATA 130,0,130,0,130,0,65,91,106,0,0,0,0,0,33,114,9576
3960 DATA 103,111,51,111,102,116,0,51,111,102,116,119,97,114,101,0,5591
3970 DATA 48,114,111,100,117,99,116,105,111,110,115,0,0,0,0,0,1174
3980 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,48,114,111,8138
3990 DATA 117,100,108,121,0,48,114,101,115,101,110,116,115,0,0,0,3151
4000 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,33,5188
4010 DATA 34,57,50,41,46,52,40,51,0,0,0,0,0,0,0,52,6534
4020 DATA 40,37,0,53,44,52,41,45,33,52,37,0,19,13,36,0,7718
4030 DATA 0,248,106,243,107,0,0,0,45,33,58,37,0,33,36,54,34
4040 DATA 37,46,52,53,50,37,0,0,0,0,0,0,0,0,0,0,5009
4050 DATA 0,0,33,14,46,14,33,14,44,14,47,14,39,14,0,35,7346
4060 DATA 111,109,112,117,116,105,110,103,0,0,0,0,0,0,0,0,7997
4070 DATA 0,0,0,0,0,0,48,114,111,103,114,97,109,109,101,100,5823
4080 DATA 0,0,34,121,0,51,116,101,118,101,110,0,44,97,115,104,5193
4090 DATA 111,119,101,114,0,0,0,0,0,0,8,35,9,0,17,25,6478
4100 DATA 24,23,0,33,114,103,111,51,111,102,116,0,51,111,102,116,5573
4110 DATA 119,97,114,101,0,48,114,111,100,117,99,116,105,111,110,115,8103
4120 DATA 0,0,0,0,0,46,117,109,98,101,114,0,111,102,0,33,2632
4130 DATA 114,103,111,110,105,97,110,0,48,97,116,114,111,108,108,101,7337
4140 DATA 114,115,13,30,16,0,0,0,0,0,0,0,57,111,117,0,8773
4150 DATA 55,105,108,108,0,33,116,116,101,109,112,116,0,33,0,0,2194
4160 DATA 0,0,0,0,0,0,0,0,37,115,99,97,112,101,0,0,766
4170 DATA 0,0,0,214,175,240,244,233,239,238,194,0,36,105,102,102,2678
4180 DATA 105,99,117,108,116,121,0,44,101,118,101,108,0,13,0,0,1602
4190 DATA 0,244,107,170,108,0,0,0,0,0,0,0,0,0,0,214,9643
4200 DATA 179,229,236,229,227,244,194,0,36,97,121,116,105,109,101,0,8841
4210 DATA 111,114,0,46,105,103,104,116,105,109,101,0,37,115,99,97,5806
4220 DATA 112,101,0,0,0,0,0,214,179,244,225,242,244,128,194,0,3550
4230 DATA 37,110,116,101,114,0,116,104,101,0,44,97,98,121,114,105,6368
4240 DATA 110,116,104,0,0,0,0,0,0,0,0,0,0,194,178,162,2872
4250 DATA 146,130,0,34,101,103,105,110,110,101,114,91,37,97,115,121,7376
4260 DATA 0,0,0,0,91,45,111,100,101,114,97,116,101,91,40,97,5809
4270 DATA 114,100,0,0,0,0,91,52,114,105,118,105,97,108,91,51,5225
4280 DATA 97,100,105,115,116,105,99,91,41,110,115,97,110,101,0,0,4725
4290 DATA 91,0,9,18,27,36,44,53,36,97,121,108,105,103,104,116,5707
4300 DATA 91,46,105,103,104,116,105,109,101,91,0,9,224,2,225,2,6307
4310 DATA 0,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4520

Listing 2
Assembly listing

	.OPT	NOLIST
	.OPT	OBJ
;-----------------------------
;Labyrinths: Revision 09/15/87
;Programmed By Steven Lashower
;(C) 1987 Argosoft Productions
;-----------------------------
	*=	$80
;-------------------
;Page Zero Variables
;-------------------
LO	.DS	2	;Srce Copy adrs
DESTLO	.DS	2	;Dest Copy adrs
MTEMP	.DS	2	;Maze location
YTEMP	.DS	1	;Y Coord Temp
COLTMP	.DS	1	;X Coord Temp
XTMP	.DS	1	;X Coord Temp
YTMP	.DS	1	;Y Coord Temp
FLAG	.DS	1	;Variable Flag
LEN	.DS	1	;Maze Draw Lngth
H	.DS	1	;Player X Coord
V	.DS	1	;Player Y Coord
W	.DS	1	;Maze width
TEMP	.DS	1	;Temporary Data
DIRECTION	.DS	1	;Player Dirction
DUMMY	.DS	1	;Temporary Data
BACK	.DS	1	;Behnd plyr data
COUNTR	.DS	1	;Main DLI pointr
SEC1	.DS	5	;Time "h:mm:ss"
J	.DS	1	;Maze gen varble
VOLUM1	.DS	1	;Sound volume
TIME	.DS	1	;Day/Night Flag
COLOR	.DS	1	;Draw/Plot Color
OFF	.DS	1	;Patroler Bottom
TONE	.DS	1	;Tone for sound
HOLD	.DS	1	;Temp storage
PLOTX	.DS	1	;X Coord Value
PLOTY	.DS	1	;Y Coord Value
COPCNT	.DS	1	;Byte copy count
FRONT2	.DS	1	;Center cpy byte
BACK2	.DS	1	;Copy of BACK
H2	.DS	7	;Patrol X Coords
V2	.DS	7	;Patrol Y Coords
DIR2	.DS	7	;Patrol Drection
DIRTMP	.DS	1	;Temp. DIRECTION
CDTMV4	.DS	1	;Patrol Move Chk
OLDSTK	.DS	1	;Stick 0 Copy
MNUM	.DS	1	;Patroller #
PAT	.DS	1	;Patrol Plot Var
DIFLEV	.DS	1	;Diffculty level
POINTER	.DS	1	;Title DLI pntr
CENTER	.DS	$0A	;Center data
LEFT	.DS	$0A	;Left side data
RIGHT	.DS	$0A	;Right side data
CENTER2	.DS	$0A	;Copy of CENTER
RTCLOK	=	$14
ROWCRS	=	$54
COLCRS	=	$55
VDSLST	=	$0200
CDTMV3	=	$021C
SDMCTL	=	$022F
SDLSTL	=	$0230
GPRIOR	=	$026F
STICK0	=	$0278
STRIG0	=	$0284
PCOLR0	=	$02C0
COLOR0	=	$02C4
COLOR2	=	$02C6
COLOR3	=	$02C7
CH	=	$02FC
HPOSP0	=	$D000
HPOSP1	=	$D001
SIZEP0	=	$D008
SIZEP1	=	$D009
SIZEP2	=	$D00A
SIZEP3	=	$D00B
COLPM0	=	$D012
COLPM1	=	$D013
COLPM2	=	$D014
COLPM3	=	$D015
COLPF0	=	$D016
COLPF1	=	$D017
COLPF2	=	$D018
GRACTL	=	$D01D
CONSOL	=	$D01F
AUDF1	=	$D200
AUDC1	=	$D201
RANDOM	=	$D20A
DMACTL	=	$D400
PMBASE	=	$D407
WSYNC	=	$D40A
NMIEN	=	$D40E
SETVBV	=	$E45C
XITVBV	=	$E462
DISP	=	$9000
SCREEN	=	$5000
TIMSC	=	BOTTOM+$52
PRINT1	=	TEXT+$0172
PRINT2	=	TEXT+$0127
PRINT3	=	TEXT+$0142
PMG	=	$7000
PL1	=	$7500
	*=	$7800
;-------------------
;Get things ready...
;-------------------
LABYRINTHS	LDA	#$00	;Turn screen
	STA	SDMCTL	;off.
	STA	FLAG
	LDA	#$FF
	STA	VOLUM1
	JSR	CLSCN	;Clear scrren.
	LDA	#<MAZE
	STA	MTEMP	;Copy maze
	LDA	#>MAZE	;Addresss.
	STA	MTEMP+1
	JSR	GENMZE	;Generate Maze!
	LDA	#$C5	;Exit in lower
	STA	MAZE+$06D3	;right corner
	LDA	#<BOTTOM
	STA	TEXTB	;Print timer &
	LDA	#>BOTTOM	;compass at
	STA	TEXTB+1	;screen bottom.
	LDA	#$00
	LDX	#$00
CLTIME	STA	SEC1,X	;Set elapsed
	INX		;time to 0:00:00
	CPX	#$05
	BNE	CLTIME
	STA	COUNTR
	LDA	#$3C	;Set timer for 1
	STA	CDTMV3	;Second.
	LDY	#<VBI
	LDX	#>VBI
	LDA	#$07	;Initialize VBI.
	JSR	SETVBV
	LDA	#$01	;Player starts
	STA	H	;game at (1,2).
	LDA	#$02
	STA	V
	LDA	#$03	;Player's facing
	STA	DIRECTION	;south,
	LDA	#$32	;Maze Width = 50
	STA	W
	JSR	SETUP	;Set up screen.
	JMP	MAINPROG	;Main Program.
;----------------------
;Display List Interrupt
;----------------------
DLI	PHA		;Save Accum and
	TXA		;X Register.
	PHA
	LDX	COUNTR	;Which DLI?
	CPX	#$00
	BNE	DLI1
	INX		;Point to next
	STX	COUNTR	;DLI.
	LDX	#$90
DLI0	STX	COLPF1	;Shade game
	INX		;title in 8
	INX		;shades of blue.
	STA	WSYNC	;Wait for SYNC.
	CPX	#$A0	;Shaded yet?
	BNE	DLI0	;Nope...
	LDA	#$0A	;Set Text Luma.
	STA	COLPF1
	JMP	ENDDLI	;Return from DLI
DLI1	LDA	#$0A	;Set maze wall
	STA	COLPF2	;colors to
	LDA	#$04	;shades of grey.
	STA	COLPF1
	LDX	COUNTR
	LDA	TIME	ITS
	CMP	#$00	;Daytime?
	BNE	DLI2	;Nope...
	LDA	COLORS,X	;Yep!  Dayglow
	JMP	DLI3	;colors.
DLI2	LDA	COLORS2,X	;Night colors
DLI3	STA	COLPM2	;Store colors
	STA	COLPM3	;in players 2&3.
DLI3B	INX		;Point to next
	STX	COUNTR	;DLI...
	CPX	#$11	;All colors yet?
	BNE	ENDDLI	;Nope! Exit DLI.
	LDA	#$00	;Reset pointer
	STA	COUNTR	;to screen top.
	LDA	#$F8
	STA	COLPF0	;Set all colors
	LDA	#$0A	;for bottom
	STA	COLPF1	;of screen.
	LDA	#$00
	STA	COLPF2
ENDDLI	PLA		;Restore X reg.
	TAX
	PLA		;Restore Accum.
	RTI
;------------------------
;Vertical Blank Interrupt
;------------------------
VBI	INC	PCOLR0	;Increase
	INC	PCOLR0+1	;Patroller and
	LDA	PCOLR0+1	;player in maze
	CMP	#$9F
	BNE	XX1	;Make sure
	LDA	#$90	;player flashes
	STA	PCOLR0+1	;blue.
XX1	LDA	CDTMV4	;Decrease timer
	CMP	#$00	;if and only if
	BEQ	XX2	;not zero.
	DEC	CDTMV4
XX2	LDA	FLAG	;Flag set?
	CMP	#$FF
	BNE	XX3	;Yep. Exit VBI!
	JMP	XITVBV
XX3	LDA	CDTMV3	;Second elapsed?
	CMP	#$00
	BNE	X1	;Nope...
	LDA	#$3C	;Ya! Reset
	STA	CDTMV3	;timer!
	INC	SEC1	;Increase second
	LDX	#$00	;digit.
X01	LDA	SEC1,X	;Check digits
	CMP	COMP,X	;for carry.
	BNE	X0	;No carry.
	LDA	#$00	;Carry! Zero
	STA	SEC1,X	;digit. Inc next
	INC	SEC1+1,X	;digit.
X0	INX
	CPX	#$05	;Done checking?
	BNE	X01	;Nope...
X1	LDX	#$00	;Ya! print time.
PRTIME	LDA	SEC1,X	;Load digit to
	CLC		;print and add
	ADC	#$10	;ATASCII offset.
	LDY	YVAL,X	;Add offset and
	STA	TIMSC,Y	;print it!
	INX
	CPX	#$05	;All printed?
	BNE	PRTIME	;Nope...
	LDA	VOLUM1	;Play a sound?
	CMP	#$FF
	BEQ	X2	;Nope...
	DEC	VOLUM1	;Yes! Decrease
	CLC		;volume of sound
	ADC	TONE	;and add
	STA	AUDC1	;distortion.
X2	LDX	#$00
DI1	LDA	CENTER2,X	;Can player
	CMP	#$45	;view patroller?
	BEQ	DI2	;Yes...
	CMP	#$A0	;Is a wall in
	BNE	DL1A	;the way?
	LDA	#$00	;If one is, then
	STX	HPOSP0	;don't display
	JMP	XITVBV	;it so exit VBI.
DL1A	INX
	CPX	#$05	;All view check?
	BNE	DI1	;Nope...
DI2	LDA	HARGO,X	;Set horizontal
	STA	HPOSP0	;position & size
	LDA	SARGO,X	;depending its
	STA	SIZEP0	;distance "X".
	LDA	OFARG,X	;Where's its
	STA	OFF	;bottom?
	LDY	#$00
	LDA	#$00	;Erase player's
VB1	STA	PMG+$0400,Y	;bytes.
	INY
	BNE	VB1
	LDA	ONARG,X	;Find patrollers
	TAY		;top and put
VB2	LDA	BARGO,X	;bytes into
	STA	PMG+$0400,Y	;PMAREA.
	INY
	CPY	OFF	;Bottom reached?
	BNE	VB2	;No, next byte.
	JMP	XITVBV	;Ya, exit VBI
;--------------------------
;Read Surrounding Maze Data
;--------------------------
START	LDA	#<MAZE	;Get maze
	STA	MTEMP	;address and
	LDA	#>MAZE	;copy it.
	STA	MTEMP+1
S0	DEY		;Decrease "Y"
	CPY	#$00	;Zero yet?
	BEQ	S1	;Yep.
	LDA	W	;Add maze width.
	JSR	ADD
	JMP	S0	;Do it again.
S1	TXA		;Add horizontal.
	JSR	ADD
	LDX	#$00
	LDA	DIRECTION	;Facing north?
	CMP	#$01
	BNE	T1	;Nope...
	LDA	W	;By adding maze
	JSR	ADD	;width, we can
	LDY	#$00	;get the space
	LDA	(MTEMP),Y	;in back of
	STA	BACK	;player.
	LDA	W
	CLC		;Subtract width.
	ADC	#$01
	JSR	SUBTRACT
S45	LDY	#$00	;Get 8 bytes
	LDA	(MTEMP),Y	;for
	STA	LEFT,X	;left
	INY
	LDA	(MTEMP),Y
	STA	CENTER,X	;center
	INY
	LDA	(MTEMP),Y
	STA	RIGHT,X	;& right walls.
	INX
	LDA	W	;Get ready
	JSR	SUBTRACT	;for next.
	CPX	#$08	;Add 8 bytes?
	BNE	S45	;Nope...
	RTS		;
T1	LDA	DIRECTION	;Facing south
	CMP	#$03
	BNE	T2
	LDY	#$00
	LDA	W
	JSR	SUBTRACT
	LDA	(MTEMP),Y
	STA	BACK
	LDA	W
	SEC
	SBC	#$01
	JSR	ADD
T45	LDY	#$00
	LDA	(MTEMP),Y
	STA	RIGHT,X
	INY
	LDA	(MTEMP),Y
	STA	CENTER,X
	INY
	LDA	(MTEMP),Y
	STA	LEFT,X
	INX
	LDA	W
	JSR	ADD
	CPX	#$08
	BNE	T45
	RTS
T2	LDA	DIRECTION	;Facing east
	CMP	#$04
	BNE	T3
	LDY	#$00
U1	LDA	(MTEMP),Y
	STA	CENTER,Y
	INY
	CPY	#$08
	BNE	U1
	LDY	#$00
	LDA	#$01
	JSR	SUBTRACT
	LDA	(MTEMP),Y
	STA	BACK
	LDA	#$01
	JSR	ADD
	LDA	W
	JSR	SUBTRACT
U4	LDA	(MTEMP),Y
	STA	LEFT,Y
	INY
	CPY	#$08
	BNE	U4
	LDA	W
	CLC
	ADC	W
	JSR	ADD
	LDY	#$00
U6	LDA	(MTEMP),Y
	STA	RIGHT,Y
	INY
	CPY	#$08
	BNE	U6
	RTS
T3	LDY	#$00
	LDX	#$00
V1	LDA	(MTEMP),Y	;Facing West
	STA	CENTER,X
	LDA	#$01
	JSR	SUBTRACT
	INX
	CPX	#$08
	BNE	V1
	LDA	#$09
	JSR	ADD
	LDA	(MTEMP),Y
	STA	BACK
	LDA	#$01
	CLC
	ADC	W
	JSR	SUBTRACT
	LDX	#$00
V4	LDA	(MTEMP),Y
	STA	RIGHT,X
	LDA	#$01
	JSR	SUBTRACT
	INX
	CPX	#$08
	BNE	V4
	LDA	#$08
	CLC
	ADC	W
	ADC	W
	JSR	ADD
	LDX	#$00
V6	LDA	(MTEMP),Y
	STA	LEFT,X
	LDA	#$01
	JSR	SUBTRACT
	INX
	CPX	#$08
	BNE	V6
	RTS
ADD	CLC		;Add Accumulator
	ADC	MTEMP	;to MTEMP with
	STA	MTEMP	;carry.
	BCC	SUB2
	INC	MTEMP+1
	RTS
SUBTRACT	STA	TEMP	;Subtracts
	SEC		;TEMP from
	LDA	MTEMP	;MTEMP with
	SBC	TEMP	;carry.
	STA	MTEMP
	BCS	SUB2
	DEC	MTEMP+1
SUB2	RTS
WCOMP	.BYTE	$A0,$20,$A0,$20
	.BYTE	$C5,$C5
WALO	.BYTE	$00,$00,$0A,$0A
	.BYTE	$00,$0A
;---------------------------
;WALL DATA/VIEWING PROCESSOR
;---------------------------
MAINPROG	LDY	V	;Get player's
	LDX	H	;coords and pass
	JSR	START	;to routine.
	JSR	COPCEN	;Copy CENTER.
	LDY	#$00
	STY	FLAG
LOOP	LDA	CENTER,Y	;Get byte in
	LDX	#$00	;front of player
	CMP	#$C5	;Is it an exit?
	BNE	LO0	;No...
	STA	FLAG	;Yes, set flag
	JMP	FRONTWALL	;and draw it!
LO0	CMP	#$A0	;Is it a wall?
	BNE	N1A2	;No.
	JMP	FRONTWALL	;Yes! Draw it!
N1A2	TYA
	CLC
	STA	HOLD
	ADC	WALO,X	;Offset for LEFT
	TAY		;and RIGHT side.
	LDA	LEFT,Y	;Get side wall.
	CMP	#$45	;Patrollr there?
	BNE	N1A25	;No.
	LDA	#$20	;Yes...Print
N1A25	STX	J	;passage there.
	CMP	WCOMP,X
	BNE	N1A3
	LDY	HOLD
	STX	FLAG
	JSR	LEFTWALL
N1A3	LDX	J
	INX
	LDY	HOLD
	CPX	#$06
	BNE	N1A2
	INY
	CPY	#$05
	BNE	LOOP
	LDA	#$07
	STA	COLCRS
	LDA	#$02
	STA	DUMMY
N22	LDY	DUMMY
	LDA	#$00
	STA	TEMP
	JSR	PRINT
	INC	DUMMY
	LDA	DUMMY
	CMP	#$0C
	BNE	N22
	LDY	#$05
	LDA	CENTER,Y
	INY
	CMP	#$A0
	BNE	N3
	LDA	#$05
	JMP	N4
N3	CMP	#$C5
	BNE	N3A
	LDA	#$00
	JMP	N4
N3A	LDA	#$07
N4	STA	TEMP
	JSR	PRINT
	JMP	LINE139
LEFTWALL	STY	YTEMP
	LDA	MULTI,Y
	TAX
	DEX
	LDA	FLAG
	CMP	#$03
	BEQ	L3
	CMP	#$05
	BEQ	L3
	CMP	#$02
	BNE	L1
L3	LDA	#$0C
	SEC
	SBC	YTEMP
	STA	COLTMP
	LDY	#$00
	JMP	DOWALL
L1	LDA	#$02
	CLC
	ADC	YTEMP
	STA	COLTMP
	LDY	#$00
DOWALL	INX
	INY
	TYA
	CLC
	ADC	#$04
	STA	ROWCRS
	LDA	COLTMP
	STA	COLCRS
	LDA	FLAG
	CMP	#$00
	BEQ	D3
	CMP	#$02
	BEQ	D1
	CMP	#$03
	BEQ	D4
	CMP	#$01
	BEQ	D4
	LDA	#$00
	JMP	D2
D4	LDA	PASS,X
	JMP	D2
D1	LDA	RWAL,X
	JMP	D2
D3	LDA	LWAL,X
D2	STX	XTMP
	STY	YTMP
	STA	TEMP
	JSR	PRINT
	LDX	XTMP
	LDY	YTMP
	CPY	#$0B
	BNE	DOWALL
	LDY	YTEMP
	LDA	#$00
	STA	FLAG
	RTS
;-----------------------------
;Character bytes for left wall
;-----------------------------
LWAL	.BYTE	$06,$01,$01,$01,$01
	.BYTE	$01,$01,$01,$01,$01,$03
	.BYTE	$00,$06,$01,$01,$01,$01
	.BYTE	$01,$01,$01,$03,$00
	.BYTE	$00,$00,$06,$01,$01,$01
	.BYTE	$01,$01,$03,$00,$00
	.BYTE	$00,$00,$00,$06,$01,$01
	.BYTE	$01,$03,$00,$00,$00
	.BYTE	$00,$00,$00,$00,$06,$01
	.BYTE	$03,$00,$00,$00,$00
;------------------------------
;Character bytes for right wall
;------------------------------
RWAL	.BYTE	$04,$01,$01,$01,$01
	.BYTE	$01,$01,$01,$01,$01,$02
	.BYTE	$00,$04,$01,$01,$01,$01
	.BYTE	$01,$01,$01,$02,$00
	.BYTE	$00,$00,$04,$01,$01,$01
	.BYTE	$01,$01,$02,$00,$00
	.BYTE	$00,$00,$00,$04,$01,$01
	.BYTE	$01,$02,$00,$00,$00
	.BYTE	$00,$00,$00,$00,$04,$01
	.BYTE	$02,$00,$00,$00,$00
;-------------------------------
;Character bytes for passageways
;-------------------------------
PASS	.BYTE	$00,$05,$05,$05,$05
	.BYTE	$05,$05,$05,$05,$05,$00
	.BYTE	$00,$00,$05,$05,$05,$05
	.BYTE	$05,$05,$05,$00,$00
	.BYTE	$00,$00,$00,$05,$05,$05
	.BYTE	$05,$05,$00,$00,$00
	.BYTE	$00,$00,$00,$00,$05,$05
	.BYTE	$05,$00,$00,$00,$00
	.BYTE	$00,$00,$00,$00,$00,$05
	.BYTE	$00,$00,$00,$00,$00
LENGTH	.BYTE	$09,$07,$05,$03,$01
HORIZ	.BYTE	$03,$04,$05,$06,$07
;----------------
;Day/Night Colors
;----------------
COLORS	.BYTE	$00,$9F,$9D,$9B,$99
	.BYTE	$97,$95,$93,$91,$F0,$F2
	.BYTE	$F4,$F6,$F8,$FA,$FC
	.BYTE	$00,$00
COLORS2	.BYTE	$00,$00,$00,$00,$00
	.BYTE	$00,$00,$00,$00,$00
	.BYTE	$00,$02,$04,$06,$08
	.BYTE	$0A,$00,$00
;------------------------
;Print Front Wall Routine
;------------------------
FRONTWALL	DEY
	STY	YTEMP
	LDA	LENGTH,Y
	STA	LEN
	LDA	HORIZ,Y
	STA	COLCRS
	LDA	MULTI,Y
	TAX
	DEX
	STA	YTEMP
	LDX	YTEMP
	LDY	#$00
F1	TYA
	STA	ROWCRS
	INC	ROWCRS
	INC	ROWCRS
	INY
	INX
	STY	YTMP
	STX	XTMP
	LDA	FLAG
	CMP	#$C5
	BNE	F1A
	LDA	#$00
	JMP	F1B
F1A	LDA	PASS,X
F1B	STA	TEMP
	LDY	ROWCRS
	JSR	PRINT
	LDY	YTMP
	LDX	XTMP
	CPY	#$0A
	BNE	F1
	DEC	LEN
	LDA	LEN
	BEQ	LINE139
	INC	COLCRS
	LDX	YTEMP
	LDY	#$00
	JMP	F1
;--------------------
;Main Display Routine
;--------------------
LINE139	JSR	MOVE	;Print Screen!
	LDA	CENTER+1	;Copy center.
	STA	FRONT2
	LDA	BACK	;Copy back.
	STA	BACK2
	LDA	TIME
	CMP	#$01	;Is it night?
	BEQ	CE	;Yes...
	JSR	POSITION	;No..Draw maze.
	LDX	#$00
PL1CL1	LDA	#0	;Clear PMAREA
	STA	PL1,X	;[Player Maze
	INX		;Position]
	BNE	PL1CL1
	LDA	H	;Add offset for
	CLC		;Gr. $E to
	ADC	#$91	;player horiz
	STA	HPOSP1	;position!
	CLC
	LDA	V	;Add offset to
	CLC		;vert position
	ADC	#$4A	;to plot on a
	TAY		;Gr. $E screen.
	LDA	#$01
	STA	PL1,Y	;And store!
CE	LDX	#$01
CE1	LDA	DIRCHAR,X	;Let's clear
	SEC		;the compass
	SBC	#$80	;arrows.
	LDY	OFFSETT,X
	STA	TIMSC,Y
	INX
	CPX	#$05
	BNE	CE1
CE2	LDY	DIRECTION	;Inverse the
	LDA	DIRCHAR,Y	;compass arrow
	LDX	OFFSETT,Y	;in the dirctn
	STA	TIMSC,X	;player's facing
	LDA	#$3E
	STA	SDMCTL	;Turn on screen.
;-------------------------
;Joystick/Movement Routine
;-------------------------
LINE140	JSR	MVCHK	;Patrol Move.
	LDX	H	;Get Player's
	LDY	V	;coordinates.
	JSR	START
	JSR	COPCEN
	LDA	STICK0
	CMP	#$0F
	BEQ	LINE140
	LDA	STICK0
	CMP	#$0E
	BNE	LINE190
	LDA	FRONT2
	CMP	#$20
	BEQ	LINE1401
	CMP	#$45
	BEQ	LINE1401
	CMP	#$C5
	BNE	LINE140A
	JMP	ESCAPE
LINE140A	JMP	LINE1901
LINE1401	LDX	DIRECTION
	DEX
	LDA	WHICH,X
	TAY
	CLC
	LDA	H,Y
	ADC	TABLE,X
	STA	H,Y
	JMP	LINE275
LINE190	CMP	#$0D
	BNE	LINE230
	LDA	BACK2
	CMP	#$20
	BEQ	LINE190A
	CMP	#$45
	BEQ	LINE190A
	CMP	#$C5
	BNE	LINE1901
	JMP	ESCAPE
LINE1901	JSR	THUMP
	JMP	LINE140
LINE190A	LDX	DIRECTION
	DEX
	LDA	WHICH,X
	TAY
	CLC
	LDA	H,Y
	ADC	TABLE2,X
	STA	H,Y
	JMP	LINE275
LINE230	CMP	#$0B
	BNE	LINE250
	JSR	RAZZ
	INC	DIRECTION
	LDA	DIRECTION
	CMP	#$05
	BNE	LINE275
	LDA	#$01
	STA	DIRECTION
	JMP	LINE275
LINE250	CMP	#$07
	BEQ	LINE260
	JMP	LINE140
LINE260	JSR	RAZZ
LINE265A	DEC	DIRECTION
	LDA	DIRECTION
	CMP	#$00
	BNE	LINE275
	LDA	#$04
	STA	DIRECTION
	JMP	LINE275
LINE275	JSR	PAUSE
	JMP	MAINPROG
;-------------
;Delay Routine
;-------------
PAUSE	LDA	#$00	;Zero System
	STA	RTCLOK	;Timer.
P1	JSR	MVCHK	;Check for
	LDA	RTCLOK	;Patrol move and
	SEC		;wait for timer
	SBC	#$06	;goes past 6.
	BCC	P1
	RTS		;Pause finished!
;--------------
;Set up display
;--------------
SETUP	LDA	#$0D
	STA	COLOR3
	LDA	#$00	;Background's
	STA	COLOR2	;black.
	STA	MNUM
	LDA	#$04
	STA	COLOR0
	LDA	#$90
	STA	PCOLR0+1
	LDA	#$02	;Set P/M Prior.
	STA	GPRIOR
	LDA	#<DLIST	;Tell ANTIC
	STA	SDLSTL	;where the D/L
	LDA	#>DLIST	;is.
	STA	SDLSTL+1
	LDA	#>DLI	;Point system
	STA	VDSLST+1	;to my DLI.
	LDA	#<DLI
	STA	VDSLST
	LDA	#$C0	;Allow for DLIs.
	STA	NMIEN
	LDA	#$03	;Set players
	STA	SIZEP2	;2 & 3 to quad
	STA	SIZEP3	;size.
	LDA	#$68	;Set Player's
	STA	HPOSP0+2	;2&3 horiz
	LDA	#$74	;position.
	STA	HPOSP0+3
	LDX	#0
PL1CL	LDA	#$00	;Clear and init
	STA	PMG+$0400,X	;PMAREA.
	STA	PMG+$0500,X
	LDA	#$FF
	STA	PMG+$0600,X
	STA	PMG+$0700,X
	INX		;Copy 255 Bytes.
	BNE	PL1CL
	LDA	#PMG/256	;Store P/M
	STA	PMBASE	;Address.
	LDA	#$02	;Enable P/M
	STA	GRACTL	;Graphics
	RTS
;----------------------
;Main Game Display List
;----------------------
DLIST	.BYTE	$70,$70,$F0,$46
	.WORD	TOP
	.BYTE	$0C,$20,$02,$00,$02
	.BYTE	$02,$30
	.BYTE	$80,$4E
	.WORD	DISP
	.BYTE	$0E
	.BYTE	$0E,$0E,$0E,$0E,$0E,$0E
	.BYTE	$0E,$0E,$8E
	.BYTE	$0E,$0E,$0E,$0E,$0E,$0E
	.BYTE	$0E,$0E,$8E
	.BYTE	$0E,$0E,$0E,$0E,$0E,$0E
	.BYTE	$0E,$8E,$0E
	.BYTE	$0E,$0E,$0E,$0E,$8E,$0E
	.BYTE	$0E,$0E,$8E
	.BYTE	$0E,$0E,$8E,$0E,$8E,$0E
	.BYTE	$8E,$8E,$0E
	.BYTE	$0E,$8E,$0E,$8E,$0E,$0E
	.BYTE	$0E,$8E,$0E
	.BYTE	$0E,$0E,$0E,$0E,$8E,$0E
	.BYTE	$0E,$0E,$0E
	.BYTE	$0E,$0E,$0E,$8E,$0E,$0E
	.BYTE	$0E,$0E,$0E
	.BYTE	$0E,$0E,$0E,$8E,$0E,$0E
	.BYTE	$0E,$0E,$0E
	.BYTE	$0E,$0E,$0E,$0E,$0E,$8E
	.BYTE	$70,$42
TEXTB	.WORD	$00
	.BYTE	$02,$02,$02,$02,$02
	.BYTE	$02,$41
	.WORD	DLIST
;------------------------
;Check for patroller move
;------------------------
MVCHK	JSR	$6700	;Check for move.
	LDX	#$FF
	LDA	DIFLEV	;Difficulty=0?
	BEQ	MV25	;Yes...
MV1	INX
	LDA	H2,X	;Check if there
	CMP	H	;are any patrols
	BNE	MV2	;occuping the
	LDA	V2,X	;same place
	CMP	V	;where the
	BEQ	MV3	;player is.
MV2	CPX	DIFLEV	;More patrols?
	BNE	MV1	;YA...
MV25	RTS
MV3	LDA	#<CAPTXT	;Print Player
	STA	TEXTB	;capture text on
	LDA	#>CAPTXT	;screen bottom
	STA	TEXTB+1
	LDA	#$45	;Put patroler in
	STA	CENTER2	;front of player
	LDA	#$00	;Zero all audio.
	STA	AUDF1
	JMP	EX1	;End routine
;-------------------------------
;Routine to Print to Graphics $E
;Adapted from Retrofire!
;-------------------------------
PRINT	LDA	YPOS,Y
	STA	LO	;Save Y Position
	LDA	#$00
	STA	LO+1
	ASL	LO	;*16
	ROL	LO+1
	ASL	LO	;*32
	ROL	LO+1
	LDA	LO
	CLC
	ADC	#<SCREEN	;Add Display
	STA	DESTLO	;Start
	LDA	LO+1
	ADC	#>SCREEN
	STA	DESTLO+1
	ASL	LO	;*16
	ROL	LO+1
	ASL	LO	;*32
	ROL	LO+1
	LDA	LO
	CLC
	ADC	DESTLO	;Get character's
	STA	DESTLO	;screen address
	LDA	LO+1
	ADC	DESTLO+1
	STA	DESTLO+1
	LDA	DESTLO	;Add X offset
	CLC		;for final
	ADC	COLCRS	;address.
	ADC	#$0C
	STA	DESTLO
	BCC	NODHIN
	INC	DESTLO+1
NODHIN	LDY	TEMP	;Get offset into
	LDA	MULT8,Y	;character set.
	STA	LO
	LDA	#$00
	STA	LO+1
	STA	COPCNT	;Zero copy count
	CLC
	ADC	#>CHARSET	;get info
	STA	LO+1	;from char set.
	LDA	LO
	CLC
	ADC	#<CHARSET
	STA	LO
	BCC	COPNUM
	INC	LO+1
COPNUM	LDY	COPCNT
	LDA	(LO),Y	;Get character
	LDY	#$00	;image byte.
	STA	(DESTLO),Y	;To screen...
	INC	COPCNT	;Next char byte.
	LDA	COPCNT	;Are all 8 bytes
	CMP	#$08	;in char moved?
	BEQ	FINISH	;Ya!
	LDA	DESTLO	;Add 20 bytes to
	CLC		;point to next
	ADC	#20	;line on screen.
	STA	DESTLO
	BCC	COPNUM
	INC	DESTLO+1
	BNE	COPNUM
FINISH	RTS		;All done!
YPOS	.BYTE	$01,$05,$0D,$15,$1D
	.BYTE	$25,$2D,$35,$3D,$45
	.BYTE	$4D,$55
;----------------------
;Character Set for Maze
;----------------------
CHARSET
	.BYTE	$00,$00,$00,$00,$00,$00
	.BYTE	$00,$00
	.BYTE	$FF,$BF,$FF,$F7,$FF,$FF
	.BYTE	$DF,$FF
	.BYTE	$FF,$7F,$3F,$1F,$0F,$07
	.BYTE	$03,$01
	.BYTE	$FF,$FE,$FE,$F8,$F0,$E0
	.BYTE	$C0,$80
	.BYTE	$01,$03,$07,$0F,$1F,$3F
	.BYTE	$7F,$FF
	.BYTE	$57,$FF,$D5,$D5,$D5,$FF
	.BYTE	$57,$57
	.BYTE	$80,$C0,$E0,$F0,$F8,$FC
	.BYTE	$FE,$FF
	.BYTE	$00,129,227,$FF,$FF,$C3
	.BYTE	$81,$00
MULTI	.BYTE	$00,$0B,$16,$21,$2C
	.BYTE	$37,$42
MULT8	.BYTE	$00,$08,$10,$18,$20
	.BYTE	$28,$30,$38,$40
;--------------
;Sound Routines
;--------------
THUMP	LDA	#$46	;Pitch for THUMP
	STA	AUDF1
	LDA	#$0F	;THUMP volume.
	STA	VOLUM1
	LDA	#$00	;THMP distortion
	STA	TONE
	LDA	STICK0	;Load joystick
	STA	OLDSTK	;and save.
TH1	JSR	MVCHK	;Patrol move...
	LDA	OLDSTK	;Stick changed
	CMP	STICK0	;direction yet?
	BEQ	TH1	;No, check again
	RTS
RAZZ	LDA	#$00	;Pitch for TURN
	STA	AUDF1
	LDA	#$08	;Volume for TURN
	STA	VOLUM1
	LDA	#$20	;TURN distortion
	STA	TONE
	RTS
;-------------------------------
;Move newly drawn maze to screen
;-------------------------------
MOVE	LDA	#<SCREEN	;MOVE source
	STA	LO
	LDA	#>SCREEN
	STA	LO+1
	LDA	#<DISP	;MOVE dstination
	STA	DESTLO
	LDA	#>DISP
	STA	DESTLO+1
	LDA	LO
	CLC
	ADC	#$50
	STA	LO
	BCC	MB
	INC	LO+1
MB	LDY	#$0E
	LDA	#$59
	STA	TEMP
	LDX	#$20
M0	LDA	(LO),Y	;Get FROM byte
	STA	(DESTLO),Y	;and MOVE it!
	INY
	CPY	#$19	;Line finished?
	BNE	M0	;No!
	LDY	#$0E
	LDA	LO	;Point SOURCE to
	CLC		;next line.
	ADC	#$14
	STA	LO
	BCC	M1
	INC	LO+1
M1	LDA	DESTLO	;Point DEST. to
	CLC		;next line.
	ADC	#$28
	STA	DESTLO
	BCC	M2
	INC	DESTLO+1
M2	DEC	TEMP
	LDA	TEMP	;Any lines left?
	CMP	#$00	;
	BNE	M0	;Yes,do it again
	RTS		;Nope, done!
;---------------------------
;Clear Screen/Memory Routine
;---------------------------
CLSCN	LDA	#$89	;Start clearing
	STA	LO+1	;at $8900
	LDA	#$00
	STA	LO
LX2	LDY	#$00
	LDA	#$00	;Erase BYTE
LX1	STA	(LO),Y
	INY
	CPY	#$00
	BNE	LX1
	INC	LO+1
	LDA	LO+1
	CMP	#$A0	;At $A000 yet?
	BNE	LX2	;No,more to copy
	RTS		;Done!
POSITION	LDA	H	;Get X & Y cords
	STA	PLOTX	;and store them.
	LDA	V
	STA	PLOTY
	LDA	#$02	;Dark Grey color
	STA	COLOR
	LDX	#$00
	LDA	#$10	;Store screen
	STA	MTEMP	;address of maze
	LDA	#$90	;in MTEMP.
	STA	MTEMP+1
	LDY	DIRECTION
PO1	STX	XTMP
	LDA	DIRECTION
	CMP	#$01	;The rest of
	BEQ	PLEFT	;this routine
	CMP	#$04	;draws the maze
	BEQ	PLEFT	;on the right
	TXA		;of the screen.
	CLC
	ADC	#$0A
	TAX
PLEFT	LDA	LEFT,X
	CMP	#$A0
	BNE	PO1A
	LDA	DRAW2X,Y
	TAX
	DEC	PLOTX,X
	JSR	PLOTCL
	INC	PLOTX,X
PO1A	LDX	XTMP
	LDA	DIRECTION
	CMP	#$02
	BEQ	PRIGHT
	CMP	#$03
	BEQ	PRIGHT
	TXA
	CLC
	ADC	#$0A
	TAX
PRIGHT	LDA	LEFT,X
	CMP	#$A0
	BNE	PO1B
	LDA	DRAW2X,Y
	TAX
	INC	PLOTX,X
	JSR	PLOTCL
	DEC	PLOTX,X
PO1B	LDX	XTMP
	LDA	CENTER,X
	CMP	#$A0
	BEQ	PO2
	CLC
	LDA	DRAWX,Y
	TAX
	LDA	PLOTX,X
	ADC	DRAWY,Y
	STA	PLOTX,X
	LDX	XTMP
	INX
	CPX	#$06
	BNE	PO1
	RTS
PO2	JSR	PLOTCL
	RTS
;-----------------------
;Plot Calculator
;Adapted from Retrofire!
;-----------------------
PLOTCL	PHA		;Save accum.
	TXA		;Save X register
	PHA
	TYA		;Save Y Register
	PHA
	LDA	PLOTY
	ASL	A
	STA	LO
	LDA	#$00
	ROL	A
	STA	LO+1	;*2
	ASL	LO
	ROL	LO+1	;*4
	ASL	LO
	LDA	LO
	STA	DESTLO
	ROL	LO+1
	LDA	LO+1
	STA	DESTLO+1	;*8
	ASL	LO
	ROL	LO+1	;*16
	ASL	LO
	ROL	LO+1	;*32
	LDA	LO
	CLC
	ADC	DESTLO
	STA	LO
	LDA	LO+1
	ADC	DESTLO+1
	STA	LO+1
	LDA	MTEMP	;Add the display
	CLC		;address to get
	ADC	#$0A	;the actual
	CLC		;address of the
	ADC	LO	;byte that will
	STA	LO	;be altered for
	LDA	MTEMP+1	;the plot.
	ADC	LO+1
	STA	LO+1
	LDA	PLOTX	;Mask PLOTX for
	AND	#$03	;plot index.
	TAX
	LDA	PLOTX	;Get PLOTX and
	LSR	A	;divide
	LSR	A	;by 4.
	CLC		;Add to plot
	ADC	LO	;address for
	STA	LO	;final plot
	LDA	LO+1	;address.
	ADC	#$00
	STA	LO+1
	LDY	COLOR	;Get color
	LDA	BMASK2,X	;and mask off
	AND	COLRS,Y	;pixel position.
	STA	HOLD	;Save it.
	LDA	BMASK1,X	;Mask off pixel
	LDY	#$00	;of the address
	AND	(LO),Y	;to be altered.
	ORA	HOLD	;Set the plot
	STA	(LO),Y	;bits and store!
	PLA
	TAY		;Restore Y Reg
	PLA
	TAX		;Restore X Reg
	PLA		;Restore accum
	RTS		;Finished!
COLRS	.BYTE	$00,$55,$AA,$FF
BMASK1	.BYTE	$3F,$CF,$F3,$FC
BMASK2	.BYTE	$C0,$30,$0C,$03
;---------------
;Screen Displays
;---------------
BOTTOM
	.SBYTE	"  ..............    "
	.SBYTE	"        Compass     "
	.SBYTE	"  |Time Elapsed|    "
	.SBYTE	"                    "
	.SBYTE	"  | 0:00:00.00 |    "
	.SBYTE	"         North      "
	.SBYTE	"  ..............    "
	.SBYTE	"           .        "
	.SBYTE	"                    "
	.SBYTE	"     West . . East  "
	.SBYTE	"                    "
	.SBYTE	"           .        "
	.SBYTE	"                    "
	.SBYTE	"         South      "
ESCTXT
	.SBYTE	"      Congratulation"
	.SBYTE	"s Pathfinder!!      "
	.SBYTE	"                    "
	.SBYTE	"                    "
	.SBYTE	"    >You have escape"
	.SBYTE	"d the Labyrinth<    "
	.SBYTE	"                    "
	.SBYTE	"                    "
	.SBYTE	"        Your time wa"
	.SBYTE	"s 0:00:00.00        "
	.SBYTE	"                    "
	.SBYTE	"                    "
	.SBYTE	"       Press .Trigge"
	.SBYTE	"r to Restart      "
CAPTXT
	.SBYTE	"         You have be"
	.SBYTE	"en captured         "
	.SBYTE	"                    "
	.SBYTE	"                    "
	.SBYTE	"     You will be dis"
	.SBYTE	"posed of at the     "
	.SBYTE	"      next time conv"
	.SBYTE	"ienent for you      "
	.SBYTE	"        Your time wa"
	.SBYTE	"s 0:00:00.00        "
	.SBYTE	"                    "
	.SBYTE	"                    "
	.SBYTE	"       Press .Trigge"
	.SBYTE	"r. to Restart       "
DIRCHAR	.BYTE	$00,$DC,$DE,$DD,$DF
OFFSETT	.BYTE	$00,$45,$6C,$95,$6E
;---------------------
;Random Maze Generator
;---------------------
GENMZE	LDA	MTEMP	;This routine,
	STA	LO	;taken from a
	LDA	MTEMP+1	;BASIC routine,
	STA	LO+1	;generates a
	LDX	#$00	;maze with only
L0	LDY	#$00	;one correct
	LDA	#$A0	;path to the
MLOOP	STA	(LO),Y	;exit.
	INY
	CPY	#$31
	BNE	MLOOP
	LDA	#$00
	STA	(LO),Y
	CLC
	LDA	LO
	ADC	#$32
	STA	LO
	BCC	L2
	INC	LO+1
L2	INX
	CPX	#$23
	BNE	L0
LINE20	LDA	#$00
	STA	DESTLO
LINE30	LDA	MTEMP
	STA	LO
	LDA	MTEMP+1
	STA	LO+1
	CLC
	LDA	LO
	ADC	#$35	; Start gen here
	STA	LO
	BCC	LINE50
	INC	LO+1
LINE50	LDY	#$00
	LDA	#$05
	STA	(LO),Y
LINE60	LDA	RANDOM
	AND	#$07
	STA	J
	LDA	J
	SEC
	SBC	#$04
	BCS	LINE60
LINE70	LDA	J
	STA	TEMP
LINE80	LDA	LO
	STA	DESTLO
	LDA	LO+1
	STA	DESTLO+1
	LDA	J
	CMP	#$00
	BNE	LINE801
	CLC
	LDA	DESTLO
	ADC	#$02
	STA	DESTLO
	BCC	LINE90
	INC	DESTLO+1
	JMP	LINE90
LINE801	LDA	J
	CMP	#$01
	BNE	LINE802
	SEC
	LDA	DESTLO
	SBC	#$64
	STA	DESTLO
	BCS	LINE90
	DEC	DESTLO+1
	JMP	LINE90
LINE802	LDA	J
	CMP	#$02
	BNE	LINE803
	SEC
	LDA	DESTLO
	SBC	#$02
	STA	DESTLO
	BCS	LINE90
	DEC	DESTLO+1
	JMP	LINE90
LINE803	LDA	J
	CMP	#$03
	BNE	LINE90
	CLC
	LDA	DESTLO
	ADC	#$64
	STA	DESTLO
	BCC	LINE90
	INC	DESTLO+1
LINE90	LDY	#$00
	LDA	(DESTLO),Y
	CMP	#$A0
	BNE	LINE100
	LDA	J
	CLC
	ADC	#$01
	LDY	#$00
	CMP	#$00
	BNE	LINE90A
	LDA	#$20
LINE90A	STA	(DESTLO),Y
	JSR	LINE200
	LDY	#$00
	LDA	#$20
	STA	(LO),Y
	LDA	DESTLO
	STA	LO
	LDA	DESTLO+1
	STA	LO+1
	JMP	LINE60
LINE100	LDA	J
	CMP	#$03
	BNE	LINE101A
	LDA	#$00
	STA	J
	JMP	LINE110
LINE101A	INC	J
LINE110	LDA	J
	CMP	TEMP
	BEQ	LINE110A
	JMP	LINE80
LINE110A	LDY	#$00
LINE120	LDA	(LO),Y
	STA	J
LINE130	LDA	#$20
	STA	(LO),Y
	LDA	J
	SEC
	SBC	#$05
	BCS	LINE210
	DEC	J
	LDX	J
	LDA	NEWJ,X
	STA	J
	JSR	LINE200
	JSR	LINE200
	JMP	LINE60
LINE200	LDA	J
	CMP	#$00
	BNE	LINE2001
	CLC
	LDA	LO
	ADC	#$01
	STA	LO
	BCC	LINE210
	INC	LO+1
	JMP	LINE210
LINE2001	LDA	J
	CMP	#$01
	BNE	LINE2002
	SEC
	LDA	LO
	SBC	#$32
	STA	LO
	BCS	LINE210
	DEC	LO+1
	JMP	LINE210
LINE2002	LDA	J
	CMP	#$02
	BNE	LINE2003
	SEC
	LDA	LO
	SBC	#$01
	STA	LO
	BCS	LINE210
	DEC	LO+1
	JMP	LINE210
LINE2003	LDA	J
	CMP	#$03
	BNE	LINE210
	CLC
	LDA	LO
	ADC	#$32
	STA	LO
	BCC	LINE210
	INC	LO+1
LINE210	RTS
COPCEN	LDX	#$00
COP2	LDA	CENTER,X
	STA	CENTER2,X
	INX
	CPX	#$07
	BNE	COP2
	RTS
;-------------------------
;Miscellaneous Data Tables
;-------------------------
NEWJ	.BYTE	$02,$03,$00,$01
TABLE	.BYTE	$FF,$FF,$01,$01
TABLE2	.BYTE	$01,$01,$FF,$FF
WHICH	.BYTE	$01,$00,$01,$00
DRAWY	.BYTE	$00,$FF,$FF,$01,$01
DRAWX	.BYTE	$00,$01,$00,$01,$00
DRAW2X	.BYTE	$00,$00,$01,$00,$01
YVAL	.BYTE	$08,$07,$05,$04,$02
COMP	.BYTE	$0A,$06,$0A,$06,$0A
HARGO	.BYTE	$6E,$6E,$6E,$6E
	.BYTE	$7A,$00
SARGO	.BYTE	$03,$03,$03,$03,$00
BARGO	.BYTE	$FF,$7E,$3C,$18,$18
ONARG	.BYTE	$54,$5C,$64,$6C,$74
OFARG	.BYTE	$9A,$92,$8A,$82,$7A
;------------------------------
;Escape from Maze/Death Routine
;------------------------------
ESCAPE	LDA	#<ESCTXT	;Print
	STA	TEXTB	;"Escape from
	LDA	#>ESCTXT	;Maze" text at
	STA	TEXTB+1	;screen bottom.
	STA	DESTLO+1
EX1	LDA	TEXTB+1
	STA	DESTLO+1
	LDA	TEXTB
	CLC		;Point DESTLO to
	ADC	#$B4	;proper place on
	STA	DESTLO	;screen to print
	BCC	EX2	;final time.
	INC	DESTLO+1
EX2	LDX	#$00
	LDA	CENTER2	;Check if player
	CMP	#$45	;is dead.
	BEQ	EX3	;yep...
EX21	LDA	#$FF	;Turn of timer.
	STA	FLAG
	LDA	#$03	;Quadruple Player
	STA	SIZEP0	;Width for
	STA	SIZEP1	;Players 0 & 1.
	JSR	PL1CL
	LDX	#$A6
	LDA	#$FF	;Display Players
EX25	INX		;on bottom 1/3rd
	STA	PMG+$0400,X	;of screen.
	STA	PMG+$0500,X
	CPX	#$E5
	BNE	EX25
	LDA	#$20	;Display players
	STA	HPOSP0	;in left and
	LDA	#$C0	;right margin of
	STA	HPOSP0+1	;the screen.
	LDX	#$00
EX3	LDA	SEC1,X	;Print elapsed
	CLC		;time, one
	ADC	#$10	;character at a
	LDY	YVAL,X	;time in proper
	STA	(DESTLO),Y	;space at the
	INX		;bottom of the
	CPX	#$05	;screen.
	BNE	EX3
ES1	LDA	CENTER2	;Are Patroller &
	CMP	#$45	;player together?
	BEQ	ES2	;YES...Captured!
	LDA	RANDOM	;Not Captured...
	STA	COLPM0	;Change PM Colors
	STA	COLPM1	;for victory
	INC	HOLD	;display.
ES2	LDA	STRIG0	;Trigger Pressed?
	CMP	#$01
	BEQ	ES1	;Nope...
	JMP	$6900	;Yes...Restart!
TOP
	.SBYTE	"     labyrinths     "
	.SBYTE	"                    "
	.SBYTE	"    The Ultimate 3-D"
	.SBYTE	" Maze  Adventure    "
	.SBYTE	"     (C) 1987  ArgoS"
	.SBYTE	"oft Productions     "
	.SBYTE	"                    "
	.SBYTE	"                    "
MAZE	.DS	$0400
	*=	$6700
;--------------------------
;Patroller Movement Routine
;--------------------------
	.LOCAL
?BEGIN	LDA	CH	;[ESC] pressed?
	CMP	#$1C
	BNE	BEG1	;Nope...
	JMP	$6900	;Yes...Restart!
BEG1	LDA	CDTMV4	;Timer counted
	CMP	#$00	;down to 0 yet?
	BEQ	B15	;Yes...
	JMP	RET2	;Nope...
B15	LDA	#$10	;Reset Timer.
	STA	CDTMV4
	LDX	MNUM
	LDA	#$00	;Erase patroller
	STA	COLOR	;position on maze
	JSR	EDOT	;drawing.
B2	LDA	DIRECTION	;Save player
	STA	DIRTMP	;direction.
	LDX	MNUM	;Which patroller?
	LDA	DIR2,X	;Get its dirction
	STA	DIRECTION	;and store it!
	LDA	V2,X	;Get "Y" Coord.
	TAY		;and put it in Y.
	LDA	H2,X	;Get "X" Coord.
	TAX		;and put it in X.
	LDA	#$20	;Put "Space" in
	STA	PAT	;patroller pos.
	JSR	PUTPT	;in memory maze.
	LDX	MNUM	;Which patroller?
	LDA	V2,X	;Transfer the
	TAY		;"X" and "Y"
	LDA	H2,X	;coords again.
	TAX
	JSR	START	;Get local walls.
	LDX	MNUM	;Which patroller?
	LDA	DIRTMP	;Transfer temp.
	STA	DIRECTION	;back to orig.
	LDA	CENTER+1	;Space in front
	CMP	#$20	;of patroller?
	BNE	TURN	;Nope. Turn
	JSR	?LINE1401	;Ya. Staight.
RET	LDX	MNUM	;Get patroller #.
	LDA	#$03	;White color for
	STA	COLOR	;plot.
	INC	MNUM	;Point next one.
	LDY	MNUM	;Check to see if
	DEY		;all patrollers
	CPY	DIFLEV	;have moved.
	BEQ	B15X	;Yep...
	JSR	EDOT	;Nope. Replot.
	JMP	B15	;Next move...
B15X	LDA	#$00	;Reset patroller
	STA	MNUM	;number.
RET2	LDA	#$45	;Replot all
	STA	PAT	;patrollers
	LDX	MNUM	;in memory maze.
	CPX	DIFLEV	;All ploted?
	BEQ	RET3	;Yep...
	LDA	V2,X	;Get "X" coord
	TAY		;and
	LDA	H2,X	;"Y" coordinate
	TAX		;and
	JSR	PUTPT	;print in maze/
	INC	MNUM
	CMP	DIFLEV	;All ploted?
	BNE	RET2	;Nope...
RET3	LDA	#$00	;Reset Patroller#
	STA	MNUM
	RTS		;Back to program!
TURN	LDA	RANDOM	;Get a random #.
	CLC
	ADC	#$80	;If number>128,
	BCC	PTR	;turn right.
PTL	LDA	LEFT	;Is there a wall
	CMP	#$A0	;to the left?
	BEQ	PTL1	;Yep. Right turn.
	JMP	TLEFT	;Nope. Left turn.
PTL1	LDA	RIGHT	;Is there a wall
	CMP	#$A0	;to the right?
	BEQ	RNDTURN	;Ya. Random turn.
	JMP	TRIGHT	;No. Right turn.
PTR	LDA	RIGHT	;Is there a wall
	CMP	#$A0	;to the right?
	BEQ	PTR1	;Yep. Left turn.
	JMP	TRIGHT	;No. Right turn.
PTR1	LDA	LEFT	;Is there a wall
	CMP	#$A0	;to the left?
	BEQ	RNDTURN	;Ya. Random turn.
	JMP	TLEFT	;No. Turn left.
RNDTURN	LDA	RANDOM	;Get Random #.
	CLC
	ADC	#$80	;If <128 then
	BCC	TRIGHT	;turn right.
TLEFT	LDA	DIR2,X	;Load current
	TAY		;direction of
	LDA	LTDIR,Y	;patroller and
	STA	DIR2,X	;change with
	JMP	RET	;new value.
LTDIR	.BYTE	$00,$02,$03,$04,$01
TRIGHT	LDA	DIR2,X	;Load current
	TAY		;direction of
	LDA	RTDIR,Y	;patroller and
	STA	DIR2,X	;change with
	JMP	RET	;new value.
RTDIR	.BYTE	$00,$04,$01,$02,$03
EDOT	LDA	H2,X	;Get "X" and "Y"
	STA	PLOTX	;coords from
	LDA	V2,X	;patroller.
	STA	PLOTY
	LDA	#$10	;Set MTEMP to
	STA	MTEMP	;point to maze
	LDA	#$90	;on screen
	STA	MTEMP+1
	LDA	TIME	;What time is it?
	CMP	#$00	;Daytime?
	BNE	ED01	;Nope...
	JSR	PLOTCL	;Yes, plot point.
ED01	RTS
?LINE1401	LDX	MNUM	;Patroller #.
	LDA	DIR2,X	;Find direction
	TAX		;its moving.
	DEX
	LDA	?WHICH,X	;Add to Horiz
	CLC		;or vert.
	ADC	MNUM	;Offset to
	TAY		;proper
	CLC		;patroller #.
	LDA	H2,Y	;Add or Subtrct
	ADC	?TABLE,X	;from horiz or
	STA	H2,Y	;vert.
	RTS
?TABLE	.BYTE	$FF,$FF,$01,$01
?WHICH	.BYTE	$07,$00,$07,$00
SPOS	.BYTE	$14,$30,$30,$02,$30
	.BYTE	".."
	.BYTE	$14,$22,$02,$14,$14
	.BYTE	".."
	.BYTE	$04,$04,$04,$01,$04
	.BYTE	".."
PUTPT	LDA	#<MAZE	;Copy maze
	STA	MTEMP	;address to
	LDA	#>MAZE	;MTEMP
	STA	MTEMP+1
?S0	DEY		;Decrease "Y"
	CPY	#$00	;until zero to
	BEQ	?S1	;find vert pos.
	LDA	#$32	;Add maze width.
	JSR	ADD
	JMP	?S0
?S1	TXA		;Add horiz val.
	JSR	ADD
	LDY	#$00
	LDA	PAT	;Store
	STA	(MTEMP),Y	;plot/erase
	RTS		;here.
;-------------------------------
;Title Page and Option Selection
;-------------------------------
	*=	$6900
	LDA	#$40	;Disable DLIs.
	STA	NMIEN
	LDA	#$00	;Turn off Screen
	STA	DMACTL
	STA	AUDC1	;and sounds.
	LDX	#$00
	STX	SIZEP0	;Zero P/M sizes.
	STX	SIZEP1
SUB3	STA	CENTER2,X	;Erase
	INX		;CENTER2.
	CPX	#$06
	BNE	SUB3
	STX	HPOSP0	;Position PM0 &
	STX	HPOSP1	;PM1 off screen.
	LDX	#$00
SUB4	LDA	SPOS,X	;Reset
	STA	H2,X	;Patrollers'
	INX		;starting
	CPX	#$14	;positions.
	BNE	SUB4
	LDA	#$FF	;Turn off timer.
	STA	FLAG
	LDA	#$00	;Zero Dummy and
	STA	DUMMY	;pointer
	STA	POINTER
	JMP	?DLINIT	;Init.
;--------------
;Title Page DLI
;--------------
?DLI	PHA		;Save Accumulator
	TXA
	PHA		;Save X register
	TYA
	PHA		;Save Y register
	LDA	POINTER	;Which DLI?
	CMP	#$00
	BNE	?DLOOP2
	LDX	#$90
?DLOOP1	STX	COLPF0	;Shade line
	INX		;in 16 shades
	STA	WSYNC	;of blue
	CPX	#$9F
	BNE	?DLOOP1
	JMP	?DRTS
?DLOOP2	CMP	#$01	;2nd DLI?
	BEQ	?DLOOP25
	CMP	#$02	;3rd DLI?
	BNE	?DLOOP5
?DLOOP25	LDX	#$00	;2nd DLI...
?DLOOP3	STX	COLPF0	;Shade
	INX		;in 8 colors
	INX		;of grey.
	STA	WSYNC
	CPX	#$10
	BNE	?DLOOP3
	JMP	?DRTS
?DLOOP5	LDY	DUMMY	;Change colors
	LDA	?COLORS,Y	;on bottom
	STA	COLPF2	;of titles.
	INC	DUMMY
	LDA	DUMMY	;All colors
	CMP	#$06	;displayed?
	BNE	?DRTS	;nope..
	LDA	#$00	;Set color pntr
	STA	DUMMY	;to start color.
?DRTS	INC	POINTER
	LDA	POINTER	;All DLIs
	CMP	#$09	;done?
	BNE	?DR1	;Nope...
	LDA	#$00	;Set pointer
	STA	POINTER	;to 1st DLI.
?DR1	PLA		;Restore Y Reg
	TAY
	PLA		;Restore X Reg
	TAX
	PLA		;Restore A
	RTI
;-------------------------
;Title Page Initialization
;-------------------------
?DLINIT	LDA	#?DLIST&255	;Set D/L
	STA	SDLSTL	;address to
	LDA	#?DLIST/256	;pointer.
	STA	SDLSTL+1
	LDA	#?DLI&255	;Set DLI
	STA	VDSLST	;address
	LDA	#?DLI/256	;to pointer.
	STA	VDSLST+1
	LDA	#$C0	;Enable DLIs.
	STA	NMIEN
	LDA	#$00
	STA	COLOR2	;Black Background
	LDA	#$22	;Turn on Screen
	STA	SDMCTL	;Display.
	LDA	TIME	;Load time and
	JMP	E4	;print it.
PLV	LDY	DIFLEV	;Load dificulty
	LDX	#$00	;level.
	LDA	POINT,Y	;Get offset
	TAY		;pointer.
PLV1	LDA	LEVELS,Y	;Get Character
	CMP	#$5B	;My EOL Char?
	BEQ	END	;Ya...
	STA	PRINT1,X	;Nope print
	INY		;character.
	INX		;Inc POINTERS.
	JMP	PLV1	;Print next.
END	LDA	DIFLEV
	CLC		;Print level #
	ADC	#$10	;in proper spot
	STA	PRINT2	;of screen.
	LDA	CONSOL
	CMP	#$05	;SELECT pressd?
	BNE	END1
	LDA	#$01	;Yes...Set flag
	STA	HOLD
	JMP	E3	;Beep!
END1	CMP	#$03	;OPTION pressd?
	BEQ	E3	;Beep!
	CMP	#$06	;START Pressed?
	BNE	END	;nope...
	LDA	#$00	;Zero last key
	STA	CH	;pressed and
	LDA	#$00	;flags.
	STA	FLAG
	STA	HOLD
	JMP	$7800	;Main program!
E3	LDA	#$30
	STA	AUDF1	;Frequency
	LDA	#$0F	;Store volume
	STA	CDTMV3	;in timer.
E1	LDA	CDTMV3	;Add an offset
	CLC		;to timer for
	ADC	#$A0	;note volume.
	STA	AUDC1
	CMP	#$A0
	BNE	E1
	STA	AUDC1
	LDA	HOLD	;SELECT pressed?
	CMP	#$00
	BEQ	E5	;Nope...
	LDA	#$00
	STA	HOLD
	INC	TIME	;Toggle between
	LDA	TIME	;Day and Night
	CMP	#$02	;TIME=0 ; Daytime
	BNE	E4	;TIME=1 ; Night
	LDA	#$00
	STA	TIME
E4	TAY
	LDX	#$00
	LDA	TPOINT,Y	;Get offset for
	TAY		;Time Print
PLV3	LDA	TPRINT,Y	;Print until
	CMP	#$5B	;My EOL
	BNE	PLV4
	JMP	PLV
PLV4	STA	PRINT3,X
	INY
	INX
	JMP	PLV3
E5	INC	DIFLEV	;Increase
	LDA	DIFLEV	;difficulty
	CMP	#$07	;level (0-6)
	BEQ	PLV5
	JMP	PLV	;and print it.
PLV5	LDA	#$00
	STA	DIFLEV
	JMP	PLV
;-----------------------
;Title Page Display List
;-----------------------
?DLIST	.BYTE	$70,$70,$70
	.BYTE	$42
	.WORD	TEXT
	.BYTE	$02,$F0,$07,$00,$F0
	.BYTE	$06,$80,$06
	.BYTE	$70,$02,$70,$02,$70,$02
	.BYTE	$70,$F0,$00,$82,$00,$82
	.BYTE	$70,$70,$82,$00,$82,$00
	.BYTE	$82,$00,$41
	.WORD	?DLIST
;-----------------------------
;Title Page and Selection Data
;-----------------------------
TEXT
	.SBYTE	"     ArgoSoft Softwa"
	.SBYTE	"re Productions      "
	.SBYTE	"            Proudly "
	.SBYTE	"Presents            "
	.SBYTE	"     LABYRIN"
	.SBYTE	"THS       THE ULTIMA"
	.SBYTE	"TE 3-D     MAZE ADVE"
	.SBYTE	"NTURE            A.N"
	.SBYTE	".A.L.O.G. Computing"
	.SBYTE	"              Progra"
	.SBYTE	"mmed  By Steven Lash"
	.SBYTE	"ower"
	.SBYTE	"      (C) 1987 ArgoS"
	.SBYTE	"oft Software Product"
	.SBYTE	"ions"
	.SBYTE	"     Number of Argon"
	.SBYTE	"ian Patrollers->0"
	.SBYTE	"       You Will Atte"
	.SBYTE	"mpt A          "
	.SBYTE	"Escape"
	.SBYTE	"     .Option. Diffic"
	.SBYTE	"ulty Level -        "
	.SBYTE	"     .Select. Daytim"
	.SBYTE	"e or Nightime "
	.SBYTE	"Escape "
	.SBYTE	"    .Start . Enter t"
	.SBYTE	"he Labyrinth        "
	.SBYTE	"  "
?COLORS	.BYTE	$C2,$B2,$A2,$92
	.BYTE	$82,$00
LEVELS	.SBYTE	"Beginner.Easy    "
	.SBYTE	".Moderate.Hard    .T"
	.SBYTE	"rivial.Sadistic.Insa"
	.SBYTE	"ne  ."
POINT	.BYTE	$00,$09,$12,$1B
	.BYTE	$24,$2C,$35
TPRINT	.SBYTE	"Daylight."
	.SBYTE	"Nightime."
TPOINT	.BYTE	$00,$09
	*=	$02E0
	.WORD	$6900