A.N.A.L.O.G. ISSUE 64 / JULY 1988 / PAGE 16
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.
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. Remember the Knight-Rider and KIT?
Me neither. But KIT had turbo boost. And can jump to the edge of the screen (assuming 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!
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 ⅓ of the entire program. In Snowplow we have an entire screen, but it takes only ⅙th 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 those 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. Next 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….
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,102,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,0,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,206,169,136,9691 2190 DATA 133,205,96,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,136,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,208,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,200,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, 200,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,70,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,206,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,30,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,100,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,100,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 130,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,120,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 100,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,100,2,7,130,5,6,6,7,130,9 8,100,6,7,130,98,3607 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,120,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,130,5,6,3, 7,130,98,100,2267 5290 DATA 2,7,130,5,6,3,7,130,5,6,5,7, 130,98,104,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,224,2,7544 5440 DATA 227,2,0,64,0,0,0,0,0,0,0,0,0 ,0,0,0,5927
;SAVE#D:SNOWA.PT1 ;------------------- ; part 1 of the game ; ; by: Barry Kolbe ; ;------------------- .OPT NOLIST ; ;page zero variables ; DRY = $82 PXP = $83 ;2byter PYP = $85 ; " ADD = $87 HMV = $88 CURCHR = $89 VERT = $8A EADD = $8B EHOLD = $8C EYX = $8D EYY = $8E ICY = $8F ICX = $90 VTIME = $91 VFLG = $92 XSP = $93 YSP = $94 RAND = $95 ICNT = $96 DATA = $97 UNIQUE = $98 FTIME = $99 ;7 bytes CARTIM = $A0 ;6 bytes RMTIM = $A6 ;6 bytes ROADC = $AC ;2 bytes ROADG = $AE ; " CNT = $B0 SHD = $B1 MAPFLG = $B2 FUEL = $B3 ;3 bytes LIVES = $B6 DIRF = $B7 DIRECT = $B8 CARCNT = $B9 ICEON = $BA Y1 = $BB Y2 = $BC ICEDIR = $BD IDECNT = $BE LEVEL = $BF FULK = $C0 ICTL = $C1 ICTH = $C2 ICESPEED = $C3 THOUS = $C4 SPSND = $C5 IFLAG = $C6 IISY = $C7 IIY3 = $C8 COUNT = $C9 ;these are IL = $CB TL = $CB ;all JL = $CD BFL = $CD INDR = $CB ;2 bytes IND2 = $CD FOFS = $CF YH = $D0 XD1 = $D1 XH = $D2 ICECNT = $D3 SCRS = $D4 ;6 bytes FULX = $DA ;6 bytes FULY = $E0 ;6 bytes CARX = $E6 ;4 bytes CARY = $EA ;4 bytes OFFSCN = $EE ;2 bytes SLENGTH = $F0 EDM = $F1 ;2 SXP = $F3 SYP = $F4 ; ;OS equates ; CIOV = $E456 ICCOM = $0342 ICBAL = $0344 ICBAH = $0345 ICBLL = $0348 ICBLH = $0349 AUX1 = $034A AUX2 = $034B SETVBV = $E45C XITVBV = $E462 RANDOM = $D20A RTCLOK = $14 CONSOL = $D01F EOL = $9B SEOL = $BB PCHR = 54 ; COLOR0 = $02C4 COLOR1 = $02C5 COLOR2 = $02C6 COLOR3 = $02C7 COLOR4 = $02C8 SDLSTL = $0230 CH = $02FC ; STICK = $0278 STRIG = $0284 HPOSP0 = $D000 HPOSM0 = $D004 HSCROL = $D404 VSCROL = $D405 HITCLR = $D01E P0PL = $D00C P1PL = $D00D ; ;memory usage ; SCNMEM = $9000 PMB = $8000 SET = $8C00 MYPMB = $8400 MSMEM = PMB+$0300 P0MEM = MYPMB P1MEM = MYPMB+$0100 P2MEM = MYPMB+$0200 P3MEM = MYPMB+$0300 CHSET = $8C00 GOVER = $9B00 TXTWIN = $8B00 SCLN = TXTWIN+20 CHRLN1 = TXTWIN+40 SC2 = SCNMEM+128 SC3 = SC2+128 SC4 = SC3+128 SC5 = SC4+128 SC6 = SC5+128 SC7 = SC6+128 SC8 = SC7+128 SC9 = SC8+128 SC10 = SC9+128 SC11 = SC10+128 BCKUP = $7FC0 SET2 = $7D00 SCRLMEM = $7C00 ;credits @ $7b00 ; ;display list interrupt ; *= PMB DLI PHA DIC LDA #2 STA $D40A STA $D01A PLA RTI ; ;character set ; *= $8C00 .INCLUDE #D:SNOW.PT5 ; *= TXTWIN .SBYTE " FUEL 150 PLOWS " .SBYTE "3 SCORE " .SBYTE "000000 " ; *= GOVER .SBYTE " SNOWFLAKES " .SBYTE "WIN press " .SBYTE "START " ; ;display lists ;intro first ;then game board ; *= $7F00 IDLST .BYTE $70,$70,$70,$70 .BYTE $70,$70,$70,$42 .WORD SNOWMEM .BYTE $02,$70,$70,$70,$02 .BYTE $02,$70,$70,$70,$70 .BYTE $57 LMS .WORD SCRLMEM .BYTE $70,$70,$70,$70,$46 .WORD TOPSCORE .BYTE $41 .WORD IDLST ; *= $7F80 DL1 .BYTE $70,$70,$70 .BYTE $42 .WORD SNOWMEM .BYTE 2 .BYTE $75 SL1 .WORD SCNMEM .BYTE $75 .WORD SC2 .BYTE $75 .WORD SC3 .BYTE $75 .WORD SC4 .BYTE $75 .WORD SC5 .BYTE $75 .WORD SC6 .BYTE $75 .WORD SC7 .BYTE $75 .WORD SC8 .BYTE $75 .WORD SC9 .BYTE $75 .WORD SC10 .BYTE $D5 .WORD SC11 .BYTE $46 TMESS .WORD TXTWIN .BYTE 6,$41 .WORD DL1 ; ;start of program ; *= $4000 ; ;save the display list ;for next levels ; BEGIN LDY #50 MDL LDA DL1,Y STA BCKUP,Y DEY BPL MDL LDA #>CHSET ;new chrset STA 756 JSR SETPMG ;player init ; LDX #>VBLNK ;set vbi LDY #<VBLNK LDA #7 JSR SETVBV LDA #0 STA IFLAG ;intro flag ; ;begin new level ; NEWBEG LDA #0 STA DIRF STA MAPFLG JSR GETDIR JMP NEWB NDIRC JSR CLOSE6 ; NEWB JSR INIT JSR REPLAY LDA #3 STA LIVES LDA #0 STA ICEON JSR SHOLIV NLEVL JSR STARTI JSR FIGLEV JSR RESFUL JSR DSPFUL JSR REPLAY JSR CLRPM LDA DIRF BNE DROK MAP2 LDA MAPFLG ;intern map BNE DROK LDA #1 STA MAPFLG JSR UNCOM JMP SKP DROK JSR GETFIL JSR LOADMP SKP JSR FNDFUL JSR FNDCRS JSR CNTRDS JSR COPYDL JSR SETSCN LDA #$0B STA DIRECT JSR DEFPLR LDA #1 STA VFLG ; ;main loop ; MAIN LDA CONSOL CMP #6 BNE MN2 JMP STKEY MN2 LDA STICK STA DIRECT JSR DEFPLR STA HITCLR JSR MOVPLR JSR REMOVE LDA 644 BNE NTRG JSR JMPEDG NTRG JSR ICESND LDA P0PL CMP #12 BCS OUCH LDA P1PL CMP #12 BCS OUCH LDA ROADG+1 CMP ROADC+1 BNE KL LDA ROADG CMP ROADC BNE KL JSR WAITSM JMP NLEVL KL LDA FUEL ORA FUEL+1 ORA FUEL+2 BNE KK OUCH STA HITCLR JSR REMP23 JSR SPIN JSR GRESET STA HITCLR JSR DELAY JMP KK OOPS JMP GAMOVR KK LDA LIVES BEQ OOPS LDA CH CMP #$FF BEQ NOPAUS JSR PAUSE NOPAUS JMP MAIN ; ;set pmg ; SETPMG LDA #62 STA 559 LDA #17 ;5th enable STA 623 LDA #3 STA 53277 LDA #>PMB STA 54279 LDA #$28 ;yellow STA 704 LDA #6 ;black STA 705 LDA #$A6 STA 706 STA 707 LDA #$80 STA PXP LDA #$70 STA PYP LDA #1 STA 53258 STA 53259 RTS ; ;clear pm area ; CLRPM LDY #$FF LDA #0 CPM STA P0MEM,Y STA P1MEM,Y STA P2MEM,Y STA P3MEM,Y STA MSMEM,Y DEY CPY #$FF BNE CPM RTS ; ;define plrs ; DEFPLR LDX #3 LDA DIRECT DF1 CMP DIRTAB,X BEQ DFOK DEX BPL DF1 RTS DFOK LDA PD0L,X STA JL LDA PD0H,X STA JL+1 LDA PD1L,X STA IL LDA PD1H,X STA IL+1 TXA PHA LDA PYP STA Y1 CLC ADC YTB,X STA PYP+1 STA Y2 TAY LDA #0 STA P1MEM-1,Y LDY #0 DFP LDA (JL),Y LDX Y1 STA P0MEM,X LDA (IL),Y LDX Y2 STA P1MEM,X INY INC Y1 INC Y2 CPY #16 BNE DFP LDX Y2 STA P1MEM,X LDX PXP STX HPOSP0 PLA TAX LDA PXP CLC ADC XTB,X STA PXP+1 STA HPOSP0+1 RTS ; DIRTAB .BYTE 11,7,14,13 XTB .BYTE $FF,$01,$00,$00 YTB .BYTE $00,$00,$FF,$01 ; ;player definitions & tables ; PD0L .BYTE <P0D1,<P0D2,<P0D3,<P0D4 PD0H .BYTE >P0D1,>P0D2,>P0D3,>P0D4 PD1L .BYTE <P1D1,<P1D2,<P1D3,<P1D4 PD1H .BYTE >P1D1,>P1D2,>P1D3,>P1D4 P0D1 .BYTE $00,$00,$00,$FF .BYTE $FF,$76,$76,$76 .BYTE $76,$76,$76,$FF .BYTE $FF,$00,$00,$00 P0D2 .BYTE $00,$00,$00,$FF .BYTE $FF,$6E,$6E,$6E .BYTE $6E,$6E,$6E,$FF .BYTE $FF,$00,$00,$00 P0D3 .BYTE $00,$66,$66,$7E .BYTE $7E,$7E,$7E,$7E .BYTE $7E,$66,$66,$66 .BYTE $7E,$7E,$66,$00 P0D4 .BYTE $00,$66,$7E,$7E .BYTE $66,$66,$66,$7E .BYTE $7E,$7E,$7E,$7E .BYTE $7E,$66,$66,0 ; P1D1 .BYTE $00,$AA,$AA,$80 .BYTE $80,$84,$84,$84 .BYTE $84,$84,$84,$80 .BYTE $80,$AA,$AA,$00 P1D2 .BYTE $00,$FD,$FD,$01 .BYTE $01,$61,$61,$61 .BYTE $61,$61,$61,$01 .BYTE $01,$FD,$FD,$00 P1D3 .BYTE 0,$FF,$FF,$00 .BYTE $99,$99,$18,$18 .BYTE $99,$99,$18,$18 .BYTE $99,$99,$00,$00 P1D4 .BYTE $00,$00,$81,$99 .BYTE $18,$18,$99,$99 .BYTE $18,$18,$99,$99 .BYTE $00,$FF,$FF,$00 ; ;delay ; LDL LDY #19 BNE DLN DELAY LDY #7 DLN JSR WAIT DEY BNE DLN RTS ; ;initialize ; ;set up 128 table INIT LDY #0 LDA #<SCNMEM STA M128L LDA #>SCNMEM STA M128H TLP LDA M128L,Y CLC ADC #128 STA M128L+1,Y LDA M128H,Y ADC #0 STA M128H+1,Y INY CPY #33 BNE TLP ; LDX #7 ;score & fuel LDA #$10 ;IC $10 SCF STA SCRS,X DEX BPL SCF STA THOUS JSR RESFUL LDA #3 ;set lives STA LIVES LDA #$13 STA TXTWIN+16 LDA #$60 STA ICECNT LDA #$FF STA LEVEL RTS ; CLRTAB .BYTE $D8,$44,$0A,$46,$00 ; STSCRL LDA #>SL1 STA JL+1 LDA #<SL1 STA JL RTS ; ;get scn pos ; WHER LDY DRY WHERE LDA M128L,Y STA JL LDA M128H,Y STA JL+1 RTS ; ;shadow scrols ; SMX .BYTE 22 ;pos on scrn SMY .BYTE 4 ; ;move ; SCROLL LDA DIRECT ; MMR CMP #7 ;rt? BNE MML JSR LOOKR BCC RA1 RTS RA1 LDA SXP CMP #83 BCC HO RTS HO LDA #1 STA VERT JSR PLWSND KB LDA #1 STA ADD JSR CORSH INC SMX INC SXP LDX #3 KA STX HSCROL JSR WAIT JSR TRACKR DEX BPL KA DEC VERT LDA VERT BPL KB FULOUT JSR SFUEL JSR OFF2 JSR CKFTIM RTS ; MML CMP #11 BNE MUP JSR LOOKL BCC LA1 RTS LA1 LDA SXP BNE HQ RTS HQ LDA #1 STA VERT JSR PLWSND KD LDX #0 KC STX HSCROL JSR WAIT JSR TRACKL INX CPX #4 BNE KC LDA #$FF STA ADD LDX #0 STX HSCROL JSR CORSH DEC SXP DEC SMX DEC VERT LDA VERT BPL KD JMP FULOUT ; ;coarse h scrol ; CORSH LDY #0 CSA LDA SL1,Y CLC ADC ADD STA SL1,Y INY INY INY CPY #33 BNE CSA RTS ; ;up ; MUP CMP #14 BNE MDN JSR LOOKU BCC UA1 RTS UA1 LDA SYP BEQ NOM JSR PLWSND LDA #$FF STA ADD JSR CORSV DEC SYP DEC SMY LDX #15 U1 STX VSCROL JSR WAIT JSR TRACKU DEX BPL U1 LDA #0 STA VSCROL JMP FULOUT RTS ; ;down ; MDN CMP #13 BNE NOM JSR LOOKD BCC DA1 RTS DA1 LDA SYP CMP #9 BCC D1 RTS D1 JSR PLWSND LDX #0 D2 STX VSCROL JSR WAIT JSR TRACKU INX CPX #16 BNE D2 LDX #0 STX VSCROL LDA #1 STA ADD JSR CORSV INC SYP INC SMY JMP FULOUT NOM RTS ; ;coarse vrt scrl ; CORSV LDA ADD BMI CSV LDY #0 CVL LDA SL1,Y CLC ADC #$80 STA SL1,Y INY LDA SL1,Y ADC #0 STA SL1,Y INY INY CPY #33 BNE CVL RTS ; CSV LDY #0 CVP LDA SL1,Y SEC SBC #$80 STA SL1,Y INY LDA SL1,Y SBC #0 STA SL1,Y INY INY CPY #33 BNE CVP RTS ; ;wait a jiffy ; WAIT LDA #0 STA $14 WW2 LDA $14 BEQ WW2 RTS ; ;fine scrl plr ; MOVPLR LDA DIRECT CMP #7 BNE MLL LDA PXP CMP #$7C BCC GOR LDA SXP CMP #83 BCS GOR JMP MOUT GOR LDA PXP CMP #$C8 BCS MVRET JSR LOOKR BCC GOR1 RTS ;nope GOR1 JSR PLWSND LDY #7 RL1 INC PXP LDX PXP STX HPOSP0 INC PXP+1 LDX PXP+1 STX HPOSP0+1 JSR WAIT JSR TRACKR DEY BPL RL1 INC SMX INC SMX JMP FULOUT MOUT JSR SCROLL MVRET RTS ; MLL CMP #11 BNE MDD JSR LOOKL BCC GOL2 RTS GOL2 LDA PXP CMP #132 ;124+8 BCS GOL1 LDA SXP BNE MOUT GOL LDA PXP CMP #$30 BEQ MVRET BCC MVRET GOL1 JSR PLWSND LDY #7 LL1 DEC PXP LDX PXP STX HPOSP0 DEC PXP+1 LDX PXP+1 STX HPOSP0+1 JSR WAIT JSR TRACKL DEY BPL LL1 DEC SMX DEC SMX JMP FULOUT ; MDD CMP #13 BNE MUU JSR LOOKD BCC GD3 RTS GD3 LDA PYP CMP #$60 BCC GDN LDA SYP CMP #9 BCS GDN JMP MOUT GDN LDA PYP CMP #$C0 BCS MVRET LDA #15 STA VERT JSR PLWSND GD2 LDA PYP STA Y1 LDA PYP+1 STA Y2 TAY LDA #0 STA P1MEM,Y ;eras top LDX #15 GD1 LDY Y1 LDA P0MEM+15,Y STA P0MEM+16,Y LDY Y2 LDA P1MEM+15,Y CMP #$18 BNE FOA LDA #$99 BNE FOB FOA CMP #$99 BNE FOB LDA #$18 FOB STA P1MEM+16,Y DEC Y1 DEC Y2 DEX BPL GD1 INC PYP INC PYP+1 JSR WAIT DEC VERT LDA VERT BPL GD2 INC SMY JMP FULOUT ; ; MUU CMP #14 BEQ MU3 GU4 JMP MVRET MU3 JSR LOOKU BCC MU4 RTS MU4 LDA PYP CMP #$70 BCS GUU LDA SYP BEQ GUU JMP MOUT GUU LDA PYP CMP #$30 BNE GU5 JMP MOUT GU5 JSR PLWSND LDA #15 STA VERT GU2 LDY PYP LDX #15 GU1 LDA P0MEM,Y STA P0MEM-1,Y LDA P1MEM,Y CMP #$18 BNE FOC LDA #$99 BNE FOD FOC CMP #$99 BNE FOD LDA #$18 FOD STA P1MEM-1,Y INY DEX BPL GU1 JSR WAIT DEC PYP DEC VERT LDA VERT BPL GU2 DEC SMY JMP FULOUT ; ;locate :result in curchr ; LOOKR LDY SMY JSR WHERE LDY SMX INY INY LKRET LDA (JL),Y STA CURCHR JSR CKCHAR RTS ; LOOKL LDY SMY JSR WHERE LDY SMX DEY DEY JMP LKRET ; LOOKD LDY SMY INY JSR WHERE LDY SMX JMP LKRET ; LOOKU LDY SMY DEY JSR WHERE LDY SMX JMP LKRET ; ;erase chr beneath dozer ;repalce with next char. ;which is a road w/o snow ; REMOVE LDY SMY JSR WHERE LDY SMX LDA (JL),Y LDX #15 RB1 CMP ROADS,X BEQ SF5 DEX BPL RB1 JMP SF6 SF5 CMP #$1B ;cng car to road BEQ SF8 CMP #$1D BNE SF7 SF8 PHA ;save car LDA #$61 STA (JL),Y INY STA (JL),Y JSR BONSCR JSR HORN PLA CMP #$1B BEQ SFA BNE SF6 SF7 TAX INX TXA STA (JL),Y INY LDA (JL),Y TAX INX TXA STA (JL),Y CMP #$0B ; fuel? BEQ SF6 SFA INC ROADG BNE SH1 INC ROADG+1 ; SH1 JSR DOSCOR ;show score ; SF6 LDA CURCHR CMP #$08 ;fuel? BNE CAR? ; INC CURCHR ;empty fuel LDY SMY JSR WHERE LDX FOFS ;get pos. FFA LDA JL+1 CMP FULY,X BEQ FFB FFC DEX BPL FFA RTS ;shouldnt happen FFB LDA SMX ;put it on CLC ;screen ADC JL CMP FULX,X BNE FFC LDA #100 ;got it STA FTIME,X ;set timer JSR FILSND ;sound JSR RESFUL ;show it JSR DSPFUL SF2 RTS ; ;hit a car ; CAR? LDY SMY ;find out JSR WHERE ;which one LDX CARCNT BEQ SF2 CB1 LDA JL+1 CMP CARY,X BEQ CB2 CB3 DEX BPL CB1 RTS ;nope CB2 LDA JL CLC ADC SMX CMP CARX,X BNE CB3 LDA #50 ;set timer STA CARTIM,X RTS ; ;road,fuel,car chrs ; 8 = fuel $1b= car ; ROADS .BYTE $60,$62,$64,$66 .BYTE $68,$6A,$6C,$6E .BYTE $70,$72,$74,$76 .BYTE $78,$08,$1B,$1D .BYTE $61,$63,$65,$67,$69 .BYTE $6B,$6D,$6F,$71 .BYTE $73,$75,$77,$79 ; ;check if about to move ;onto a valid char. ; CKCHAR LDX #28 CK1 CMP ROADS,X BEQ CROK DEX BPL CK1 SEC ;no move RTS CROK CLC ;move ok RTS ; ;decrease fuel ; SFUEL DEC FUEL+2 LDA FUEL+2 ORA FUEL+1 ORA FUEL BEQ SF3 LDA FUEL+2 BPL SF3 LDA #9 STA FUEL+2 DEC FUEL+1 LDA FUEL+1 BPL SF3 LDA #9 STA FUEL+1 DEC FUEL SF3 JSR DSPFUL FRET RTS ; ;show fuel left ; DSPFUL LDX #2 DS LDA FUEL,X ORA #$10 STA TXTWIN+6,X DEX BPL DS RTS ; ;wait some ; WAITSM LDA #0 LDX #15 ;15 secs STA VFLG WSM JSR LDL DEX BPL WSM RTS ; ;pt2 is rest of game ;pt3 is the screen maker ;pt4 is the introduction ; .INCLUDE #D:SNOW.PT2 .INCLUDE #D:SNOW.PT4 .INCLUDE #D:SNOW.PT3 ; ;variables ; RANDS .DS 16 DBUF .DS 20 EDGFLG .BYTE 1 M128L .DS 36 M128H .DS 36 *= $02E0 .WORD BEGIN .END
;SAVE#D:SNOW.PT2 ;---------------- ; part 2 of game ; ; by:Barry Kolbe ; ;---------------- ; ;load a map from disk ; LOADMP LDX #$10 LDA #$0C STA ICCOM,X JSR CIOV LDX #$10 LDA #3 STA ICCOM,X LDA #>MAPNAM STA ICBAH,X LDA #<MAPNAM STA ICBAL,X LDA #4 STA AUX1,X LDA #0 STA AUX2,X JSR CIOV BPL RDOK RTS RDOK LDX #$10 LDA #>SCNMEM STA ICBAH,X LDA #<SCNMEM STA ICBAL,X LDA #0 LDA #10 ;10 pages STA ICBLH,X LDA #7 ;read it STA ICCOM,X JSR CIOV RTS ; MAPNAM .BYTE "D1:SMAP. ",EOL ; ;count all the roads ;each pair of road bytes ;counts as 1 point ; CNTRDS LDY #0 STY ROADC INC ROADC STY ROADC+1 STY CNT ;lines JSR WHERE CR4 LDY #0 CR1 LDA (JL),Y LDX #12 CR3 CMP ROADS,X ;is it road? BEQ CR2 DEX BPL CR3 CR6 INY ;skip over 2 INY CPY #0 BNE CR1 INC JL+1 INC CNT LDY CNT CPY #10 BNE CR4 RTS CR2 INC ROADC BNE CR5 INC ROADC+1 CR5 JMP CR6 ; ;copy the game dlist ;back for next board ; COPYDL LDY #50 CC1 LDA BCKUP,Y STA DL1,Y DEY BPL CC1 RTS ; ;reset fuel in text window ; RESFUL LDA #0 STA FUEL+2 LDA #1 STA FUEL LDA FULK STA FUEL+1 RTS ; ;find fuel containers ;in map-store their ;positions ; FNDFUL LDY #0 STY CNT STY FOFS SS4 LDY CNT CPY #19 ;20 lines BNE SS3 RTS SS3 JSR WHERE LDY #0 SS2 LDA (JL),Y CMP #8 ;fuel chr BEQ SS1 SS5 INY INY CPY #126 ;end of line? BNE SS2 INC CNT JMP SS4 ; SS1 LDX FOFS ;store x,y LDA JL+1 ;positions STA FULY,X TYA CLC ADC JL STA FULX,X INC FOFS LDA FOFS CMP #6 ;only 6 allowed BNE SS5 RTS ; ;check timers-fuel first ; CKFTIM LDX FOFS BEQ CCB ;no fuel FTC LDA FTIME,X BEQ FTB DEC FTIME,X LDA FTIME,X BNE FTB LDA FULY,X STA JL+1 LDA FULX,X STA JL LDY #0 LDA #8 STA (JL),Y INY LDA #$0A STA (JL),Y FTB DEX BPL FTC ; ;check bonus car timers ; CCB LDX CARCNT BNE CTC ;yes RTS ;no cars CTC LDA CARTIM,X BEQ CTD DEC CARTIM,X LDA CARTIM,X BNE CTD LDA CARY,X STA JL+1 LDA CARX,X STA JL LDY #0 ;put bonus LDA (JL),Y ;car on scn CMP #$60 ;snow bckgrnd? BNE CTF LDA #$1B ;yes STA (JL),Y INY LDA #$1C CTG STA (JL),Y LDA #$50 STA RMTIM,X JSR BELL CTD DEX BPL CTC ; ;timers to remove cars ; LDX CARCNT CTK LDA RMTIM,X BEQ RRA DEC RMTIM,X LDA RMTIM,X BNE RRA LDA CARY,X STA JL+1 LDA CARX,X STA JL LDY #0 LDA (JL),Y CMP #$1B BNE CTI LDA #$60 ;snow road CTM STA (JL),Y INY STA (JL),Y LDA #100 ;reset timer STA CARTIM,X RRA DEX BPL CTK RTS ; CTI LDA #$61 ;plain road BNE CTM RTS CTF LDA #$1D STA (JL),Y INY LDA #$1E BNE CTG ; ;find bonus cars on map ; FNDCRS LDY #0 STY CNT STY CARCNT FCA LDY CNT CPY #19 ;20 lines BNE FCE RTS FCE JSR WHERE LDY #0 FCC LDA (JL),Y CMP #$1B ;cars BEQ FCB FCD INY INY CPY #126 ;end of line? BNE FCC INC CNT JMP FCA FCB LDX CARCNT LDA JL+1 STA CARY,X TYA CLC ADC JL STA CARX,X TYA PHA LDA #$60 ;repl w/road STA (JL),Y INY STA (JL),Y PLA TAY INC CARCNT LDA CARCNT CMP #4 ;only 4 cars BNE FCD RTS ; ;show bonus & regular score ; BONSCR LDX #3 ;100 bonus BNE SCD ; DOSCOR LDX #4 ;reg. score SCD LDA SCRS,X CLC ADC #1 STA SCRS,X SCB CMP #$1A BCC SCE LDA #$10 STA SCRS,X DEX BMI SCE INC SCRS,X LDA SCRS,X JMP SCB SCE LDX #5 SCC LDA SCRS,X STA SCLN+9,X DEX BPL SCC LDA SCRS+1 CMP THOUS BEQ CRET STA THOUS INC LIVES JSR SHOLIV CRET RTS ; ;move the storm ; MOVICE LDA ICECNT ;time for BEQ NEWD ;new direction? DEC ICECNT ;no LDX ICEDIR ;get direction LDA ICETB,X STA IJMP+1 LDA ICETB+1,X STA IJMP+2 LDA #1 STA ICEON IJMP JSR $FFFF ;move it JMP XITVBV ; ;get a new direction ;and set flags ; NEWD LDA RANDOM AND #3 TAX ASL A STA ICEDIR LDA #$6B ;time on STA ICECNT ;screen LDA IYP,X ;starting STA ICY ;position LDA IXP,X STA ICX CLC ADC #$0C ;eyes STA EYX JSR PUTICE ;put definition JSR ZB3 ;in memory LDA ICTL ;time spent STA OFFSCN ;off screen LDA ICTH STA OFFSCN+1 LDA #0 ;off yet STA ICEON JMP XITVBV ; ;move table ; ICETB .WORD ZRU .WORD ZLD .WORD ZRD .WORD ZLU ; ;diagonal movement ; ZRU JSR ZIRT JSR ZIUP RTS ZLD JSR ZILF JSR ZIDN RTS ZRD JSR ZIRT JSR ZIDN RTS ZLU JSR ZILF JSR ZIUP RTS ; ;slide it up ; ZIUP LDY ICY LDX #31 ZIUA LDA P2MEM,Y STA P2MEM-1,Y LDA P3MEM,Y STA P3MEM-1,Y INY DEX BPL ZIUA DEC ICY LDA #0 LDY EYY STA MSMEM+1,Y LDA #$C3 STA MSMEM-1,Y DEC EYY RTS ; ;go down ; ZIDN LDA ICY CLC ADC #31 TAY LDX #31 ZIDA LDA P2MEM,Y STA P2MEM+1,Y LDA P3MEM,Y STA P3MEM+1,Y DEY DEX BPL ZIDA INC ICY LDA #0 LDY EYY STA MSMEM,Y LDA #$C3 STA MSMEM+2,Y INC EYY RTS ; IYP .BYTE $C0,$30,$30,$C0 IXP .BYTE $0A,$E0,$0A,$E0 ; ;move storm left ; ZILF DEC ICX DEC ICX DEC EYX DEC EYX ZB3 LDA ICX STA HPOSP0+2 CLC ADC #16 STA HPOSP0+3 LDA EYX STA HPOSM0 CLC ADC #6 STA HPOSM0+3 RTS ; ;move stormy right ; ZIRT INC ICX INC ICX INC EYX INC EYX LDA EYX JMP ZB3 ; ;put snow storm on screen ; PUTICE JSR CLR23 LDX #0 LDY ICY ICA LDA ICEDAT,X STA P2MEM,Y STA P2MEM+1,Y LDA ICDT2,X STA P3MEM,Y STA P3MEM+1,Y INY INY INX CPX #16 BNE ICA LDA ICY CLC ADC #$0C STA EYY LDY EYY LDA #$C3 STA MSMEM,Y STA MSMEM+1,Y RTS ; ;stormy's definition ; ICEDAT .BYTE $00,$04,$02,$32 .BYTE $0B,$07,$3D,$4F .BYTE $0C,$3D,$47,$0B .BYTE $12,$12,$01,$00 ICDT2 .BYTE $00,$80,$48,$48 .BYTE $D0,$E6,$BC,$F0 .BYTE $32,$BC,$E0,$D0 .BYTE $4C,$40,$20,$00 ; ;erase plyrs 2,3 & missiles ; CLR23 LDX #0 TXA C23 STA P3MEM,X STA P2MEM,X STA MSMEM,X INX BNE C23 RTS ; ;reset game due to ;lost lives ; GRESET DEC LIVES JSR SHOLIV JSR RESFUL JSR DSPFUL RTS ; ;show # of lives ; SHOLIV LDA LIVES CMP #10 BCC GRT LDA #9 STA LIVES GRT ORA #$10 STA TXTWIN+16 RTS ; ;let the storm exit stage ; REMP23 LDA #0 STA HPOSP0+2 STA HPOSP0+3 STA HPOSM0 STA HPOSM0+3 STA ICECNT LDA ICTL STA OFFSCN LDA ICTH STA OFFSCN+1 LDA #0 STA ICEON RTS ; ;game over-snow guys win ; GAMOVR LDA #>GOVER STA TMESS+1 LDA #<GOVER STA TMESS LDA #0 ;turn off vbi STA VFLG JSR SNDOFF GAM LDA CONSOL ;chk for START CMP #6 BNE GAM JMP NEWBEG ; ;initialize sound ; SNDOFF LDA #0 STA $D208 LDX #3 STX $D20F LDX #7 SNL STA $D200,X DEX BPL SNL RTS ; ;turn off individ. snds ; OFF1 LDA #0 STA $D200 STA $D201 RTS ; OFF2 LDA #0 STA $D203 STA $D202 RTS ; OFF34 LDA #0 STA $D204 STA $D205 STA $D206 STA $D207 RTS ; ;honk horn when dozer hits car ; HORN JSR SNDOFF LDX #1 ;twice! HN1 LDA #121 STA $D204 LDA #$A6 STA $D205 LDA #10 STA $D206 LDA #$24 STA $D207 JSR LDL JSR OFF34 JSR LDL DEX BPL HN1 RTS ; ;pause the game ; PAUSE LDX #$FF STX CH LDA #0 ;hold on vbi STA VFLG JSR WAIT PAUS LDA CH CMP #$FF BEQ PAUS STX CH LDA #1 STA VFLG RTS ; ;the vbi ; VBLNK LDA VFLG ;running? BNE VBC ;yes VBA JMP XITVBV VBC LDA OFFSCN ;coming on? ORA OFFSCN+1 BEQ VBB ;yes DEC OFFSCN ;countdown LDA OFFSCN CMP #$FF BNE VBA DEC OFFSCN+1 JMP VBA VBB DEC VTIME ;vbi speed LDA VTIME BNE VBA LDA ICESPEED STA VTIME JMP MOVICE ;do the move ; ;make a plowing sound ; PLWSND LDA ICEON ;unless BNE NOPL ;the storm is LDA #$32 ;making noise STA $D202 LDA #$46 STA $D203 JSR WAIT NOPL RTS ; ;reset some playing stuff ; REPLAY LDA #$80 ;dozer's STA PXP ;position LDA #$70 STA PYP LDA #4 ;scroll shadows STA SMY LDA #24 STA SMX LDA #0 ;screen pos. STA SXP STA SYP LDX #5 ;fuel timers LDA #0 FT1 STA FTIME,X DEX BPL FT1 LDX #3 ;car timers CT1 LDA CARSHD,X STA CARTIM,X LDA #0 STA RMTIM,X DEX BPL CT1 LDA #0 ;reset road STA ROADG ;counters STA ROADG+1 INC ROADG STA ICECNT LDA ICESPEED ;storm'S speed STA VTIME JSR SNDOFF ;sound off LDA ICTL STA OFFSCN LDA ICTH STA OFFSCN+1 RTS ; ;interval between cars ; CARSHD .BYTE $30,$60,$80,$B0 ; ;speed up for next level ;fuel down by 10 ;storm is off screen less ;storm moves faster ; FIGLEV LDX LEVEL CPX #5 BEQ LEA INC LEVEL LEA LDX LEVEL LDA FULM,X STA FULK LDA ICOFFL,X STA ICTL LDA ICOFFH,X STA ICTH LDA ICESPDT,X STA ICESPEED LDA #1 STA EDGFLG JSR SNDOFF RTS ; ;tables for stormy ; FULM .BYTE 8,7,6,5,4,3 ICOFFL .BYTE $80,$80,0,$80,0,$80 ICOFFH .BYTE 3,2,2,1,1,0 ICESPDT .BYTE 10,8,6,4,2,1 SPTAB .BYTE 0,2,1,3 ; ;spin dozer if hit by storm ;or out of fuel ; SPIN LDA DIRECT PHA LDY #4 STY YSP LDA #0 STA SPSND SPB LDX #3 STX XSP SPA LDA SPTAB,X TAX JSR DFOK LDA #$86 STA $D203 LDA SPSND CLC ADC #9 STA SPSND STA $D202 JSR DELAY DEC XSP LDX XSP BNE SPA DEC YSP LDY YSP BNE SPB PLA STA DIRECT JSR DFOK JSR OFF2 RTS ; ;move the tracks on the dozer ; TRACKR STY YH STX XH LDA XD1 AND #1 TAX LDA TRKR,X TRKJMP LDY PYP+1 STA P1MEM+1,Y STA P1MEM+2,Y STA P1MEM+13,Y STA P1MEM+14,Y INC XD1 LDY YH LDX XH RTS ; TRKR .BYTE $55,$A9 ;masks ; TRACKL STY YH STX XH LDA XD1 AND #1 TAX LDA TRKL,X JMP TRKJMP ; TRKL .BYTE $AA,$95 ;masks ; TRACKU STY YH STX XH LDY PYP+1 LDX #7 TRU1 LDA P1MEM+4,Y CMP #$99 BNE TRU2 LDA #$18 BNE TRU3 TRU2 CMP #$18 BNE TRU3 LDA #$99 TRU3 STA P1MEM+4,Y INY DEX BPL TRU1 LDX XH LDY YH RTS ; ;filling up with fuel sound ; FILSND JSR OFF2 LDA #$A4 STA $D203 LDX #160 FIL1 STX $D202 JSR FDEL CPX #45 BNE FIL2 LDA #$A2 STA $D203 FIL2 DEX BNE FIL1 JSR OFF2 RTS ; FDEL LDY #200 FD1 JSR WAIT DEY BPL FD1 RTS ; ;get the directory ;search for SMAP.??? ; GETDIR JSR CLOSE6 LDX #$60 LDA #3 STA ICCOM,X LDA #>DIRNAM STA ICBAH,X LDA #<DIRNAM STA ICBAL,X LDA #6 STA AUX1,X LDA #0 STA AUX2,X JSR CIOV RTS ; CLOSE6 LDX #$60 LDA #$0C STA ICCOM,X JSR CIOV RTS ; ;read ina map from disk ; GETFIL LDA #5 LDX #$60 STA ICCOM,X LDA #>DBUF STA ICBAH,X LDA #<DBUF STA ICBAL,X LDA #20 STA ICBLL,X LDA #0 STA ICBLH,X JSR CIOV BMI DOV LDA DBUF+4 CMP #'F BNE FLP DOV JSR GETDIR LDA #0 STA MAPFLG PLA PLA JMP MAP2 ; FLP LDX #10 DLP LDA DBUF,X STA MAPNAM-2,X CMP #$20 BEQ DRET INX BNE DLP DRET LDA #EOL STA MAPNAM-2,X RTS ; DIRNAM .BYTE "D1:SMAP.*",EOL ; ;try jumping to edge ;once per level only ;to road ; JMPEDG LDA EDGFLG BNE JEA RTS JEA LDA DIRECT CMP #7 BNE JLF LDA SMX STA EHOLD LDA #$C8 SEC SBC PXP LSR A LSR A STA EADD CLC ADC SMX STA SMX DEC SMX DEC SMX JSR LOOKR BCC JYES LDA EHOLD STA SMX RTS JYES LDX #$C8 STX HPOSP0 STX PXP INX STX HPOSP0+1 STX PXP+1 INC SMX INC SMX DEC EDGFLG RTS ; JLF CMP #11 BNE JUP LDA SMX STA EHOLD LDA PXP SEC SBC #$30 LSR A LSR A STA EADD LDA SMX SEC SBC EADD STA SMX INC SMX INC SMX JSR LOOKL BCC JEB LDA EHOLD STA SMX RTS JEB LDX #$30 STX HPOSP0 STX PXP DEX STX HPOSP0+1 STX PXP+1 DEC SMX DEC SMX DEC EDGFLG RTS ; JUP CMP #14 BNE JDN LDA SMY STA EHOLD LDA PYP SEC SBC #$30 LSR A LSR A LSR A LSR A ;/16 STA EADD LDA SMY SEC SBC EADD STA SMY INC SMY JSR LOOKU BCC JEC LDA EHOLD STA SMY RTS JEC DEC SMY JSR ERS01 LDA #$30 STA PYP JSR DEFPLR DEC EDGFLG RTS ; ;erase players 0 and 1 ; ERS01 LDY #$FF LDA #0 ERSA STA P0MEM,Y STA P1MEM,Y DEY BNE ERSA RTS ; JDN CMP #13 BNE JRET LDA SMY STA EHOLD LDA #$C0 SEC SBC PYP LSR A LSR A LSR A LSR A CLC ADC SMY STA SMY DEC SMY JSR LOOKD BCC JED LDA EHOLD STA SMY JRET RTS JED JSR ERS01 LDA #$C0 STA PYP JSR DEFPLR INC SMY DEC EDGFLG RTS ; ;bonus car bell sound ; BELL JSR OFF2 LDA #12 STA $D202 BL3 LDA #$A9 STA SHD BL1 DEC SHD LDA SHD CMP #$A0 BCC BL2 STA $D203 JSR DELAY JMP BL1 BL2 JSR OFF2 RTS ; ;storm sound ; ICESND LDA ICEON BEQ ICOFF LDA #$86 STA $D201 LDA #11 STA $D200 RTS ICOFF JSR OFF1 RTS ; ;check if START was pressed ; STKEY LDA CONSOL CMP #6 BEQ STKEY JMP GAMOVR ; ;setup game board and colors ; SETSCN LDA #>DL1 STA SDLSTL+1 LDA #<DL1 STA SDLSTL LDA #$C0 STA $D40E LDA #>DLI STA 513 LDA #<DLI STA 512 LDX #4 KLR LDA CLRTAB,X STA COLOR0,X DEX BPL KLR RTS
;SAVE#D:SNOW.PT3
;
;-----------------
; screen data file
; & uncompacter
; for snowplow
;
; by: Barry Kolbe
;
;-----------------
;
;uncompact screen data
;
;set up pointers &
;end of memory
;
UNCOM LDA #$90
STA BFL+1
LDA #0
STA BFL
LDA #<MAPDATA
STA TL
LDA #>MAPDATA
STA TL+1
LDA #1
STA EDM
LDA #$9A
STA EDM+1
;
;test for unique or
;repeated data
;
LDY #0
UC1 STY UNIQUE
STY COUNT+1
JSR GETAB ;in A
CLC
ROL A
ROL UNIQUE ;bit 7 test
LSR A
STA COUNT ;lsb
BNE CKU ;if 0 long count
JSR GETAB ;msb
STA COUNT+1
JSR GETAB
STA COUNT ;lsb of long cnt
CKU LDA UNIQUE
BEQ UC2
UC3 JSR GETAB ;unique data
STA (BFL),Y
JSR NXBFL
DEC COUNT
BNE UC3
LDA COUNT+1
BEQ UC1
DEC COUNT+1
JMP UC3
;
;repeated data
;
UC2 JSR GETAB
STA DATA
UC4 LDA DATA
STA (BFL),Y
JSR NXBFL
DEC COUNT
BNE UC4
LDA COUNT+1
BEQ UC1 ;next
DEC COUNT+1
JMP UC4
;
;increment dest. ptr &
;check for end of screen
;memory
;
NXBFL INC BFL
BNE NIN
INC BFL+1
NIN LDA BFL+1
CMP EDM+1
BNE NRT
LDA BFL
CMP EDM
BNE NRT
PLA ;done so get out
PLA
NRT RTS
;
GETAB LDA (TL),Y ;get 1 byte
INC TL ;&inc. ptr of
BNE GTZ ;source
INC TL+1
GTZ RTS
;
;the actual screen compacted
;
MAPDATA .BYTE 4,0,30,96,130,108
.BYTE 110,14,96,130,108,116
.BYTE 6,7,130,114,110,28
.BYTE 96,130,27,28,12,96
.BYTE 130,108,110,22,96,130
.BYTE 108,116,4,0,130,14
.BYTE 15,3,7,135,1,2
.BYTE 3,4,7,5,6,2
.BYTE 7,130,5,6,3,7
.BYTE 130,5,6,9,7,130
.BYTE 98,100,2,7,130,5
.BYTE 6,2,7,130,5,6
.BYTE 6,7,130,98,100,6
.BYTE 7,130,98,100,2,7
.BYTE 137,13,7,1,2,3
.BYTE 4,7,5,6,27,7
.BYTE 130,5,6,2,7,130
.BYTE 98,100,5,7,130,14
.BYTE 15,15,7,130,98,100
.BYTE 4,0,2,7,130,114
.BYTE 110,12,96,130,108,116
.BYTE 6,7,130,5,6,4
.BYTE 7,130,98,100,4,7
.BYTE 130,5,6,2,7,130
.BYTE 5,6,4,7,132,98
.BYTE 100,5,6,2,7,132
.BYTE 5,6,98,104,10,96
.BYTE 130,108,116,6,7,135
.BYTE 1,2,3,4,7,5
.BYTE 6,5,7,130,5,6
.BYTE 8,7,132,5,6,98
.BYTE 100,2,7,130,114,110
.BYTE 14,96,130,108,116,2
.BYTE 7,130,98,100,4,0
.BYTE 135,5,6,98,100,7
.BYTE 5,6,9,7,133,98
.BYTE 100,7,5,6,5,7
.BYTE 130,5,6,2,7,130
.BYTE 98,100,14,7,130,98
.BYTE 100,2,7,130,5,6
.BYTE 2,7,130,98,100,10
.BYTE 7,133,98,100,7,5
.BYTE 6,5,7,4,96,130
.BYTE 108,116,2,7,130,14
.BYTE 15,11,7,131,13,98
.BYTE 100,2,7,130,98,100
.BYTE 14,7,130,98,100,2
.BYTE 7,130,98,100,4,0
.BYTE 2,7,130,98,100,7
.BYTE 7,135,1,2,3,4
.BYTE 7,120,112,12,96,130
.BYTE 106,118,14,7,130,98
.BYTE 104,6,96,130,102,100
.BYTE 8,7,135,1,2,3
.BYTE 4,7,5,6,4,7
.BYTE 130,5,6,3,7,130
.BYTE 120,112,12,96,130,108
.BYTE 110,2,96,130,106,118
.BYTE 2,7,130,98,100,2
.BYTE 7,130,114,110,6,96
.BYTE 130,108,116,2,7,130
.BYTE 98,100,2,7,130,98
.BYTE 100,4,0,2,7,130
.BYTE 98,100,4,7,130,5
.BYTE 6,3,7,130,5,6
.BYTE 5,7,130,5,6,2
.BYTE 7,130,5,6,6,7
.BYTE 130,5,6,2,7,130
.BYTE 5,6,8,7,130,98
.BYTE 100,6,7,130,98,100
.BYTE 2,7,130,5,6,3
.BYTE 7,130,5,6,4,7
.BYTE 133,5,6,7,5,6
.BYTE 16,7,130,8,10,2
.BYTE 7,130,98,100,2,7
.BYTE 130,5,6,2,7,130
.BYTE 98,100,2,7,138,98
.BYTE 100,13,7,1,2,3
.BYTE 4,98,100,2,7,130
.BYTE 98,100,2,7,130,98
.BYTE 100,4,0,2,7,130
.BYTE 120,112,30,96,130,27
.BYTE 28,4,96,130,108,116
.BYTE 4,7,130,98,100,6
.BYTE 7,130,98,100,4,7
.BYTE 130,114,110,2,96,130
.BYTE 108,116,4,7,130,114
.BYTE 110,2,96,130,108,116
.BYTE 4,7,130,114,110,4
.BYTE 96,130,108,116,6,7
.BYTE 130,98,100,4,7,132
.BYTE 5,6,98,100,2,7
.BYTE 130,120,112,4,96,2
.BYTE 7,130,98,100,2,7
.BYTE 130,98,100,2,7,130
.BYTE 98,100,4,0,13,7
.BYTE 130,5,6,21,7,130
.BYTE 5,6,2,7,130,98
.BYTE 100,4,7,132,98,100
.BYTE 8,10,4,7,130,98
.BYTE 100,4,7,134,98,100
.BYTE 5,6,98,100,4,7
.BYTE 134,98,100,5,6,98
.BYTE 100,4,7,130,98,100
.BYTE 2,7,132,14,15,98
.BYTE 100,6,7,130,98,100
.BYTE 6,7,130,98,100,10
.BYTE 7,130,98,100,2,7
.BYTE 130,98,100,2,7,130
.BYTE 98,100,4,0,130,114
.BYTE 110,28,96,130,108,116
.BYTE 6,7,134,14,15,98
.BYTE 100,5,6,2,7,130
.BYTE 98,100,6,7,130,120
.BYTE 112,4,96,130,106,118
.BYTE 2,7,130,120,112,4
.BYTE 96,130,106,118,2,7
.BYTE 130,120,112,4,96,130
.BYTE 106,118,4,7,130,120
.BYTE 112,2,96,130,108,110
.BYTE 2,96,130,106,118,6
.BYTE 7,130,120,112,10,96
.BYTE 130,106,118,2,7,130
.BYTE 98,100,2,7,130,98
.BYTE 100,4,0,139,98,100
.BYTE 7,5,6,5,6,5
.BYTE 6,5,6,7,7,130
.BYTE 5,6,3,7,130,5
.BYTE 6,5,7,130,98,100
.BYTE 4,7,130,114,110,2
.BYTE 96,130,106,118,4,7
.BYTE 130,98,100,6,7,137
.BYTE 13,7,1,2,3,4
.BYTE 7,5,6,27,7,131
.BYTE 98,100,13,25,7,130
.BYTE 98,100,2,7,130,98
.BYTE 100,4,0,130,120,112
.BYTE 10,96,130,8,10,6
.BYTE 7,130,5,6,8,7
.BYTE 130,98,100,4,7,130
.BYTE 98,100,8,7,130,98
.BYTE 100,8,7,130,114,110
.BYTE 18,96,130,108,116,4
.BYTE 7,130,114,110,6,96
.BYTE 130,106,112,4,96,130
.BYTE 27,28,20,96,130,102
.BYTE 100,2,7,130,98,100
.BYTE 4,0,5,7,130,5
.BYTE 6,16,7,130,5,6
.BYTE 5,7,130,98,100,4
.BYTE 7,130,98,100,8,7
.BYTE 132,98,100,5,6,2
.BYTE 7,130,5,6,2,7
.BYTE 130,98,100,6,7,138
.BYTE 5,6,7,1,2,3
.BYTE 4,7,5,6,2,7
.BYTE 130,98,100,4,7,130
.BYTE 98,100,24,7,130,5
.BYTE 6,8,7,130,98,100
.BYTE 2,7,130,98,100,4
.BYTE 0,130,114,110,6,96
.BYTE 130,108,116,4,7,130
.BYTE 114,110,6,96,130,108
.BYTE 116,6,7,130,98,100
.BYTE 4,7,130,120,112,2
.BYTE 96,130,108,116,4,7
.BYTE 130,98,100,2,7,130
.BYTE 5,6,2,7,132,5
.BYTE 6,98,100,2,7,130
.BYTE 5,6,4,7,130,5
.BYTE 6,8,7,132,98,100
.BYTE 8,10,2,7,130,98
.BYTE 104,10,96,130,108,116
.BYTE 2,7,136,13,7,1
.BYTE 2,3,4,1,2,3
.BYTE 7,132,5,6,5,6
.BYTE 5,7,130,98,100,2
.BYTE 7,130,98,100,4,0
.BYTE 130,98,100,6,7,130
.BYTE 98,100,2,7,132,5
.BYTE 6,98,100,6,7,130
.BYTE 98,100,6,7,130,98
.BYTE 100,8,7,130,98,100
.BYTE 4,7,130,98,100,8
.BYTE 7,130,98,100,4,7
.BYTE 130,5,6,12,7,130
.BYTE 98,100,4,7,130,98
.BYTE 100,2,7,130,5,6
.BYTE 6,7,130,98,100,6
.BYTE 7,130,98,100,2,7
.BYTE 130,5,6,10,7,130
.BYTE 98,100,2,7,130,98
.BYTE 100,4,0,130,98,100
.BYTE 2,7,130,5,6,2
.BYTE 7,130,120,112,4,96
.BYTE 132,106,118,5,6,2
.BYTE 7,134,5,6,98,100
.BYTE 5,6,2,7,135,5
.BYTE 6,98,100,7,5,6
.BYTE 5,7,130,98,100,4
.BYTE 7,130,98,100,8,7
.BYTE 130,120,112,8,96,130
.BYTE 108,110,8,96,130,106
.BYTE 118,4,7,130,98,100
.BYTE 5,7,130,5,6,3
.BYTE 7,130,120,112,6,96
.BYTE 130,106,118,5,7,130
.BYTE 5,6,7,7,134,98
.BYTE 100,14,15,98,100,4
.BYTE 0,130,98,100,4,7
.BYTE 130,5,6,10,7,130
.BYTE 5,6,2,7,130,98
.BYTE 100,2,7,130,5,6
.BYTE 2,7,130,120,112,8
.BYTE 96,130,106,112,4,96
.BYTE 130,102,100,4,7,130
.BYTE 5,6,3,7,130,5
.BYTE 6,2,7,130,5,6
.BYTE 3,7,130,98,100,2
.BYTE 7,130,5,6,3,7
.BYTE 130,5,6,5,7,130
.BYTE 98,104,4,96,130,108
.BYTE 116,11,7,130,5,6
.BYTE 14,7,131,13,98,100
.BYTE 2,7,130,98,100,4
.BYTE 0,130,98,100,6,7
.BYTE 130,114,110,6,96,132
.BYTE 1,2,3,4,2,7
.BYTE 130,98,100,9,7,130
.BYTE 5,6,11,7,130,98
.BYTE 100,6,7,130,5,6
.BYTE 10,7,130,98,100,4
.BYTE 7,130,5,6,8,7
.BYTE 130,98,100,2,7,132
.BYTE 3,4,98,100,2,7
.BYTE 130,8,10,24,96,130
.BYTE 106,118,2,7,130,98
.BYTE 100,4,0,130,98,100
.BYTE 3,7,133,5,6,7
.BYTE 98,100,12,7,130,98
.BYTE 100,13,7,130,14,15
.BYTE 7,7,130,98,100,9
.BYTE 7,130,5,6,2,7
.BYTE 130,5,6,3,7,130
.BYTE 98,100,7,7,130,5
.BYTE 6,5,7,130,98,100
.BYTE 5,7,130,14,15,23
.BYTE 7,132,1,2,3,4
.BYTE 4,7,130,98,100,4
.BYTE 0,132,1,2,3,4
.BYTE 4,7,130,120,112,12
.BYTE 96,130,106,112,12,96
.BYTE 130,27,28,8,96,130
.BYTE 106,112,18,96,132,106
.BYTE 118,14,15,2,7,134
.BYTE 1,2,3,4,3,4
.BYTE 4,96,130,106,112,38
.BYTE 96,130,106,118
; SAVE#D:SNOW.PT4 ; ;------------------------- ;Intro Screen for SNOWPLOW ; ;by: Bryan Schappel ; ;------------------------- ; CLS .BYTE $92,$0A,$00,$42,$00 WEATHER .SBYTE "national weat" .SBYTE "her service bulle" .SBYTE "tin snow w" .SBYTE "arning" ; STARTI LDY #0 ;turn off vbi STY VFLG STY ICEON ;storm off JSR SNDOFF LDX IFLAG ;falling BNE INTRO ;letters? LDA #8 STA CONSOL LDA #90 ;scroll len STA SLENGTH CP1 LDA SET+$0200,Y ;copy chrset STA SET2,Y ;out LDA #0 STA SET+$0200,Y STA SCRLMEM,Y INY BNE CP1 ; INTRO LDX #5 ;copy high score TSLP LDA SCRS,X ;to intro STA TOPSCORE+12,X ;screen DEX BPL TSLP LDX #7 LDA #0 ;players off WWLP STA HPOSP0,X DEX BPL WWLP ; TAY ;set up scroll CWLP STA SCRLMEM,Y ;message DEY BNE CWLP LDY #53 WCP LDA WEATHER,Y STA SCRLMEM+22,Y DEY BPL WCP ; LDY #4 ;put in colors GCL LDA CLS,Y STA COLOR0,Y DEY BPL GCL ; LDA #0 ;ptrs for chset STA IND2 ;move STA INDR STA COLOR2 LDA #>SET2 STA INDR+1 LDA #>[SET+$0200] STA IND2+1 LDA #<IDLST ;intro dlist STA SDLSTL LDA #>IDLST STA SDLSTL+1 ; LDA IFLAG ;first time? BNE SKIPSNOW ;for snow INC IFLAG ;letters? JSR GETRAND LDA #15 STA IIY3 LP1 LDA #15 STA ICNT LOOP LDY ICNT LDA RANDS,Y TAY LDA TAB16,Y STA INDR STA IND2 LDY IIY3 LDA (INDR),Y JSR MOVEDN BCS SKIPSNOW DEC ICNT BPL LOOP DEC IIY3 BPL LP1 ; SKIPSNOW LDY #0 STY LMS SK1 LDA SET2,Y STA SET+$0200,Y INY BNE SK1 ; ;Scroll Weather Message ; ISCRL LDX #7 ISC STX HSCROL LDA #0 STA RTCLOK WT1 LDA CONSOL BEQ SKPPER CMP #6 BEQ GSTART LDA RTCLOK BEQ WT1 DEX BPL ISC LDY LMS INY CPY SLENGTH BNE ISK LDY #0 ISK STY LMS JMP ISCRL ; GSTART LDA #0 STA DIRF GST STA LMS STA HSCROL RTS ; SKPPER LDA #1 STA DIRF LDA #0 BEQ GST ; ;Move byte down ; MOVEDN STY IISY CMP #0 BEQ MRTS LDY #0 MLP STA (IND2),Y CPY IISY BEQ MRTS LDX #0 STX RTCLOK WL LDX CH CPX #$FF BNE BRTS LDX RTCLOK BEQ WL PHA LDA #0 STA (IND2),Y PLA INY BNE MLP MRTS LDY IISY CLC RTS BRTS LDX #$FF STX CH SEC RTS ; ;Get 16 Random Numbers ; GETRAND LDA #1 STA RAND LDA RANDOM AND #$0F STA RANDS RLOOP LDA RANDOM AND #$0F LDY #0 RSRCH CMP RANDS,Y BEQ RLOOP INY CPY RAND BNE RSRCH STA RANDS,Y INY STY RAND CPY #16 BNE RLOOP RTS ; TAB16 .BYTE 0,16,32,48 .BYTE 64,80,96,112 .BYTE 128,144,160,176 .BYTE 192,208,224,240 ; STAR = * *= $7B00 ; SNOWMEM .SBYTE " " .BYTE "@BDFHJLNPRTVXZ\^" .SBYTE " " .SBYTE " " .BYTE "ACEGIKMOQSUWY[]_" .SBYTE " " .SBYTE " BY: BARRY KOL" .SBYTE "BE AND BRYAN SCH" .SBYTE "APPEL " .SBYTE " COPYRIGHT 1" .SBYTE "988 BBK ENTERPRI" .SBYTE "SES " ; TOPSCORE .SBYTE " top score " .SBYTE "000000 " *= STAR
;-------------------------- ; ;SNOWPLOW Character Set ; ;by: Barry Kolbe (graphics) ;and Bryan Schappel (text) ; ;-------------------------- ; .BYTE $00,$00,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $EC,$E2,$CA,$2A .BYTE $A2,$A2,$AA,$AA .BYTE $3F,$8F,$A3,$A8 .BYTE $0A,$0A,$0A,$0A .BYTE $FF,$FF,$00,$AA .BYTE $80,$80,$80,$80 .BYTE $FF,$FF,$00,$AA .BYTE $0A,$0A,$0A,$0A .BYTE $FD,$F5,$D5,$D5 .BYTE $D5,$F5,$FE,$FE .BYTE $7F,$5F,$57,$57 .BYTE $57,$5F,$BF,$BF .BYTE $FF,$FF,$FF,$FF .BYTE $FF,$FF,$FF,$FF .BYTE $FA,$EA,$A0,$A2 .BYTE $A0,$A2,$E2,$FA .BYTE $FA,$EA,$AA,$AA .BYTE $AA,$AA,$EA,$FA .BYTE $BF,$AF,$0B,$AB .BYTE $0B,$AB,$AF,$BF .BYTE $BF,$AF,$AB,$AB .BYTE $AB,$AB,$AF,$BF .BYTE $00,$00,$00,$00 .BYTE $00,$18,$18,$30 .BYTE $FF,$FF,$FF,$FB .BYTE $EA,$FB,$EA,$FF .BYTE $FE,$EA,$EF,$EA .BYTE $FE,$FE,$FE,$FE .BYTE $BF,$AB,$FB,$AB .BYTE $BF,$BF,$BF,$BF .BYTE $7F,$63,$63,$63 .BYTE $63,$63,$7F,$00 .BYTE $38,$18,$18,$18 .BYTE $3C,$3C,$3C,$00 .BYTE $7F,$63,$03,$7F .BYTE $60,$60,$7F,$00 .BYTE $7E,$06,$06,$7F .BYTE $07,$07,$7F,$00 .BYTE $70,$70,$70,$77 .BYTE $77,$7F,$07,$00 .BYTE $7F,$60,$60,$7F .BYTE $07,$07,$7F,$00 .BYTE $7C,$6C,$60,$7F .BYTE $63,$63,$7F,$00 .BYTE $7F,$03,$03,$1F .BYTE $18,$18,$18,$00 .BYTE $3E,$36,$36,$7F .BYTE $77,$77,$7F,$00 .BYTE $7F,$63,$63,$7F .BYTE $07,$07,$07,$00 .BYTE $00,$00,$18,$18 .BYTE $00,$18,$18,$00 .BYTE $FF,$FF,$FE,$F8 .BYTE $AA,$AA,$CF,$FF .BYTE $FF,$FF,$AF,$AB .BYTE $AA,$AA,$F3,$FF .BYTE $00,$00,$01,$04 .BYTE $55,$55,$30,$00 .BYTE $00,$00,$50,$54 .BYTE $55,$55,$0C,$00 .BYTE $00,$3C,$66,$0C .BYTE $18,$00,$18,$00 .BYTE $00,$3C,$66,$6E .BYTE $6E,$60,$3E,$00 .BYTE $00,$00,$3F,$03 .BYTE $7F,$67,$7F,$00 .BYTE $00,$60,$60,$7F .BYTE $73,$73,$7F,$00 .BYTE $00,$00,$7F,$60 .BYTE $60,$60,$7F,$00 .BYTE $00,$03,$03,$7F .BYTE $63,$63,$7F,$00 .BYTE $00,$00,$7F,$63 .BYTE $7F,$70,$7F,$00 .BYTE $00,$1E,$18,$7E .BYTE $18,$38,$38,$00 .BYTE $00,$00,$7F,$63 .BYTE $63,$7F,$07,$7F .BYTE $00,$60,$60,$7F .BYTE $73,$73,$73,$00 .BYTE $00,$0C,$00,$0C .BYTE $0C,$1C,$1C,$00 .BYTE $00,$0C,$00,$0C .BYTE $0C,$0E,$0E,$7E .BYTE $00,$30,$30,$76 .BYTE $7C,$76,$73,$00 .BYTE $00,$18,$18,$18 .BYTE $38,$38,$38,$00 .BYTE $00,$00,$66,$7F .BYTE $7F,$6B,$63,$00 .BYTE $00,$00,$3F,$33 .BYTE $73,$73,$73,$00 .BYTE $00,$00,$3F,$33 .BYTE $73,$73,$7F,$00 .BYTE $00,$00,$3F,$33 .BYTE $73,$7F,$70,$70 .BYTE $00,$00,$7F,$63 .BYTE $63,$7F,$07,$07 .BYTE $00,$00,$3F,$33 .BYTE $70,$70,$70,$00 .BYTE $00,$00,$7F,$60 .BYTE $7F,$07,$7F,$00 .BYTE $00,$0C,$7F,$0C .BYTE $1C,$1C,$1C,$00 .BYTE $00,$00,$33,$33 .BYTE $73,$73,$7F,$00 .BYTE $00,$00,$63,$63 .BYTE $63,$36,$1C,$00 .BYTE $00,$00,$63,$6B .BYTE $7F,$3E,$36,$00 .BYTE $00,$00,$66,$3C .BYTE $18,$3C,$66,$00 .BYTE $00,$00,$33,$33 .BYTE $73,$7F,$03,$0F .BYTE $00,$00,$7E,$0C .BYTE $18,$30,$7E,$00 .BYTE $00,$1E,$18,$18 .BYTE $18,$18,$1E,$00 .BYTE $00,$40,$60,$30 .BYTE $18,$0C,$06,$00 .BYTE $00,$78,$18,$18 .BYTE $18,$18,$78,$00 .BYTE $00,$08,$1C,$36 .BYTE $63,$00,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$00,$FF,$00 .BYTE $00,$00,$07,$0F .BYTE $1C,$1C,$1C,$1F .BYTE $0F,$00,$00,$00 .BYTE $18,$1F,$1F,$00 .BYTE $00,$00,$FC,$FC .BYTE $0C,$00,$00,$FC .BYTE $FE,$0E,$0E,$0E .BYTE $1E,$FC,$F8,$00 .BYTE $00,$00,$7C,$7C .BYTE $1E,$1E,$1F,$1F .BYTE $1F,$1D,$1C,$1C .BYTE $1C,$7C,$7C,$00 .BYTE $00,$00,$3E,$3E .BYTE $38,$38,$38,$38 .BYTE $B8,$F8,$F8,$78 .BYTE $78,$3E,$3E,$00 .BYTE $00,$00,$3F,$7F .BYTE $70,$70,$70,$70 .BYTE $70,$70,$70,$70 .BYTE $70,$7F,$3F,$00 .BYTE $00,$00,$F8,$FC .BYTE $1C,$1C,$1C,$1C .BYTE $1C,$1C,$1C,$1C .BYTE $1C,$FC,$F8,$00 .BYTE $00,$00,$7C,$7C .BYTE $1C,$1C,$1C,$1D .BYTE $1D,$1D,$1D,$1F .BYTE $1F,$7E,$7C,$00 .BYTE $00,$00,$3E,$3E .BYTE $38,$38,$38,$B8 .BYTE $B8,$B8,$B8,$F8 .BYTE $F8,$7E,$3E,$00 .BYTE $00,$00,$7F,$7F .BYTE $1C,$1C,$1C,$1C .BYTE $1F,$1F,$1C,$1C .BYTE $1C,$7F,$7F,$00 .BYTE $00,$00,$F0,$F8 .BYTE $1C,$1C,$1C,$1C .BYTE $F8,$F0,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$00,$7F,$7F .BYTE $1C,$1C,$1C,$1C .BYTE $1C,$1C,$1C,$1C .BYTE $1C,$7F,$7F,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$00,$00,$00 .BYTE $00,$00,$00,$1C .BYTE $1C,$FC,$FC,$00 .BYTE $00,$00,$3F,$7F .BYTE $70,$70,$70,$70 .BYTE $70,$70,$70,$70 .BYTE $70,$7F,$3F,$00 .BYTE $00,$00,$F8,$FC .BYTE $1C,$1C,$1C,$1C .BYTE $1C,$1C,$1C,$1C .BYTE $1C,$FC,$F8,$00 .BYTE $00,$00,$7C,$7C .BYTE $1C,$1C,$1C,$1D .BYTE $1D,$1D,$1D,$1F .BYTE $1F,$7E,$7C,$00 .BYTE $00,$00,$3E,$3E .BYTE $38,$38,$38,$B8 .BYTE $B8,$B8,$B8,$F8 .BYTE $F8,$7E,$3E,$00 .BYTE $FF,$FF,$FF,$D7 .BYTE $FF,$FF,$FF,$FF .BYTE $00,$00,$00,$14 .BYTE $00,$00,$00,$00 .BYTE $FF,$FD,$FF,$FD .BYTE $FF,$FD,$FF,$FD .BYTE $00,$01,$00,$01 .BYTE $00,$01,$00,$01 .BYTE $FF,$7F,$FF,$7F .BYTE $FF,$7F,$FF,$7F .BYTE $00,$40,$00,$40 .BYTE $00,$40,$00,$40 .BYTE $FF,$FD,$FF,$5D .BYTE $FF,$FD,$FF,$FD .BYTE $00,$01,$00,$51 .BYTE $00,$01,$00,$01 .BYTE $FF,$7F,$FF,$75 .BYTE $FF,$7F,$FF,$7F .BYTE $00,$40,$00,$45 .BYTE $00,$40,$00,$40 .BYTE $FF,$FD,$FF,$5D .BYTE $FF,$FF,$FF,$FF .BYTE $00,$01,$00,$51 .BYTE $00,$00,$00,$00 .BYTE $FF,$FF,$FF,$5D .BYTE $FF,$FD,$FF,$FD .BYTE $00,$00,$00,$51 .BYTE $00,$01,$00,$01 .BYTE $FF,$FF,$FF,$75 .BYTE $FF,$7F,$FF,$7F .BYTE $00,$00,$00,$45 .BYTE $00,$40,$00,$40 .BYTE $FF,$7F,$FF,$75 .BYTE $FF,$FF,$FF,$FF .BYTE $00,$40,$00,$45 .BYTE $00,$00,$00,$00 .BYTE $FF,$FF,$FF,$FD .BYTE $FF,$FD,$FF,$FD .BYTE $00,$00,$00,$01 .BYTE $00,$01,$00,$01 .BYTE $FF,$FF,$FF,$7F .BYTE $FF,$7F,$FF,$7F .BYTE $00,$00,$00,$40 .BYTE $00,$40,$00,$40 .BYTE $FF,$7F,$FF,$7F .BYTE $FF,$FF,$FF,$FF .BYTE $00,$40,$00,$40 .BYTE $00,$00,$00,$00 .BYTE $FF,$FD,$FF,$FD .BYTE $FF,$FF,$FF,$FF .BYTE $00,$01,$00,$01 .BYTE $00,$00,$00,$00 .BYTE $FF,$EF,$FF,$55 .BYTE $FF,$FF,$FF,$FF .BYTE $00,$08,$00,$55 .BYTE $00,$00,$00,$00 .BYTE $18,$18,$18,$18 .BYTE $18,$18,$18,$18 .BYTE $00,$7E,$78,$7C .BYTE $6E,$66,$06,$00 .BYTE $08,$18,$38,$78 .BYTE $38,$18,$08,$00 .BYTE $10,$18,$1C,$1E .BYTE $1C,$18,$10,$00
A.N.A.L.O.G. ISSUE 65 / AUGUST 1988 / PAGE 16
The Snowplow Editor (SE) is a scrolling-screen editor used to design new screens for the game Snowplow which was published in last month’s ANALOG. These screens may be arranged in any order on a disk to add levels to the game. And what is even better, you get to design them yourself!
First type in Listing 1 using the M/L Editor found elsewhere in this issue. To run SE follow the instructions in your DOS manual on loading a binary file. When the editor has loaded, you will notice that the screen is divided into two main sections. There is the editing window (which comprises most of the screen) and the input/info area at the bottom of the screen. The following commands may be entered simply by pressing the appropriate key:
K — choose character
C — change color register
M — define memory block
X — xerox memory block
P — change cursor luminance
B — block fill
H — home cursor
F — load a font
L — load saved screen
S — save screen
D — draw line mode
T — define a key
In addition to these commands are two others that are accessed by pressing CONTROL along with the appropriate key:
CNTL-H — home and clear
CNTL-< — clear memory
An explanation of all the commands follows.
Choose a character (K): This allows you to choose the character that you will draw with. When you press this key you may move the character cursor at the bottom of the screen on top of the character you wish to use. When you have made your choice, press fire. Move the stick up and down to see a different line of characters and move left or right to choose a character on that line. All plots, draws, block fills, etc., will use this character until another one is selected.
Change the color registers (C): Hit a key 0 through 4, to select the register to be altered. Use the joystick to select the hue and luminance. Press fire to exit.
Define a block of memory (M): This is used later in the Copy mode to rubber-stamp a rectangular region of the screen anywhere on the map. You may only define an area of 10 by 10. This is done by moving the cursor to the ujsper left-hand corner of the rectangle and pressing fire. Then move to the lower right-hand corner and press fire again.
Xerox a defined block (X): This allows you to rubber-stamp your predefined memory block anywhere on the screen. Just move the cursor to the upper-left corner of where you want your block copied and press fire. This is an excellent way to make lots of houses or trees.
Change cursor luminance (P): This changes the luminance of the cursor on the map. This is very useful on light backgrounds. Pressing this key toggles the cursor back and forth between light and dark.
Block fill (B): This allows you to fill a large area of the screen with one character. Simply select the upper left corner and the lower right corner of the rectangle, and it will be filled with the current character.
Home the cursor (H): This key will move the cursor to the screen position 0,0.
Home and clear (CNTL-H): This moves the cursor to position 0,0 and clears the screen. Use this only if you are positive that you want to erase your map; it is quite permanent.
Clear memory (CNTL-<): This is the same as the previous command; however, you are asked if you are certain about the erasure.
Load a font (F): This allows you to load in the character set that you will be drawing with. To extract the character set from the Snowplow game object file, simply use this small BASIC program. Make sure that you have the correct filename in Line 10. You may use any character set with this editor. Please note that you must load a character set before the editor will function properly.
10 OPEN #1,4,0,"D:SNOW" 20 FOR I=1 TO 21:GET #1,A:NEXT I 30 OPEN #2,8,0,"D:FONT" 40 FOR I=1 TO 1024 50 GET #1,A:PUT #2,A 60 NEXT I 70 END
Load a screen (L): This allows you to load in a previously created screen into the editor. Simply supply the filename and press RETURN. The screen is loaded and the one in memory is erased. Pressing ESCAPE will exit.
Save a screen (S): You may save your masterpiece by entering a legal DOS filename at the prompt. To allow this screen to be used by Snowplow, it must be named SMAP.???, where the question marks stand for any legal DOS filename extension. Each saved screen is about 23 sectors long (single density).
Draw a straight line (D): This allows you to enter draw mode, in which you may draw lines either left to right or up to down. Press fire at the beginning of the line, move the cursor, and fire at the end of the line. This uses the last selected character from K.
Define a key (T): Use the cursor to select a character; then hit a key (1 through 0) to register it. Anytime thereafter just hit the appropriate key to recall that character.
Road characters must be placed horizontally in pairs, with the left always on an even X-coordinate (watch the text window). Roads must always be two characters wide. There must always be road characters placed at position X = 10 and Y = 4, since this is where the dozer begins. Use only the road characters that have a snow background. This starts with a and is every other one from there on in.
You may place up to six fuel (X-coordinate must be even) containers on the map. Again these are two characters wide. You are allowed a maximum of four bonus cars. The bonus cars must be placed on the road at an even X position. It would look best to put them on horizontal stretches. In the font, use the first set of car figures. The second set is used by the program for roads that have been cleared of snow. The first X position that can be used is X = 4. The first four spaces are used by ANTIC as a buffer for fine scrolling horizontally.
Enjoy making new levels for Snowplow. We hope you get a great deal of fun from this program.
1000 DATA 255,255,128,127,169,127,112,112,112,69,0,144,69,128,144,69,5323 1010 DATA 0,145,69,128,145,69,0,146,69 ,128,146,69,0,147,69,128,3802 1020 DATA 147,69,0,148,69,128,148,196, 0,139,130,130,2,65,128,127,4882 1030 DATA 0,48,250,58,76,38,48,72,169, 224,141,9,212,169,10,141,6576 1040 DATA 23,208,138,72,166,168,189,54 ,50,141,24,208,169,0,141,26,5122 1050 DATA 208,141,10,212,230,168,104,1 70,104,64,160,50,185,128,127,153,9150 1060 DATA 192,127,136,16,247,32,50,51, 32,136,52,32,170,53,32,117,2071 1070 DATA 49,32,213,49,32,247,49,32,7, 50,169,6,160,187,162,48,4649 1080 DATA 32,92,228,169,127,141,49,2,1 69,128,141,48,2,32,115,50,2423 1090 DATA 32,89,50,32,60,53,32,75,51,1 73,120,2,201,15,240,9,3120 1100 DATA 32,209,48,32,216,48,76,101,4 8,173,252,2,32,225,58,144,6228 1110 DATA 248,201,255,240,47,162,255,1 42,252,2,160,14,217,251,54,240,2814 1120 DATA 5,136,16,248,48,30,152,10,17 0,189,221,54,141,165,48,189,8387 1130 DATA 222,54,141,166,48,32,125,52, 32,255,255,32,125,52,32,60,4090 1140 DATA 53,76,117,48,173,132,2,208,1 76,32,182,50,76,101,48,160,5411 1150 DATA 4,185,196,2,153,22,208,136,1 6,247,169,128,141,9,212,200,9909 1160 DATA 132,168,76,95,228,201,7,208, 14,76,126,49,32,43,50,32,1435 1170 DATA 60,53,169,0,133,77,96,201,11 ,208,3,76,167,49,201,14,4470 1180 DATA 208,30,165,146,240,14,198,14 6,198,148,165,136,56,233,16,133,9432 1190 DATA 136,76,91,49,165,145,240,7,1 98,145,198,148,32,13,51,96,5463 1200 DATA 201,13,208,34,165,146,201,9, 240,14,230,146,230,148,165,136,1662 1210 DATA 24,105,16,133,136,76,253,48, 165,145,201,9,240,225,230,145,2609 1220 DATA 32,230,50,230,148,96,201,6,2 08,6,32,126,49,76,238,48,5388 1230 DATA 201,5,208,6,32,126,49,76,16, 49,201,10,208,6,32,167,2861 1240 DATA 49,76,238,48,201,9,208,6,32, 167,49,32,16,49,96,32,637 1250 DATA 117,49,32,104,49,165,136,133 ,135,76,27,50,169,0,164,135,4917 1260 DATA 162,15,145,169,200,202,16,25 0,96,169,132,133,170,169,0,133,9193 1270 DATA 169,96,165,143,201,39,208,18 ,169,1,133,151,165,144,201,88,8927 1280 DATA 240,7,230,144,230,147,32,210 ,50,96,230,143,230,147,165,133,2043 1290 DATA 24,105,4,133,133,165,133,141 ,0,208,96,165,143,240,14,198,9495 1300 DATA 143,165,133,56,233,4,133,133 ,198,147,76,161,49,165,144,240,547 1310 DATA 216,198,144,198,147,169,255, 133,151,76,210,50,134,128,169,12,9034 1320 DATA 157,66,3,32,86,228,166,128,9 6,169,62,141,47,2,169,1,3848 1330 DATA 141,111,2,169,3,141,29,208,1 69,128,141,7,212,169,108,141,8537 1340 DATA 192,2,169,0,141,8,208,141,9, 208,96,169,132,133,170,169,9457 1350 DATA 0,133,169,160,0,145,169,200, 208,251,96,160,32,132,136,132,190 1360 DATA 135,32,117,49,32,27,50,169,4 6,141,0,208,133,133,96,164,6105 1370 DATA 135,162,0,189,65,50,145,169, 232,200,224,16,208,245,96,162,2487 1380 DATA 0,134,20,166,20,224,4,208,25 0,96,146,66,4,48,48,48,3328 1390 DATA 32,64,0,32,96,255,195,195,19 5,195,195,195,195,195,195,195,6113 1400 DATA 195,195,195,195,255,252,198, 198,198,198,198,198,252,166,142,232,88 65 1410 DATA 138,10,10,10,10,10,170,202,1 38,160,31,153,44,139,153,4,4450 1420 DATA 139,202,138,136,16,245,96,16 0,25,169,0,153,142,0,136,16,4316 1430 DATA 250,160,0,152,141,10,59,169, 144,141,46,59,185,10,59,24,2872 1440 DATA 105,128,153,11,59,185,46,59, 105,0,153,47,59,200,192,33,4670 1450 DATA 208,234,32,130,55,169,128,14 1,244,2,169,192,141,14,212,169,347 1460 DATA 48,141,1,2,169,3,141,0,2,96, 166,148,189,10,59,133,3841 1470 DATA 171,189,46,59,133,172,165,14 9,164,147,145,171,96,169,127,133,677 1480 DATA 172,169,132,133,171,96,32,20 1,50,160,0,177,171,24,101,151,6845 1490 DATA 145,171,200,200,200,192,30,2 08,242,96,160,0,185,136,127,153,963 1500 DATA 133,127,185,135,127,153,132, 127,200,200,200,192,27,208,237,173,436 5 1510 DATA 156,127,24,105,128,141,159,1 27,173,157,127,105,0,141,160,127,8217 1520 DATA 96,160,27,185,129,127,153,13 2,127,185,130,127,153,133,127,136,170 1530 DATA 136,136,208,239,173,132,127, 56,233,128,141,132,127,173,133,127,112 4 1540 DATA 233,0,141,133,127,96,169,144 ,133,170,169,0,133,169,162,9,7699 1550 DATA 160,255,145,169,136,192,255, 208,249,230,170,202,16,242,96,160,5043 1560 DATA 255,169,0,200,153,0,133,192, 255,208,248,160,200,162,0,189,3100 1570 DATA 81,50,153,0,133,200,232,224, 8,208,244,169,63,141,1,208,491 1580 DATA 133,134,169,77,141,193,2,96, 162,38,169,52,32,18,52,173,3978 1590 DATA 120,2,201,15,208,3,76,232,51 ,201,7,208,24,165,150,201,8953 1600 DATA 31,240,10,230,150,165,134,24 ,105,4,76,176,51,169,0,133,5021 1610 DATA 150,169,63,208,15,201,11,208 ,27,165,150,240,15,198,150,165,421 1620 DATA 134,56,233,4,133,134,141,1,2 08,76,12,52,169,31,133,150,5459 1630 DATA 169,187,208,240,201,14,208,1 8,165,142,240,8,198,142,32,89,8553 1640 DATA 50,76,12,52,169,3,133,142,20 8,244,201,13,208,14,230,142,317 1650 DATA 165,142,201,4,208,232,169,0, 133,142,240,226,173,132,2,208,1757 1660 DATA 34,32,98,54,32,43,50,173,132 ,2,240,251,166,142,232,138,1114 1670 DATA 10,10,10,10,10,24,101,150,56 ,233,32,133,149,76,43,50,3099 1680 DATA 32,43,50,76,123,51,134,169,1 33,170,160,255,200,177,169,153,3241 1690 DATA 122,139,16,248,41,127,153,12 2,139,96,35,104,111,111,115,101,6326 1700 DATA 0,99,104,97,114,97,99,116,10 1,242,35,111,108,111,114,0,5085 1710 DATA 114,101,103,105,115,116,101, 114,0,16,13,148,36,114,97,119,3147 1720 DATA 0,109,111,100,229,34,108,111 ,99,107,0,102,105,108,236,44,5970 1730 DATA 111,97,100,105,110,103,0,102 ,111,110,244,36,101,102,105,110,6030 1740 DATA 101,0,98,108,111,99,235,35,1 11,112,121,0,98,108,111,99,5126 1750 DATA 235,160,39,169,0,153,120,139 ,136,16,250,96,160,160,169,0,8109 1760 DATA 153,0,139,136,192,255,208,24 8,96,162,54,169,52,32,18,52,6136 1770 DATA 173,252,2,162,255,201,255,24 0,247,201,28,240,12,160,4,217,2636 1780 DATA 50,53,240,9,136,16,248,48,23 1,142,252,2,96,185,55,53,7394 1790 DATA 133,132,32,125,52,162,123,16 9,56,32,18,52,32,52,56,164,2482 1800 DATA 132,185,196,2,72,41,240,133, 129,104,41,15,133,130,173,120,7144 1810 DATA 2,201,7,208,10,165,129,24,10 5,16,133,129,76,24,53,201,4653 1820 DATA 11,208,10,165,129,56,233,16, 133,129,76,24,53,201,14,208,6329 1830 DATA 13,230,130,230,130,165,130,4 1,15,133,130,76,24,53,201,13,4575 1840 DATA 208,25,198,130,198,130,165,1 30,41,15,133,130,165,129,5,130,6825 1850 DATA 164,132,153,196,2,32,52,56,3 2,43,50,173,132,2,208,174,5527 1860 DATA 173,132,2,208,251,96,50,31,3 0,26,24,0,1,2,3,4,6508 1870 DATA 165,147,162,10,32,98,53,165, 148,162,16,32,98,53,164,148,5650 1880 DATA 32,219,53,164,147,177,171,14 1,102,139,160,3,185,163,55,153,9351 1890 DATA 111,139,136,16,247,96,133,21 2,169,0,133,213,138,72,32,170,8731 1900 DATA 217,32,230,216,160,2,169,48, 153,57,50,136,16,250,160,255,431 1910 DATA 200,177,243,16,251,41,127,14 5,243,200,152,73,3,41,3,170,6920 1920 DATA 160,0,177,243,157,57,50,200, 232,224,3,208,245,160,3,104,651 1930 DATA 170,185,57,50,41,31,157,80,1 39,202,136,16,244,96,160,39,7470 1940 DATA 169,0,153,80,139,136,16,250, 160,24,185,194,53,153,85,139,8884 1950 DATA 136,16,247,76,60,53,56,26,16 ,16,16,0,57,26,16,16,6462 1960 DATA 16,0,35,40,33,50,26,0,0,37,1 14,114,111,114,26,185,2269 1970 DATA 10,59,133,171,185,46,59,133, 172,96,169,255,133,141,169,52,356 1980 DATA 162,72,32,18,52,32,152,54,17 6,32,165,137,197,138,240,32,8370 1990 DATA 165,139,197,140,208,20,165,1 38,197,137,176,8,72,165,137,133,9607 2000 DATA 138,104,133,137,32,79,54,76, 241,53,169,255,141,252,2,96,9458 2010 DATA 165,140,197,139,240,244,176, 8,72,165,139,133,140,104,133,139,480 2020 DATA 32,50,54,76,22,54,164,140,32 ,219,53,164,137,165,149,145,8995 2030 DATA 171,198,140,164,140,196,139, 208,239,32,219,53,164,137,165,149,2611 2040 DATA 145,171,96,164,139,32,219,53 ,164,138,165,149,145,171,136,196,2229 2050 DATA 137,208,249,145,171,96,169,0 ,141,31,208,96,169,255,133,141,1581 2060 DATA 169,52,162,81,32,18,52,32,15 2,54,144,1,96,165,138,197,6315 2070 DATA 137,240,249,144,247,165,140, 197,139,240,241,144,239,230,140,32,576 0 2080 DATA 79,54,230,139,165,139,197,14 0,208,245,240,224,169,255,133,141,7339 2090 DATA 173,252,2,201,28,208,7,169,2 55,141,252,2,56,96,173,120,9454 2100 DATA 2,201,15,240,6,32,209,48,32, 216,48,173,132,2,208,224,9078 2110 DATA 32,98,54,173,132,2,240,251,2 30,141,164,141,165,147,153,137,3218 2120 DATA 0,165,148,153,139,0,165,141, 201,1,240,3,76,156,54,24,5345 2130 DATA 96,116,51,149,52,230,53,10,5 5,104,54,19,55,148,56,251,5298 2140 DATA 56,10,57,48,57,155,57,163,57 ,183,57,20,58,148,58,5,2483 2150 DATA 18,58,10,21,56,0,62,47,182,1 85,57,37,22,45,173,192,4630 2160 DATA 2,73,14,141,192,2,96,162,91, 169,52,32,18,52,32,188,3769 2170 DATA 55,144,1,96,162,16,32,200,49 ,169,3,157,66,3,169,58,4041 2180 DATA 157,69,3,169,249,157,68,3,16 9,0,157,75,3,169,4,157,4972 2190 DATA 74,3,32,86,228,16,5,132,129, 76,112,55,169,7,157,66,4556 2200 DATA 3,169,128,157,69,3,169,0,157 ,68,3,169,4,157,73,3,2646 2210 DATA 169,0,157,72,3,32,86,228,132 ,129,48,8,162,16,32,200,4883 2220 DATA 49,76,86,53,162,16,32,200,49 ,32,68,218,165,129,162,34,6671 2230 DATA 32,98,53,76,170,55,162,32,32 ,200,49,169,3,157,66,3,3621 2240 DATA 169,55,157,69,3,169,167,157, 68,3,169,0,157,75,3,169,5061 2250 DATA 4,157,74,3,76,86,228,174,239 ,238,229,75,58,155,169,0,95 2260 DATA 162,32,157,72,3,157,73,3,169 ,7,157,66,3,76,86,228,4888 2270 DATA 160,0,152,153,138,139,200,19 2,13,208,248,169,36,141,136,139,1617 2280 DATA 169,26,141,137,139,162,0,134 ,130,169,63,157,138,139,169,0,7923 2290 DATA 141,182,2,169,64,141,190,2,3 2,170,55,166,130,201,27,208,8811 2300 DATA 2,56,96,201,155,240,60,41,12 7,201,32,144,218,201,126,208,2568 2310 DATA 15,224,0,240,210,202,169,0,1 57,138,139,157,139,139,240,199,3921 2320 DATA 201,96,240,195,201,123,176,1 91,224,13,240,187,72,157,251,58,3573 2330 DATA 42,42,42,42,41,3,168,104,41, 159,25,61,50,157,138,139,5089 2340 DATA 232,208,164,157,251,58,24,96 ,164,132,185,113,56,141,131,139,9725 2350 DATA 185,118,56,141,132,139,185,1 96,2,72,41,240,74,74,74,74,6221 2360 DATA 32,92,56,141,139,139,104,41, 15,32,92,56,141,147,139,96,5544 2370 DATA 170,189,97,56,96,16,17,18,19 ,20,21,22,23,24,25,33,6676 2380 DATA 34,35,36,37,38,16,16,17,17,1 7,24,25,16,17,18,0,4877 2390 DATA 35,111,108,111,114,26,0,23,0 ,0,0,40,117,101,26,4,8194 2400 DATA 0,0,0,44,117,109,26,132,169, 4,133,129,169,7,133,131,6011 2410 DATA 169,57,162,87,32,18,52,32,18 8,55,144,1,96,162,16,32,2521 2420 DATA 200,49,165,129,157,74,3,169, 3,157,66,3,169,58,157,69,5158 2430 DATA 3,169,249,157,68,3,169,0,157 ,75,3,32,86,228,16,5,2897 2440 DATA 132,129,76,112,55,162,16,169 ,144,157,69,3,169,0,157,68,5518 2450 DATA 3,169,0,157,72,3,169,10,157, 73,3,165,131,157,66,3,4155 2460 DATA 32,86,228,132,129,48,219,162 ,16,32,200,49,76,86,53,169,6581 2470 DATA 8,133,129,169,11,133,131,169 ,57,162,99,76,160,56,169,57,7374 2480 DATA 162,133,32,18,52,32,64,57,17 6,25,104,104,32,171,57,169,5027 2490 DATA 0,141,0,208,141,1,208,169,6, 160,95,162,228,32,92,228,206 2500 DATA 76,116,228,96,169,57,162,110 ,32,18,52,32,64,57,176,3,2819 2510 DATA 32,50,51,96,173,252,2,162,25 5,201,35,240,9,201,43,208,1340 2520 DATA 243,142,252,2,24,96,142,252, 2,56,96,44,111,97,100,105,5660 2530 DATA 110,103,0,102,105,108,229,51 ,97,118,105,110,103,0,102,105,5515 2540 DATA 108,229,35,44,37,33,50,1,0,3 3,114,101,0,121,111,117,2155 2550 DATA 0,115,117,114,101,0,57,15,17 4,49,53,41,52,1,0,33,8960 2560 DATA 114,101,0,121,111,117,0,115, 117,114,101,0,57,15,174,32,2914 2570 DATA 171,57,104,104,76,49,48,32,1 71,57,104,104,76,52,48,160,4346 2580 DATA 50,185,192,127,153,128,127,1 36,16,247,96,169,52,162,103,32,8293 2590 DATA 18,52,169,255,133,141,32,152 ,54,144,1,96,165,140,56,229,8888 2600 DATA 139,201,10,176,246,170,165,1 38,56,229,137,201,10,176,236,133,3359 2610 DATA 164,134,165,169,0,133,167,16 5,137,133,166,230,138,230,140,164,4387 2620 DATA 139,32,219,53,164,166,177,17 1,164,167,153,82,59,230,167,230,4100 2630 DATA 166,165,166,197,138,208,237, 165,137,133,166,230,139,165,139,197,58 32 2640 DATA 140,208,220,169,1,133,153,96 ,165,153,208,1,96,169,52,162,9475 2650 DATA 115,32,18,52,173,120,2,201,1 5,240,6,32,209,48,32,216,6608 2660 DATA 48,173,252,2,201,28,208,6,16 9,255,141,252,2,96,173,132,1218 2670 DATA 2,208,225,32,98,54,173,132,2 ,240,251,32,43,50,165,147,8621 2680 DATA 133,137,133,167,24,101,164,1 33,138,230,138,201,128,144,1,96,9795 2690 DATA 165,148,133,139,24,101,165,1 33,140,230,140,201,18,176,240,169,3565 2700 DATA 0,133,166,164,139,32,219,53, 164,166,185,82,59,164,167,145,1007 2710 DATA 171,230,167,230,166,165,167, 197,138,208,237,165,137,133,167,230,70 64 2720 DATA 139,165,139,197,140,208,220, 96,32,116,51,169,58,162,188,32,9041 2730 DATA 18,52,173,252,2,201,255,240, 249,201,28,208,1,96,160,9,256 2740 DATA 217,215,58,240,5,136,16,248, 48,232,165,149,153,154,0,96,9494 2750 DATA 0,0,36,101,102,105,110,101,0 ,17,13,16,0,0,0,0,6485 2760 DATA 0,0,0,0,0,0,0,0,0,0,128,31,3 0,26,24,29,6118 2770 DATA 27,51,53,48,50,160,9,217,215 ,58,240,5,136,16,248,56,8082 2780 DATA 96,185,154,0,133,149,169,255 ,141,252,2,24,96,68,58,226,9275 2790 DATA 2,227,2,0,48,0,0,0,0,0,0,0,0 ,0,0,0,3492
.OPT NOLIST ;----------------------- ; ;Scrolling Screen Editor ;for SNOWPLOW! ; ;by: Barry Kolbe ;and Bryan Schappel ; ;----------------------- ; *= 0 PASS .= PASS+1 .IF PASS=1 .INCLUDE #D:SYSEQU.M65 .ENDIF ICP = $3F SCNMEM = $9000 PMB = $8000 MYPMB = $8400 P1MEM = MYPMB+$0100 CHSET = PMB TXTWIN = $8B00 CHRLN1 = TXTWIN+40 CHRLN2 = TXTWIN TXLN = TXTWIN+120 STSLN = TXTWIN+80 SC2 = SCNMEM+128 SC3 = SC2+128 SC4 = SC3+128 SC5 = SC4+128 SC6 = SC5+128 SC7 = SC6+128 SC8 = SC7+128 SC9 = SC8+128 SC10 = SC9+128 BCKUP = $7FC0 ; *= $80 X1 .DS 1 X2 .DS 1 X3 .DS 1 PGT .DS 1 CREG .DS 1 PXP .DS 2 PYP .DS 1 NYP .DS 1 DRX .DS 2 DRY .DS 2 NPTS .DS 1 INITAB SPRT .DS 1 LRCRS .DS 1 LRSCRL .DS 1 UDSCRL .DS 1 UDCRS .DS 1 XPOS .DS 1 YPOS .DS 1 PCHR .DS 1 CXPOS .DS 1 LRADD .DS 1 UDADD .DS 1 XERXFLG .DS 1 KCHRS .DS 10 DBH .DS 1 DBV .DS 1 YH2 .DS 1 YH3 .DS 1 DLIDX .DS 1 IL .DS 2 JL .DS 2 ; ;Display List ; *= $7F80 DL1 .BYTE $70,$70,$70 .BYTE $45 SL1 .WORD SCNMEM .BYTE $45 .WORD SC2 .BYTE $45 .WORD SC3 .BYTE $45 .WORD SC4 .BYTE $45 .WORD SC5 .BYTE $45 .WORD SC6 .BYTE $45 .WORD SC7 .BYTE $45 .WORD SC8 .BYTE $45 .WORD SC9 .BYTE $45 .WORD SC10 .BYTE $C4 .WORD TXTWIN .BYTE $82,$82,$02,$41 .WORD DL1 .OPT LIST .OPT NOLIST ; ;Display List Interrupt ; *= $3000 BEGIN JMP STRT DLI PHA LDA #$E0 STA CHBASE LDA #$0A STA COLPF1 TXA PHA LDX DLIDX LDA DLICL,X STA COLPF2 LDA #0 STA COLBK STA WSYNC INC DLIDX PLA TAX PLA RTI ; ;Start of Program ; STRT LDY #50 MDL LDA DL1,Y STA BCKUP,Y DEY BPL MDL RSTRT JSR CLRSCN RBEG JSR CLRTXT JSR SETSTS JSR PLRMEM JSR SETPMG JSR CLRPM JSR DEFPLR LDA #6 LDY #<VBI LDX #>VBI JSR SETVBV ; LDA #>DL1 STA SDLSTL+1 LDA #<DL1 STA SDLSTL JSR INIT JSR SHWCRS JSR SHWXY JSR CHRCRS ; ;Try Stick ; CHKSTK LDA STICK0 CMP #$0F BEQ AKEY JSR GENMOV JSR TIME JMP CHKSTK AKEY LDA CH JSR SWITCH BCC AKEY CMP #$FF BEQ TRYTRG LDX #$FF STX CH LDY #14 CKCMP CMP CMKEY,Y BEQ GTCM DEY BPL CKCMP BMI TRYTRG GTCM TYA ASL A TAX LDA CMTAB,X STA JMPOF+1 LDA CMTAB+1,X STA JMPOF+2 JSR CLRLN1 JMPOF JSR $FFFF JSR CLRLN1 JSR SHWXY JMP AKEY TRYTRG LDA STRIG0 BNE CHKSTK JSR PLOT JMP CHKSTK ; ;Immed. Vblank ; VBI LDY #4 VBI1 LDA COLOR0,Y STA COLPF0,Y DEY BPL VBI1 LDA #>CHSET STA CHBASE INY STY DLIDX JMP SYSVBV ; ;General Move Routine ; GENMOV CMP #7 ;right? BNE TLF JMP MVRT ; ;Timer ; TIME JSR DELAY JSR SHWXY LDA #0 STA ATRACT RTS ; TLF CMP #11 ;left? BNE TUP JMP MVLF ; ;Move Up ; TUP CMP #14 BNE TDN UP1 LDA UDCRS BEQ AA3 ;scrol? DEC UDCRS DEC YPOS LDA NYP SEC SBC #16 STA NYP TU1 JMP UPDN AA3 LDA UDSCRL BEQ NOUD DEC UDSCRL DEC YPOS JSR SCRUP NOUD RTS ; ;Move Down ; TDN CMP #13 BNE TUR DN1 LDA UDCRS CMP #9 BEQ AA4 ;scroll? INC UDCRS INC YPOS LDA NYP CLC ADC #16 STA NYP JMP TU1 AA4 LDA UDSCRL CMP #9 BEQ NOUD INC UDSCRL JSR SCRDN INC YPOS RTS ;Up-Right TUR CMP #6 BNE TDR JSR MVRT JMP UP1 ;Down-Right TDR CMP #5 BNE TUL JSR MVRT JMP DN1 ;Up-Left TUL CMP #10 BNE TDL JSR MVLF JMP UP1 ;Down-Left TDL CMP #9 BNE NST JSR MVLF JSR DN1 NST RTS ; ;Move Up and Down ; UPDN JSR PLRMEM JSR ERSPLR LDA NYP STA PYP JMP PUTPLR ; ;Erase Player ; ERSPLR LDA #0 LDY PYP LDX #15 EML STA (IL),Y INY DEX BPL EML RTS ; ;Set up Player Memory ; PLRMEM LDA #>MYPMB STA IL+1 LDA #0 STA IL RTS ; ;Move Right ; MVRT LDA LRCRS CMP #39 BNE AA1 LDA #1 STA LRADD LDA LRSCRL CMP #88 ;end scrn BEQ NOLR INC LRSCRL INC XPOS JSR SCRLR NOLR RTS AA1 INC LRCRS INC XPOS LDA PXP CLC ADC #4 STA PXP MV1 LDA PXP STA HPOSP0 RTS ; ;Move Left ; MVLF LDA LRCRS BEQ AA2 DEC LRCRS LDA PXP SEC SBC #4 STA PXP DEC XPOS JMP MV1 AA2 LDA LRSCRL BEQ NOLR DEC LRSCRL DEC XPOS LDA #$FF STA LRADD JMP SCRLR ; ;Close IOCB ; CLOSE STX X1 LDA #12 STA ICCOM,X JSR CIOV LDX X1 RTS ; ;Set up PMG ; SETPMG LDA #62 STA SDMCTL LDA #1 STA GPRIOR LDA #3 STA GRACTL LDA #>PMB STA PMBASE LDA #$6C STA PCOLR0 LDA #0 STA SIZEP0 STA SIZEP1 RTS ; ;Clear P/M area ; CLRPM LDA #>MYPMB STA IL+1 LDA #0 STA IL CA2 LDY #0 CA1 STA (IL),Y INY BNE CA1 RTS ; ;Define Players ; DEFPLR LDY #$20 STY NYP STY PYP JSR PLRMEM JSR PUTPLR LDA #$2E STA HPOSP0 STA PXP RTS ; ;Put Player on screen ; PUTPLR LDY PYP LDX #0 DF1 LDA PL0DEF,X STA (IL),Y INX INY CPX #16 BNE DF1 RTS ; ;Delay Loop ; DELAY LDX #0 STX RTCLOK YLP1 LDX RTCLOK CPX #4 BNE YLP1 RTS ; DLICL .BYTE $92,$42,$04 NBF .BYTE "000 " A2I .BYTE $40,$00,$20,$60 PL0DEF .BYTE $FF,$C3,$C3,$C3 .BYTE $C3,$C3,$C3,$C3 .BYTE $C3,$C3,$C3,$C3 .BYTE $C3,$C3,$C3,$FF P1DEF .BYTE $FC,$C6,$C6,$C6 .BYTE $C6,$C6,$C6,$FC ; ;Show Char Set ; SHWCRS LDX SPRT INX TXA ASL A ASL A ASL A ASL A ASL A TAX DEX TXA LDY #31 SH1 STA CHRLN1+4,Y STA CHRLN2+4,Y DEX TXA DEY BPL SH1 RTS ; ;Init Memory ; INIT LDY #25 LDA #0 INILP STA INITAB,Y DEY BPL INILP ;set up 128 LDY #0 TYA STA M128L LDA #>SCNMEM STA M128H TLP LDA M128L,Y CLC ADC #128 STA M128L+1,Y LDA M128H,Y ADC #0 STA M128H+1,Y INY CPY #33 BNE TLP JSR OPNKEY LDA #>CHSET STA CHBAS LDA #192 STA NMIEN LDA #>DLI STA VDSLST+1 LDA #<DLI STA VDSLST RTS ; ;Plot a Character ; PLOT LDX YPOS LDA M128L,X STA JL LDA M128H,X STA JL+1 LDA PCHR LDY XPOS STA (JL),Y RTS ; STSCRL LDA #>SL1 STA JL+1 LDA #<SL1 STA JL RTS ; ;Scroll Left/right ; SCRLR JSR STSCRL LDY #0 SLR LDA (JL),Y CLC ADC LRADD STA (JL),Y INY INY INY CPY #30 BNE SLR RTS ; ;Scroll Down ; SCRDN LDY #0 SQ1 LDA SL1+4,Y STA SL1+1,Y LDA SL1+3,Y STA SL1,Y INY INY INY CPY #27 BNE SQ1 LDA SL1+24 CLC ADC #$80 STA SL1+27 LDA SL1+25 ADC #0 STA SL1+28 RTS ; ;Scroll Up ; SCRUP LDY #27 SUP1 LDA SL1-3,Y STA SL1,Y LDA SL1-2,Y STA SL1+1,Y DEY DEY DEY BNE SUP1 LDA SL1 SEC SBC #$80 STA SL1 LDA SL1+1 SBC #0 STA SL1+1 RTS ; ;Clear Screen ; CLRSCN LDA #>SCNMEM STA IL+1 LDA #0 STA IL LDX #9 ;10 pages CS1 LDY #$FF CSLP STA (IL),Y DEY CPY #$FF BNE CSLP INC IL+1 DEX BPL CS1 RTS ; ;Character Cursor ; CHRCRS LDY #$FF ;erase LDA #0 CR1 INY STA P1MEM,Y CPY #$FF BNE CR1 ;define playr LDY #200 LDX #0 CR2 LDA P1DEF,X STA P1MEM,Y INY INX CPX #8 BNE CR2 LDA #ICP STA HPOSP0+1 STA PXP+1 LDA #$4D STA PCOLR1 RTS ; ;Move Character Cursor ; KSELECT LDX #<CHRMES LDA #>CHRMES JSR PRINT MVCRS LDA STICK0 CMP #$0F BNE BH JMP CKTRG2 BH CMP #7 ;rt? BNE ML LDA CXPOS CMP #31 BEQ BB INC CXPOS LDA PXP+1 CLC ADC #4 JMP BF BB LDA #0 STA CXPOS LDA #ICP BNE BF ; ML CMP #11 ;lef? BNE MU LDA CXPOS BEQ BE DEC CXPOS LDA PXP+1 SEC SBC #4 BF STA PXP+1 STA HPOSP0+1 JMP SLOW BE LDA #31 STA CXPOS LDA #187 BNE BF ;up MU CMP #14 BNE MD LDA SPRT BEQ BC DEC SPRT DOC JSR SHWCRS JMP SLOW BC LDA #3 STA SPRT BNE DOC ; MD CMP #13 BNE CKTRG2 INC SPRT LDA SPRT CMP #4 BNE DOC LDA #0 STA SPRT BEQ DOC ; CKTRG2 LDA STRIG0 BNE SJ JSR CLICK JSR DELAY CTR LDA STRIG0 BEQ CTR LDX SPRT INX TXA ASL A ASL A ASL A ASL A ASL A CLC ADC CXPOS SEC SBC #32 STA PCHR JMP DELAY SLOW JSR DELAY SJ JMP MVCRS ; ;Print Text x=lo,a=hi ; PRINT STX IL STA IL+1 LDY #$FF MLP INY LDA (IL),Y STA TXLN+2,Y BPL MLP AND #$7F STA TXLN+2,Y RTS ; CHRMES .SBYTE "Choose character" COLMES .SBYTE "Color register 0-4" DRWMES .SBYTE "Draw mode" BLKMES .SBYTE "Block fill" FNTMES .SBYTE "Loading font" DEFMES .SBYTE "Define block" STPMES .SBYTE "Copy block" ; ;clearline ; CLRLN1 LDY #39 LDA #0 CN1 STA TXLN,Y DEY BPL CN1 RTS ; ;Clear Text Window ; CLRTXT LDY #160 LDA #0 CTLP STA TXTWIN,Y DEY CPY #$FF BNE CTLP RTS ; ;colors ; COLORS LDX #<COLMES LDA #>COLMES JSR PRINT CKEY LDA CH LDX #$FF CMP #$FF BEQ CKEY CMP #$1C ;out BEQ CA LDY #4 CMS CMP CLRKEY,Y BEQ CCC DEY BPL CMS BMI CKEY CA STX CH RTS CCC LDA CLREG,Y ;offset STA CREG ;save it JSR CLRLN1 ;Change Register LDX #<REGMES LDA #>REGMES JSR PRINT JSR DISREG LDY CREG LDA COLOR0,Y PHA AND #$F0 STA X2 PLA AND #$0F STA X3 CSTK LDA STICK0 CMP #7 ;rt BNE CLF LDA X2 CLC ADC #16 STA X2 JMP SCOLR CLF CMP #11 BNE CUP LDA X2 SEC SBC #16 STA X2 JMP SCOLR CUP CMP #14 BNE CDN INC X3 INC X3 LDA X3 AND #$0F STA X3 JMP SCOLR CDN CMP #13 BNE CSTG DEC X3 DEC X3 LDA X3 AND #$0F STA X3 SCOLR LDA X2 ORA X3 LDY CREG STA COLOR0,Y JSR DISREG JSR DELAY CSTG LDA STRIG0 BNE CSTK CC2 LDA STRIG0 BNE CC2 RTS ; CLRKEY .BYTE $32,$1F,$1E,$1A,$18 CLREG .BYTE 0,1,2,3,4 ; ;Show X/Y Position ; SHWXY LDA XPOS LDX #10 JSR RJUST LDA YPOS LDX #16 JSR RJUST ; ;Show character ; LDY YPOS JSR WHER LDY XPOS LDA (JL),Y STA STSLN+22 ; NOERM LDY #3 NLP LDA NOM,Y STA STSLN+31,Y DEY BPL NLP RTS ; ;Right justify a number ; RJUST STA FR0 LDA #0 STA FR0+1 TXA PHA JSR IFP JSR FASC LDY #2 LDA #'0 RJ1 STA NBF,Y DEY BPL RJ1 LDY #$FF RJ2 INY LDA (INBUFF),Y BPL RJ2 AND #$7F STA (INBUFF),Y INY TYA EOR #3 AND #3 TAX LDY #0 RJ3 LDA (INBUFF),Y STA NBF,X INY INX CPX #3 BNE RJ3 LDY #3 PLA TAX RJ4 LDA NBF,Y AND #$1F STA STSLN,X DEX DEY BPL RJ4 RTS ; ;Set up Status Line ; SETSTS LDY #39 LDA #0 STLP STA STSLN,Y DEY BPL STLP LDY #24 STLX LDA SLD,Y STA STSLN+5,Y DEY BPL STLX JMP SHWXY SLD .SBYTE "X:000 Y:000 CHAR: " .SBYTE "Error:" ; WHER LDA M128L,Y STA JL LDA M128H,Y STA JL+1 RTS ; DRAW LDA #$FF STA NPTS LDA #>DRWMES LDX #<DRWMES JSR PRINT DRG JSR GETTWO BCS DRP DODRW LDA DRX CMP DRX+1 BEQ DUD ;up/dn LDA DRY CMP DRY+1 BNE DRP LDA DRX+1 CMP DRX BCS DR5 PHA LDA DRX STA DRX+1 PLA STA DRX DR5 JSR DRLR JMP DRG DRP LDA #$FF STA CH RTS ; ;Up and Down DUD LDA DRY+1 CMP DRY BEQ DRP BCS UYOK PHA LDA DRY STA DRY+1 PLA STA DRY UYOK JSR DWUD JMP DRP ; ;Do Up/Down Draw DWUD LDY DRY+1 DDB JSR WHER LDY DRX LDA PCHR STA (JL),Y DEC DRY+1 LDY DRY+1 CPY DRY BNE DDB JSR WHER LDY DRX LDA PCHR STA (JL),Y RTS ; ;Draw left and right DRLR LDY DRY JSR WHER LDY DRX+1 LDA PCHR DR7 STA (JL),Y DEY CPY DRX BNE DR7 STA (JL),Y DR8 RTS ; ;Click Speaker ; CLICK LDA #0 STA CONSOL RTS ; BLOCK LDA #$FF STA NPTS LDA #>BLKMES LDX #<BLKMES JSR PRINT JSR GETTWO BCC BAB BAC RTS BAB LDA DRX+1 CMP DRX BEQ BAC BCC BAC LDA DRY+1 CMP DRY BEQ BAC BCC BAC INC DRY+1 BAD JSR DRLR INC DRY LDA DRY CMP DRY+1 BNE BAD BEQ BAC ; ;Get two screen Positions GETTWO LDA #$FF STA NPTS GTWO LDA CH CMP #$1C BNE DRS LDA #$FF STA CH SEC RTS DRS LDA STICK0 CMP #$0F BEQ DRU JSR GENMOV JSR TIME DRU LDA STRIG0 BNE GTWO JSR CLICK REL LDA STRIG0 BEQ REL INC NPTS LDY NPTS LDA XPOS STA DRX,Y LDA YPOS STA DRY,Y LDA NPTS CMP #1 BEQ GOM JMP GTWO GOM CLC RTS CMTAB .WORD KSELECT .WORD COLORS .WORD DRAW .WORD BRIGHT .WORD BLOCK .WORD FONT .WORD LOADM .WORD SAVEM .WORD QUIT .WORD CLRMAP .WORD RESTART .WORD HOME .WORD DEFINE .WORD XEROX .WORD DEFKEY ; CMKEY .BYTE $05,$12,$3A,$0A .BYTE $15,$38,$00,$3E,$2F .BYTE $B6,$B9,$39,$25 .BYTE $16,$2D ;k c d q clr ^h h m x t ; ;Change Luminance of Player ; BRIGHT LDA PCOLR0 EOR #$0E STA PCOLR0 RTS ; ;Load Font ; FONT LDX #<FNTMES LDA #>FNTMES JSR PRINT JSR GTNAME BCC FAA RTS FAA LDX #$10 JSR CLOSE LDA #3 STA ICCOM,X LDA #>FNAME STA ICBAH,X LDA #<FNAME STA ICBAL,X LDA #0 STA AUX2,X LDA #4 STA AUX1,X JSR CIOV BPL FAB FAC STY X2 JMP IOERR FAB LDA #7 STA ICCOM,X LDA #>CHSET STA ICBAH,X LDA #0 STA ICBAL,X LDA #4 STA ICBLH,X LDA #0 STA ICBLL,X JSR CIOV STY X2 BMI IOERR LDX #$10 JSR CLOSE JMP NOERM ; IOERR LDX #$10 JSR CLOSE JSR ZFR0 LDA X2 LDX #34 JSR RJUST JMP GETKEY ; ;Open keyboard ; OPNKEY LDX #$20 JSR CLOSE LDA #3 STA ICCOM,X LDA #>KDEV STA ICBAH,X LDA #<KDEV STA ICBAL,X LDA #0 STA AUX2,X LDA #4 STA AUX1,X JMP CIOV ; NOM .SBYTE +$80,"None" KDEV .BYTE "K:",EOL ; ;Get a Key from CIO GETKEY LDA #0 LDX #$20 STA ICBLL,X STA ICBLH,X LDA #7 STA ICCOM,X JMP CIOV ; ;Get filename ; GTNAME LDY #0 TYA GT1 STA TXLN+18,Y INY CPY #13 BNE GT1 LDA #$24 STA TXLN+16 LDA #$1A STA TXLN+17 LDX #0 INLP STX X3 LDA #$3F STA TXLN+18,X ;cursor LDA #0 STA 694 LDA #64 STA 702 JSR GETKEY LDX X3 CMP #$1B BNE GT2 SEC RTS GT2 CMP #$9B BEQ INEOL AND #$7F CMP #$20 BCC INLP CMP #126 BNE INEXT CPX #0 BEQ INLP DEX LDA #0 STA TXLN+18,X STA TXLN+19,X BEQ INLP ; INEXT CMP #96 BEQ INLP CMP #123 BCS INLP CPX #13 BEQ INLP PHA STA FNAME+2,X ROL A ROL A ROL A ROL A AND #3 TAY PLA AND #$9F ORA A2I,Y STA TXLN+18,X INX BNE INLP ; INEOL STA FNAME+2,X CLC RTS ; ;Show color register ; DISREG LDY CREG RGD LDA CRG1,Y STA TXLN+11 LDA CRG2,Y STA TXLN+12 LDA COLOR0,Y PHA AND #$F0 LSR A LSR A LSR A LSR A JSR HEX STA TXLN+19 PLA AND #$0F JSR HEX STA TXLN+27 RTS ; HEX TAX LDA HEXB,X RTS ; HEXB .SBYTE "0123456789ABCDEF" ; CRG1 .SBYTE "00111" CRG2 .SBYTE "89012" REGMES .SBYTE " Color: 7 Hue:$ Lum:$" ; ;Load a Map LOADM LDA #4 ;read STA X2 LDA #7 STA PGT LDA #>LODMES LDX #<LODMES INLOD JSR PRINT JSR GTNAME BCC NMOK RTS NMOK LDX #$10 JSR CLOSE LDA X2 STA AUX1,X LDA #3 STA ICCOM,X LDA #>FNAME STA ICBAH,X LDA #<FNAME STA ICBAL,X LDA #0 STA AUX2,X JSR CIOV BPL RWOK STY X2 RWER JMP IOERR RWOK LDX #$10 LDA #>SCNMEM STA ICBAH,X LDA #<SCNMEM STA ICBAL,X LDA #0 STA ICBLL,X LDA #10 STA ICBLH,X LDA PGT STA ICCOM,X JSR CIOV STY X2 BMI RWER LDX #$10 JSR CLOSE JMP NOERM ; ;Save a map ; SAVEM LDA #8 ;write STA X2 LDA #11 STA PGT LDA #>SAVMES LDX #<SAVMES JMP INLOD ; ;quit QUIT LDA #>QUTMES LDX #<QUTMES JSR PRINT JSR SURE BCS NOQ PLA PLA JSR MOVEB LDA #0 STA HPOSP0 STA HPOSP0+1 LDA #6 LDY #<SYSVBV LDX #>SYSVBV JSR SETVBV JMP WARMSV NOQ RTS ; ;Clear Map CLRMAP LDA #>SURMES LDX #<SURMES JSR PRINT JSR SURE BCS ERT JSR CLRSCN ERT RTS ; ;sure? SURE LDA CH LDX #$FF CMP #$23 BEQ NO CMP #$2B BNE SURE STX CH CLC RTS NO STX CH SEC RTS LODMES .SBYTE "Loading file" SAVMES .SBYTE "Saving file" SURMES .SBYTE "CLEAR! Are you sure Y/N" QUTMES .SBYTE "QUIT! Are you sure Y/N" ; ;restart RESTART JSR MOVEB PLA PLA JMP RSTRT ; ;home HOME JSR MOVEB PLA PLA JMP RBEG ; ;Get Display List back MOVEB LDY #50 MDLB LDA BCKUP,Y STA DL1,Y DEY BPL MDLB RTS ; ;Define block DEFINE LDA #>DEFMES LDX #<DEFMES JSR PRINT LDA #$FF STA NPTS JSR GETTWO BCC DFJ DFR RTS DFJ LDA DRY+1 SEC SBC DRY CMP #10 BCS DFR TAX ;keep LDA DRX+1 SEC SBC DRX CMP #10 BCS DFR STA DBH STX DBV LDA #0 STA YH3 LDA DRX STA YH2 INC DRX+1 INC DRY+1 DFK LDY DRY JSR WHER DFL LDY YH2 LDA (JL),Y LDY YH3 STA DEFBLK,Y INC YH3 INC YH2 LDA YH2 CMP DRX+1 BNE DFL LDA DRX STA YH2 INC DRY LDA DRY CMP DRY+1 BNE DFK LDA #1 STA XERXFLG ;set flag RTS ; ;xerox XEROX LDA XERXFLG ;chk if BNE XEROX1 ;block defined RTS XEROX1 LDA #>STPMES LDX #<STPMES JSR PRINT XST LDA STICK0 CMP #$0F BEQ XKY JSR GENMOV JSR TIME XKY LDA CH CMP #$1C BNE XTRG LDA #$FF STA CH RTS XTRG LDA STRIG0 BNE XST JSR CLICK XT2 LDA STRIG0 BEQ XT2 JSR DELAY LDA XPOS STA DRX STA YH3 CLC ADC DBH STA DRX+1 INC DRX+1 CMP #128 BCC XAA XAB RTS XAA LDA YPOS STA DRY CLC ADC DBV STA DRY+1 INC DRY+1 CMP #18 BCS XAB ;do xerox LDA #0 STA YH2 XLQ LDY DRY JSR WHER XLP LDY YH2 LDA DEFBLK,Y LDY YH3 STA (JL),Y INC YH3 INC YH2 LDA YH3 CMP DRX+1 BNE XLP LDA DRX STA YH3 INC DRY LDA DRY CMP DRY+1 BNE XLQ RTS ; ;Define a key DEFKEY JSR KSELECT LDA #>KEYMES LDX #<KEYMES JSR PRINT DKEY LDA CH CMP #$FF BEQ DKEY CMP #$1C BNE DKO RTS DKO LDY #9 DK2 CMP KEYK,Y BEQ DK3 DEY BPL DK2 BMI DKEY DK3 LDA PCHR STA KCHRS,Y RTS ; KEYMES .SBYTE " Define 1-0 " ; KEYK .BYTE $1F,$1E,$1A,$18 .BYTE $1D,$1B,$33,$35 .BYTE $30,$32 ; ;Switch keys ; SWITCH LDY #9 SW1 CMP KEYK,Y BEQ SW2 DEY BPL SW1 SEC RTS SW2 LDA KCHRS,Y STA PCHR LDA #$FF STA CH CLC RTS FNAME .BYTE "D:" ; .DS 15 M128L .DS 36 M128H .DS 36 DEFBLK .DS 120 *= $02E0 .WORD BEGIN