Classic Computer Magazine Archive A.N.A.L.O.G. ISSUE 64 / SEPTEMBER 1988 / PAGE 16

Snowplow

screen1  screen2

Your mother begged you to become an orthodontist and straighten out all those crooked teeth. But you just couldn't see spending eight hours a day with your hands in someone else's mouth. So here you are driving a truck for the highway department. Cutting weeds in the summer and filling potholes in the spring. Not to mention burning tons of leaves in the fall. Oh! Then there's winter and all that snow to plow.

    Speaking of which we just had a snowfall and another storm is on the way. And it looks like a big one. Your regular truck won't do the job. For this one you need a bulldozer. Here we go again. Put on your gloves, get your snow goggles, and grab a thermos of coffee (so you'll be able to stay awake for 24 hours straight). Now get out there and clean up those flakes! Wait a second-make sure you keep tuned to the weather station for the latest weather bulletins.

Starting your dozer
    Type in LISTING 1 using the M/L Editor found elsewhere in this issue. To load the game, use the L option from the DOS menu.
    If you wish to forgo watching the falling snow on the introduction screen (will you please watch at least once? After all, we did spend some time trying to create this special effect), press any key. After watching the scrolling weather message, press the START key to begin plowing. You may direct the dozer in any of the four directions using a joystick in port 1. No! You cannot go off the road-see the centerline markers: follow them until the roads are completely clear of snow. If you accomplish this task there will probably be another snowfall to test your driving skills.
    While you're pushing snowflakes around, storms will occasionally cross your path. If your dozer touches one, it will undoubtedly get diesel-line freeze and crash. You'll need a new one then. As time goes on the storms get more frequent and faster, so beware. Most of the streets are free of vehicles, but there are always some crazy people who venture out and risk  their lives. Fortunately, a bell sound warns you that they are on the road. If you hit one, you score a 100-point bonus. These people will honk their horns at you but I'd just ignore them and keep going. And don't forget to keep your gas tank full.

Put on your gloves, get your
snow goggles, and grab a thermos of
coffee-now get out there
and clean up those flakes!

    Remember the Knight-Rider and KIT? Me neither. But KIT had turbo boost. And so does your dozer. So once per level you can jump to the edge of the screen (asuming there's a road there; you wouldn' t want to jump into a tree. would you?) If you need to clean off your windshield or take a sip of coffee during plowing, just hit any key to pause. Press a key again to continue. Well, what are you waiting for? Get going'

Technical Notes and Other Stuff
    Snowplow uses the four color Antic mode 5. Antic 4 would give better resolution but would have taken much more memory. An entire screen takes 2560 bytes-roughly 2.5K or about 1/3 of the entire program. In Snowplow we have an entire screen, but it takes only 1/6th of the program because it is compacted. We used a compacter similar to the one in BBK,Artist (See issue #56).
    The falling letters on the intro screen are each composed of four defined graphic zero characters. Of course, there's also a complete character set in the DATA.
    If you get tired of playing the same gameboard over and over, relief is in sight-a gameboard editor! That's why, when you're playing the game, the disk is being accessed. It's looking for files named SMAP.??? where ??? can be anything that's legal. It will load these files in the order they appear on the disk. As you clear each board, the storm appears on screen more often and moves faster until the 6th board. So leave your drive on while playing Snowplow. Nest month. when we present the Snowplow Editor, you'll be able to design your own screens. Excuse me a minute. I think I have to shovel the sidewalk. . . .

LISTING 1: M/L EDITOR DATA

1000 DATA 255,255,0,128,10,128,72,169,
2,141,10,212,141,26,208,104,6014
1010 DATA 64,0,140,255,143,0,0,0,0,0,0
,0,0,236,226,202,3155
1020 DATA 42,162,162,170,170,63,143,16
3,168,10,10,10,10,255,255,0,5452
1030 DATA 170,128,128,128,128,255,255,
0,170,10,10,10,10,253,245,213,8922
1040 DATA 213,213,245,254,254,127,95,8
7,87,87,95,191,191,255,255,255,5771
1050 DATA 255,255,255,255,255,250,234,
160,162,160,162,226,250,250,234,170,98
25
1060 DATA 170,170,170,234,250,191,175,
11,171,11,171,175,191,191,175,171,2873
1070 DATA 171,171,171,175,191,0,0,0,0,
0,24,24,48,255,255,255,6402
1080 DATA 251,234,251,234,255,254,234,
239,234,254,254,254,254,191,171,251,28
82
1090 DATA 171,191,191,191,191,127,99,9
9,99,99,99,127,0,56,24,24,2204
1100 DATA 24,60,60,60,0,127,99,3,127,9
6,96,127,0,126,6,6,9776
1110 DATA 127,7,7,127,0,112,112,112,11
9,119,127,7,0,127,96,96,2628
1120 DATA 127,7,7,127,0,124,108,96,127
,99,99,127,0,127,3,3,675
1130 DATA 31,24,24,24,0,62,54,54,127,1
19,119,127,0,127,99,99,2572
1140 DATA 127,7,7,7,0,0,0,24,24,0,24,2
4,0,255,255,254,3749
1150 DATA 248,170,170,207,255,255,255,
175,171,170,170,243,255,0,0,1,422
1160 DATA 4,85,85,48,0,0,0,80,84,85,85
,12,0,0,60,102,7638
1170 DATA 12,24,0,24,0,0,60,102,110,11
0,96,62,0,0,0,63,7460
1180 DATA 3,127,103,127,0,0,96,96,127,
115,115,127,0,0,0,127,808
1190 DATA 96,96,96,127,0,0,3,3,127,99,
99,127,0,0,0,127,9097
1200 DATA 99,127,112,127,0,0,30,24,126
,24,56,56,0,0,0,127,7493
1210 DATA 99,99,127,7,127,0,96,96,127,
115,115,115,0,0,12,0,9109
1220 DATA 12,12,28,28,0,0,12,0,12,12,1
4,14,126,0,48,48,5212
1230 DATA 118,124,118,115,0,0,24,24,24
,56,56,56,0,0,0,102,6466
1240 DATA 127,127,107,99,0,0,0,63,51,1
15,115,115,0,0,0,63,8104
1250 DATA 51,115,115,127,0,0,0,63,51,1
15,127,112,112,0,0,127,726
1260 DATA 99,99,127,7,7,0,0,63,51,112,
112,112,0,0,0,127,8692
1270 DATA 96,127,7,127,0,0,12,127,12,2
8,28,28,0,0,0,51,5097
1280 DATA 51,115,115,127,0,0,0,99,99,9
9,54,28,0,0,0,99,7601
1290 DATA 107,127,62,54,0,0,0,102,60,2
4,60,102,0,0,0,51,6349
1300 DATA 51,115,127,3,15,0,0,126,12,2
4,48,126,0,0,30,24,6279
1310 DATA 24,24,24,30,0,0,64,96,48,24,
12,6,0,0,120,24,5850
1320 DATA 24,24,24,120,0,0,8,28,54,99,
0,0,0,0,0,0,3700
1330 DATA 0,0,0,255,0,0,0,7,15,28,28,2
8,31,15,0,0,4078
1340 DATA 0,24,31,31,0,0,0,252,252,12,
0,0,252,254,14,14,3275
1350 DATA 14,30,252,248,0,0,0,124,124,
30,30,31,31,31,29,28,8002
1360 DATA 28,28,124,124,0,0,0,62,62,56
,56,56,56,184,248,248,6206
1370 DATA 120,120,62,62,0,0,0,63,127,1
12,112,112,112,112,112,112,4003
1380 DATA 112,112,127,63,0,0,0,248,252
,28,28,28,28,28,28,28,9149
1390 DATA 28,28,252,248,0,0,0,124,124,
28,28,28,29,29,29,29,7936
1400 DATA 31,31,126,124,0,0,0,62,62,56
,56,56,184,184,184,184,5941
1410 DATA 248,248,126,62,0,0,0,127,127
,28,28,28,28,31,31,28,7574
1420 DATA 28,28,127,127,0,0,0,240,248,
28,28,28,28,248,240,0,4905
1430 DATA 0,0,0,0,0,0,0,127,127,28,28,
28,28,28,28,28,6137
1440 DATA 28,28,127,127,0,0,0,0,0,0,0,
0,0,0,0,0,2413
1450 DATA 28,28,252,252,0,0,0,63,127,1
12,112,112,112,112,112,112,5137
1460 DATA 112,112,127,63,0,0,0,248,252
,28,28,28,28,28,28,28,9229
1470 DATA 28,28,252,248,0,0,0,124,124,
28,28,28,29,29,29,29,8016
1480 DATA 31,31,126,124,0,0,0,62,62,56
,56,56,184,184,184,184,6021
1490 DATA 248,248,126,62,0,255,255,255
,215,255,255,255,255,0,0,0,1880
1500 DATA 20,0,0,0,0,255,253,255,253,2
55,253,255,253,0,1,0,835
1510 DATA 1,0,1,0,1,255,127,255,127,25
5,127,255,127,0,64,0,6739
1520 DATA 64,0,64,0,64,255,253,255,93,
255,253,255,253,0,1,0,9971
1530 DATA 81,0,1,0,1,255,127,255,117,2
55,127,255,127,0,64,0,6749
1540 DATA 69,0,64,0,64,255,253,255,93,
255,255,255,255,0,1,0,44
1550 DATA 81,0,0,0,0,255,255,255,93,25
5,253,255,253,0,0,0,9505
1560 DATA 81,0,1,0,1,255,255,255,117,2
55,127,255,127,0,0,0,6715
1570 DATA 69,0,64,0,64,255,127,255,117
,255,255,255,255,0,64,0,353
1580 DATA 69,0,0,0,0,255,255,255,253,2
55,253,255,253,0,0,0,963
1590 DATA 1,0,1,0,1,255,255,255,127,25
5,127,255,127,0,0,0,6755
1600 DATA 64,0,64,0,64,255,127,255,127
,255,255,255,255,0,64,0,468
1610 DATA 64,0,0,0,0,255,253,255,253,2
55,255,255,255,0,1,0,1037
1620 DATA 1,0,0,0,0,255,239,255,85,255
,255,255,255,0,8,0,9479
1630 DATA 85,0,0,0,0,24,24,24,24,24,24
,24,24,0,126,120,7349
1640 DATA 124,110,102,6,0,8,24,56,120,
56,24,8,0,16,24,28,6010
1650 DATA 30,28,24,16,0,0,139,39,139,0
,38,53,37,44,0,17,6831
1660 DATA 21,16,0,48,44,47,55,51,0,19,
0,0,0,0,0,0,3390
1670 DATA 51,35,47,50,37,0,16,16,16,16
,16,16,0,0,0,0,3229
1680 DATA 0,0,155,39,155,0,0,179,174,1
75,183,166,172,161,171,165,1524
1690 DATA 179,0,183,169,174,0,0,0,0,0,
0,0,112,114,101,115,371
1700 DATA 115,0,51,52,33,50,52,0,0,0,0
,0,0,0,127,32,5422
1710 DATA 127,112,112,112,112,112,112,
112,66,0,123,2,112,112,112,2,2464
1720 DATA 2,112,112,112,112,87,0,124,1
12,112,112,112,70,160,123,65,5543
1730 DATA 0,127,128,127,174,127,112,11
2,112,66,0,123,2,117,0,144,3300
1740 DATA 117,128,144,117,0,145,117,12
8,145,117,0,146,117,128,146,117,7328
1750 DATA 0,147,117,128,147,117,0,148,
117,128,148,213,0,149,70,0,5181
1760 DATA 139,6,65,128,127,0,64,165,79
,160,50,185,128,127,153,192,8911
1770 DATA 127,136,16,247,169,140,141,2
44,2,32,251,64,162,74,160,158,9766
1780 DATA 169,7,32,92,228,169,0,133,19
8,169,0,133,183,133,178,32,8136
1790 DATA 39,76,76,47,64,32,73,76,32,9
0,66,32,215,74,169,3,2740
1800 DATA 133,182,169,0,133,186,32,225
,73,32,81,78,32,36,75,32,1970
1810 DATA 48,71,32,130,70,32,215,74,32
,50,65,165,183,208,14,165,6879
1820 DATA 178,208,10,169,1,133,178,32,
166,79,76,106,64,32,84,76,3573
1830 DATA 32,156,70,32,61,71,32,4,72,3
2,239,70,32,36,71,32,433
1840 DATA 242,77,169,11,133,184,32,75,
65,169,1,133,146,173,31,208,7375
1850 DATA 201,6,208,3,76,232,77,173,12
0,2,133,184,32,75,65,141,5862
1860 DATA 30,208,32,0,68,32,145,69,173
,132,2,208,3,32,166,76,4089
1870 DATA 32,213,77,173,12,208,201,12,
176,33,173,13,208,201,12,176,8549
1880 DATA 26,165,175,197,173,208,12,16
5,174,197,172,208,6,32,143,70,8781
1890 DATA 76,64,64,165,179,5,180,5,181
,208,24,141,30,208,32,241,8474
1900 DATA 73,32,103,75,32,213,73,141,3
0,208,32,81,66,76,234,64,5853
1910 DATA 76,14,74,165,182,240,249,173
,252,2,201,255,240,3,32,131,1670
1920 DATA 74,76,132,64,169,62,141,47,2
,169,17,141,111 2 169,3 3019
1930 DATA 141,29,208,169,128,141,7,212
,169,40,141,192,2,169,6,141,7174
1940 DATA 193,2,169,166,141,194,2,141,
195,2,169,128,133,131,169,112,9379
1950 DATA 133,133,169,1,141,10,208,141
,11,208,96,160,255,169,0,153,9493
1960 DATA 0,132,153,0,133,153,0,134,15
3,0,135,153,0,131,136,192,6982
1970 DATA 255,208,236,96,162,3,165,184
,221,177,65,240,4,202,16,248,1630
1980 DATA 96,189,189,65,133,205,189,19
3,65,133,206,189,197,65,133,203,3206
1990 DATA 189,201,65,133,204,138,72,16
5,133,133,187,24,125,185,65,133,9170
2000 DATA 134,133,188,168,169,0,153,25
5,132,160,0,177,205,166,187,157,2810
2010 DATA 0,132,177,203,166,188,157,0,
133,200,230,187,230,188,192,16,3403
2020 DATA 208,233,166,188,157,0,133,16
6,131,142,0,208,104,170,165,131,386
2030 DATA 24,125,181,65,133,132,141,1,
208,96,11,7,14,13,255,1,2801
2040 DATA 0,0,0,0,255,1,205,221,237,25
3,65,65,65,65,13,29,5096
2050 DATA 45,61,66,66,66,66,0,0,0,255,
255,118,118,118,118,118,7020
2060 DATA 118,255,255,0,0,0,0,0,0,255,
255,110,110,110,110,110,6508
2070 DATA 110,255,255,0,0,0,0,102,102,
126,126,126,126,126,126,162,6271
2080 DATA 102,102,126,126,102,0,0,102,
126,126,102,102,102,126,126,126,6330
2090 DATA 126,126,126,102,102,0,6,170,
170,128,128,132,132,132,132,132,8582
2100 DATA 132,128,128,170,170,0,0,253,
253,1,1,97,97,97,97,97,5514
2110 DATA 97,1,1,253,253,0,0,255,255,0
,153,153,24,24,153,153,7734
2120 DATA 24,24,153,153,0,0,0,0,129,15
3,24,24,153,153,24,24,1381
2130 DATA 153,153,0,255,255,0,160,19,2
08,2,160,7,32,247,67,136,6947
2140 DATA 208,250,96,160,0,169,0,141,8
9,86,169,144,141,125,86,185,8999
2150 DATA 89,86,24,105,128,153,90,86,1
85,125,86,105,0,153,126,86,6308
2160 DATA 200,192,33,208,234,162,7,169
,16,149,212,202,16,251,133,196,2461
2170 DATA 32,48,71,169,3,133,182,169,1
9,141,16,139,169,96,133,211,8963
2180 DATA 169,255,133,191,96,216,68,10
,70,0,169,127,133,266,169,136,9691
2190 DATA 133,205,95,164,130,185,89,86
,133,205,185,125,86,133,206,96,1136
2200 DATA 22,4,165,184,201,7,208,62,32
,86,69,144,1,96,165,243,7815
2210 DATA 201,83,144,1,96,169,1,133,13
8,32,197,74,169,1,133,135,6561
2220 DATA 32,61,67,238,183,66,230,243,
162,3,142,4,212,32,247,67,9471
2230 DATA 32,165,75,202,16,244,198,138
,165,138,16,224,32,96,70,32,6710
2240 DATA 69,74,32,117,71,96,201,11,20
8,79,32,105,69,144,1,96,4185
2250 DATA 165,243,208,1,96,169,1,133,1
38,32,197,74,162,0,142,4,5011
2260 DATA 212,32,247,67,32,200,75,232,
224,4,208,242,169,255,133,135,4456
2270 DATA 162,0,142,4,212,32,61,67,198
,243,206,183,66,198,138,165,2103
2280 DATA 138,16,217,76,243,66,160,0,1
85,136,127,24,101,135,153,l36,8520
2290 DATA 127,200,200,200,192,33,208,2
40,96,201,14,208,48,32,132,69,8431
2300 DATA 144,1,96,165,244,240,94,32,1
97,74,169,255,133,135,32,189,1523
2310 DATA 67,198,244,206,184,66,162,15
,142,5,212,32,247,67,32,217,9044
2320 DATA 75,202,16,244,169,0,141,5,21
2,76,243,66,96,201,13,208,9413
2330 DATA 52,32,119,69,144,1,96,165,24
4,201,9,144,1,96,32,197,6819
2340 DATA 74,162,0,142,5,212,32,247,67
,32,217,75,232,224,16,208,733
2350 DATA 242,162,0,142,5,212,169,1,13
3,135,32,189,67,230,244,238,2698
2360 DATA 184,66,76,243,66,96,165,135,
48,27,160,0,185,136,127,24,6077
2370 DATA 105,128,153,136,127,200,185,
136,127,105,0,153,136,127,200,200,1727
2380 DATA 192,33,208,232,96,160,0,185,
136,127,56,233,128,153,136,127,894
2390 DATA 200,185,136,127,233,0,153,13
6,127,200,200,192,33,208,232,96,3204
2400 DATA 169,0,133,20,165,20,240,252,
96,165,184,201,7,206,68,165,1302
2410 DATA 131,201,124,144,9,165,243,20
1,83,176,3,76 70,68,165,131,8120
2420 DATA 201,200,176,46,32,86,69,144,
1,96,32,197,74,160,7,230,6716
2430 DATA 131,166,131,142,0,208,230,13
2,166,132,142,1,208,32,247,67,85
2440 DATA 32,165,75,136,16,233,238,183
,66,238,183,66,76,243,66,32,9850
2450 DATA 185,66,96,201,11,208,61,32,1
05,69,144,1,96,165,131,201,7815
2460 DATA 132,176,12,165,243,208,232,1
65,131,201,48,240,229,144,227,32,4554
2470 DATA 197,74,160,7,198,131,166,131
,142,0,208,198,132,166,132,142,1543
2480 DATA 1,208,32,247,67,32,206,75,13
6,16,233,206,183,66,206,183,2248
2490 DATA 66,76,243,66,201,13,208,106,
32,119,69,144,1,96,165,133,7013
2500 DATA 201,96,144,9,165,244,201,9,1
76,3,76,70,68,165,133,201,8824
2510 DATA 192,176,159,169,15,133,138,3
2,197,74,165,133,133,187,165,134,1192
2520 DATA 133,188,168,169,0,153,0,133,
162,15,164,187,185,15,132,153,8890
2530 DATA 16,132,164,188,185,15,133,20
1,24,208,4,169,153,208,6,201,183
2540 DATA 153,208,2,169,24,153,16,133,
198,187,198,188,202,16,219,230,3906
2550 DATA 133,230,134,32,247,67,198,13
8,165,138,16,190,238,184,66,76,997
2560 DATA 243,66,201,14,240,3,76,73,68
,32,132,69,144,1,96,165,5106
2570 DATA 133,201,112,176,7,165,244,24
0,3,76,70,68,165,133,201,48,8961
2580 DATA 208,3,76,70,68,32,197,74,169
,15,133,138,164,133,162,15,7259
2590 DATA 185,0,132,153,255,131,185,0,
133,201,24,208,4,169,153,208,1147
2600 DATA 6,201,153,208,2,169,24,153,2
55,132,200,202,16,226,32,247,2758
2610 DATA 67,198,133,198,138,165,138,1
6,211,206,184,66,76,243,66,172,1945
2620 DATA 184,66,32,172,66,172,183,66,
200,200,177,205,133,137,32,82,537
2630 DATA 70,96,172,184,66,32,172,66,1
72,183,66,136,136,76,97,69,7525
2640 DATA 172,184,66,200,32,172,66,172
,183,66,76,97,69,172,184,66,8636
2650 DATA 136,32,172,66,172,183,66,76,
97,69,172,184,66,32,172,66,7263
2660 DATA 172,183,66,177,205,162,15,22
1,53,70,240,6,202,16,248,76,9649
2670 DATA 224,69,201,27,240,4,201,29,2
08,21,72,169,97,145,205,200,1074
2680 DATA 145,205,32,71,72,32,93,74,10
4,201,27,240,19,208,26,170,7802
2690 DATA 232,138,145,205,200,177,205,
170,232,138,145,205,201,11,240,9,3344
2700 DATA 230,174,208,2,230,175,32,75,
72,165,137,201,8,208,44,230,507
2710 DATA 137,172,184,66,32,172,66,166
,207,165,206,213,224,240,4,202,4888
2720 DATA 16,247,96,173,183,66,24,101,
205,213,218,208,242,169,100,149,4762
2730 DATA 153,32,254,75,32,48,71,32,13
0,70,96,172,184,66,32,172,6748
2740 DATA 66,166,185,240,245,165,206,2
13,234,240,4,202,16,247,96,165,4734
2750 DATA 205,24,109,183,66,213,230,20
8,242,169,50,149,160,96,96,98,1582
2760 DATA 100,102,104,106,108,110,112,
114,116,118,120,8,27,29,97,99,4132
2770 DATA 101,103,105,107,109,111,113,
115,117,119,121,162,28,221,53,70,7633
2780 DATA 240,5,202,16,248,56,96,24,96
,198,181,165,181,5,180,5,8158
2790 DATA 179,240,20,165,181,16,16,169
,9,133,181,198,180,165,180,16,18
2800 DATA 6,169,9,133,180,198,179,32,1
30,70,96,162,2,181,179,9,7559
2810 DATA 16,157,6,139,202,16,246,96,1
69,0,162,15,133,146,32,77,6278
2820 DATA 66,202,16,250,96,162,16,169,
12,157,66,3,32,86,228,162,7326
2830 DATA 16,169,3,157,66,3,169,70,157
,69,3,169,227,157,68,3,6293
2840 DATA 169,4,157,74,3,169,0,157,75,
3,32,86,228,16,1,96,2897
2850 DATA 162,16,169,144,157,69,3,169,
0,157,68,3,169,0,169,10,3945
2860 DATA 157,73,3,169,7,157,66,3,32,8
6,228,96,68,49,58,83,3887
2870 DATA 77,65,80,46,32,32,32,155,160
,0,132,172,230,172,132,173,419
2880 DATA 132,176,32,172,66,160,0,177,
205,162,12,221,53,70,240,20,8692
2890 DATA 202,16,248,200,200,192,0,208
,238,230,206,230,176,164,176,192,8248
2900 DATA 10,208,226,96,230,172,208,2,
230,173,76,10,71,160,50,185,9671
2910 DATA 192,127,153,128,127,136,16,2
47,96,169,0,133,181,169,1,133,8878
2920 DATA 179,165,192,133,180,96,160,0
,132,176,132,207,164,176,192,19,1797
2930 DATA 208,1,96,32,172,66,160,0,177
,205,201,8,240,11,200,200,1356
2940 DATA 192,126,208,244,230,176,76,6
7,71,166,207,165,206,149,224,152,5370
2950 DATA 24,101,205,149,218,230,207,1
65,207,201,6,208,225,96,166,207,6132
2960 DATA 240,32,181,153,240,25,214,15
3,181,153,208,19,181,224,133,206,4946
2970 DATA 181,218,133,205,160,0,169,8,
145,205,200,169,10,145,205,202,2903
2980 DATA 16,224,166,185,208,1,96,181,
160,240,38,214,160,181,160,208,5016
2990 DATA 32,181,234,133,206,181,230,1
33,205,160,0,177,205,201,96,208,5224
3000 DATA 67,169,27,145,205,200,169,28
,145,205,169,80,149,166,32,180,1493
3010 DATA 77,202,16,211,166,185,181,16
6,240,33,214,166,181,166,208,27,3983
3020 DATA 181,234,133,206,181,230,133,
205,160,0,177,205,201,27,208,15,1946
3030 DATA 169,96,145,205,200,145,205,1
69,100,149,160,202,16,216,96,169,3253
3040 DATA 97,208,239,96,169,29,145,205
,200,169,30,208,187,160,0,132,1427
3050 DATA 176,132,185,164,176,192,19,2
08,1,96,32,172,66,160,0,177,7845
3060 DATA 205,201,27,240,11,200,200,19
2,126,208,244,230,176,76,10,72,2211
3070 DATA 166,185,165,206,149,234,152,
24,101,205,149,230,152,72,169,96,2743
3080 DATA 145,205,200,145,205,104,168,
230,185,165,185,201,4,208,214,96,4952
3090 DATA 162,3,208,2,162,4,181,212,24
,105,1,149,212,201,26,144,9016
3100 DATA 14,169,16,149,212,202,48,7,2
46,212,181,212,76,84,72,162,1465
3110 DATA 5,181,212,157,29,139,202,16,
248,165,213,197,196,240,7,133,3992
3120 DATA 196,230,182,32,225,73,96,165
,211,240,26,198,211,166,189,189,5892
3130 DATA 205,72,141,151,72,189,206,72
,141,152,72,169,1,133,186,32,8804
3140 DATA 255,255,76,98,228,173,10,210
,41,3,170,10,133,189,169,107,9464
3150 DATA 133,211,189,63,73,133,143,18
9,67,73,133,144,24,105,12,133,6814
3160 DATA 141,32,115,73,32,79,73,165,1
93,133,238,165,194,133,239,169,4805
3170 DATA 0,133,186,76,98,228,213,72,2
20,72,227,72,234,72,32,102,446
3180 DATA 73,32,241,72,96,32,71,73,32,
22,73,96,32,102,73,32,1995
3190 DATA 22,73,96,32,71,73,32,241,72,
96,164,143,162,31,185,0,7162
3200 DATA 134,153,255,133,185,0,135,15
3,255,134,200,202,16,240,198,143,5116
3210 DATA 169,0,164,142,153,1,131,169,
195,153,255,130,198,142,96,165,3771
3220 DATA 143,24,105,31,168,162,31,185
,0,134,153,1,134,185,0,135,6886
3230 DATA 153,1,135,136,202,16,240,230
,143,169,0,164,142,153,0,131,9989
3240 DATA 169,195,153,2,131,230,142,96
,192,48,48,192,10,224,10,224,103
3250 DATA 198,144,198,144,198,141,198,
141,165,144,141,2,208,24,105,16,8627
3260 DATA 141,3,208,165,141,141,4,208,
24,105,6,141,7,208,96,230,9081
3270 DATA 144,230,144,230,141,230,141,
165,141,76,79,73,32,197,73,162,253
3280 DATA 0,164,143,189,165,73,153,0,1
34,153,1,134,189,181,73,153,16
3290 DATA 0,135,153,1,135,200,200,232,
224,16,208,231,165,143,24,105,2577
3300 DATA 12,133,142,164,142,169,195,1
53,0,131,153,1,131,96,0,4,5089
3310 DATA 2,50,11,7,61,79,12,61,71,11,
18,18,1,0,0,128,8048
3320 DATA 72,72,208,230,188,240,50,188
,224,208,76,64,32,0,162,0,7860
3330 DATA 138,157,0,135,157,0,134,157,
0,131,232,208,244,96,198,182,4057
3340 DATA 32,225,73,32,48,71,32,130,70
,96,165,182,201,10,144,4,6665
3350 DATA 169,9,133,182,9,16,141,16,13
9,96,169,0,141,2,208,141,7227
3360 DATA 3,208,141,4,208,141,7,208,13
3,211,165,193,133,238,165,194,5895
3370 DATA 133,239,169,0,133,186,96,169
,155,141,170,127,169,0,141,169,1508
3380 DATA 127,169,0,133,146,32,41,74,1
73,31,208,201,6,208,249,76,686
3390 DATA 32,64,169,0,141,8,210,162,3,
142,15,210,162,7,157,0,6267
3400 DATA 210,202,16,250,96,169,0,141,
0,210,141,1,210,96,169,0,7956
3410 DATA 141,3,210,141,2,210,96,169,0
,141,4,210,141,5,210,141,9328
3420 DATA 6,210,141,7,210,96,32,41,74,
162,1,169,121,141,4,210,7767
3430 DATA 169,166,141,5,210,169,10,141
,6,210,169,36,141,7,210,32,7674
3440 DATA 77,66,32,78,74,32,77,66,202,
16,224,96,162,255,142,252,3118
3450 DATA 2,169,0,133,146,32,247,67,17
3,252,2,201,255,240,249,142,6702
3460 DATA 252,2,169,1,133,146,96,165,1
46,208,3,76,98,228,165,238,2848
3470 DATA 5,239,240,13,198,238,165,238
,201,255,208,239,198,239,76,162,9369
3480 DATA 74,198,145,165,145,208,228,1
65,195,133,145,76,126,72,165,186,3623
3490 DATA 208,13,169,50,141,2,210,169,
70,141,3,210,32,247,67,96,8978
3500 DATA 169,128,133,131,169,112,133,
133,169,4,141,184,66,169,24,141,9520
3510 DATA 183,66,169,0,133,243,133,244
,162,5,169,0,149,153,202,16,70
3520 DATA 251,162,3,189,32,75,149,160,
169,0,149,166,202,16,244,169,2159
3530 DATA 0,133,174,133,175,230,174,13
3,211,165,195,133,145,32,41,74,809
3540 DATA 165,193,133,238,165,194,133,
239,96,48,96,128,176,166,191,224,5271
3550 DATA 5,240,2,230,191,166,191,189,
75,75,133,192,189,81,75,133,1797
3560 DATA 193,189,87,75,133,194,189,93
,75,133,195,169,1,141,88,86,9449
3570 DATA 32,41,74,96,8,7,6,5,4,3,128,
128,0,128,0,128,1304
3580 DATA 3,2,2,1,1,0,10,8,6,4,2,1,0,2
,1,3,3955
3590 DATA 165,184,72,160,4,132,148,169
,0,133,197,162,3,134,147,189,764
3600 DATA 99,75,170,32,88,65,169,134,1
41,3,210,165,197,24,105,9,7777
3610 DATA 133,197,141,2,210,32,81,66,1
98,147,166,147,208,225,198,148,4939
3620 DATA 164,148,208,215,104,133,184,
32,88,65,32,69,74,96,132,208,8662
3630 DATA 134,210,165,209,41,1,170,189
,198,75,164,134,153,1,133,153,818
3640 DATA 2,133,153,13,133,153,14,133,
230,209,164,208,166,210,96,85,3522
3650 DATA 169,132,208,134,210,165,209,
41,1,170,189,215,75,76,177,75,1336
3660 DATA 170,149,132,208,134,210,164,
134,162,7,185,4,133,201,153,208,3283
3670 DATA 4,169,24,208,6,201,24,208,2,
169,153,153,4,133,200,202,1357
3680 DATA 16,232,166,210,164,208,96,32
,69,74,169,164,141,3,210,162,1299
3690 DATA 160,142,2,210,32,30,76,224,4
5,208,5,169,162,141,3,210,9697
3700 DATA 202,208,238,32,69,74,96,160,
206,32,247,67,136,16,250,96,820
3710 DATA 32,73,76,162,96,169,3,157,66
,3,169,76,157,69,3,169,6686
3720 DATA 156,157,68,3,169,6,157,74,3,
169,0,157,75,3,32,86,3452
3730 DATA 228,96,162,96,169,12,157,66,
3,32,86,228,96,169,5,162,7874
3740 DATA 96,157,66,3,169,86,157,69,3,
169,68,157,68,3,169,20,5502
3750 DATA 157,72,3,169,0,157,73,3,32,8
6,228,48,7,173,72,86,5414
3760 DATA 201,70,208,12,32,39,76,169,0
,133,178,104,104,76,86,64,6317
3770 DATA 162,10,189,68,86,157,225,70,
201,32,240,3,232,208,243,169,5380
3780 DATA 155,157,225,78,96,68,49,58,8
3,77,65,80,46,42,155,173,6370
3790 DATA 88,86,208,1,96,165,184,201,7
,208,61,173,183,66,133,140,1472
3800 DATA 169,200,56,229,131,74,74,133
,139,24,109,183,66,141,183,66,9653
3810 DATA 206,183,66,206,183,66,32,86,
69,144,6,165,140,141,183,66,9329
3820 DATA 96,162,200,142,0,208,134,131
,232,142,1,208,134,132,238,183,4745
3830 DATA 66,238,183,66,206,88,86,96,2
01,11,208,63,173,183,66,133,1005
3840 DATA 140,165,131,56,233,48,74,74,
133,139,173,183,66,56,229,139,1477
3850 DATA 141,183,66,238,183,66,238,18
3,66,32,105,69,144,6,165,140,9516
3860 DATA 141,183,66,96,162,48,142,0,2
08,134,131,202,142,1,208,134,1242
3870 DATA 132,206,183,66,286,183,66,20
6,88,86,96,201,14,208,70,173,1497
3880 DATA 184,66,133,140,165,133,56,23
3,48,74,74,74,74,133,139,173,9585
3890 DATA 184,66,56,229,139,141,184,66
,238,184,66,32,132,69,144,6,8677
3900 DATA 165,140,141,184,66,96,206,18
4,66,32,110,77,169,48,133,133,9364
3910 DATA 32,75,65,206,88,86,96,160,25
5,169,0,153,0,132,153,0,7983
3920 DATA 133,136,208,247,96,201,13,20
8,34,173,184,66,133,140,169,192,3526
3930 DATA 56,229,133,74,74,74,74,24,10
9,184,66,141,184,66,206,184,1252
3940 DATA 66,32,119,69,144,6,165,140,1
41,184,66,96,32,110,77,169,8536
3950 DATA 192,133,133,32,75,65,238,184
,66,206,88,86,96,32,69,74,7407
3960 DATA 169,12,141,2,210,169,169,133
,177,198,177,165,177,201,160,144,6214
3970 DATA 9,141,3,210,32,81,66,76,192,
77,32,69,74,96,165,186,8261
3980 DATA 240,11,169,134,141,1,210,169
,11,141,0,210,96,32,60,74,6627
3990 DATA 96,173,31,208,201,6,240,249,
76,14,74,169,127,141,49,2,8128
4000 DATA 169,128,141,48,2,169,192,141
,14,212,169,128,141,1,2,169,8758
4010 DATA 0,141,0,2,162,4,189,156,66,1
57,196,2,202,16,247,96,140
4020 DATA 146,10,0,66,0,238,225,244,23
3,239,238,225,236,128,247,229,1439
4030 DATA 225,244,232,229,242,128,243,
229,242,246,233,227,229,128,226,245,38
70
4040 DATA 236,236,229,244,233,238,0,0,
0,0,0,0,0,128,243,238,8249
4050 DATA 239,247,128,247,225,242,238,
233,238,231,160,0,132,146,132,186,7190
4060 DATA 32,41,74,166,198,208,26,169,
8,141,31,208,169,90,133,240,2443
4070 DATA 185,0,142,153,0,125,169,0,15
3,0,142,153,0,124,200,208,65
4080 DATA 239,162,5,181,212,157,172,12
3,202,16,248,162,7,169,0,157,1191
4090 DATA 0,208,202,16,250,168,153,0,1
24,136,208,250,160,53,185,28,2314
4100 DATA 78,153,22,124,136,16,247,160
,4,185,23,78,153,196,2,136,8845
4110 DATA 16,247,169,0,133,205,133,203
,141,198,2,169,125,133,204,169,4127
4120 DATA 142,133,206,169,0,141,48,2,1
69,127,141,49,2,165,198,208,584
4130 DATA 43,230,198,32,110,79,169,15,
133,200,169,15,133,150,164,150,1607
4140 DATA 185,52,86,168,185,150,79,133
,203,133,205,164,200,177,203,32,4816
4150 DATA 61,79,176,8,198,150,16,230,1
98,200,16,222,160,0,140,21,9909
4160 DATA 127,185,0,125,153,0,142,200,
208,247,162,7,142,4,212,169,2510
4170 DATA 0,133,20,173,31,208,240,38,2
01,6,240,23,165,20,240,243,3273
4180 DATA 202,16,233,172,21,127,200,19
6,240,208,2,160,0,140,21,127,125
4190 DATA 76,1,79,169,0,133,183,141,21
,127,141,4,212,96,169,1,8097
4200 DATA 133,183,169,0,240,241,132,19
9,201,0,240,32,160,0,145,205,2736
4210 DATA 196,199,240,24,162,0,134,20,
174,252,2,224,255,208,17,166,3462
4220 DATA 20,240,245,72,169,0,145,205,
104,200,208,226,164,199,24,96,3993
4230 DATA 162,255,142,252,2,56,96,169,
1,133,149,173,10,210,41,15,7685
4240 DATA 141,52,86,173,10,210,41,15,1
60,0,217,52,86,240,244,200,2941
4250 DATA 196,149,208,246,153,52,86,20
0,132,149,192,16,208,229,96,0,1963
4260 DATA 16,32,48,64,80,96,112,128,14
4,160,176,192,208,224,240,0,4100
4270 DATA 123,179,123,0,0,0,0,0,0,0,0,
0,0,0,0,64,6144
4280 DATA 66,68,70,72,74,76,78,80,82,8
4,86,88,90,92,94,0,4440
4290 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,4290
4300 DATA 0,0,0,0,0,0,0,65,67,69,71,73
,75,77,79,81,2304
4310 DATA 83,85,87,89,91,93,95,0,0,0,0
,0,0,0,0,0,6858
4320 DATA 0,0,0,0,0,0,34,57,26,0,34,33
,50,50,57,0,8223
4330 DATA 43,47,44,34,37,0,33,46,36,0,
34,50,57,33,46,0,8710
4340 DATA 51,35,40,33,48,48,37,44,0,0,
0,0,0,0,0,0,5852
4350 DATA 35,47,48,57,50,41,39,40,52,0
,17,25,24,24,0,34,8087
4360 DATA 34,43,0,37,46,52,37,50,48,50
,41,51,37,51,0,0,9019
4370 DATA 0,0,0,0,0,116,111,112,0,115,
99,111,114,101,0,16,3462
4380 DATA 16,16,16,16,16,0,0,166,79,51
,86,169,144,133,206,169,9671
4390 DATA 0,133,205,169,42,133,203,169
,80,133,204,169,1,133,241,169,4244
4400 DATA 154,133,242,160,0,132,152,13
2,202,32,33,80,24,42,38,152,6461
4410 DATA 74,133,201,208,10,32,33,80,1
33,202,32,33,80,133,201,165,9820
4420 DATA 152,240,21,32,33,80,145,205,
32,12,80,198,201,208,244,165,4032
4430 DATA 202,240,210,198,202,76,222,7
9,32,33,80,133,151,165,151,145,2138
4440 DATA 205,32,12,80,198,201,208,245
,165,202,240,185,198,202,76,248,9552
4450 DATA 79,230,205,208,2,230,206,165
,206,197,242,208,8,165,205,197,8211
4460 DATA 241,208,2,104,104,96,177,203
,230,203,208,2,230,204,96,4,3260
4470 DATA 0,38,96,130,108,110,14,96,13
0,108,116,6,7,130,114,110,6383
4480 DATA 28,96,130,27,28,12,96,130,10
8,110,22,96,130,108,116,4,5594
4490 DATA 0,130,14,15,3,7,135,1,2,3,4,
7,5,6,2,7,6329
4500 DATA 130,5,6,3,7,130,5,6,9,7,130,
98,100,2,7,130,1838
4510 DATA 5,6,2,7,130,5,6,6,7,130,98,1
00,6,7,130,98,2666
4520 DATA 100,2,7,137,13,7,1,2,3,4,7,5
,6,27,7,130,8168
4530 DATA 5,6,2,7,130,98,100,5,7,130,1
4,15,15,7,130,98,2067
4540 DATA 100,4,0,2,7,130,114,110,12,9
6,130,108,116,6,7,130,4720
4550 DATA 5,6,4,7,130,98,100,4,7,130,5
,6,2,7,130,5,221
4560 DATA 6,4,7,132,98,100,5,6,2,7,132
,5,6,98,104,10,1066
4570 DATA 96,130,108,116,6,7,135,1,2,3
,4,7,5,6,5,7,7251
4580 DATA 130,5,6,8,7,132,5,6,98,100,2
,7,130,114,110,14,2828
4590 DATA 96,130,108,116,2,7,130,98,10
0,4,0,135,5,6,98,188,3259
4600 DATA 7,5,6,9,7,133,98,100,7,5,6,5
,7,130,5,6,9311
4610 DATA 2,7,130,98,100,14,7,130,98,1
00,2,7,130,5,6,2,951
4620 DATA 7,130,98,100,10,7,133,98,100
,7,5,6,5,7,4,96,244
4630 DATA 130,108,116,2,7,130,14,15,11
,7,131,13,98,108,2,7,947
4640 DATA 130,98,100,14,7,130,98,100,2
,7,130,98,100,4,0,2,1705
4650 DATA 7,130,98,100,7,7,135,1,2,3,4
,7,120,112,12,96,1661
4660 DATA 130,106,118,14,7,130,98,104,
6,96,130,102,100,8,7,135,5090
4670 DATA 1,2,3,4,7,5,6,4,7,130,5,6,3,
7,130,120,336
4680 DATA 112,12,96,130,108,110,2,96,1
30,106,118,2,7,130,98,100,6139
4690 DATA 2,7,130,114,110,6,96,130,108
,116,2,7,130,98,100,2,4682
4700 DATA 7,130,98,100,4,0,2,7,130,98,
100,4,7,130,5,6,1131
4710 DATA 3,7,130,5,6,5,7,130,5,6,2,7,
130,5,6,6,8443
4720 DATA 7,130,5,6,2,7,130,5,6,8,7,13
0,98,100,6,7,675
4730 DATA 136,98,100,2,7,130,5,6,3,7,1
30,5,6,4,7,133,216
4740 DATA 5,6,7,5,6,16,7,130,8,10,2,7,
130,98,100,2,885
4750 DATA 7,130,5,6,2,7,130,98,100,2,7
,138,98,100,13,7,2436
4760 DATA 1,2,3,4,98,100,2,7,130,98,10
0,2,7,130,98,100,4205
4770 DATA 4,0,2,7,130,120,112,30,96,13
0,27,28,4,96,130,108,5073
4780 DATA 116,4,7,130,98,100,6,7,130,9
8,100,4,7,130,114,110,5312
4790 DATA 2,96,130,108,116,4,7,130,114
,110,2,96,130,108,116,4,5805
4800 DATA 7,130,114,110,4,96,130,108,1
16,6,7,130,98,100,4,7,3806
4810 DATA 132,5,6,98,100,2,7,130,120,1
12,4,96,2,7,130,98,4001
4820 DATA 100,2,7,130,98,100,2,7,130,9
8,100,4,0,13,7,130,2290
4830 DATA 5,6,21,7,130,5,6,2,7,130,98,
100,4,7,132,98,3015
4840 DATA 100,8,10,4,7,130,98,100,4,7,
134,98,100,5,6,98,3087
4850 DATA 100,4,7,134,98,100,5,6,98,10
0,4,7,130,98,100,2,3292
4860 DATA 7,132,14,15,98,100,6,7,130,9
8,100,6,7,130,98,100,4724
4870 DATA 10,7,130,98,100,2,7,130,98,1
00,2,7,130,98,100,4,3891
4880 DATA 0,130,114,110,28,96,130,108,
116,6,7,134,14,15,98,100,4663
4890 DATA 5,6,2,7,130,98,100,6,7,130,1
20,112,4,96,130,106,5996
4900 DATA 118,2,7,130,120,112,4,96,130
,106,118,2,7,130,120,112,6686
4910 DATA 4,96,130,106,118,4,7,130,120
,112,2,96,130,108,110,2,5881
4920 DATA 96,130,106,118,6,7,130,120,1
12,10,96,130,106,118,2,7,4904
4930 DATA 130,98,100,2,7,130,98,100,4,
0,139,98,100,7,5,6,2175
4940 DATA 5,6,5,6,5,6,7,7,130,5,6,3,7,
130,5,6,8566
4950 DATA 5,7,130,98,100,4,7,130,114.,1
10,2,96,130,106,118,4,5672
4960 DATA 7,130,98,100,6,7,137,13,7,1,
2,3,4,7,5,6,7508
4970 DATA 27,7,131,98,100,13,25,7,130,
98,100,2,7,130,98,100,4860
4980 DATA 4,0,130,128,112,10,96,130,8,
10,6,7,130,5,6,8,486
4990 DATA 7,130,98,100,4,7,130,98,100,
8,7,130,98,100,8,7,3230
5000 DATA 130,114,110,18,96,130,108,11
6,4,7,130,114,110,6,96,130,6642
5010 DATA 106,112,4,96,130,27,28,20,96
,130,102,100,2,7,130,98,5032
5020 DATA 108,4,0,5,7,130,5,6,16,7,130
,5,6,5,7,130,83
5030 DATA 98,100,4,7,130,98,100,8,7,13
2,98,100,5,6,2,7,1322
5040 DATA 130,5,6,2,7,130,98,100,6,7,1
38,5,6,7,1,2,9432
5050 DATA 3,4,7,5,6,2,7,130,98,100,4,7
,130,98,100,24,3189
5060 DATA 7,130,5,6,8,7,130,98,100,2,7
,130,98,100,4,0,2433
5070 DATA 130,114,110,6,96,130,108,116
,4,7,130,114,110,6,96,130,6664
5080 DATA 108,116,6,7,130,98,100,4,7,1
30,120,112,2,96,130,108,6511
5090 DATA 116,4,7,130,98,100,2,7,130,5
,6,2,7,132,5,6,335
5100 DATA 98,100,2,7,130,5,6,4,7,130,5
,6,8,7,132,98,1426
5110 DATA 100,8,10,2,7,130,98,104,10,9
6,130,108,116,2,7,136,5190
5120 DATA 13,7,1,2,3,4,1,2,3,7,132,5,6
,5,6,5,7147
5130 DATA 7,130,98,100,2,7,130,98,100,
4,0,130,98,100,6,7,3213
5140 DATA 130,98,100,2,7,132,5,6,98,10
0,6,7,130,98,100,6,3374
5150 DATA 7,130,98,100,8,7,130,98,100,
4,7,130,98,100,8,7,3370
5160 DATA 130,98,100,4,7,130,5,6,12,7,
130,98,100,4,7,130,3025
5170 DATA 98,180,2,7,130,5,6,6,7,130,9
8,100,6,7,130,98,3687
5180 DATA 100,2,7,130,5,6,10,7,130,98,
100,2,7,130,98,100,4267
5190 DATA 4,0,130,98,100,2,7,130,5,6,2
,7,130,120,112,4,2902
5200 DATA 96,132,106,118,5,6,2,7,134,5
,6,98,100,5,6,2,471
5210 DATA 7,135,5,6,98,100,7,5,6,5,7,1
30,98,100,4,7,1292
5220 DATA 130,98,100,8,7,130,120,112,8
,96,130,108,110,8,96,130,7249
5230 DATA 106,118,4,7,130,98,100,5,7,1
30,5,6,3,7,130,126,3087
5240 DATA 112,6,96,130,106,118,5,7,130
,5 ,6,7,7,134,98,100,3908
5250 DATA 14,15,98,100,4,0,130,98,100,
4,7,130,5,6,10,7,690
5260 DATA 130,5,6,2,7,130,98,100,2,7,1
30,5,6,2,7,130,1596
5270 DATA 120,112,8,96,130,106,112,4,9
6,130,102,100,4,7,130,5,4790
5280 DATA 6,3,7,130,5,6,2,7,138,5,6,3,
7,130,98,100,2267
5290 DATA 2,7,130,5,6,3,7,130,5,6,5,7,
130,98,184,4,1783
5300 DATA 96,130,108,116,11,7,130,5,6,
14,7,131,13,98,100,2,2407
5310 DATA 7,130,98,100,4,0,130,98,100,
6,7,130,114,110,6,96,5230
5320 DATA 132,1,2,3,4,2,7,130,98,100,9
,7,130,5,6,11,684
5330 DATA 7,130,98,100,6,7,130,5,6,10,
7,130,98,100,4,7,1950
5340 DATA 130,5,6,8,7,130,98,100,2,7,1
32,3,4,98,100,2,2363
5350 DATA 7,130,8,10,24,96,130,106,118
,2,7,130,98,100,4,0,3588
5360 DATA 130,98,100,3,7,133,5,6,7,98,
100,12,7,130,98,100,4182
5370 DATA 13,7,130,14,15,7,7,130,98,10
0,9,7,130,5,6,2,996
5380 DATA 7,130,5,6,3,7,130,98,100,7,7
,130,5,6,5,7,380
5390 DATA 130,98,100,5,7,130,14,15,23,
7,132,1,2,3,4,4,9002
5400 DATA 7,130,98,100,4,0,132,1,2,3,4
,4,7,130,120,112,2956
5410 DATA 12,96,130,106,112,12,96,130,
27,28,8,96,130,106,112,18,5677
5420 DATA 96,132,106,118,14,15,2,7,134
,1,2,3,4,3,4,4,8292
5430 DATA 96,130,106,112,38,96,130,106
,118,88,86,88,86,1,226,2,7574
5440 DATA 227,2,0,64,0,0,0,0,0,0,0,0,0
,0,0,0,5927


LISTING 2: ASSEMBLY

0100 ;SAVE#D:SNOW.PT1
0110 ;-------------------
0120 ; part 1 of the game
0130 ;
0140 ; by: Barry Kolbe
0150 ;
0160 ;-------------------
0170     .OPT NO LIST
0180 ;
0190 ;page zero variables
0200 ;
0210 DRY =   $82
0220 PXP =   $83    ;2byter
0230 PYP =   $85    ; "
0240 ADD =   $87
0250 HMV =   $88
0260 CURCHR = $89
0270 VERT =  $8A
0280 EADD =  $8D
0290 EHOLD   $8C
0300 EYX =   S8D
0310 EYY =   $8E
0320 ICY =   $8F
0330 ICX =   $90
0340 VTIME = $91
0350 VFLG =  $92
0360 XSP =   $93
0370 YSP =   $94
0380 RAND =  $95
0390 ICNT =  $96
0400 DATA =  $97
0410 UNIQUE = $98
0420 FTIME = $99    ;7 bytes
0430 CARTIM = $A0   ;6 bytes
0440 RMTIM = $A6    ;6 bytes
0450 ROADC = $AC    ;2 bytes
0460 ROADG = $AE    ;  "
0470 CNT =   $B0
0480 SHD =   $B1
0490 MAPFLG = $B2
0500 FUEL =  $B3     ;3 bytes
0510 LIVES = $86
0520 DIRF =  $B7
0530 DIRECT = $B8
0540 CARCNT = $B9
0550 ICEON = $BA
0560 Y1 =    $BB
0570 Y2 =    $BC
0580 ICEDIR = $BD
0590 IDECNT = $BE
0600 LEVEL = $BF
0610 FULK =  $C0
0620 ICTL =  $C1
0630 ICTH =  $C2
0640 ICESPEED = $C3
0650 THOUS = $C4
0660 SPSND = $C5
0670 IFLAG = $C6
0680 IISY =  $C7
0690 IIY3 =  $C8
0700 COUNT = $C9    ;these are
0710 IL =    SCB
0720 TL =    $CB    ;all
0730 JL =    $CD
0740 BFL =   $CD
0750 INDR =  $CB    ;2 bytes
0760 IND2 =  $CD
0770 FOFS =  $CF
0780 YH =    $D0
0790 XD1 =   $D1
0800 XH =    $D2
0810 ICECNT = $D3
0820 SCRS =  $D4    ;6 bytes
0830 FULX =  $DA    ;6 bytes
0840 FULY =  $E0    ;6 bytes
0850 CARX =  $E6    ;4 bytes
0860 CARY =  $EA    ;4 bytes
0870 OFFSCN = $EE   ;2 bytes
0880 SLENGTH = $F0
0890 EDM =   $F1
0900 SHP =   $F3    ;2
0910 SYP =   $F4
0920 ;
0930 ;OS equates
0940 ;
0950 CIOV = $E456
0960 ICCOM = $0342
0970 ICBAL = $0344
0980 ICBAH = $0345
0990 ICBLL = $0348
1000 ICBLH = $0349
1010 AUX1 =  $0348
1020 AUX2 =  $0340
1030 SETVBV = $E45C
1040 KITVBV = $E462
1050 RANDOM = $D20A
1060 RTCLOK = $14
1070 CONSOL = $D01F
1080 EOL =   $9B
1090 SEOL =  $BB
1100 PCHR =  54
1110 ;
1120 COLOR0 = $02C4
1130 COLOR1 = $02C5
1140 COLOR2 = $02C6
1150 COLOR3 = $02C7
1160 COLOR4 = $02C8
1170 SDLSTL = $0230
1180 CH =    $02FC
1190 ;
1200 STICK = $0278
1210 STRIG = $0284
1220 HPOSP0 = $D000
1230 HPOSM0 = $D604
1240 HSCROL = $D404
1250 VSCROL = $D405
1260 HITCLR = 4D01E
1270 P0PL = $D00C
1280 P1PL = $D00D
1290 ;
1300 ;memory usage
1310 ;
1320 SCNMEM = $9000
1330 PMB =   $8000
1340 SET =   $8C00
1350 MYPMB = $8400
1360 MSMEM = PMB+$0300
1370 P0MEM = MYPMB
1380 P1MEM = MYPMB+$0100
1390 P2MEM = MYPMB+$0200
1400 P3MEM = MYPMB+$0300
1410 CHSET = $8C00
1420 GOVER = $9B00
1430 TXTWIN = $8B00
1440 SCLN =  TXTWIN+20
1450 CHRLN1 = TXTWIN+40
1460 SC2 =   SCNMEM+128
1470 SC3 =   SC2+128
1480 SC4 =   SC3+128
1490 SC5 =   SC4+128
1500 SC6 =   SC5+128
1510 SC7 =   SC6+128
1520 SC8 =   SC7+128
1530 SC9 =   SC8+128
1540 SC10 =  SC9+128
1550 SC11 =  SC10+128
1560 BCKUP = $7FC0
1570 SET2 =  $7D00
1580 SCRLMEM = $7C00
1590 ;credits @ $7b00
1600 ;
1610 ;display list interrupt
1620 ;
1630     *=  PMB
1640 DLI PHA
1650 DIC LDA #2
1660     STA $D40A
1670     STA $D01A
1680     PLA
1690     RTI
1700 ;
1710 ;character set
1720 ;
1730     *=  $8000
1740     .INCLUDE #D:SNOW.PTS
1750 ;
1760     *=  TXTWIN
1770     .SBYTE " FUEL 150 PLOWS "
1780     .SBYTE "3      SCORE "
1790     .SBYTE "000000     "
1800 ;
1810     *=  GOVER
1820     .SBYTE "  SNOWFLAKES "
1830     .SBYTE "WIN       press "
1840     .SBYTE "START      "
1850 ;
1860 ;display lists ;intro first
1870 ;then game board
1880 ;
1890     *=  $7F00
1900 IDLST .BYTE $70,$70,$70,$70
1910     .BYTE $70,$70,$70,$42
1920     .WORD SHOWMEM
1930     .BYTE $02,$70,$70,$70,$02
1940     .BYTE $02,$70,$70,$70,$70
1950     .BYTE $57
1960 LMS .WORD SCRLMEM
1970     .BYTE $70,$70,$70,$70,$46
1980     .WORD TOPSCORE
1990     .BYTE $41
2000     .WORD IDLST
2010 ;
2020     *=  $7F86
2030 DL1 .BYTE $70,$70,$70
2040     .BYTE $42
2050     .WORD SNOWMEM
2060     .BYTE 2
2070     .BYTE $75
2080 SL1 .WORD SCNMEM
2090     .BYTE $75
2100     .WORD SC2
2110     .BYTE $75
2120     .WORD $C3
2130     .BYTE $75
2140     .WORD SC4
2150     .BYTE $75
2160     .WORD SC5
2170     .BYTE $75
2180     .WORD SC6
2190     .BYTE $75
2200     .WORD SC7
2210     .BYTE $75
2220     .WORD SC8
2230     .BYTE $75
2240     .WORD SC9
2250     .BYTE $75
2260     .WORD SC10
2270     .BYTE SD5
2280     .WORD SC11
2290     .BYTE $46
2300 TMESS .WORD TXTWIN
2310     .BYTE 6,$41
2320     .WORD DL1
2330 ;
2340 ;start of program
2350 ;
2360     *=  $4008
2370 ;
2380 ;save the display list
2390 ;for next levels
2400 ;
2410 BEGIN LDY #50
2420 MDL LDA DL1,Y
2430     STA BCKUP,Y
2440     DEY
2450     BPL MDL
2460     LDA # >CHSET ;new chrset
2470     STA 756
2480     JSR SETPMG  ;player init
2490 ;
2500     LDX # >VBLNK ;set Vbi
2510     LDY # <VBLNK
2520     LDA #7
2530     JSR SETVBV
2540     LDA #0
2550     STA IFLAG    ;intro flag
2560 ;
2570 ;begin new level
2580 ;
2590 NEWBEG LDA #0
2600     STA DIRF
2610     STA MAPFLG
2620     JSR GETDIR
2630     JMP NEWB
2640 NDIRC JSR CLOSE6
2650 ;
2660 NEWB JSR INIT
2670     JSR REPLAY
2680     LDA #3
2690     STA LIVES
2700     LDA #0
2710     STA ICEON
2720     JSR SHOLIV
2730 NLEVL JSR STARTI
2740     JSR FIGLEV
2750     JSR RESFUL
2760     JSR DSPFUL
2770     JSR REPLAY
2780     JSR CLRPM
2790     LDA DIRF
2800     BNE DROK
2810 MAP2 LDA MAPFLG ;intern map
2820     BNE DROK
2830     LDA #1
2840     STA MAPFLG
2850     JSR UNCOM
2860     JMP SKP
2870 DROK JSR GETFIL
2880     JSR LOADMP
2890 SKP JSR FNDFUL
2900     JSR FNDCRS
2910     JSR CNTRDS
2920     JSR COPYDL
2930     JSR SETSCN
2940     LDA #$0B
2950     STA DIRECT
2960     JSR DEFPLR
2970     LDA #1
2980     STA VFLG
2990 ;
3000 ;main loop
3010 ;
3020 MAIN LDA CONSOL
3030     CMP #6
3040     BNE MN2
3050     JMP STKEY
3060 MN2 LDA STICK
3070     STA DIRECT
3080     JSR DEFPLR
3090     STA HITCLR
3100     JSR MOVPLR
3110     JSR REMOVE
3120     LDA 644
3130     BNE NTRG
3140     JSR JMPEDG
3150 NTRG JSR ICESND
3160     LDA P0PL
3170     CMP #12
3180     BCS OUCH
3190     LDA P1PL
3200     CMP #12
3210     BCS OUCH
3220     LDA ROADG+1
3230     CMP ROADC+1
3240     BNE KL
3250     LDA ROADG
3260     CMP ROADC
3270     BNE KL
3280     JSR WAITSM
3290     JMP NLEVL
3300 KL  LDA FUEL
3310     ORA FUEL+1
3320     ORA FUEL+2
3330     BNE KK
3340 OUCH STA HITCLR
3350     JSR REMP23
3360     JSR SPIN
3370     JSR GRESET
3380     STA HITCLR
3390     JSR DELAY
3400     JMP KK
3410 OOPS JMP GAMOVR
3420 KK  LDA LIVES
3430     BEQ OOPS
3440     LDA CH
3450     CMP #$FF
3460     BEQ NOPAUS
3470     JSR PAUSE
3480 NOPAUS JMP MAIN
3490 ;
3500 ;set pmg
3510 ;
3520 SETPMG LDA #62
3530     STA 559
3540     LDA #17     ;5th enable
3550     STA 623
3560     LDA #3
3570     STA 53277
3580     LDA # >PMB
3590     STA 54279
3600     LDA #$28    ;yellow
3610     STA 704
3620     LDA #6      ;black
3630     STA 705
3640     LDA #$A6
3650     STA 706
3660     STA 707
3670     LDA #$80
3680     STA PXP
3690     LDA #$70
3700     STA PYP
3710     LDA #1
3720     STA 53258
3730     STA 53259
3740     RTS
3750 ;
3760 ;clear pm area
3770 ;
3780 CLRPM LDY #$FF
3790     LDA #0
3800 CPM STA P0MEM,Y
3810     STA P1MEM,Y
3820     STA P2MEM,Y
3830     STA P3MEM,Y
3840     STA MSMEM,Y
3850     DEY
3860     CPY #$FF
3870     BNE CPM
3880     RTS
3890 ;
3900 ;define plrs
3910 ;
3920 DEFPLR LDX #3
3930     LDA DIRECT
3940 DF1 CMP DIRTAB,X
3950     BEQ DFOK
3960     DEX
3970     BPL DF1
3980     RTS
3990 DFOK LDA PDBL,X
4000     STA JL
4010     LDA PD0H,X
4020     STA JL+1
4030     LDA PD1L,X
4040     STA IL
4050     LDA PD1H,X
4060     STA IL+1
4070     TXA
4080     PHA
4090     LDA PYP
4100     STA Y1
4110     CLC
4120     ADC YTB,X
4130     STA PYP+1
4140     STA Y2
4150     TAY
4160     LDA #0
4170     STA P1MEM-1,Y
4180     LDY #0
4190 DFP LDA (JL),Y
4200     LDX Y1
4210     STA P0MEM,X
4220     LDA (IL),Y
4230     LDX Y2
4240     STA P1MEM,X
4250     INY
4260     INC Y1
4270     INC Y2
4280     CPY #16
4290     BNE DFP
4300     LDX Y2
4310     STA P1MEM,X
4320     LDX PXP
4330     STX HPOSP0
4340     PLA
4350     TAX
4360     LDA PXP
4370     CLC
4380     ADC XTB,X
4390     STA PXP+1
4400     STA HPOSP0+1
4410     RTS
4420 ;
4430 DIRTAB .BYTE 11,7,14,13
4440 XTB .BYTE $FF,$01,$00,$00
4450 YTB .BYTE $00,$00,$FF,$01
4460 ;
4470 ;player definitions & tables
4480 ;
4490 PD0L .BYTE   <P0D1, <P0D2, <P0D3,
<P0D4
4500 PD0H .BYTE  >P0D1, >P0D2, >P0D3,
>P0D4
4510 PD1L .BYTE  <P1D1, <P1D2, <P1D3,
<P1D4
4520 PDIH .BYTE  >P1D1, >P1D2, >P1D3,
>P1D4
4530 P0D1 .BYTE $00,$00,$00,$FF
4540     .BYTE $FF,$76,$76,$76
4550     .BYTE $76,$76,$76,$FF
4560     .BYTE $FF,$00,$00,$00
4570 P0D2 .BYTE $00,$00,$00,$FF
4580     .BYTE $FF,$6E,$6E,$6E
4590     .BYTE $6E,$6E,$6E,$FF
4600     .BYTE $FF,$00,S00,$00
4610 P0D3 .BYTE $00,$66,$66,$7E
4620     .BYTE $7E,47E,47E,47E
4630     .BYTE $7E,$66,$66,$66
4640     .BYTE $7E,$7E,$66,$00
4650 P0D4 .BYTE $00,$66,$7E,$7E
4660     .BYTE $66,$66,$66,$7E
4670     .BYTE $7E,$7E,$7E,$7E
4680     .BYTE $7E,$66,$66,0
4690 ;
4700 P1D1 .BYTE $00,$AA,$AA,$80
4710     .BYTE $80,$84,$84,$84
4720     .BYTE $84,$84,$84,$80
4730     .BYTE $80,$AA,$AA,$00
4740 P1D2 .BYTE $00,$FD,$FD,$01
4750     .BYTE $01,$61,$61,$61
4760     .BYTE $61,$61,$61,$01
4770     .BYTE $01,$FD,$FD,$00
4780 P1D3 .BYTE 0,$FF,$FF,$00
4790     .BYTE $99,$99,$18,$18
4800     .BYTE $99,$99,$18,$18
4810     .BYTE $99,$99,$00,$00
4820 P1D4 .BYTE $00,$00,$81,$99
4830     .BYTE $18,$18,$99,$99
4840     .BYTE $18,$18,$99,$99
4850     .BYTE $00,$FF,$FF,$00
4860 ;
4870 ;delay
4880 ;
4890 LDL LDY #19
4900     BNE DLN
4910 DELAY LDY #7
4920 DLN JSR WAIT
4930     DEY
4940     BNE DLN
4950     RTS
4960 ;
4970 ;initialize
4980 ;
4990 ;set up 128 table
5000 INIT LDY #0
5010     LDA # <SCNMEM
5020     STA M128L
5030     LDA # >SCNMEM
5040     STA M128H
5050 TLP LDA M128L,Y
5060     CLC
5070     ADC #128
5080     STA M128L+1,Y
5090     LDA M128H,Y
5100     ADC #0
5110     STA M128H+1,Y
5120     INY
5130     CPY #33
5140     BNE TLP
5150 ;
5160     LDX #7      ;score $ fuel
5170     LDA #$10    ;IC $10
5180 SCF STA SCRS,X
5190     DEX
5200     BPL SCF
5210     STA THOUS
5220     JSR RESFUL
5230     LDA #3      ;set lives
5240     STA LIVES
5250     LDA #$13
5260     STA TXTWIN+16
5270     LDA #$60
5280     STA ICECNT
5290     LDA #$FF
5300     STA LEVEL
5310     RTS
5320 ;
5330 CLRTAB .BYTE $D8,$44,$0A,$46,$00
5340 ;
5350 STSCRL LDA # >SL1
5360     STA JL+1
5370     LDA # <SL1
5380     STA JL
5390     RTS
5400 ;
5410 ;get scn pos
5420 ;
5430 WHER LDY DRY
5440 WHERE LDA M128L,Y
5450     STA JL
5460     LDA M128H,Y
5470     STA JL+1
5480     RTS
5490 ;
5500 ;shadow scrols
5510 ;
5520 SMX .BYTE 22     ;pos on scrn
5530 SMY .BYTE 4
5540 ;
5550 ;move
5560 ;
5570 SCROLL LDA DIRECT
5580 ;
5590 MMR CMP #7      ;rt?
5600     BNE MML
5610     JSR LOOKR
5620     BCC RA1
5630     RTS
5640 RA1 LDA SXP
5650     CMP #83
5660     BCC HO
5670     RTS
5680 HO  LDA #1
5690     STA VERT
5700     JSR PLWSND
5710 KB  LDA #1
5720     STA ADD
5730     JSR CORSH
5740     INC SMX
5750     INC SXP
5760     LDX #3
5770 KA  STX HSCROL
5780     JSR WAIT
5790     JSR TRACKR
5800     DEX
5810     BPL KA
5820     DEC VERT
5830     LDA VERT
5840     BPL KB
5850 FULOUT JSR SFUEL
5860     JSR OFF2
5870     JSR CKFTIM
5880     RTS
5890 ;
5900 MML CMP #11
5910     BNE MUP
5920     JSR LOOKL
5930     BCC LA1
5940     RTS
5950 LA1 LDA SXP
5960     BNE HQ
5970     RTS
5980 HQ  LDA #1
5990     STA VERT
6000     JSR PLWSND
6010 KD  LDX #0
6020 KC  STX HSCROL
6030     JSR WAIT
6040     JSR TRACKL
6050     INX
6060     CPX #4
6070     BNE KC
6080     LDA #$FF
6090     STA ADD
6100     LDX #0
6110     STX HSCROL
6120     JSR CORSH
6130     DEC SXP
6140     DEC SMX
6150     DEC VERT
6160     LDA VERT
6170     BPL KD
6180     JMP FULOUT
6190 ;
6200 ;coarse h scrol
6210 ;
6220 CORSH LDY #0
6230 CSA LDA SL1,Y
6240     CLC
6250     ADC ADD
6260     STA SL1,Y
6270     INY
6280     INY
6290     INY
6300     CPY #33
6310     BNE CSA
6320     RTS
6330 ;
6340 ;up
6350 ;
6360 MUP CMP #14
6370     BNE MDN
6380     JSR LOOKU
6390     BCC UA1
6400     RTS
6410 UA1 LDA SYP
6420     BEQ NOM
6430     JSR PLWSND
6440     LDA #$FF
6450     STA ADD
6460     JSR CORSV
6470     DEC SYP
6480     DEC SMY
6490     LDX #15
6500 U1  STX VSCROL
6510     JSR WAIT
6520     JSR TRACKU
6530     DEX
6540     BPL U1
6550     LDA #0
6560     STA VSCROL
6570     JMP FULOUT
6580     RTS
6590 ;
6600 ;down
6610 ;
6620 MDN CMP #13
6630     BNE NOM
6640     JSR LOOKD
6650     BCC DA1
6660     RTS
6670 DA1 LDA SYP
6680     CMP #9
6690     BCC D1
6700     RTS
6710 D1  JSR PLWSND
6720     LDX #0
6730 D2  STX VSCROL
6740     JSR WAIT
6750     JSR TRACKU
6760     INX
6770     CPX #16
6780     BNE D2
6790     LDX #0
6800     STX VSCROL
6810     LDA #1
6820     STA ADD
6830     JSR CORSV
6840     INC SYP
6850     INC SMY
6860     JMP FULOUT
6870 NOM RTS
6880 ;
6890 ;coarse vrt scrl
6900 ;
6910 CORSV LDA ADD
6920     BMI CSV
6930     LDY #0
6940 CVL LDA SL1,Y
6950     CLC
6960     ADC #$80
6970     STA SL1,Y
6980     INY
6990     LDA SL1,Y
7000     ADC 00
7010     STA SL1,Y
7020     INY
7030     INY
7040     CPY #33
7050     BNE CVL
7060     RTS
7070 ;
7080 CSV LDY #0
7090 CVP LDA SL1,V
7100     SEC
7110     SBC #$80
7120     STA SL1,Y
7130     INY
7140     LDA SL1,Y
7150     SBC #0
7160     STA SL1,Y
7170     INY
7180     INY
7190     CPY #33
7200     BNE CVP
7210     RTS
7220 ;
7230 ;wait a jiffy
7240 ;
7250 WAIT LDA #0
7260     STA $14
7270 WW2 LDA $14
7280     BEQ WW2
7290     RTS
7300
7310 ;fine scrl plr
7320 ;
7330 MOVPLR LDA DIRECT
7340     CMP #7
7350     BNE MLL
7360     LDA PXP
7370     CMP #$7C
7380     BCC GOR
7390     LDA SXP
7400     CMP #83
7410     BCS GOR
7420     JMP MOUT
7430 GOR LDA PXP
7440     CMP #$C8
7450     BCS MVRET
7460     JSR LOOKR
7470     BCC GOR1
7480     RTS         ;nope
7490 LORI JSR PLWSND
7500     LDY #7
7510 RL1 INC PXP
7520     LDX PXP
7530     STX HPOSP0
7540     INC PXP+1
7550     LDX PXP+1
7560     STX HPOSP0+1
7570     JSR WAIT
7580     JSR TRACKR
7590     DEY
7600     BPL RL1
7610     INC SMX
7620     INC SMX
7630     JMP FULOUT
7640 MOUT JSR SCROLL
7650 MVRET RTS
7660 ;
7670 MLL CMP #11
7680     BNE MDD.
7690     JSR LOOKL
7700     BCC GOL2
7710     RTS
7720 GOL2 LDA PXP
7730     CMP #132    ;124+8
7740     BCS GOL1
7750     LDA SXP
7760     BNE MOUT
7770 GOL LDA PXP
7780     CMP #$30
7790     BEQ MVRET
7800     BCC MVRET
7810 GOL1 JSR PLWSND
7820     LDY #7
7830 LL1 DEC PXP
7840     LDX PXP
7850     STX HPOSP0
7860     DEC PXP+1
7870     LDX PXP+1
7880     STX HPOSP0+1
7890     JSR WAIT
7900     JSR TRACKL
7910     DEY
7920     BPL LL1
7930     DEC SMX
7940     DEC SMX
7950     JMP FULOUT
7960 ;
7970 MDD CMP #13
7980     BNE MUU
7990     JSR LOOKD
8000     BCC GD3
8010     RTS
8020 GD3 LDA PYP
8030     CMP #$60
8040     BCC GDN
8050     LDA SYP
8060     CMP #9
8070     BCS GDN
8080     JMP MOUT
8090 GDN LDA PYP
8100     CMP #$C0
8110     BCS MVRET
8120     LDA #15
8130     STA VERT
8140     JSR PLWSND
8150 GD2 LDA PYP
8160     STA Y1
8170     LDA PYP+1
8180     STA Y2
8190     TAY
8200     LDA #0
8210     STA P1MEM,Y ;eras top
8220     LDX #15
8230 GDI LDY Y1
8240     LDA P0MEM+15,Y
8250     STA P0MEM+16,Y
8260     LDY Y2
8270     LDA P1MEM+15,Y
8280     CMP #$18
8290     BNE FOA
8300     LDA #$99
8310     BNE FOB
8320 FOA CMP #$99
8330     BNE FOB
8340     LDA #$18
8350 FOB STA P1MEM+16,Y
8360     DEC Y1
8370     DEC Y2
8380     DEX
8390     BPL GD1
8400     INC PYP
8410     INC PYP+1
8420     JSR WAIT
8430     DEC VERT
8440     LDA VERT
8450     BPL GD2
8460     INC SMY
8470     JMP FULOUT
8480 ;
8490 ;
8500 MUU CMP #14
8510     BEQ MU3
8520 GU4 JMP MVRET
8530 MU3 JSR LOOKU
8540     BCC MU4
8550     RTS
8560 MU4 LDA PYP
8570     CMP #$70
8580     BCS GUU
8590     LDA SYP
8600     BEQ GUU
8610     JMP MOUT
8620 GUU LDA PYP
8630     CMP #$30
8640     BNE GU5
8650     JMP MOUT
8660 GU5 JSR PLWSND
8670     LDA #15
8680     STA VERT
8690 GU2 LDY PYP
8700     LDX #15
8710 GUI LDA P0MEM,Y
8720     STA P0MEM-1,Y
8730     LDA P1MEM,Y
8740     CMP #$18
8750     BNE FOC
8760     LDA #$99
8770     BNE FOD
8780 FOC CMP #$99
8790     BNE FOD
8800     LDA #$18
8810 FOD STA P1MEM-1,Y
8820     INY
8830     DEX
8840     BPL GU1
8850     JSR WAIT
8860     DEC PYP
8870     DEC VERT
8880     LDA VERT
8890     BPL GU2
8900     DEC SMY
8910     JMP FULOUT
8920 ;
8930 ;locate :result in curchr
8940 ;
8950 LOOKR LDY SMY
8960     JSR WHERE
8970     LDY SMK
8980     INY
8990     INY
9000 LKRET LDA (JL),Y
9010     STA CURCHR
9020     JSR CKCHAR
9030     RTS
9040 ;
9050 LOOKL LDY SMY
9060     JSR WHERE
9070     LDY SMX
9080     DEY
9090     DEY
9100     JMP LKRET
9110 ;
9120 LOOKD LDY SMY
9130     INY
9140     JSR WHERE
9150     LDY SMX
9160     JMP LKRET
9170 ;
9180 LOOKU LDY SMY
9190     DEY
9200     JSR WHERE
9210     LDY SMX
9220     JMP LKRET
9230 ;
9240 ;erase chr beneath dozer
9250 ;repalce with next char.
9260 ;which is a road w/o snow
9270 ;
9280 REMOVE LDY SMY
9290     JSR WHERE
9300     LDY SMX
9310     LDA (JL),Y
9320     LDX #15
9330 RB1 CMP ROADS,X
9340     BEQ SF5
9350     DEX
9360     BPL RBI
9370     JMP SF6
9380 SF5 CMP #$1B    ;cng car to road
9390     BEQ SF8
9400     CMP #$1D
9410     BNE SF7
9420 SF8 PHA         ;save car
9430     LDA #$61
9440     STA (JL),Y
9450     INY
9460     STA (JL),Y
9470     JSR BONSCR
9480     JSR HORN
9490     PLA
9500     CMP #$1B
9510     BEQ SFA
9520     BNE SF6
9530 SF7 TAX
9540     INX
9550     TXA
9560     STA (JL),Y
9570     INY
9580     LDA (JL),Y
9590     TAX
9600     INX
9610     TXA
9620     STA (JL),Y
9630     CMP #$0B     ;    fuel?
9640     BEQ SF6
9650 SFA INC ROADG
9660     BNE SH1
9670     INC ROADG+1
9680 ;
9690 SH1 JSR DOSCOR   ;show score
9700 ;
9710 SF6 LDA CURCHR
9720     CMP #$08     ;fuel?
9730     BNE CAR?
9740 ;
9750     INC CURCHR   ;empty fuel
9760     LDY SMY
9770     JSR WHERE
9780     LDX FOFS     ;get pos.
9790 FFA LDA JL+1
9800     CMP FULY,X
9810     BEQ FFB
9820 FFC DEX
9830     BPL FFA
9840     RTS          ;shouldnt happen
9850 FFB LDA SMX      ;put it on
9860     CLC          ;screen
9870     ADC JL
9880     CMP FULX,X
9890     BNE FFC
9900     LDA #100     ;got it
9910     STA FTIME,X  ;set timer
9920     JSR FILSND   ;sound
9930     JSR RESFUL   ;show it
9940     JSR DSPFUL
9950 SF2 RTS
9960 ;
9970 ;hit a car
9980 ;
9990 CAR? LDY SMY     ;find out
010000   JSR WHERE    ;which ONE
010010   LDX CARCNT
010020   BEQ SF2
010030 CB1 LDA JL+1
010040   CMP CARY,X
010050   BEQ CB2
010060 CB3 DEX
010070   BPL CB1
010080   RTS          ;nope
010090 CB2 LDA JL
010100   CLC
010110   ADC SMX
010120   CMP CARX,X
010130   BNE CB3
010140   LDA #50     ;set timer
010150   STA CARTIM,X
010160   RTS
010170 ;
010180 ;road,fuel,car chrs
010190 ; 8 = fuel $1b= car
010200 ;
010210 ROADS .BYTE $60,$62,$64,$66
010220   .BYTE $68,$6A,$6C,$6E
010230   .BYTE $70,$72,$74,$76
010240   .BYTE $78,$08,$1B,$1D
010250   .BYTE $61,$63,$65,$67,$69
010260   .BYTE $6B,$6D,$6F,$71
010270   .BYTE $73,$75,$77,$79
010280 ;
010290 ;check if about to move
010300 ;onto a valid char.
010310 ;
010320 CKCHAR LOX #28
010330 CK1 CMP ROADS,X
010340   BEQ CROK
010350   DEX
010360   BPL CK1
010370   SEC         ;no move
010380   RTS
010390 CROK CLC      ;move ok
010400   RTS
010410 ;
010420 ;decrease fuel
010430 ;
010440 $FUEL DEC FUEL+2
010450   LDA FUEL+2
010460   ORA FUEL+1
010470   ORA FUEL
010480   BEQ SF3
010490   LDA FUEL+2
010500   BPL SF3
010510   LDA #9
010520   STA FUEL+2
010530   DEC FUEL+1
010540   LDA FUEL+1
010550   BPL SF3
010560   LDA #9
010570   STA FUEL+1
010580   DEC FUEL
010590 SF3 JSR DSPFUL
010600 FRET RTS
010610 ;
010620 ;show fuel left
010630 ;
010640 DSPFUL LDX #2
010650 DS LDA FUEL,X
010660   ORA #$10
010670   STA TXTWIN+6,X
010680   DEX
010690   BPL DS
010700   RTS
010710 ;
010720 ;wait some
010730 ;
010740 WAITSM LDA #0
010750   LDX #15      ;15 secs
010760   STA VFLG
010770 WSM JSR LDL
010780   DEX
010790   BPL WSM
010800   RTS
010810 ;
010820 ;pt2 is rest of game
010830 ;pt3 is the screen maker
010840 ;pt4 is the introduction
010850 ;
010860    .INCLUDE #D:SNOW.PT2
010870    .INCLUDE #D:SNOW.PT4
010880    .INCLUDE #D:SNOW.PT3
010890 ;
010900 ;variables
010910 ;
010920 RANDS .DS 16
010930 DBUF .DS 20
010940 EDGFLG .BYTE 1
010950 M128L .DS 36
010960 M128H .DS 36
010970   *=  $02E0
010980   .WORD BEGIN
010990   .END


LISTING 3: ASSEMBLY

0100 ;SAVE#D:SNOW.PT2
0110 ;----------------
0120 ; part 2 of game
0130 ;
0140 ; by:Barry Kolbe
0150 ;
0160 ;----------------
0170 ;
0180 ;load a map from disk
0190 ;
0200 LOADMP LDX #$10
0210     LDA #$0C
0220     STA ICCOM,X
0230     JSR CIOV
0240     LDX #$10
0250     LDA #3
0260     STA ICCOM,X
0270     LDA # >MAPNAM
0280     STA ICBAH,X
0290     LDA # <MAPNAM
0300     STA ICBAL,X
0310     LDA #4
0320     STA AUX1,X
0330     LDA #0
0340     STA AUX2,X
0350     JSR CIOV
0360     BPL RDOK
0370     RTS
0380 RDOK LDX #$10
0390     LDA # >SCNMEM
0400     STA ICBAH,X
0410     LDA # <SCNMEM
0420     STA ICBAL,X
0430     LDA #0
0440     LDA #10     ;10 pages
0450     STA ICBLH,X
0460     LDA #7      ;read it
0470     STA ICCOM,X
0480     JSR CIOV
0490     RTS
0500 ;
0510 MAPNAM .BYTE "D1:SMAP.    ",EOL
0520 ;
0530 ;count all the roads
0540 ;each pair of road bytes
0550 ;counts as 1 point
0560 ;
0570 CNTRDS LDY #0
0580     STY ROADC
0590     INC ROADC
0600     STY ROADC+1
0610     STY CNT     ;lines
0620     JSR WHERE
0630 CR4 LDY #0
0640 CR1 LDA (JL),Y
0650     LDX #12
0660 CR3 CMP ROADS,X ;is it road?
0670     BEQ CR2
0680     DEX
0690     BPL CR3
0700 CR6 INY         ;skip over 2
0710     INY
0720     CPY #0
0730     BNE CR1
0740     INC JL+1
0750     INC CNT
0760     LDY CNT
0770     CPY #10
0780     BNE CR4
0790     RTS
0800 CR2 INC ROADC
0810     BNE CR5
0820     INC ROADC+1
0830 CR5 JMP CR6
0840 ;
0850 ;copy the game dlist
0860 ;back for next board
0870 ;
0880 COPYDL LDY #50
0890 CC1 LDA BCKUP,Y
0900     STA DL1,Y
0910     DEY
0920     BPL CC1
0930     RTS
0940 ;
0950 ;reset fuel in text window
0960 ;
0970 RESFUL LDA #0
0980     STA FUEL+2
0990     LDA #1
1000     STA FUEL
1010     LDA FULK
1020     STA FUEL+1
1030     RTS
1040 ;
1050 ;find fuel containers
1060 ;in map-store their
1070 ;positions
1080 ;
1090 FNDFUL LDY #0
1100     STY CNT
1110     STY FOFS
1120 SS4 LDY CNT
1130     CPY #19     ;20 lines
1140     BNE SS3
1150     RTS
1160 SS3 JSR WHERE
1170     LDY #0
1180 SS2 LDA (JL),Y
1190     CMP #8      ;fuel chr
1200     BEQ SS1
1210 SS5 INY
1220     INY
1230     CPY #126    ;end of line?
1240     BNE SS2
1250     INC CNT
1260     JMP SS4
1270 ;
1280 SS1 LDX FOFS    ;store x,y
1290     LDA JL+1    ;positions
1300     STA FULY,X
1310     TYA
1320     CLC
1330     ADC JL
1340     STA FULX,X
1350     INC FOFS
1360     LDA FOFS
1370     CMP #6     ;only 6 allowed
1380     SHE SS5
1390     RTS
1400 ;
1410 ;check timers-fuel first
1420 ;
1430 CKFTIM LOX FOFS
1440     BEQ CCB     ;no fuel
1450 FTC LDA FTIME,X
1460     BEQ FTB
1470     DEC FTIME,X
1480     LDA FTIME,X
1490     BNE FTB
1500     LDA FULY,X
1510     STA JL+1
1520     LDA FULX,X
1530     STA JL
1540     LDY #0
1550     LDA #8
1560     STA (JL),Y
1570     INY
1580     LDA #$0A
1590     STA (JL),Y
1600 FTB DEX
1610     BPL FTC
1620 ;
1630 ;check bonus car timers
1640 ;
1650 CCB LDX CARCNT
1660     BNE CTC     ;yes
1670     RTS         ;no cars
1680 CTC LDA CARTIM,X
1690     BEQ CTD
1700     DEC CARTIM,X
1710     LDA CARTIM,X
1720     SHE CTD
1730     LDA CARY,X
1740     STA JL+1
1750     LDA CARX,X
1760     STA JL
1770     LDY #0      ;put bonus
1780     LDA (JL),Y  ;car on scn
1790     CMP #$60    ;snow bckgrnd?
1800     BNE CTF
1810     LDA #$1B    ;yes
1820     STA (JL),Y
1830     INY
1840     LDA #$1C
1850 CTG STA (JL),Y
1860     LDA #$50
1870     STA RMTIM,X
1880     JSR BELL
1890 CTD DEX
1900     BPL CTC
1910 ;
1920 ;timers to remove cars
1930 ;
1940     LDX CARCNT
1950 CTK LDA RMTIM,X
1960     BEQ RRA
1970     DEC RMTIM,X
1980     LDA RMTIM,X
1990     BNE RRA
2000     LDA CARY,X
2010     STA JL+1
2020     LDA CARX,X
2030     STA JL
2040     LDY #0
2050     LDA (JL),Y
2060     CMP #$1B
2070     BNE CTI
2080     LDA #$60    ;snow road
2090 CTM STA (JL),Y
2100     INY
2110     STA CJL),Y
2120     LDA #100    ;reset timer
2130     STA CARTIM,X
2140 RRA DEX
2150     BPL CTK
2160     RTS
2170 ;
2180 CTI LDA #$61    ;plain road
2190     BNE CTM
2200     RTS
2210 CTF LDA #$1D
2220     STA (JL),Y
2230     INY
2240     LDA #$1E
2250     BNE CTG
2260 ;
2270 ;find bonus cars on map
2280 ;
2290 FNDCRS LDY #0
2300     STY CNT
2310     STY CARCNT
2320 FCA LDY CNT
2330     CPY #19     ;20 lines
2340     BNE FCE
2350     RTS
2360 FCE JSR WHERE
2370     LDY #0
2380 FCC LDA (JL),Y
2390     CMP #$1B    ;cars
2400     BEQ FCB
2410 FCD INY
2420     INY
2430     CPY #126    ;end of line?
2440     BNE FCC
2450     INC CNT
2460     JMP FCA
2470 FCB LDX CARCNT
2480     LDA JL+1
2490     STA CARY,X
2500     TYA
2510     CLC
2520     ADC JL
2530     STA CARX,X
2540     TYA
2550     PHA
2560     LDA #$60    ;repl w/road
2570     STA (JL),Y
2580     INY
2590     STA (JL),Y
2600     PLA
2610     TAY
2620     INC CARCNT
2630     LDA CARCNT
2640     CMP #4      ;only 4 cars
2650     BNE FCD
2660     RTS
2670 ;
2680 ;show bonus & regular score
2690 ;
2700 BONSCR LDX #3    ;100 bonus
2710     BNE SCD
2720 ;
2730 DOSCOR LDX #4    ;reg. score
2740 SCD LDA SCRS,X
2750     CLC
2760     ADC #1
2770     STA SCRS,X
2780 SCB CMP #$1A
2790     BCC SCE
2800     LDA #$10
2810     STA SCRS,X
2820     DEX
2830     BMI SCE
2840     INC SCRS,X
2850     LDA SCRS,X
2860     JMP SCB
2870 SCE LDX #5
2880 SCC LDA SCRS,X
2890     STA SCLN+9,X
2900     DEX
2910     BPL SCC
2920     LDA SCRS+1
2930     CMP THOUS
2940     BEQ CRET
2950     STA THOUS
2960     INC LIVES
2970     JSR SHOLIV
2980 CRET RTS
2990 ;
3000 ;move the storm
3010 ;
3020 MOVICE LDA ICECNT ;time for
3030     BEQ NEWD    ;new direction?
3040     DEC ICECNT  ;no
3050     LDX ICEDIR  ;get direction
3060     LDA ICETB,X
3070     STA IJMP+1
3080     LDA ICETB+1,X
3090     STA IJMP+2
3100     LDA #1
3110     STA ICEON
3120 IJMP JSR $FFFF ;move it
3130     JMP XITVBV
3140 ;
3150 ;get a new direction
3160 ;and set flags
3170 ;
3180 NEWD LDA RANDOM
3190     AND #3
3200     TAX
3210     ASL A
3220     STA ICEDIR
3230     LDA #$6B    ;time on
3240     STA ICECNT  ;screen
3250     LDA IYP,X   ;starting
3260     STA ICY     ;position
3270     LDA IXP,X
3280     STA ICX
3290     CLC
3300     ADC #$0C    ;eyes
3310     STA EYX
3320     JSR PUTICE  ;put definition
3330     JSR ZB3     ;in memory
3340     LDA ICTL    ;time spent
3350     STA OFFSCN  ;off screen
3360     LDA ICTH
3370     STA OFFSCN+1
3380     LDA #0      ;off yet
3390     STA ICEON
3400     JMP XITVBV
3410 ;
3420 ;move table
3430 ;
3440 ICETB .WORD ZRU
3450     .WORD ZLD
3460     .WORD ZRD
3470     .WORD ZLU
3480 ;
3490 ;diagonal movement
3500 ;
3510 ZRU JSR ZIRT
3520     JSR ZIUP
3530     RTS
3540 ZLD JSR ZILF
3550     JSR ZIDN
3560     RTS
3570 ZRD JSR ZIRT
3580     JSR ZIDN
3590     RTS
3600 ZLU JSR ZILF
3610     JSR ZIUP
3620     RTS
3630 ;
3640 ;slide it up
3650 ;
3660 ZIUP LDY ICY
3670     LDX #31
3680 ZIUA LDA P2MEM,Y
3690     STA P2MEM-1,Y
3700     LDA P3MEM,Y
3710     STA P3MEM-1,Y
3720     INY
3730     DEX
3740     BPL ZIUA
3750     DEC ICY
3760     LDA #0
3770     LDY EYY
3780     STA MSMEM+1,Y
3790     LDA #$C3
3800     STA MSMEM-1,Y
3810     DEC EYY
3820     RTS
3830 ;
3840 ;go down
3850 ;
3860 ZIDN LDA ICY
3870     CLC
3880     ADC #31
3890     TAY
3900     LDX #31
3910 ZIDA LDA P2MEM,Y
3920     STA P2MEM+1,Y
3930     LDA P3MEM,Y
3940     STA P3MEM+1,Y
3950     DEY
3960     DEX
3970     BPL ZIDA
3980     INC ICY
3990     LDA #0
4000     LDY EYY
4010     STA MSMEM,Y
4020     LDA #$C3
4030     STA MSMEM+2,Y
4040     INC EYY
4050     RTS
4060 ;
4070 IYP .BYTE $C0,$30.$30,$C0
4080 IXP .BYTE $0A,$E0,$0A,$E0
4090 ;
4100 ;move storm left
4110 ;
4120 ZILF DEC ICX
4130     DEC ICX
4140     DEC EYX
4150     DEC EYX
4160 ZB3 LDA ICX
4170     STA HPOSP0+2
4180     CLC
4190     ADC #16
4200     STA HPOSP0+3
4210     LDA EYX
4220     STA HPOSM0
4230     CLC
4240     ADC #6
4250     STA HPOSM0+3
4260     RTS
4270 ;
4280 ;move stormy right
4290 ,
4300 ZIRT INC ICX
4310     INC ICX
4320     INC EYX
4330     INC EYX
4340     LDA EYX
4350     JMP ZB3
4360 ;
4370 ;put snow storm on screen
4380 ;
4390 PUTICE JSR CLR23
4400     LDX #0
4410     LDY ICY
4420 ICA LDA ICEDAT,X
4430     STA P2MEM,Y
4440     STA P2MEM+1,Y
4450     LDA ICDT2,X
4460     STA P3MEM,Y
4470     STA P3MEM+1,Y
4480     INY
4490     INY
4500     INX
4510     CPX #16
4520     BNE ICA
4530     LDA ICY
4540     CLC
4550     ADC #$0C
4560     STA EYY
4570     LDY EYY
4580     LDA #$C3
4598     STA MSMEM,Y
4600     STA MSMEM+1,Y
4610     RTS
4620 ;
4630 ;stormy's definition
4640 ;
4650 ICEDAT BYTE $00,$04,$02,$32
4660     .BYTE $0B,$07,$3D,$4F
4670     .BYTE $0C,$3D,$47,$0B
4680     .BYTE $12,$12,$01,$00
4690 ICDT2 .BYTE $00,$80,$48,$48
4700     .BYTE $D0,$E6,$BC,$F0
4710     .BYTE $32,$BC,$E0,$D0
4720     .BYTE $4C,$40,$20,$00
4730 ;
4740 ;erase plyrs 2,3 & missiles
4750 ;
4760 CLR23 LDX #0
4770     TXA
4780 C23 STA P3MEM,X
4790     STA P2MEM,X
4800     STA MSMEM,X
4810     INX
4820     BNE C23
4830     RTS
4840 ;
4850 ;reset game due to
4860 ;lost lives
4870 ;
4880 GRESET DEC LIVES
4890     JSR SHOLIV
4900     JSR RESFUL
4910     JSR DSPFUL
4920     RTS
4930 ;
4940 ;show # of lives
4950 ;
4960 SHOLIV LDA LIVES
4970     CMP #10
4980     BCC GRT
4990     LDA #9
5000     STA LIVES
5010 GRT ORA #$10
5020     STA TXTWIN+16
5030     RTS
5040 ;
5050 ;let the storm exit stage
5060 ;
5070 REMP23 LDA #0
5080     STA HPOSP0+2
5090     STA HPOSP0+3
5100     STA HPOSM0
5110     STA HPOSM0+3
5120     STA ICECNT
5130     LDA ICTL
5140     STA OFFSCN
5150     LDA ICTH
5160     STA OFFSCN+1
5170     LDA #0
5180     STA ICEON
5190     RTS
5200 ;
5210 ;game over-snow guys win
5220 ;
5230 GAMOVR LDA # >GOVER
5240     STA TMESS+1
5250     LDA # <GOVER
5260     STA TMESS
5270     LDA #0      ;turn off Ybi
5280     STA VFLG
5290     JSR SNDOFF
5300 GAM LDA CONSOL  ;chk for START
5310     CMP #6
5320     BNE GAM
5330     JMP NEWBEG
5340 ;
5350 ;initialize sound
5360 ;
5370 SNDOFF LDA #0
5380     STA $D208
5390     LDX #3
5400     STX $D20F
5410     LDX #7
5420 SNL STA $D200,X
5430     DEX
5440     BPL SNL
5450     RTS
5460 ;
5470 ;turn off individ. snds
5480 ;
5490 OFF1 LDA #0
5500     STA $D200
5510     STA $D201
5520     RTS
5530 ;
5540 OFF2 LDA #0
5550     STA $D203
5560     STA $D202
5570     RTS
5580 ;
5590 OFF34 LDA #0
5600     STA $D204
5610     STA $D205
5620     STA $D206
5630     STA $D207
5640     RTS
5650 ;
5660 ;honk horn when dozer hits car
5670 ;
5680 HORN JSR SNDOFF
5690     LDX #1      ;twice!
5700 HN1 LDA #121
5710     STA $D204
5720     LDA #$A6
5730     STA $D205
5740     LDA #10
5750     STA $D206
5760     LDA $$24
5770     STA $D207
5780     JSR LDL
5790     JSR OFF34
5800     JSR LDL
5810     DEX
5820     BPL HN1
5830     RTS
5840 ;
5850 ;pause the game
5860 ;
5870 PAUSE LDX #$FF
5880     STX CH
5890     LDA #0      ;hold on vbi
5900     STA VFLG
5910     JSR WAIT
5920 PADS LDA CH
5930     CMP #$FF
5940     BEQ PAUS
5950     STX CH
5960     LDA #1
5970     STA VFLG
5980     RTS
5990 ;
6000 ;the vbi
6010 ;
6020 VBLNK LDA VFLG  ;running?
6030     BNE VBC     ;yes
6040 VBA JMP XITVBV
6050 VBC LDA OFFSCN  ;coming on?
6060     ORA OFFSCN+1
6070     BEQ VBB     ;yes
6080     DEC OFFSCN  ;countdown
6090     LDA OFFSCN
6100     CMP #$FF
6110     BNE VBA
6120     DEC OFFSCN+1
6130     JMP VBA
6140 VBB DEC VTIME   ;vbi speed
6150     LDA VTIME
6160     BNE VBA
6170     LDA ICESPEED
6180     STA VTIME
6190     JMP MOVICE  ;do the move
6200 ;
6210 ;make a plowing sound
6220 ;
6230 PLWSND LDA ICEON ;unless
6240     BNE NOPL    ;the storm is
6250     LDA #$32    ;making noise
6260     STA $D202
6270     LDA #$46
6280     STA $D203
6290     JSR WAIT
6300 NOPL RTS
6310 ;
6320 ;reset some playing stuff
6330 ;
6340 REPLAY LDA #$80 ;dozer's
6350     STA PXP
6360     LDA #$70    ;position
6370     STA PYP
6380     LDA #4      ;scroll shadows
6398     STA SMY
6400     LDA #24
6410     STA SMX
6420     LDA #0      ;screen pos.
6430     STA SXP
6440     STA SYP
6450     LDX #5      ;fuel timers
6460     LDA #0
6470 FT1 STA FTIME,X
6480     DEX
6490     BPL FT1
6500     LDX #3      ;car timers
6510 CT1 LDA CARSHD,X
6520     STA CARTIM,X
6530     LDA #0
6540     STA RMTIM,X
6550     DEX
6560     BPL CT1
6570     LDA #0      ;reset road
6580     STA ROADG   ;counters
6590     STA ROADG+1
6600     INC ROADG
6610     STA ICECNT
6620     LDA ICESPEED ;storm'S speed
6630     STA VTIME
6640     JSR SNDOFF  ;sound off
6650     LDA ICTL
6660     STA OFFSCN
6670     LDA ICTH
6680     STA OFFSCN+1
6690     RTS
6700 ;
6710 ;interval between cars
6720 ;
6730 CARSHD .BYTE $30,$60,$80,$B0
6740 ;
6750 ;speed up for next level
6760 ;fuel down by 10
6770 ;storm is off screen less
6780 ;storm moves faster
6790 ;
6800 FIGLEV LDX LEVEL
6810     CPX #5
6820     BEQ LEA
6830     INC LEVEL
6840 LEA LDX LEVEL
6850     LDA FULM,X
6860     STA FULK
6870     LDA ICOFFL,X
6880     STA ICTL
6890     LDA ICOFFH,X
6900     STA ICTH
6910     LDA ICESPDT,X
6920     STA ICESPEED
6930     LDA #1
6940     STA EDGFLG
6950     JSR SNDOFF
6960     RTS
6970 ;
6980 ;tables for stormy
6990 ;
7000 FULM .BYTE 8,7,6,5,4,3
7810 ICOFFL .BYTE
$80,$80,0,$80,0,$80
7020 ICOFFH .BYTE 3,2,2,1,1,0
7030 ICESPDT .BYTE 10,8,6,4,2,1
7040 SPTAB .BYTE 0,2,1,3
7050 ;
7060 ;spin dozer if hit by storm
7070 ;or out of fuel
7080 ;
7090 SPIN LDA DIRECT
7100     PHA
7110     LDY #4
7120     STY YSP
7130     LDA #0
7140     STA SPSND
7150 SPB LDX #3
7160     STX XSP
7170 SPA LDA SPTAB,X
7180     TAX
7190     JSR DFOK
7200     LDA #$86
7210     STA $D203
7220     LDA SPSND
7230     CLC
7240     ADC #9
7250     STA SPSND
7260     STA $D202
7270     JSR DELAY
7280     DEC XSP
7290     LDX XSP
7300     BNE SPA
7310     DEC YSP
7320     LDY YSP
7330     BNE SPB
7340     PLA
7350     STA DIRECT
7360     JSR DFOK
7370     JSR OFF2
7380     RTS
7390 ;
7400 ;move the tracks on the dozer
7410 ;
7420 TRACKR STY YH
7430     STX XH
7440     LDA XD1
7450     AND #1
7460     TAX
7470     LDA TRKR,X
7480 TRKJMP LDY PYP+1
7490     STA P1MEM+1,Y
7500     STA P1MEM+2,Y
7510     STA P1MEM+13,Y
7520     STA P1MEM+14,Y
7530     INC XD1
7540     LDY YH
7550     LDX XH
7560     RTS
7570 ;
7580 TRKR .BYTE $55,$A9 ;masks
7590 ;
7600 TRACKL STY YH
7610     STX XH
7620     LDA XD1
7630     AND #1
7640     TAX
7650     LDA TRKL,H
7660     JMP TRKJMP
7670 ;
7680 TRKL .BYTE $AA,$95 ;masks
7690 ;
7700 TRACKU STY YH
7710     STX XH
7720     LDY PYP+1
7730     LDX #7
7740 TRU1 LDA P1MEM+4,Y
7750     CMP #$99
7760     BNE TRU2
7770     LDA #$18
7780     BNE TRU3
7790 TRU2 CMP #$18
7800     BNE TRU3
7810     LDA #$99
7820 TRU3 STA P1MEM+4,Y
7830     INV
7840     DEX
7850     BPL TRU1
7860     LDX XH
7870     LDY YH
7880     RTS
7890 ;
7900 ;filling up with fuel sound
7910 ;
7920 FILSND JSR OFF2
7930     LDA #$A4
7940     STA $D203
7950     LDX #160
7960 FIL1 STX $D202
7970     JSR FDEL
7980     CPX #45
7990     BNE FIL2
8000     LDA #$A2
8010     STA $D203
8020 FIL2 DEX
8030     BNE FIL1
8040     JSR OFF2
8050     RTS
8060 ;
8070 FDEL LDY #200
8080 FD1 JSR WAIT
8090     DEY
8100     BPL FD1
8110     RTS
8120 ;
8130 ;get the directory
8140 ;search for SMAP.???
8150 ;
8160 GETDIR JSR CLOSE6
8170     LDX #$60
8180     LDA #3
8190     STA ICCOM,X
8200     LDA # >DIRNAM
8210     STA ICBAH,X
8220     LDA # <DIRNAM
8230     STA ICBAL,X
8240     LDA #6
8250     STA AUX1,X
8260     LDA #0
8270     STA AUX2,X
8280     JSR CIOV
8290     RTS
8300 ;
8310 CLOSE6 LDX #$60
8320     LDA #$0C
8330     STA ICCOM,X
8340     JSR CIOV
8350     RTS
8360 ;
8370 ;read ina map from disk
8380 ;
8390 GETFIL LDA #5
8400     LDX #$60
8410     STA ICCOM,X
8420     LDA # >DBUF
8430     STA ICBAH,X
8440     LDA # <DBUF
8450     STA ICBAL,X
8460     LDA #20
8470     STA ICBLL,K
8480     LDA #0
8490     STA ICBLH,X
8500     JSR CIOV
8510     BMI DOV
8520     LDA DBUF+4
8530     CMP #'F
8540     BNE FLP
8550 DOV JSR GETDIR
8560     LDA #0
8570     STA MAPFLG
8580     PLA
8590     PLA
8600     JMP MAP2
8610 ;
8620 FLP LDX #10
8630 DLP LDA DBUF,X
8640     STA MAPNAM-2,X
8650     CMP #$20
8660     BEQ DRET
8670     INX
8680     BNE DLP
8690 DRET LDA #EOL
8700     STA MAPNAM-2,X
8710     RTS
8720 ;
8730 DIRNAM .BYTE "D1:SMAP.*",EOL
8740 ;
8750 ;try jumping to edge
8760 ;once per level only
8770 ;to road
8780 ;
8790 JMPEDG LDA EDGFLG
8800     BNE JEA
8810     RTS
8820 JEA LDA DIRECT
8830     CMP #7
8840     BNE JLF
8850     LDA SMX
8860     STA EHOLD
8870     LDA #$C8
8880     SEC
8890     SBC PXP
8900     LSR A
8910     LSR A
8920     STA EADD
8930     CLC
8940     ADC SMX
8950     STA SMX
8960     DEC SMX
8970     DEC SMX
8980     JSR LOOKR
8990     BCC JYES
9000     LDA EHOLD
9010     STA SMX
9020     RTS
9030 JYES LDX #$C8
9040     STX HPOSP0
9050     STX PXP
9060     INX
9070     STX HPOSP0+1
9080     STX PXP+1
9090     INC SMK
9100     INC SMK
9110     DEC EDGFLG
9120     RTS
9130 ;
9140 JLF CMP #11
9150     BNE JUP
9160     LDA SMX
9170     STA EHOLD
9180     LDA PXP
9190     SEC
9200     SBC #$30
9210     LSR A
9220     LSR A
9230     STA EADD
9240     LDA SMX
9250     SEC
9260     SBC EADD
9270     STA SMX
9280     INC SMX
9290     INC SMX
9300     JSR LOOKL
9310     BCC JEB
9320     LDA EHOLD
9330     STA SMX
9340     RTS
9350 JEB LDX #$30
9360     STX HPOSP0
9370     STX PXP
9380     DEX
9390     STX HPOSP0+1
9400     STX PXP+1
9410     DEC SMX
9420     DEC SMX
9430     DEC EDGFLG
9440     RTS
9450 ;
9460 JIJP CMP #14
9470     BNE JDN
9480     LDA SHY
9490     STA EHOLD
9500     LDA PYP
9510     SEC
9520     SBC #$30
9530     LSR A
9540     LSR A
9550     LSR A
9560     LSR A      ;/16
9570     STA EADD
9580     LDA SHY
9590     SEC
9600     SBC EADD
9610     STA SMY
9620     INC SMY
9630     JSR LOOKU
9640     BCC JEC
9650     LDA EHOLD
9660     STA SMY
9670     RTS
9680 JEC DEC SMY
9690     JSR ERS01
9700     LDA #$30
9710     STA PYP
9720     JSR DEFPLR
9730     DEC EDGFLG
9740     RTS
9750 ;
9760 ;erase players 0 and 1
9770 ;
9780 ERS01 LDY #$FF
9790     LDA #0
9800 ERSA STA P0MEM,Y
9810     STA P1MEM,Y
9820     DEY
9830     BNE ERSA
9840     RTS
9850 ;
9860 JDN CMP #13
9870     BNE JRET
9880     LDA SMY
9890     STA EHOLD
9900     LDA #$C0
9910     SEC
9920     SBC PYP
9930     LSR A
9940     LSR A
9950     LSR A
9960     LSR A
9970     CLC
9980     ADC SMY
9990     STA SMY
010000   DEC SMY
010010   JSR LOOKD
010020   BCC JED
010030   LDA EHOLD
010040   STA SMY
010050 JRET RTS
010060 JED JSR ERS01
010070   LDA #$C0
010080   STA PYP
010090   JSR DEFPLR
010100   INC SMY
010110   DEC EDGFLG
010120   RTS
010130 ;
010140 ;bonus car bell sound
010150 ;
010160 BELL JSR OFF2
010170   LDA #12
010180   STA $D202
010190 BL3 LDA #$A9
010200   STA SHD
010210 BL1 DEC SHD
010220   LDA SHD
010230   CMP #$A0
010240   BCC BL2
010250   STA $D203
010260   JSR DELAY
010270   JMP BL1
010280 BL2 JSR OFF2
010290   RTS
010300 ;
010310 ;storm sound
010320 ;
010330 ICESND LDA ICEON
010340   BEQ ICOFF
010350   LDA #$86
010360   STA $D201
010370   LDA #11
010380   STA $D200
010390   RTS
010400 ICOFF JSR OFF1
010410   RTS
010420 ;
010430 ;check if START was pressed
010440 ;
010450 STKEY LDA CONSOL
010460   CMP #6
010470   BEQ STKEY
010480   JMP GAMOVR
010490 ;
010500 ;setup game board and colors
010510 ;
010520 SETSCN LDA # >DL1
010530   STA SDLSTL+1
010540   LDA # <DL1
010550   STA SDLSTL
010560   LDA #$C0
010570   STA $D40E
010580   LDA # >DLI
010590   STA 513
010600   LDA # <DLI
010610   STA 512
010620   LDX #4
010630 KLR LDA CLRTAB,X
010640   STA COLORO,X
010650   DEX
010660   BPL KLR
010670   RTS


LISTING 4: ASSFMBLY

0100 ;SAUE#D:SNOW.PT3
0110 ;
0120 ;-----------------
0130 ; screen data file
0140 ; & uncompacter
0150 ; for snowplow
0160 ;
0170 ; by: Barry Kolbe
0180 ;
0190 ;-----------------
0200 ;
0210 ;uncompact screen data
0220 ;
0230 ;set up pointers &
0240 ;end of memory
0250 ;
0260 UNCOM LDA #$90
0270     STA BFL+1
0280     LDA #0
0290     STA BFL
0300     LDA # <MAPDATA
0310     STA TL
0320     LDA # >MAPDATA
0330     STA TL+1
0340     LDA #1
0350     STA EDM
0360     LDA #$9A
0370     STA EDM+1
0380 ;
0390 ;test for unique or
0400 ;repeated data
0410 ;
0420     LDY #0
0430 UC1 STY UNIQUE
0440     STY COUNT+1
0450     JSR GETAB    ;in A
0460     CLC
0470     ROL A
0480     ROL UNIQUE   ;bit 7 test
0490     LSR A
0500     STA COUNT    ;lsb
0510     BNE CKU      ;if 0 long count
0520     JSR GETAB    ;msb
0530     STA COUNT+1
0540     JSR GETAB
0550     STA COUNT    ;lsb of long cnt
0560 CKU LDA UNIQUE
0570     BEQ UC2
0580 UC3 JSR GETAB    ;unique data
0590     STA (BFL),Y
0600     JSR NXBFL
0610     DEC COUNT
0620     BNE UC3
0630     LDA COUNT+1
0640     BEQ UC1
0650     DEC COUNT+1
0660     JMP UC3
0670 ;
0680 ;repeated data
0690 ;
0700 UC2 JSR GETAB
0710     STA DATA
0720 UC4 LDA DATA
0730     STA (BFL),Y
0740     JSR NXBFL
0750     DEC COUNT
0760     BNE UC4
0770     LDA COUNT+1
0780     BEQ UC1     ;next
0790     DEC COUNT+1
0800     JMP UC4
0810 ;
0820 ;increment dest. ptr
0830 ;check for end of screen
0840 ;memory
0850 ;
0860 NXBFL INC BFL
0870     BNE NIN
0880     INC BFL+1
0890 NIN LDA BFL+1
0900     CMP EDM+1
0910     BNE NRT
0920     LDA BFL
0930     CMP EDM
0940     BNE NRT
0950     PLA         ;done so get out
0960     PLA
0970 NRT RTS
0980 ;
0990 GETAB LDA (TL),Y ;get 1 byte
1000     INC TL      ;&inc. ptr of
1010     BNE GTZ     ;source
1020     INC TL+1
1030 GTZ RTS
1040 ;
1050 ;the actual screen compacted
1060 ;
1070 MAPDATA .BYTE 4,8,30,96,130,108
1080     .BYTE 110,14,96,130,108,116
1090     .BYTE 6,7,130,114,110,28
1100     .BYTE 96,130,27,28,12,96
1110     .BYTE 130,108,110,22,96,130
1120     .BYTE 108,116,4,0,130,14
1130     .BYTE 15,3,7,135,1,2
1140     .BYTE 3,4,7,5,6,2
1150     .BYTE 7,130,5,6,3,7
1160     .BYTE 130,5,6,9,7,130
1170     .BYTE 98,100,2,7,130,5
1180     .BYTE 6,2,7,130,5,6
1190     .BYTE 6,7,130,98,100,6
1200     .BYTE 7,130,98,100,2,7
1210     .BYTE 137,13,7,1,2,3
1220     .BYTE 4,7,5,6,27,7
1230     .BYTE 130,5,6,2,7,130
1240     .BYTE 98,100,5,7,130,14
1250     .BYTE 15,15,7,130,98,100
1260     .BYTE 4,0,2,7,130,114
1270     .BYTE 110,12,96,130,108,116
1280     .BYTE 6,7,130,5,6,4
1290     .BYTE 7,130,98,100,4,7
1300     .BYTE 130,5,6,2,7,130
1310     .BYTE 5,6,4,7,132,98
1320     .BYTE 100,5,6,2,7,132
1330     .BYTE 5,6,98,104,10,96
1340     .BYTE 130,108,116,6,7,135
1350     .BYTE 1,2,3,4,7,5
1360     .BYTE 6,5,7,130,5,6
1370     .BYTE 8,7,132,5,6,98
1380     .BYTE 100,2,7,130,114,110
1390     .BYTE 14,96,130,108,116,2
1400     .BYTE 7,130,98,100,4,0
1410     .BYTE 135,5,6,98,100,7
1420     .BYTE 5,6,9,7,133,98
1430     .BYTE 100,7,5,6,5,7
1440     .BYTE 130,5,6,2,7,130
1450     .BYTE 98,100,14,7,130,98
1460     .BYTE 100,2,7,130,5,6
1470     .BYTE 2,7,130,98,100,10
1480     .BYTE 7,133,98,100,7,5
1490     .BYTE 6,5,7,4,96,130
1500     .BYTE 108,116,2,7,130,14
1510     .BYTE 15,11,7,131,13,98
1520     .BYTE 100,2,7,130,98,100
1530     .BYTE 14,7,136,98,100,2
1540     .BYTE 7,130,98,100,4,0
1550     .BYTE 2,7,130,98,100,7
1560     .BYTE 7,135,1,2,3,4
1570     .BYTE 7,120,112,12,96,130
1580     .BYTE 106,118,14,7,130,98
1590     .BYTE 104,6,96,130,102,100
1600     .BYTE 8,7,135,1,2,3
1610     .BYTE 4,7,5,6,4,7
1620     .BYTE 130,5,6,3,7,130
1630     .BYTE 120,112,12,96,130,108
1640     .BYTE 110,2,96,130,106,118
1650     .BYTE 2,7,130,98,100,2
1660     .BYTE 7,130,114,110,6,96
1670     .BYTE 130,108,116,2,7,130
1680     .BYTE 98,100,2,7,130,98
1690     .BYTE 100,4,0,2,7,130
1700     .BYTE 98,100,4,7,130,5
1710     .BYTE 6,3,7,130,5,6
1720     .BYTE 5,7,130,5,6,2
1730     .BYTE 7,130,5,6,6,7
1740     .BYTE 130,5,6,2,7,130
1750     .BYTE 5,6,8,7,130,98
1760     .BYTE 100,6,7,130,98,100
1770     .BYTE 2,7,130,5,6,3
1780     .BYTE 7,130,5,6,4,7
1790     .BYTE 133,5,6,7,5,6
1800     .BYTE 16,7,130,8,10,2
1810     .BYTE 7,130,98,100,2,7
1820     .BYTE 130,5,6,2,7,130
1830     .BYTE 98,100,2,7,138,98
1840     .BYTE 100,13,7,1,2,3
1850     .BYTE 4,98,100,2,7,130
1860     .BYTE 98,100,2,7,130,98
1870     .BYTE 100,4,0,2,7,130
1880     .BYTE 120,112,30,96,130,27
1890     .BYTE 28,4,96,130,108,116
1900     .BYTE 4,7,130,98,100,6
1910     .BYTE 7,130,98,100,4,7
1920     .BYTE 130,114,110,2,96,130
1930     .BYTE 108,116,4,7,130,114
1940     .BYTE 110,2,96,130,108,116
1950     .BYTE 4,7,130,114,110,4
1960     .BYTE 96,130,108,116,6,7
1970     .BYTE 130,98,100,4,7,132

1980     .BYTE 5,6,98,100,2,7
1990     .BYTE 130,120,112,4,96,2
2000     .BYTE 7,130,98,100,2,7
2010     .BYTE 130,98,100,2,7,130
2020     .BYTE 98,100,4,0,13,7
2030     .BYTE 130,5,6,21,7,130
2040     .BYTE 5,6,2,7,130,98
2050     .BYTE 100,4,7,132,98,100
2060     .BYTE 8,10,4,7,130,98
2070     .BYTE 100,4,7,134,98,100
2080     .BYTE 5,6,98,100,4,7
2090     .BYTE 134,98,100,5,6,98
2100     .BYTE 100,4,7,130,98,100
2110     .BYTE 2,7,132,14,15,98
2120     .BYTE 100,6,7,130,98,100
2130     .BYTE 6,7,130,98,100,10
2140     .BYTE 7,130,98,100,2,7
2150     .BYTE 130,98,100,2,7,130
2160     .BYTE 98,100,4,0,130,114
2170     .BYTE 110,28,96,130,108,116
2180     .BYTE 6,7,134,14,15,98
2190     .BYTE 100,5,6,2,7,130
2200     .BYTE 98,100,6,7,130,120
2210     .BYTE 112,4,96,130,106,118
2220     .BYTE 2,7,130,120,112,4
2230     .BYTE 96,130,106,118,2,7
2240     .BYTE 130,120,112,4,96,130
2250     .BYTE 106,118,4,7,130,120
2260     .BYTE 112,2,96,130,108,110
2270     .BYTE 2,96,130,106,118,6
2280     .BYTE 7,130,120,112,10,96
2290     .BYTE 130,106,118,2,7,130
2300     .BYTE 98,100,2,7,130,98
2310     .BYTE 100,4,0,139,98,100
2320     .BYTE 7,5,6,5,6,5
2330     .BYTE 6,5,6,7,7,130
2340     .BYTE 5,6,3,7,130,5
2350     .BYTE 6,5,7,130,98;100
2360     .BYTE 4,7,130,114,110,2
2370     .BYTE 96,130,106,118,4,7
2380     .BYTE 130,98,100,6,7,137
2390     .BYTE 13,7,1,2,3,4
2400     .BYTE 7,5,6,27,7,131
2410     .BYTE 98,100,13,25,7,130
2420     .BYTE 98,100,2,7,130,98
2430     .BYTE 100,4,0,130,120,112
2440     .BYTE 10,96,130,8,10,6
2450     .BYTE 7,130,5,6,8,7
2460     .BYTE 130,98,100,4,7,130
2470     .BYTE 98,100,8,7,130,98
2480     .BYTE 100,8,7,130,114,110
2490     .BYTE 18,96,130,108,116,4
2500     .BYTE 7,130,114,110,6,96
2510     .BYTE 130,106,112,4,96,130
2520     .BYTE 27,28,20,96,130,102
2530     .BYTE 100,2,7,130,98,100
2540     .BYTE 4,0,5,7,130,5
2550     .BYTE 6,16,7,130,5,6
2560     .BYTE 5,7,130,98,100,4
2570     .BYTE 7,130,98,100,8,7
2580     .BYTE 132,98,100,5,6,2
2590     .BYTE 7,130,5,6,2,7
2600     .BYTE 130,98,100,6,7,138
2610     .BYTE 5,6,7,1,2,3
2620     .BYTE 4,7,5,6,2,7
2630     .BYTE 130,98,100,4,7,130
2640     .BYTE 98,100,24,7,130,5
2650     .BYTE 6,8,7,130,98,100
2660     .BYTE 2,7,130,98,100,4
2670     .BYTE 0,130,114,110,6,96
2680     .BYTE 130,108,116,4,7,130
2690     .BYTE 114,110,6,96,130,108
2700     .BYTE 116,6,7,130,98,100
2710     .BYTE 4,7,130,120,112,2
2720     .BYTE 96,130,108,116,4,7
2730     .BYTE 130,98,100,2,7,130
2740     .BYTE 5,6,2,7,132,5
2750     .BYTE 6,98,100,2,7,130
2760     .BYTE 5,6,4,7,130,5
2770     .BYTE 6,8,7,132,98,100
2780     .BYTE 8,10,2,7,130,98
2790     .BYTE 104,18,96,130,108,116
2800     .BYTE 2,7,136,13,7,1
2810     .BYTE 2,3,4,1,2,3
2820     .BYTE 7,132,5,6,5,6
2830     .BYTE 5,7,130,98,100,2
2840     .BYTE 7,130,98,100,4,0
2850     .BYTE 130,98,100,6,7,130
2860     .BYTE 98,100,2,7,132,5
2870     .BYTE 6,98,100,6,7,130
2880     .BYTE 98,100,6,7,130,98
2890     .BYTE 100,8,7,130,98,100
2900     .BYTE 4,7,130,98,100,8
2910     .BYTE 7,130,98,100,4,7
2920     .BYTE 130,5,6,12,7,130
2930     .BYTE 98,100,4,7,130,98
2940     .BYTE 100,2,7,130,5,6
2950     .BYTE 6,7,130,98,100,6
2960     .BYTE 7,130,98,100,2,7
2970     .BYTE 130,5,6,10,7,130
2980     .BYTE 98,100,2,7,130,98
2990     .BYTE 100,4,0,130,98,100
3000     .BYTE 2,7,130,5,6,2
3010     .BYTE 7,130,120,112,4,96
3020     .BYTE 132,106,118,5,6,2
3030     .BYTE 7,134,5,6,98,100
3040     .BYTE 5,6,2,7,135,5
3050     .BYTE 6,98,100,7,5,6
3060     .BYTE 5,7,130,98,100,4
3070     .BYTE 7,130,98,100,8,7
3080     .BYTE 130,120,112,8,96,130
3090     .BYTE 108,110,8,96,130,106
3100     .BYTE 118,4,7,130,98,100
3110     .BYTE 5,7,130,5,6,3
3120     .BYTE 7,130,120,112,6,96
3130     .BYTE 130,106,118,5,7,130
3140     .BYTE 5,6,7,7,134,98
3150     .BYTE 100,14,15,98,100,4
3160     .BYTE 0,130,98,100,4,7
3170     .BYTE 130,5,6,10,7,130
3180     .BYTE 5,6,2,7,130,98
3190     .BYTE 100,2,7,130,5,6
3200     .BYTE 2,7,130,120,112,8
3210     .BYTE 96,130,106,112,4,96
3220     .BYTE 130,102,100,4,7,130
3230     .BYTE 5,6,3,7,130,5
3240     .BYTE 6,2,7,130,5,6
3250     .BYTE 3,7,130,98,100,2
3260     .BYTE 7,130,5,6,3,7
3270     .BYTE 130,5,6,5,7,130
3280     .BYTE 98,104,4,96,130,108
3290     .BYTE 116,11,7,130,5,6
3300     .BYTE 14,7,131,13,98,100
3310     .BYTE 2,7,130,98,100,4
3320     .BYTE 0,130,98,100,6,7
3330     .BYTE 130,114,110,6,96,132
3340     .BYTE 1,2,3,4,2,7
3350     .BYTE 130,98,100,9,7,130
3360     .BYTE 5,6,11,7,130,98
3370     .BYTE 100,6,7,130,5,6
3380     .BYTE 10,7,130,98,100,4
3390     .BYTE 7,130,5,6,8,7
3400     .BYTE 130,98,100,2,7,132
3410     .BYTE 3,4,98,100,2,7
3420     .BYTE 130,8,18,24,96,130
3430     .BYTE 106,118,2,7,130,98
3440     .BYTE 100,4,0,130,98,100
3450     .BYTE 3,7,133,5,6,7
3460     .BYTE 98,100,12,7,130,98
3470     .BYTE 100,13,7,130,14,15
3480     .BYTE 7,7,130,98,100,9
3490     .BYTE 7,130,5,6,2,7
3500     .BYTE 130,5,6,3,7,130
3510     .BYTE 98,100,7,7,130,5
3520     .BYTE 6,5,7,130,98,100
3530     .BYTE 5,7,130,14,15,23
3540     .BYTE 7,132,1,2,3,4
3550     .BYTE 4,7,130,98,100,4
3560     .BYTE 0,132,1,2,3,4
3570     .BYTE 4,7,130,120,112,12
3580     .BYTE 96,130,106,112,12,96
3590     .BYTE 130,27,28,8,96,130
3600     .BYTE 106,112,18,96,132,106
3610     .BYTE 118,14,15,2,7,134
3620     .BYTE 1,2,3,4,3,4
3630     .BYTE 4,96,130,106,112,38
3640     .BYTE 96,130,106,118


LISTING 5: ASSEMBLY

0100 ; SAVE#D:SNOW.PT4
0110 ;
0120 ;-------------------------
0130 ;Intro Screen for SNOWPLOW
0140 ;
0150 ;by: Bryan Schappel
0160 ;
0170 ;-------------------------
0180 ;
0190 CLS .BYTE $92,$0A,$00,$42,$00
0200 WEATHER .SBYTE "national weat"
0210     .SBYTE "her service bulle"
0220     .SBYTE "tin        snow w"
0230     .SBYTE "arning"
0240 ;
0250 STARTI LDY #0   ;turn off vbi
0260     STY VFLG
0270     STY ICEON   ;storm off
0280     JSR SNDOFF
0290     LDX IFLAG   ;falling
0300     BNE INTRO   ;letters?
0310     LDA #8
0320     STA CONSOL
0330     LDA #90     ;scroll len
0340     STA SLENGTH
0350 CP1 LDA SET+$0200,Y ;copy chrset
0360     STA SET2,Y  ;Out
0370     LDA #0
0380     STA SET+$0200,Y
0390     STA SCRLMEM,Y
0400     INY
0410     BNE CP1
0420 ;
0430 INTRO LDX #5    ;copy high score
0440 TSLP LDA SCRS,X ;to intro
0450     STA TOPSCORE+12,X ;screen
0460     DEX
0470     BPL TSLP
0480     LDK #7
0490     LDA #0      ;players off
0500 WWLP STA HPOSP0,X
0510     DEX
0520     BPL WWLP
0530 ;
0540     TAY         ;set up scroll
0550 CWLP STA SCRLMEM,Y ;message
0560     DEY
0570     BNE CWLP
0580     LDY #53
0590 WCP LDA WEATHER,Y
0600     STA SCRLMEM+22,Y
0610     DEY
0620     BPL WCP
0630 ;
0640     LDY #4      ;put in colors
0650 GCL LDA CLS,Y
0660     STA COLOR0,Y
0670     DEY
0680     BPL GCL
0690 ;
0700     LDA #0      ;ptrs for chset
0710     STA IND2    ;move
0720     STA INDR
0730     STA COLOR2
0740     LDA # >SET2
0750     STA INDR+1
0760     LDA # >[SET+$0200]
0770     STA IND2+1
0780     LDA # <IDLST ;intro dlist
0790     STA SDLSTL
0800     LDA # >IDLST
0810     STA SDLSTL+1
0820 ;
0830     LDA IFLAG    ;first time?
0840     BNE SKIPSHOW ;for snow
0850     INC IFLAG    ;letters?
0860     JSR GETRAND
0870     LDA #15
0880     STA IIY3
0890 LPI LDA #15
0900     STA ICNT
0910 LOOP LDY ICNT
0920     LDA RANDS,Y
0930     TAY
0940     LDA TAB16,Y
0950     STA INDR
0960     STA IND2
0970     LDY IIY3
0980     LDA (INDR),Y
0990     JSR MOVEDN
1000     BCS SKIPSHOW
1010     DEC ICNT
1020     BPL LOOP
1030     DEC IIY3
1040     BPL LP1
1050 ;
1060 SKIPSNOW LDY #0
1070     STY LMS
1080 SK1 LDA SET2,Y
1090     STA SET+$0200,Y
1100     INY
1110     BNE SK1
1120 ;
1130 ;Scroll Weather Message
1140 ;
1150 ISCRL LDX #7
1160 ISC STX HSCROL
1170     LDA #0
1180     STA RTCLOK
1190 WT1 LDA CONSOL
1200     BEQ SKPPER
1210     CMP #6
1220     BEQ GSTART
1230     LDA RTCLOK
1240     BEQ WT1
1250     DEX
1260     BPL ISC
1270     LDY LMS
1280     INY
1290     CPY SLENGTH
1300     BNE ISK
1310     LDY #0
1320 ISK STY LMS
1330     JMP ISCRL
1340 ;
1350 GSTART LDA #0
1360     STA DIRF
1370 GST STA LMS
1380     STA HSCROL
1390     RTS
1400 ;
1410 SKPPER LDA #1
1420     STA DIRF
1430     LDA #0
1440     BEQ GST
1450 ;
1460 ;Move byte down
1470 ;
1480 MOVEDN STY IISY
1490     CMP #0
1500     BEQ MRTS
1510     LDY #0
1520 MLP STA (IND2),Y
1530     CPY IISY
1540     BEQ MRTS
1550     LDX #0
1560     STX RTCLOK
1570 WL  LDX CH
1580     CPX #$FF
1590     BNE BRTS
1600     LDX RTCLOK
1610     BEQ WL
1620     PHA
1630     LDA #0
1640     STA (IND2),Y
1650     PLA
1660     INY
1670     BNE MLP
1680 MRTS LDY IISY
1690     CLC
1700     RTS
1710 BRTS LDX #$FF
1720     STX CH
1730     SEC
1740     RTS
1750 ;
1760 ;Get 16 Random Numbers
1770 ;
1780 GETRAND LDA #1
1790     STA RAND
1800     LDA RANDOM
1810     AND #$0F
1820     STA RANDS
1830 RLOOP LDA RANDOM
1840     AND #$0F
1850     LDY #0
1860 RSRCH CMP RANDS,Y
1870     BEQ RLOOP
1880     INY
1890     CPY RAND
1900     BNE RSRCH
1910     STA RANDS,Y
1920     INY
1930     STY RAND
1940     CPY #16
1950     BNE RLOOP
1960     RTS
1970 ;
1980 TA816 BYTE 8,16,32,48
1990     .BYTE 64,80,96,112
2000     .BYTE 128,144,160,176
2010     .BYTE 192,208,224,240
2020 ;
2030 STAR =  *
2840     *=  $7808
2850 ;
2060 SNOWMEM SBYTE "             "
2070     .BYTE "@BDFHJLNPRTVXZ\^"
2080     .SBYTE "            "
2090     .SBYTE "            "
2100     .BYTE "ACEGIKMOQSUWY[]_"
2110     .SBYTE "            "
2120     .SBYTE "   BY: BARRY KOL"
2130     .SBYTE "BE AND BRYAN SCH"
2140     .SBYTE "APPEL   "
2150     .SBYTE "     COPYRIGHT 1"
2160     .SBYTE "988 BBK ENTERPRI"
2170     .SBYTE "SES     "
2180 ;
2190 TOPSCORE .SBYTE "  top score "
2200     .SBYTE "000000  "
2210     *=  STAR


LISTING 6: ASSEMBLY

0100 ;__________________________
0110 ;
0120 ;SNOWPLOW Character Set
0130 ;
0140 ;by: Barry Kolbe (graphics)
0150 ;and Bryan Schappel (text)
0160 ;
0170 ;__________________________
0180 ;
0190     .BYTE $00,$00,$00,$00
0200     .BYTE $00,$00,$00,$00
0210     .BYTE $EC,$E2,$CA,$2A
0220     .BYTE $A2,$A2,$AA,$AA
0230     .BYTE $3F,$8F,$A3,$A8
0240     .BYTE $0A,$0A,$0A,$0A
0250     .BYTE $FF,$FF,$00,$AA
0260     .BYTE $80,$80,$80,$80
0270     .BYTE $FF,$FF,$00,$AA
0280     .BYTE $0A,$0A,$0A,$0A
0290     .BYTE $FD,$F5,$D5,$D5
0300     .BYTE $D5,$F5,$FE,$FE
0310     .BYTE $7F,$5F,$57,$57
0320     .BYTE $57,$5F,$BF,$BF
0330     .BYTE $FF,$FF,$FF,$FF
0340     .BYTE $FF,$FF,$FF,$FF
0350     .BYTE $FA,$EA,$A0,$A2
0360     .BYTE $A0,$A2,$E2,$FA
0370     .BYTE $FA,$EA,$AA,$AA
0380     .BYTE $AA,$AA,$EA,$FA
0390     .BYTE $BF,$AF,$BB,$AB
0400     .BYTE $0B,$AB,$AF,$BF
0410     .BYTE $BF,$AF,$AB,$AB
0420     .BYTE $AB,$AB,$AF,$BF
0430     .BYTE $00,$00,$00,$00
0440     .BYTE $00,$18,$18,$30
0450     .BYTE $FF,$FF,$FF,$FB
0460     .BYTE $EA,$FB,$EA,$FF
0470     .BYTE $FE,$EA,$EF,$EA
0488     .BYTE $FE,$FE,$FE,$FE
0490     .BYTE $BF,$AB,$FB,$AB
0500     .BYTE $BF,$BF,$BF,$BF
0510     .BYTE $7F,$63,$63,$63
0520     .BYTE $63,$63,$7F,$00
0530     .BYTE $38,$18,$18,$18
0540     .BYTE $3C,$3C,$3C,$00
0550     .BYTE $7F,$63,$03,$7F
0560     .BYTE $60,$60,$7F,$00
0570     .BYTE $7E,$06,$06,$7F
0580     .BYTE $07,$07,$7F,$00
0590     .BYTE $70,$70,$70,$77
0600     .BYTE $77,$7F,$07,$00
0610     .BYTE $7F,$60,$60,$7F
0620     .BYTE $07,$07,$7F,$00
0630     .BYTE $7C,$6C,$60,$7F
0640     .BYTE $63,$63,$7F,$00
0650     .BYTE $7F,$03,$03,$1F
0660     .BYTE $18,$18,$18,$00
0670     .BYTE $3E,$36,$36,$7F
0680     .BYTE $77,$77,$7F,$00
0690     .BYTE $7F,$63,$63,$7F
0700     .BYTE $07,$07,$07,$00
0710     .BYTE $00,$00,$18,$18
0720     .BYTE $00,$18,$18,$00
0730     .BYTE $FF,$FF,$FE,$F8
0740     .BYTE $AA,$AA,$CF,$FF
0750     .BYTE $FF,$FF,$AF,$AB
0760     .BYTE $AA,$AA,$F3,$FF
0770     .BYTE $00,$00,$01,$04
0780     .BYTE $55,$55,$30,$00
0790     .BYTE $00,$00,$50,$54
0800     .BYTE $55,$55,$0C,$00
0810     .BYTE $00,$3C,$66,$0C
0820     .BYTE $18,$00,$18,$00
0830     .BYTE $00,$3C,$66,$6E
0840     .BYTE $6E,$60,$3E,$00
0850     .BYTE $00,$00,$3F,$03
8860     .BYTE $7F,$67,$7F,$00
0870     .BYTE $00,$60,$60,$7F
8880     .BYTE $73,$73,$7F,$00
0890     .BYTE $00,$00,$7F,$60
0900     .BYTE $60,$60,$7F,$00
8910     .BYTE $00,$03,$03,$7F
0920     .BYTE $63,$63,$7F,$00
0930     .BYTE $00,$00,$7F,$63
0940     .BYTE $7F,$70,$7F,$00
0950     .BYTE $00,$1E,$18,$7E
0960     .BYTE $18,$38,$38,$00
0970     .BYTE $00,$00,$7F,$63
0980     .BYTE $63,$7F,$07,$7F
0990     .BYTE $00,$60,$60,$7F
1000     .BYTE $73,$73,$73,$00
1010     .BYTE $00,$0C,$00,$0C
1020     .BYTE $0C,$1C,$1C,$00
1030     .BYTE $00,$0C,$00,$0C
1040     .BYTE $0C,$0E,$0E,$7E
1050     .BYTE $00,$30,$30,$76
1060     .BYTE $7C,$76,$73,$00
1070     .BYTE $00,$18,$18,$18
1080     .BYTE $38,$38,$38,$00
1090     .BYTE $00,$00,$66,$7F
1100     .BYTE $7F,$6B,$63,$00
1110     .BYTE $00,$00,$3F,$33
1120     .BYTE $73,$73,$73,$00
1130     .BYTE $00,$00,$3F,$33
1140     .BYTE $73,$73,$7F,$00
1150     .BYTE $00,$00,$3F,$33
1160     .BYTE $73,$7F,$70,$70
1170     .BYTE $00,$00 $7F,$63
1180     .BYTE $63,$7F,$07,$07
1190     .BYTE $00,$00,$3F,$33
1200     .BYTE $70,$70,$70,$00
1210     .BYTE $00,$00,$7F,$60
1220     .BYTE $7F,$07,$7F,$00
1230     .BYTE $00,$0C,$7F,$0C
1240     .BYTE $1C,$1C,$1C,$00
1250     .BYTE $00,$00,$33,$33
1260     .BYTE $73,$73,$7F,$00
1270     .BYTE $00,$00,$63,$63
1280     .BYTE $63,$36,$1C,$00
1290     .BYTE $00,$00,$63,$6B
1300     .BYTE $7F,$3E,$36,$00
1310     .BYTE $00,$00,$66,$3C
1320     .BYTE $18,$3C,$66,$00
1330     .BYTE $00,$00,$33,$33
1340     .BYTE $73,$7F,$03,$0F
1350     .BYTE $00,$00,$7E,$0C
1360     .BYTE $18,$30,$7E,$00
1370     .BYTE $00,$1E,$18,$18
1380     .BYTE $18,$18,$1E,$00
1390     .BYTE $00,$40,$60,$30
1400     .BYTE $18,$0C,$06,$00
1410     .BYTE $00,$78,$18,$18
1420     .BYTE $18,$18,$78,$00
1430     .BYTE $00,$08,$1C,$35
1440     .BYTE $63,$00,$00,$00
1450     .BYTE $00,$00,$00,$00
1460     .BYTE $00,$00,$FF,$00
1470     .BYTE $00,$00,$07,$0F
1480     .BYTE $1C,$1C,$1C,$1F
1490     .BYTE $0F,$00,$00,$00
1500     .BYTE $18,$1F,$1F,$00
1510     .BYTE $00,$00,$FC,$FC
1520     .BYTE $0C,$00,$00,$FC
1530     .BYTE $FE,$0E,$0E,$0E
1540     .BYTE $1E,$FC,$F8,$00
1550     .BYTE $00,$00,$7C,$7C
1560     .BYTE $1E,$1E,$1F,$1F
1570     .BYTE $1F,$1D,$1C,$1C
1580     .BYTE $1C,$7C,$7C,$00
1590     .BYTE $00,$00,$3E,$3E
1600     .BYTE $38,$38,$38,$38
1610     .BYTE $B8,$F8,$F8,$78
1620     .BYTE $78,$3E,$3E,$00
1630     .BYTE $00,$00,$3F,$7F
1640     .BYTE $70,$70,$70,$70
1650     .BYTE $70,$70,$70,$70
1660     .BYTE $70,$7F,$3F,$00
1670     .BYTE $00,$00,$F8,$FC
1680     .BYTE $1C,$1C,$1C,$1C
1690     .BYTE $1C,$1C,$1C,$1C
1700     .BYTE $1C,$FC,$FB,$00
1710     .BYTE $00,$00,$7C,$7C
1720     .BYTE $1C,$1C,$1C,$1D
1730     .BYTE $1D,$1D,$1D,$1F
1740     .BYTE $1F,$7E,$7C,$00
1750     .BYTE $00,$00,$3E,$3E
1760     .BYTE $38,$38,$38,$B8
1770     .BYTE $B8,$B8,$B8,$F8
1780     .BYTE $F8,$7E,$3E,$00
1790     .BYTE $00,$00,$7F,$7F
1800     .BYTE $1C,$1C,$1C,$1C
1810     .BYTE $1F,$1F,$1C,$1C
1820     .BYTE $1C,$7F,$7F,$00
1830     .BYTE $00,$00,$F0,$F8
1840     .BYTE $1C,$1C,$1C,$1C
1850     .BYTE $F8,$F0,$00,$00
1860     .BYTE $00,$00,$00,$00
1870     .BYTE $00,$00,$7F,$7F
1880     .BYTE $1C,$1C,$1C,$1C
1890     .BYTE $1C,$1C,$1C,$1C
1900     .BYTE $1C,$7F,$7F,$00
1910     .BYTE $00,$00,$00,$00
1920     .BYTE $00,$00,$00,$00
1930     .BYTE $00,$00,$00,$1C
1940     .BYTE $1C,$FC,$FC,$00
1950     .BYTE $00,$00,$3F,$7F
1960     .BYTE $70,$70,$70,$70
1970     .BYTE $70,$70,$70,$70
1980     .BYTE $70,$7F,$3F,$00
1990     .BYTE $00,$00,$F8,$FC
2000     .BYTE $1C,$1C,$1C,$1C
2010     .BYTE $1C,$1C,$1C,$1C
2020     .BYTE $1C,$FC,$FB,$00
2030     .BYTE $00,$00,$7C,$7C
2040     .BYTE $1C,$1C,$1C,$1D
2050     .BYTE $1D,$1D,$1D,$1F
2060     .BYTE $1F,$7E,$7C,$00
2070     .BYTE $00,$00,$3E,$3E
2080     .BYTE $38,$38,$38,$B8
2090     .BYTE $B8,$B8,$B8,$F8
2100     .BYTE $F8,$7E,$3E,$00
2110     .BYTE $FF,$FF,$FF,$D7
2120     .BYTE $FF,$FF,$FF,$FF
2130     .BYTE $00,$00,$00,$14
2140     .BYTE $00,$00,$00,$00
2150     .BYTE $FF,$FD,$FF,$FD
2160     .BYTE $FF,$FD,$FF,$FD
2170     .BYTE $00,$01,$00,$01
2180     .BYTE $00,$01,$00,$01
2190     .BYTE $FF,$7F,$FF,$7F
2200     .BYTE $FF,$7F,$FF,$7F
2210     .BYTE $00,$40,$00,$40
2220     .BYTE $00,$40,$00,$40
2230     .BYTE $FF,$FD,$FF,$5D
2240     .BYTE $FF,$FD,$FF,$FD
2250     .BYTE $00,$01,$00,$51
2260     .BYTE $00,$01,$00,$01
2270     .BYTE $FF,$7F,$FF,$75
2280     .BYTE $FF,$7F,$FF,$7F
2290     .BYTE $00,$40,$00,$45
2300     .BYTE $00,$40,$00,$40
2310     .BYTE $FF,$FD,$FF,$5D
2320     .BYTE $FF,$FF,$FF,$FF
2330     .BYTE $00,$01,$00,$51
2340     .BYTE $00,$00,$00,$00
2350     .BYTE $FF,$FF,$FF,$5D
2360     .BYTE $FF,$FD,$FF,$FD
2370     .BYTE $00,$00,$00,$51
2380     .BYTE $00,$01,$00,$01
2390     .BYTE $FF,$FF,$FF,$75
2400     .BYTE $FF,$7F,$FF,$7F
2410     .BYTE $00,$00,$00,$45
2420     .BYTE $00,$40,$00,$40
2430     .BYTE $FF,$7F,$FF,$75
2440     .BYTE $FF,$FF,$FF,$FF
2450     .BYTE $00,$40,$00,$45
2460     .BYTE $00,$00,$00,$00
2470     .BYTE $FF,$FF,$FF,$FD
2480     .BYTE $FF,$FD,$FF,$FD
2490     .BYTE $00,$00,$00,$01
2500     .BYTE $00,$01,$00,$01
2510     .BYTE $FF,$FF,$FF,$7F
2520     .BYTE $FF,$7F,$FF,$7F
2530     .BYTE $00,$00,$00,$40
2540     .BYTE $00,$40,$00,$40
2550     .BYTE $FF,$7F,$FF,$7F
2560     .BYTE $FF,$FF,$FF,$FF
2570     .BYTE $00,$40,$00,$40
2580     .BYTE $00,$00,$00,$00
2590     .BYTE $FF,$FD,$FF,$FD
2600     .BYTE $FF,$FF,$FF,$FF
2610     .BYTE $00,$01,$00,$01
2620     .BYTE $00,$00,$00,$00
2630     .BYTE $FF,$EF,$FF,$55
2640     .BYTE $FF,$FF,$FF,$FF
2650     .BYTE $00,$00,$00,$55
2660     .BYTE $00,$00,$00,$00
2670     .BYTE $18,$18,$18,$18
2680     .BYTE $18,$18,$18,$18
2690     .BYTE $00,$7E,$78,$7C
2700     .BYTE $6E,$66,$06,$00
2710     .BYTE $08,$18,$38,$78
2720     .BYTE $38 $18,$08,$00
2730     .BYTE $10,$18,$1C,$1E
2740     .BYTE $1C,$18,$10,$00