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!
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