A.N.A.L.O.G. ISSUE 75 / AUGUST 1989 / PAGE 10

Capital!

by Bryan Schappel and Barry Kolbe

For all of you out there who have always wanted to own it all, here is your chance. Get your checkbook, grab your accountant and get ready for Capital!, a game of high finance where you get to live out your fondest capitalistic dreams. This game is written in 100% machine language; so play is fast and cruel.

Typing It In

Capital! is printed in two listings. Listing 1 is the BASIC data used to create the CAPITAL.OBJ file on your disk. Follow the directions in M/L Editor, found elsewhere in this issue, for typing instructions.

Listings 2 through 7 are the complete commented MAC/65 source code for Capital! They need not be typed in to play the game; they are provided for those readers interested in how the program works or who are learning 6502 assembly.

After you have created the CAPITAL. OB J file just binary load it from DOS to play the game.

Rules of Play

To play Capital!, you must first choose your game options. There are only two: a fast or slow game and the number of players (2-4). The Option key is used to toggle between fast and slow. Use the Select key to choose the number of players. Pressing Start begins the game. Any time you wish to restart the game, press System Reset.

A fast game is the default setting. In a fast game, if a player cannot pay a fee or a debt, that person is “quo;broke” and may no longer play. The player’s token is removed from the game, and the player goes to debtor’s prison. In a slow game a player must sell businesses in order to get enough cash to pay his debts. Of course, the player could still go broke in a slow game. The winner is the last player on the board.

One last item: All money in this game is in $1,000 denominations, denoted by a G following the amount.

Names Screen

Each player must enter his name (up to eight characters long). Only the letters A through Z may be used. The Return key is used to end the name, and Delete/Backspace is used to edit.

THERE ARE SEVERAL SPECIFIC LOCATIONS:
SymbolLocationResult
$Stock MarketYou receive $12G ($12,000).
LLuck SquareGame goes to the transaction screen.
HHog HiltonNothing; it’s a vacation.
TTax SquareYou lose 12% of your cash.
CCapital Gains TaxGame goes to the transaction screen.

USA Map Screen

This is the game board: a map of the U.S. showing mountain ranges, dice and little squares and circles which represent businesses. Your task is to travel around the U.S. and buy up as many of these as possible, thus making as much money as you can and becoming a true capitalist. Near the bottom of the screen the current player’s name is shown with his token number. You can see the tokens below the dice when the game is first started. The bottom line shows how much cash each player has.

Press Option to start the dice rolling and use Select to stop them. Your token will move automatically around the screen. The name of each business is shown as your token moves by or lands on it. If you land on one of these, the game will take you to the transaction screen (see below). The game waits eight seconds so you can see what happened. If you tire of waiting those eight seconds, just press a key to skip the wait.

If you land on $, H or T, you are not allowed to carry on any transactions on that turn.

Transaction Screen

The Luck and Capital Gains squares will be discussed at the end of this section. Usually you arrive at this screen because you landed on a property. The top line has the property’s name on it. Below the name is information about the business: purchase price, resale price, improvement level, double status, fee and the owner’s name.

Resale price is the amount you will receive if you sell this property voluntarily. It is between half price and full price. If you are forced to sell a property (slow game) because of insufficient funds, the resale price is half of the purchase price.

The improvement level of each property starts at 0 and may go up to 3. Improving a business costs $10G and increases the purchase price (and hence resale price) by $5G. More importantly, each increase doubles the fee other players must pay you when they land on this business.

Some businesses are “doubles.” If you land on a double, you have the option of buying it and its other half on the same turn. Buying the second half costs one and one-half of the double’s normal purchase price. The reason you want to get doubles is that anyone landing on one double gets charged a fee equal to the sum of both fees!

If the property you landed on is unowned you may purchase it, assuming you have enough cash. Next you may sell a property. Finally, you may improve a property. If you respond “y” to either of the last two options, the game goes to the pick property screen. You may cycle through the properties using the spacebar. Press Return to choose a property. You may exit using the Escape key. The only time you cannot use the Escape key is in a slow game if you are forced to sell. You must sell enough properties to obtain the cash to pay your debts. You may sell and/or improve any property you own, not just the one you landed on.

If another player owns the property you landed on, you are required to buy goods and/or services by paying the player a fee. If you have enough cash, it is automatically deducted from your account. The message “Transaction completed” lets you know this has been done. In the fast game, if you don’t have sufficient funds to pay, you are broke and may no longer play. Your properties are confiscated and will be available for sale to the other players (at half price!).

In the slow game you must sell properties to pay your debts. It is possible to get two “Transaction completed” messages. The first would be for selling a property; the second would be for paying a fee. This message stays on the screen for eight seconds. You may skip the wait by pressing any key.

The Luck Square

Luck, as we all know, can be good or bad. If your luck is good, you could win $10G, $15G, or a free improvement for a property. If you don’t have a property to improve, you will get $10G instead. Bad luck results in losing $10G, in one business fee being cut in half, or in having the purchase price (and thus resale price) on a business cut in half.

Capital Gains Tax

This is like bad luck—only worse. If you land on this square you lose $45G.

Technical Notes

The program functions on a custom GRAPHICS narrow play field screen, an ANTIC 4 map screen and a unique intro screen. This intro screen was produced by using a very long DLL The word “CAPITAL!” was made from ordinary control characters. Examine the source code to see how the letters were shaded.

This game can make friends or enemies for you—hope you can be a good capitalist!

Barry Kolbe is a high school math teacher who uses his Atari in the classroom to demonstrate graphing. Bryan Schappel is currently setting up a new home with his wife Carol.

Listing 1: M/L Editor Data

1000 DATA 255,255,0,48,2,48,76,148,57,64,49,85,75,0,0,0,7658
1010 DATA 0,0,0,0,0,253,245,215,215,215,215,245,253,127,95,215,5285
1020 DATA 215,215,215,95,127,253,247,223,223,223,223,247,253,127,223,247,374
1030 DATA 247,247,247,223,127,213,213,215,215,215,215,213,213,87,87,215,6266
1040 DATA 215,215,215,87,87,255,250,234,235,235,235,234,250,255,175,175,368
1050 DATA 239,255,239,175,175,85,85,85,85,85,85,85,85,85,85,85,4376
1060 DATA 105,105,85,85,85,255,234,238,254,254,254,254,250,255,171,187,512
1070 DATA 191,191,191,191,175,255,171,235,234,234,235,235,171,255,234,235,1376
1080 DATA 171,171,235,235,234,255,254,234,235,234,255,234,254,255,191,171,2129
1090 DATA 255,171,235,171,191,213,223,223,223,223,223,223,213,87,247,247,9664
1100 DATA 247,247,247,247,87,255,234,235,235,235,235,234,234,255,255,255,3428
1110 DATA 255,255,239,175,175,95,95,95,95,95,95,95,95,245,245,245,2412
1120 DATA 245,245,245,245,245,239,191,255,251,238,191,254,255,255,255,255,4184
1130 DATA 255,255,255,255,255,0,255,255,255,255,255,255,255,0,0,255,6885
1140 DATA 255,255,255,255,255,0,0,0,255,255,255,255,255,0,0,0,8990
1150 DATA 0,255,255,255,255,0,0,0,0,0,255,255,255,0,0,0,3900
1160 DATA 0,0,0,255,255,0,0,0,0,0,0,0,255,192,192,240,6178
1170 DATA 240,252,252,255,255,240,240,240,240,252,252,252,252,3,3,15,4084
1180 DATA 15,63,63,255,255,15,15,15,15,63,63,63,63,255,255,252,8580
1190 DATA 252,252,240,240,192,252,252,252,252,240,240,240,240,255,255,191,3637
1200 DATA 191,175,47,43,11,191,191,191,191,47,47,47,47,255,255,255,1476
1210 DATA 255,255,255,255,170,255,255,255,255,255,255,170,170,255,255,255,3340
1220 DATA 255,255,170,170,0,191,191,191,191,191,191,191,191,168,168,0,2563
1230 DATA 0,0,0,0,0,254,250,240,240,192,192,192,192,207,207,207,6731
1240 DATA 207,207,207,63,63,63,63,63,63,255,255,255,255,255,255,255,8144
1250 DATA 255,63,63,63,63,255,255,255,255,255,255,63,15,240,240,240,7143
1260 DATA 240,240,192,192,0,252,252,252,252,252,252,252,252,3,3,3,2611
1270 DATA 3,15,15,15,15,63,63,63,63,255,255,255,255,192,192,192,3743
1280 DATA 192,240,240,252,255,3,3,3,3,15,15,63,255,192,192,192,8071
1290 DATA 192,192,192,192,192,3,3,3,3,3,3,3,3,0,0,0,4398
1300 DATA 3,3,15,15,63,240,252,255,255,252,255,252,252,240,252,252,2065
1310 DATA 252,252,252,252,240,252,240,192,192,0,0,0,0,252,240,240,2454
1320 DATA 240,192,192,192,192,192,192,192,192,240,240,252,252,192,192,240,756
1330 DATA 240,240,252,252,252,252,252,252,240,240,240,192,192,252,240,192,2566
1340 DATA 240,252,252,255,255,192,0,0,0,192,192,192,192,11,11,11,5614
1350 DATA 11,11,11,15,15,15,15,15,63,63,63,255,255,0,0,3,179
1360 DATA 3,3,15,15,63,0,48,188,191,47,47,11,11,15,15,15,7285
1370 DATA 207,255,255,255,255,12,60,240,255,255,255,255,255,0,0,0,1584
1380 DATA 0,252,240,0,0,255,255,255,255,255,240,192,192,240,192,0,6484
1390 DATA 0,0,0,0,0,255,255,255,255,255,255,255,252,255,191,191,222
1400 DATA 191,175,47,43,10,63,63,63,63,63,63,255,255,252,252,240,3040
1410 DATA 240,252,252,255,255,0,0,0,0,3,15,63,255,0,3,15,9756
1420 DATA 63,255,255,255,255,0,0,0,0,3,15,15,63,240,240,240,7047
1430 DATA 240,192,192,192,192,170,170,0,0,0,0,0,0,10,10,0,6858
1440 DATA 0,0,0,0,0,2,2,0,0,0,0,0,0,0,15,14,1915
1450 DATA 8,25,21,0,12,20,22,28,0,4,6,15,7,5,0,5,2656
1460 DATA 8,14,18,0,7,19,3,0,16,15,21,19,14,0,31,12,3312
1470 DATA 10,0,23,37,25,69,65,0,41,60,73,84,0,12,15,38,6472
1480 DATA 17,13,0,18,27,36,37,0,22,51,11,0,53,48,56,61,6211
1490 DATA 32,0,100,47,42,128,0,0,0,2,2,4,0,0,2,2,3140
1500 DATA 128,0,0,0,2,2,128,0,2,2,0,4,0,0,0,128,4680
1510 DATA 2,2,0,2,2,4,0,2,2,119,1,119,1,119,1,119,7819
1520 DATA 1,0,11,17,26,0,9,18,27,0,0,0,0,5,4,0,2332
1530 DATA 0,0,10,9,0,0,0,0,16,15,0,0,20,19,0,0,2416
1540 DATA 0,0,0,0,28,27,0,31,30,0,0,35,34,15,13,10,3787
1550 DATA 5,3,1,112,112,112,70,67,53,6,48,98,0,32,0,34,7503
1560 DATA 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,6184
1570 DATA 2,176,194,227,48,32,70,99,53,65,166,52,112,112,112,112,5201
1580 DATA 112,112,70,119,53,112,112,70,0,32,112,6,112,6,112,6,9823
1590 DATA 65,207,52,112,112,112,240,66,139,53,2,2,2,2,48,6,8810
1600 DATA 112,6,112,6,48,86,143,54,48,86,164,54,112,112,70,185,5051
1610 DATA 54,112,6,112,112,112,6,86,245,54,65,230,52,112,112,80,5740
1620 DATA 68,0,112,4,4,4,4,4,4,4,4,4,4,4,4,4,2544
1630 DATA 4,4,4,4,4,4,132,70,99,53,194,11,55,160,66,227,4462
1640 DATA 48,65,16,53,64,0,32,96,32,64,0,96,0,0,0,0,5470
1650 DATA 0,0,0,0,35,33,48,41,52,33,44,1,0,0,0,0,3981
1660 DATA 0,0,244,242,225,238,243,225,227,244,233,239,238,243,0,0,5824
1670 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1670
1680 DATA 0,0,0,0,0,0,101,110,116,101,114,0,121,111,117,114,3281
1690 DATA 0,110,97,109,101,115,0,0,0,0,0,72,128,128,74,0,9262
1700 DATA 72,128,128,74,0,72,128,128,74,0,72,128,74,0,72,128,2144
1710 DATA 74,0,72,128,128,74,0,74,0,0,0,0,72,0,0,0,5124
1720 DATA 0,0,0,128,200,0,0,0,128,200,202,128,0,128,200,202,8166
1730 DATA 128,0,0,128,0,0,0,128,0,0,128,200,202,128,0,128,3668
1740 DATA 0,0,0,0,128,0,0,0,0,0,0,128,0,0,0,0,3916
1750 DATA 128,82,82,128,0,128,128,128,200,0,0,128,0,0,0,128,872
1760 DATA 0,0,128,82,82,128,0,128,0,0,0,0,128,0,0,0,6338
1770 DATA 0,0,0,128,74,0,0,0,128,0,0,128,0,128,0,0,7132
1780 DATA 0,0,0,128,0,0,0,128,0,0,128,0,0,128,0,128,8564
1790 DATA 74,0,0,0,200,0,0,0,0,0,0,202,128,128,200,0,1744
1800 DATA 200,0,0,202,0,200,0,0,0,0,202,128,200,0,0,128,2414
1810 DATA 0,0,200,0,0,202,0,202,128,128,200,0,79,0,0,0,897
1820 DATA 231,225,237,229,0,239,230,0,232,233,231,232,0,230,233,238,7438
1830 DATA 225,238,227,229,0,0,0,112,114,111,103,114,97,109,109,101,5699
1840 DATA 100,0,98,121,90,0,0,0,0,0,0,162,178,185,161,174,5215
1850 DATA 0,179,163,168,161,176,176,165,172,0,0,0,0,0,0,0,9330
1860 DATA 0,0,0,0,0,0,161,174,164,0,0,0,0,0,0,0,5855
1870 DATA 0,0,0,0,0,0,0,162,161,178,178,185,0,171,175,172,8344
1880 DATA 162,165,0,0,0,0,0,239,240,244,233,239,238,0,0,0,7409
1890 DATA 102,97,115,116,0,103,97,109,101,0,0,51,37,44,37,35,8897
1900 DATA 52,0,0,0,146,0,176,172,161,185,165,178,179,0,0,0,4867
1910 DATA 0,35,47,48,57,50,41,39,40,52,0,17,25,24,24,0,5602
1920 DATA 0,0,0,0,0,0,98,98,107,0,101,110,116,101,114,112,3208
1930 DATA 114,105,115,101,115,0,0,0,0,66,175,176,180,169,175,174,8390
1940 DATA 86,50,47,44,44,0,36,41,35,37,0,0,0,66,179,165,177
1950 DATA 172,165,163,180,86,51,52,47,48,0,36,41,35,37,0,0,7430
1960 DATA 0,0,51,116,111,99,107,0,45,97,114,107,101,116,0,36,1901
1970 DATA 105,118,105,100,101,110,100,115,0,112,97,121,0,121,111,117,4681
1980 DATA 0,4,17,18,39,0,0,0,0,0,41,50,51,0,52,97,6352
1990 DATA 120,0,33,117,100,105,116,26,0,108,111,115,101,0,17,18,364
2000 DATA 5,0,111,102,0,121,111,117,114,0,99,97,115,104,0,0,1415
2010 DATA 0,0,0,0,54,97,99,97,116,105,111,110,0,116,105,109,3909
2020 DATA 101,0,97,116,0,116,104,101,0,40,111,103,0,40,105,108,1828
2030 DATA 116,111,110,0,0,0,0,0,102,97,115,116,115,108,111,119,3819
2040 DATA 66,82,79,75,69,0,125,32,32,80,114,111,112,58,155,32,3062
2050 DATA 80,114,105,99,101,58,32,32,32,32,32,32,32,32,32,82,8402
2060 DATA 101,115,97,108,101,58,155,32,76,101,118,101,108,58,32,32,2720
2070 DATA 32,32,32,32,32,32,32,68,111,117,98,108,101,58,155,32,3015
2080 DATA 32,32,70,101,101,58,32,32,32,32,32,32,32,32,32,32,7323
2090 DATA 79,119,110,101,114,58,0,89,101,115,0,78,111,0,78,111,2155
2100 DATA 110,101,0,66,10,2,212,0,148,6,0,66,0,196,150,10,1560
2110 DATA 15,0,32,104,97,115,32,119,111,110,33,155,80,114,101,115,5301
2120 DATA 115,32,97,32,107,101,121,32,116,111,32,112,108,97,121,32,3901
2130 DATA 97,103,97,105,110,46,0,32,105,115,32,66,114,111,107,101,3722
2140 DATA 33,155,0,32,112,114,111,112,101,114,116,121,32,91,89,47,4082
2150 DATA 78,93,63,0,155,155,73,109,112,114,111,118,101,32,97,0,3692
2160 DATA 155,155,83,101,108,108,32,97,0,155,155,66,117,121,32,116,5064
2170 DATA 104,105,115,0,155,155,83,80,67,61,110,101,120,116,44,32,3746
2180 DATA 82,69,84,61,99,104,111,111,115,101,0,44,32,69,83,67,1952
2190 DATA 61,101,120,105,116,0,155,155,84,114,97,110,115,97,99,116,6615
2200 DATA 105,111,110,32,112,114,111,99,101,115,115,101,100,46,0,155,4758
2210 DATA 155,73,110,115,117,102,102,105,99,105,101,110,116,32,102,117,5782
2220 DATA 110,100,115,46,0,155,155,68,111,117,98,108,101,32,79,112,4899
2230 DATA 116,105,111,110,46,0,155,155,65,116,32,77,97,120,105,109,5165
2240 DATA 117,109,32,76,101,118,101,108,0,155,155,70,101,101,32,80,4341
2250 DATA 97,121,109,101,110,116,32,82,101,113,117,105,114,101,100,46,5164
2260 DATA 0,155,155,65,109,111,117,110,116,32,111,119,101,100,32,0,3411
2270 DATA 169,62,141,47,2,169,1,141,111,2,162,3,169,0,133,159,4906
2280 DATA 157,8,208,202,16,250,169,3,141,29,208,169,128,141,7,212,9682
2290 DATA 162,3,169,120,149,145,189,111,57,149,141,202,16,244,162,3,9351
2300 DATA 189,250,61,157,192,2,169,0,149,149,202,16,243,169,0,133,8853
2310 DATA 153,169,62,141,47,2,169,1,141,111,2,96,96,104,112,120,4846
2320 DATA 173,63,53,240,3,32,238,58,173,64,53,240,3,32,4,59,3226
2330 DATA 173,65,53,240,3,32,26,59,173,66,53,240,3,32,48,59,2444
2340 DATA 96,216,162,255,154,32,7,75,32,132,60,32,41,72,32,35,1218
2350 DATA 57,32,211,58,32,200,70,32,227,60,32,70,62,169,16,141,4945
2360 DATA 48,2,169,53,141,49,2,169,48,141,244,2,32,100,57,162,5309
2370 DATA 4,189,245,61,157,196,2,202,16,247,169,0,133,159,133,173,513
2380 DATA 169,142,141,0,2,169,59,141,1,2,32,115,57,166,153,189,5966
2390 DATA 63,53,208,3,76,200,58,160,0,189,120,52,133,130,169,40,7019
2400 DATA 133,131,177,130,240,3,200,208,249,132,174,169,20,56,229,174,2894
2410 DATA 74,170,160,19,169,0,153,99,53,136,16,250,200,169,59,157,9464
2420 DATA 95,53,169,61,157,97,53,165,153,24,105,17,157,96,53,177,6418
2430 DATA 130,240,10,32,70,71,157,99,53,232,200,208,242,169,53,157,2177
2440 DATA 100,53,169,48,157,101,53,173,31,208,201,3,208,249,32,205,1047
2450 DATA 59,165,153,10,170,189,126,59,141,99,58,189,127,59,141,100,8033
2460 DATA 58,189,134,59,141,129,58,189,135,59,141,130,58,198,157,32,8240
2470 DATA 70,59,166,153,246,149,181,149,201,36,208,4,169,0,149,149,9672
2480 DATA 181,149,168,185,173,61,149,141,185,209,61,149,145,32,238,58,650
2490 DATA 32,146,60,166,153,181,149,208,12,162,0,32,168,60,169,12,6079
2500 DATA 164,153,32,155,70,32,86,60,32,155,62,165,157,208,190,166,269
2510 DATA 153,181,149,160,3,217,116,52,240,12,136,16,248,32,97,60,6712
2520 DATA 32,211,58,32,250,72,32,227,60,166,153,181,149,240,3,32,8907
2530 DATA 238,60,32,70,62,230,153,165,153,41,3,133,153,76,176,57,7366
2540 DATA 162,0,138,157,0,132,157,0,133,157,0,134,157,0,135,232,7788
2550 DATA 208,241,162,3,157,0,208,136,16,250,96,162,0,164,145,189,206
2560 DATA 121,61,153,0,132,200,232,224,13,208,244,165,141,141,0,208,2534
2570 DATA 96,162,0,164,146,189,134,61,153,0,133,200,232,224,13,208,1851
2580 DATA 244,165,142,141,1,208,96,162,0,164,147,189,147,61,153,0,7950
2590 DATA 134,200,232,224,13,208,244,165,143,141,2,208,96,162,0,164,412
2600 DATA 148,189,160,61,153,0,135,200,232,224,13,208,244,165,144,141,4025
2610 DATA 3,208,96,164,145,169,0,162,12,153,0,132,200,202,16,249,9882
2620 DATA 96,164,146,169,0,162,12,153,0,133,200,202,16,249,96,164,150
2630 DATA 147,169,0,162,12,153,0,134,200,202,16,249,96,164,148,169,1265
2640 DATA 0,162,12,153,0,135,200,202,16,249,96,70,59,84,59,98,6364
2650 DATA 59,112,59,238,58,4,59,26,59,48,59,72,165,159,208,27,5444
2660 DATA 169,36,141,9,212,141,10,212,169,130,141,24,208,169,218,141,2288
2670 DATA 23,208,169,230,141,25,208,230,159,104,64,201,1,208,17,169,158
2680 DATA 162,141,10,212,141,24,208,169,0,141,26,208,230,159,104,64,9651
2690 DATA 169,162,141,10,212,141,26,208,104,64,169,0,133,157,32,55,6120
2700 DATA 60,162,0,160,0,177,155,157,77,113,232,200,192,3,208,245,3480
2710 DATA 162,0,177,155,157,117,113,232,200,192,6,208,245,162,0,177,2724
2720 DATA 155,157,157,113,232,200,192,9,208,245,32,55,60,160,0,162,8834
2730 DATA 5,177,155,157,77,113,232,200,192,3,208,245,162,7,177,155,2794
2740 DATA 157,115,113,232,200,192,6,208,245,162,5,177,155,157,157,113,2632
2750 DATA 232,200,192,9,208,245,141,31,208,32,86,60,173,31,208,201,616
2760 DATA 5,208,151,96,173,10,210,41,7,201,6,176,247,170,24,101,8559
2770 DATA 157,133,157,230,157,138,10,170,189,55,61,133,155,189,56,61,8622
2780 DATA 133,156,96,169,0,133,20,165,20,201,6,144,250,96,162,255,1535
2790 DATA 142,252,2,173,252,2,201,255,208,244,169,0,133,20,133,19,9332
2800 DATA 173,252,2,201,255,208,6,165,19,201,2,144,243,142,252,2,1062
2810 DATA 96,162,7,169,0,157,0,210,202,16,250,141,8,210,96,169,157
2820 DATA 133,141,0,210,169,168,141,1,210,32,86,60,169,0,141,0,5111
2830 DATA 210,141,1,210,96,189,224,60,72,133,158,32,227,60,238,46,24
2840 DATA 53,208,3,238,47,53,198,158,32,25,72,165,158,208,239,32,9846
2850 DATA 97,60,104,133,158,206,46,53,32,25,72,173,46,53,201,255,8524
2860 DATA 208,3,206,47,53,198,158,208,236,32,227,60,96,40,80,120,8692
2870 DATA 169,11,141,46,53,169,55,141,47,53,96,165,153,170,10,168,7656
2880 DATA 181,149,162,1,201,17,208,47,185,183,48,133,155,185,184,48,540
2890 DATA 133,156,70,156,102,155,70,156,102,155,70,156,102,155,185,183,1656
2900 DATA 48,56,229,155,153,183,48,185,184,48,229,156,153,184,48,32,370
2910 DATA 200,70,162,1,76,52,61,232,201,11,240,5,201,26,240,1,7927
2920 DATA 96,76,168,60,67,61,76,61,85,61,94,61,103,61,112,61,3623
2930 DATA 49,49,49,49,50,49,49,49,49,50,49,49,49,49,49,49,9609
2940 DATA 49,50,50,49,49,49,50,49,49,49,50,50,49,50,49,49,9653
2950 DATA 49,50,49,50,50,49,50,49,50,49,50,49,50,50,49,50,9695
2960 DATA 50,49,50,50,49,50,96,224,96,96,96,240,0,60,60,60,4927
2970 DATA 60,60,60,56,108,12,24,48,124,0,60,60,60,60,60,60,694
2980 DATA 126,12,24,12,102,60,0,60,60,60,60,60,60,27,27,31,9179
2990 DATA 31,3,3,0,60,60,60,60,60,60,152,152,144,136,128,120,6848
3000 DATA 112,104,96,88,80,80,72,64,64,64,64,64,72,80,88,96,3456
3010 DATA 104,112,120,128,136,136,136,144,152,160,168,168,168,160,120,136,3042
3020 DATA 136,136,136,136,136,136,136,136,136,120,120,120,104,88,72,56,7660
3030 DATA 56,56,56,56,56,56,56,56,56,72,88,88,88,88,88,104,3654
3040 DATA 120,120,78,160,244,224,130,2,66,122,198,250,74,72,70,68,8864
3050 DATA 66,64,62,60,58,56,232,230,228,148,68,244,164,166,168,170,4664
3060 DATA 172,174,176,178,180,182,6,86,88,90,92,94,174,254,252,113,2780
3070 DATA 114,114,114,114,114,114,114,114,114,114,113,113,113,113,113,112,8477
3080 DATA 112,112,112,112,112,112,112,112,112,112,113,113,113,113,113,113,8393
3090 DATA 113,113,113,162,35,189,254,61,133,155,189,34,62,133,156,189,1257
3100 DATA 147,48,48,13,208,15,160,0,169,57,145,155,200,169,58,145,9491
3110 DATA 155,202,16,225,96,201,1,208,13,169,45,160,0,145,155,200,9751
3120 DATA 169,46,145,155,208,235,201,2,208,13,160,0,169,43,145,155,9525
3130 DATA 200,169,44,145,155,208,218,201,3,208,214,160,0,169,41,145,1219
3140 DATA 155,200,169,42,145,155,208,201,32,203,62,169,11,141,46,53,7772
3150 DATA 169,49,141,47,53,166,153,181,149,10,170,189,235,64,133,155,1813
3160 DATA 189,236,64,133,156,160,0,162,10,177,155,240,10,32,70,71,6790
3170 DATA 157,11,49,200,232,208,242,96,162,39,169,0,157,11,49,202,9035
3180 DATA 16,250,96,66,97,114,45,66,45,81,32,82,97,110,99,104,4761
3190 DATA 0,82,105,110,103,97,100,105,110,103,32,80,104,111,110,101,6250
3200 DATA 0,67,114,111,115,115,101,121,101,32,67,97,98,108,101,32,5003
3210 DATA 84,86,0,79,108,100,101,32,89,111,114,107,101,32,84,105,5035
3220 DATA 109,101,115,0,83,112,117,100,115,32,80,111,116,97,116,111,6531
3230 DATA 32,70,97,114,109,0,66,108,97,99,107,32,71,111,108,100,5141
3240 DATA 32,79,105,108,0,82,101,120,32,65,117,116,111,32,67,111,4625
3250 DATA 114,112,46,0,84,104,114,101,100,98,97,114,101,32,67,108,5185
3260 DATA 111,116,104,105,110,103,0,75,111,108,98,101,39,115,32,67,4141
3270 DATA 104,101,101,115,101,0,68,97,105,115,121,39,115,32,68,97,4505
3280 DATA 105,114,121,0,66,108,97,99,107,32,74,97,99,107,39,115,4896
3290 DATA 32,67,97,115,105,110,111,0,68,101,97,116,104,32,86,97,4892
3300 DATA 108,108,101,121,32,83,112,97,0,65,100,97,109,115,32,65,4090
3310 DATA 112,112,108,101,32,79,114,99,104,97,114,100,0,83,111,117,5657
3320 DATA 114,32,71,114,97,112,101,115,32,86,105,110,101,121,97,114,6860
3330 DATA 100,0,83,104,111,114,116,32,67,105,114,99,117,105,116,32,5740
3340 DATA 80,32,38,32,76,0,72,101,97,118,121,32,87,97,116,101,5031
3350 DATA 114,32,67,111,109,112,97,110,121,0,83,116,121,116,99,104,6689
3360 DATA 39,115,32,67,108,105,110,105,99,0,83,99,104,97,112,112,5947
3370 DATA 101,108,39,115,32,83,99,97,108,112,101,108,115,0,67,114,5214
3380 DATA 111,115,115,116,114,97,120,32,82,97,105,108,119,97,121,0,5657
3390 DATA 68,114,105,112,32,68,114,121,32,67,108,101,97,110,101,114,6281
3400 DATA 115,0,74,101,116,115,116,114,101,97,109,32,65,105,114,108,6350
3410 DATA 105,110,101,115,0,72,65,76,32,67,111,109,112,117,116,101,5930
3420 DATA 114,115,0,83,101,108,109,97,114,116,32,83,116,111,114,101,6710
3430 DATA 115,0,73,79,85,32,80,101,110,110,101,121,115,0,87,105,5198
3440 DATA 108,116,39,115,32,86,101,103,101,116,97,98,108,101,115,0,5419
3450 DATA 84,105,116,97,110,105,99,32,83,104,105,112,112,105,110,103,7119
3460 DATA 0,83,116,101,97,108,32,83,116,101,101,108,119,111,114,107,7383
3470 DATA 115,0,83,105,108,105,99,111,110,32,71,117,108,99,104,0,4850
3480 DATA 68,105,115,97,115,116,114,111,117,115,32,73,110,115,117,114,7498
3490 DATA 97,110,99,101,0,84,104,101,32,76,117,99,107,32,83,113,4963
3500 DATA 117,97,114,101,0,0,67,97,112,105,116,97,108,32,71,97,4769
3510 DATA 105,110,115,32,84,97,120,0,216,64,113,64,131,64,56,63,5192
3520 DATA 253,63,237,63,200,64,17,64,41,63,72,64,165,64,216,64,6741
3530 DATA 119,63,139,63,86,64,156,63,176,63,216,64,35,64,23,63,4916
3540 DATA 214,62,53,64,200,64,228,62,101,64,71,63,216,64,90,63,6917
3550 DATA 105,63,148,64,244,62,6,63,217,64,179,64,217,63,197,63,9615
3560 DATA 165,163,170,189,75,48,133,172,169,0,133,173,189,124,52,208,1648
3570 DATA 1,96,168,185,3,48,197,166,208,14,185,75,48,24,101,172,8191
3580 DATA 133,172,165,173,105,0,133,173,96,32,41,67,16,1,96,169,4889
3590 DATA 103,160,56,32,125,71,32,186,65,240,1,96,165,153,10,168,8345
3600 DATA 185,184,48,208,10,185,183,48,201,11,176,3,76,225,66,32,7485
3610 DATA 45,66,166,168,48,2,208,1,96,189,39,48,201,3,144,10,5407
3620 DATA 169,233,160,56,32,125,71,76,97,60,189,75,48,10,157,75,5745
3630 DATA 48,254,39,48,189,111,48,24,105,5,157,111,48,169,10,164,6452
3640 DATA 153,32,178,70,76,208,66,169,86,160,56,32,125,71,32,102,6218
3650 DATA 71,201,43,208,1,96,201,35,208,244,201,0,96,32,51,65,7376
3660 DATA 169,252,160,56,32,125,71,169,0,133,171,240,4,169,1,133,8448
3670 DATA 171,165,153,10,168,185,184,48,197,173,240,2,176,9,185,183,2576
3680 DATA 48,197,172,144,27,240,25,164,153,165,172,32,178,70,169,0,9408
3690 DATA 133,164,165,171,208,7,164,166,165,172,32,155,70,76,208,66,455
3700 DATA 169,1,133,164,32,22,74,165,139,240,10,32,225,66,32,238,9338
3710 DATA 66,165,168,16,188,104,104,76,146,73,165,163,133,167,32,41,8592
3720 DATA 67,16,3,132,168,96,160,0,185,3,48,132,163,197,153,208,1199
3730 DATA 77,32,61,74,230,170,165,164,240,14,169,20,160,57,32,125,8744
3740 DATA 71,165,172,166,173,32,118,71,169,135,160,56,32,125,71,165,8946
3750 DATA 164,208,7,169,158,160,56,32,125,71,198,170,32,102,71,201,9603
3760 DATA 28,208,10,165,164,208,245,169,0,133,163,240,8,201,33,240,3285
3770 DATA 13,201,12,208,231,165,163,133,168,165,167,133,163,96,164,163,4529
3780 DATA 200,192,36,144,163,160,0,240,159,169,124,160,56,32,125,71,9335
3790 DATA 32,186,65,240,1,96,165,153,164,163,10,170,189,184,48,208,2646
3800 DATA 10,189,183,48,217,111,48,144,37,240,35,165,153,153,3,48,8210
3810 DATA 152,170,254,147,48,185,111,48,164,153,32,178,70,169,169,160,2028
3820 DATA 56,32,125,71,32,97,60,169,0,133,171,133,173,96,169,194,1152
3830 DATA 160,56,32,125,71,32,97,60,169,0,96,32,41,67,16,3,1124
3840 DATA 132,168,96,165,164,208,13,169,115,160,56,32,125,71,32,186,8477
3850 DATA 65,240,1,96,32,45,66,165,168,48,248,208,5,165,164,208,2373
3860 DATA 243,96,170,222,147,48,169,255,157,3,48,189,191,48,164,153,2241
3870 DATA 32,155,70,76,208,66,160,35,165,153,217,3,48,240,3,136,9205
3880 DATA 16,248,96,166,153,181,149,201,32,208,22,169,0,141,123,67,9375
3890 DATA 169,70,141,124,67,169,125,32,17,70,169,217,160,64,76,112,8822
3900 DATA 67,174,10,210,224,6,176,219,189,73,68,141,123,67,189,79,832
3910 DATA 68,141,124,67,169,125,32,17,70,169,200,160,64,32,222,68,8993
3920 DATA 169,98,160,68,32,125,71,32,255,255,76,208,66,169,10,208,1579
3930 DATA 2,169,15,164,153,133,165,32,155,70,32,158,67,169,117,160,9840
3940 DATA 68,32,125,71,165,165,162,0,76,118,71,169,85,160,68,32,7230
3950 DATA 125,71,96,32,183,68,48,213,170,189,39,48,201,3,176,205,996
3960 DATA 254,39,48,189,75,48,10,157,75,48,134,167,32,158,67,169,8151
3970 DATA 117,160,68,32,125,71,169,164,160,68,32,125,71,165,167,10,8155
3980 DATA 170,189,236,64,168,189,235,64,76,125,71,32,249,67,169,126,1448
3990 DATA 160,68,32,125,71,169,10,133,172,162,0,32,118,71,230,171,9651
4000 DATA 32,224,65,104,104,96,169,92,160,68,76,125,71,32,183,68,7766
4010 DATA 48,217,170,189,75,48,201,2,144,209,74,157,75,48,169,136,286
4020 DATA 160,68,72,132,155,32,249,67,32,21,70,104,164,155,32,125,7604
4030 DATA 71,165,168,10,170,189,236,64,168,189,235,64,76,125,71,32,193
4040 DATA 183,68,48,167,170,189,111,48,201,2,144,159,74,157,111,48,9230
4050 DATA 169,149,160,68,208,204,222,128,0,132,50,166,67,67,68,67,7874
4060 DATA 68,67,71,111,111,100,46,155,0,66,97,100,46,155,0,155,5811
4070 DATA 155,89,111,117,114,32,108,117,99,107,32,119,97,115,32,45,5470
4080 DATA 32,0,89,111,117,32,119,105,110,32,0,89,111,117,32,108,4940
4090 DATA 111,115,101,32,0,49,47,50,32,82,101,110,116,32,111,110,4805
4100 DATA 155,0,49,47,50,32,86,97,108,117,101,32,111,110,32,155,5990
4110 DATA 0,97,110,32,105,109,112,114,111,118,101,109,101,110,116,32,7340
4120 DATA 111,110,155,0,32,41,67,16,1,96,160,0,162,0,185,3,3577
4130 DATA 48,197,153,208,5,152,157,0,41,232,200,192,36,208,239,232,5769
4140 DATA 138,32,6,74,170,189,255,40,133,168,96,133,155,132,156,169,3181
4150 DATA 2,32,17,70,160,0,132,174,177,155,240,10,9,128,32,17,6227
4160 DATA 70,164,174,200,208,240,169,22,76,17,70,63,21,18,58,42,4166
4170 DATA 56,61,57,13,1,5,0,37,35,8,10,47,40,62,45,11,8210
4180 DATA 16,46,22,43,23,162,255,142,252,2,173,252,2,201,255,240,6254
4190 DATA 249,41,63,201,12,208,3,169,0,96,201,52,208,3,169,126,9287
4200 DATA 96,160,25,217,254,68,240,5,136,16,248,48,216,152,24,105,621
4210 DATA 65,96,133,155,132,156,160,0,132,174,169,127,145,155,32,24,9432
4220 DATA 69,162,0,142,31,208,164,174,201,0,240,35,201,126,208,14,1714
4230 DATA 192,0,240,228,169,0,145,155,136,145,155,76,75,69,192,8,9394
4240 DATA 176,214,153,51,49,32,70,71,9,128,145,155,200,208,201,153,2793
4250 DATA 51,49,145,155,96,169,207,141,48,2,169,52,141,49,2,169,7713
4260 DATA 58,141,47,2,160,4,185,32,56,153,196,2,136,16,247,32,7547
4270 DATA 15,70,169,0,133,130,169,32,133,131,162,0,169,251,145,130,2071
4280 DATA 200,138,24,105,209,145,130,200,169,253,145,130,152,24,105,18,1054
4290 DATA 168,232,228,138,208,230,160,0,132,175,165,130,24,105,4,164,477
4300 DATA 131,32,69,69,173,51,49,240,239,165,130,24,105,20,133,130,9651
4310 DATA 169,40,133,156,164,175,185,120,52,133,155,160,8,185,51,49,9373
4320 DATA 145,155,136,16,248,164,175,200,196,138,208,204,96,32,249,67,4679
4330 DATA 169,126,160,68,32,125,71,169,45,76,234,67,169,125,201,155,2247
4340 DATA 208,7,169,0,133,128,230,129,96,201,126,208,12,32,94,70,9034
4350 DATA 32,119,70,169,0,168,145,130,96,201,125,208,20,160,0,152,246
4360 DATA 153,0,32,153,0,33,153,0,34,200,208,244,133,128,133,129,1592
4370 DATA 96,32,70,71,72,32,119,70,160,0,104,145,130,166,128,232,939
4380 DATA 224,32,144,4,230,129,162,0,134,128,96,165,128,170,5,129,9879
4390 DATA 240,17,202,16,12,162,31,164,129,208,4,162,0,240,2,198,9682
4400 DATA 129,134,128,96,169,224,133,130,169,31,133,131,164,129,165,130,3084
4410 DATA 24,105,32,133,130,144,2,230,131,136,16,242,165,130,24,101,200
4420 DATA 128,133,130,144,2,230,131,96,72,152,10,168,104,24,121,183,9580
4430 DATA 48,153,183,48,185,184,48,101,173,153,184,48,76,200,70,133,1351
4440 DATA 160,152,10,168,185,183,48,56,229,160,153,183,48,185,184,48,2695
4450 DATA 229,173,153,184,48,160,39,169,0,153,227,48,136,16,250,166,2046
4460 DATA 138,189,161,52,170,200,152,24,105,17,157,227,48,169,26,157,431
4470 DATA 228,48,134,161,132,162,152,10,168,185,184,48,170,185,183,48,2891
4480 DATA 32,25,71,166,161,160,255,200,177,243,240,9,32,70,71,157,2333
4490 DATA 229,48,232,208,242,164,138,165,161,24,121,158,52,170,164,162,3847
4500 DATA 200,196,138,208,193,96,133,212,134,213,5,213,208,9,169,179,4682
4510 DATA 133,243,169,55,133,244,96,32,170,217,32,230,216,160,255,200,7798
4520 DATA 177,243,16,251,41,127,145,243,200,169,71,145,243,169,0,200,4897
4530 DATA 145,243,96,32,88,71,29,55,53,166,136,96,32,88,71,29,5048
4540 DATA 59,53,166,136,96,72,42,42,42,42,41,3,134,136,170,104,6434
4550 DATA 41,159,96,162,255,142,252,2,173,252,2,201,255,240,249,142,8945
4560 DATA 252,2,96,32,25,71,165,243,164,244,141,132,71,140,133,71,1947
4570 DATA 173,255,255,240,20,32,17,70,165,170,208,3,32,25,72,238,9112
4580 DATA 132,71,208,236,238,133,71,208,231,96,72,138,72,152,72,169,2906
4590 DATA 192,160,7,162,2,141,24,208,73,15,141,23,208,73,15,141,7300
4600 DATA 10,212,202,16,240,24,105,2,136,16,232,160,7,169,204,162,1764
4610 DATA 2,141,24,208,73,15,141,23,208,73,15,141,10,212,202,16,8267
4620 DATA 240,56,233,2,136,16,232,169,4,141,23,208,104,168,104,170,1610
4630 DATA 104,64,72,165,159,208,28,169,58,141,0,212,169,10,141,23,8625
4640 DATA 208,141,22,208,169,162,141,24,208,141,10,212,141,26,208,230,3957
4650 DATA 159,104,64,169,0,141,10,212,141,26,208,104,64,169,0,133,8888
4660 DATA 77,133,159,76,98,228,72,169,0,133,20,165,20,240,252,104,2092
4670 DATA 96,134,128,132,129,96,169,7,162,72,160,16,32,92,228,32,8172
4680 DATA 211,58,169,230,141,48,2,169,52,141,49,2,169,62,141,47,7166
4690 DATA 2,32,25,72,169,36,141,244,2,169,157,141,0,2,169,71,7945
4700 DATA 141,1,2,160,4,185,27,56,153,196,2,136,16,247,169,3,8496
4710 DATA 141,4,212,169,0,133,139,133,140,169,2,133,138,169,37,32,8801
4720 DATA 215,72,162,0,165,139,10,10,168,185,171,55,157,195,54,200,2058
4730 DATA 232,224,4,208,244,165,138,9,144,141,215,54,32,237,72,74,1219
4740 DATA 144,3,76,191,72,74,144,19,169,32,32,215,72,230,138,165,1485
4750 DATA 138,201,5,144,205,169,2,133,138,208,199,74,144,196,169,16,2804
4760 DATA 32,215,72,165,139,73,1,133,139,76,117,72,160,3,169,0,7121
4770 DATA 153,63,53,136,16,250,200,169,1,153,63,53,200,196,138,208,3694
4780 DATA 248,76,136,69,141,2,210,169,164,141,3,210,160,192,202,208,5968
4790 DATA 253,134,77,136,208,248,140,3,210,96,173,31,208,168,69,140,3074
4800 DATA 37,140,132,140,201,4,96,169,229,141,0,2,169,71,141,1,7943
4810 DATA 2,169,36,141,244,2,169,166,141,48,2,169,52,141,49,2,6781
4820 DATA 169,61,141,47,2,32,15,70,160,4,185,22,56,153,196,2,6210
4830 DATA 136,16,247,169,0,133,170,133,164,32,22,74,166,153,181,149,1792
4840 DATA 133,163,168,185,147,48,201,4,208,6,32,54,67,76,140,73,7140
4850 DATA 32,61,74,164,163,185,3,48,133,166,48,10,197,153,240,57,932
4860 DATA 32,208,65,76,140,73,32,156,66,208,46,164,163,185,124,52,966
4870 DATA 240,39,133,163,168,185,3,48,16,31,185,111,48,72,74,24,5541
4880 DATA 121,111,48,153,111,48,32,61,74,169,216,160,56,32,125,71,8373
4890 DATA 32,156,66,164,163,104,153,111,48,32,238,66,76,92,65,32,7411
4900 DATA 21,70,32,21,70,165,153,72,170,222,63,53,168,32,235,74,648
4910 DATA 169,74,160,56,32,125,71,104,10,168,169,0,153,183,48,153,9518
4920 DATA 184,48,162,35,189,3,48,197,153,208,14,169,255,157,3,48,666
4930 DATA 189,191,48,157,111,48,222,147,48,202,16,232,32,200,70,32,36
4940 DATA 97,60,162,0,160,3,185,63,53,240,1,232,136,16,247,224,3213
4950 DATA 2,144,3,76,185,58,32,21,70,160,3,185,63,53,208,3,6430
4960 DATA 136,16,248,32,235,74,169,37,160,56,32,125,71,32,102,71,6987
4970 DATA 76,148,57,133,154,173,10,210,41,127,240,249,197,154,240,2,5219
4980 DATA 176,243,96,160,35,185,111,48,240,9,74,133,165,32,6,74,7543
4990 DATA 24,101,165,153,191,48,136,16,236,165,164,240,12,160,35,185,2985
5000 DATA 111,48,74,153,191,48,136,16,246,96,230,170,169,185,160,55,4175
5010 DATA 32,125,71,162,7,160,0,32,36,72,165,163,10,170,189,236,1340
5020 DATA 64,168,189,235,64,32,222,68,162,8,160,1,32,36,72,162,7439
5030 DATA 0,164,163,185,111,48,32,118,71,169,24,133,128,162,0,164,9343
5040 DATA 163,185,191,48,32,118,71,164,163,185,39,48,9,16,141,72,6945
5050 DATA 32,162,24,160,2,32,36,72,164,163,185,124,52,208,10,169,219
5060 DATA 14,160,56,32,125,71,76,163,74,169,10,160,56,32,125,71,7150
5070 DATA 162,8,160,3,32,36,72,164,163,185,3,48,133,174,185,75,9998
5080 DATA 48,133,165,185,124,52,240,16,170,189,3,48,197,174,208,8,1643
5090 DATA 189,75,48,24,101,165,133,165,165,165,162,0,32,118,71,169,169
5100 DATA 24,133,128,32,119,70,164,163,185,3,48,168,32,235,74,198,1592
5110 DATA 170,162,0,160,4,76,36,72,185,120,52,133,155,169,40,133,9690
5120 DATA 156,192,255,208,8,169,17,133,155,169,56,133,156,165,155,164,4078
5130 DATA 156,76,125,71,160,35,169,255,153,3,48,169,0,153,39,48,7788
5140 DATA 136,16,243,160,115,185,0,52,153,75,48,136,16,247,160,0,9131
5150 DATA 185,0,224,153,0,36,185,0,225,153,0,37,185,0,226,153,372
5160 DATA 0,38,185,0,227,153,0,39,200,208,229,160,7,169,255,153,5205
5170 DATA 248,37,136,16,250,169,148,133,12,169,57,133,13,169,192,141,2020
5180 DATA 14,212,96,0,112,71,115,40,111,112,64,66,67,69,71,40,5174
5190 DATA 40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,630
5200 DATA 40,40,40,40,40,40,40,40,40,40,40,40,110,73,40,40,2012
5210 DATA 108,64,63,64,64,63,64,64,64,66,66,66,67,67,68,68,4220
5220 DATA 68,66,64,67,69,40,40,40,40,40,40,40,40,40,40,40,1065
5230 DATA 40,40,40,40,119,64,94,40,109,64,64,64,64,64,63,64,4377
5240 DATA 64,64,64,64,64,64,64,64,64,64,64,64,76,40,98,113,5058
5250 DATA 68,68,114,40,40,40,40,40,40,123,67,65,64,115,101,40,4700
5260 DATA 64,64,63,64,64,64,63,63,64,64,64,64,64,64,64,64,3946
5270 DATA 64,64,64,64,64,64,64,64,85,125,109,100,40,40,40,40,4308
5280 DATA 121,64,64,63,120,40,40,75,64,63,64,51,52,57,58,43,3247
5290 DATA 44,43,44,57,58,59,60,57,58,57,58,57,58,53,54,64,3044
5300 DATA 107,97,64,64,96,40,40,121,64,64,63,76,116,40,40,87,4898
5310 DATA 64,63,64,64,64,64,63,63,63,64,64,64,64,64,64,64,3988
5320 DATA 64,64,64,64,64,64,64,64,96,97,64,64,103,123,122,64,6845
5330 DATA 64,63,76,40,40,40,40,64,63,64,64,43,44,64,63,63,2988
5340 DATA 64,64,64,64,64,64,64,64,64,64,64,64,64,43,44,64,3450
5350 DATA 94,95,64,64,64,64,64,64,64,64,100,40,40,40,40,64,3246
5360 DATA 63,64,64,64,64,63,64,63,63,64,64,64,64,64,64,64,4040
5370 DATA 64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,63,4058
5380 DATA 64,64,100,40,40,40,40,64,64,63,64,43,44,64,63,63,3111
5390 DATA 63,64,64,62,49,49,49,61,62,50,49,50,61,43,44,57,2555
5400 DATA 58,43,44,43,44,47,48,64,63,64,99,40,40,40,40,64,2678
5410 DATA 64,63,64,64,64,64,64,63,63,64,64,62,49,50,49,61,3407
5420 DATA 62,50,49,50,61,64,64,64,64,64,64,64,64,64,64,63,3962
5430 DATA 64,64,64,104,40,40,40,83,64,63,64,57,58,64,64,64,3842
5440 DATA 63,63,64,62,49,49,49,61,62,50,49,50,61,64,64,64,3309
5450 DATA 64,64,64,64,63,57,58,64,64,64,64,105,40,40,40,79,3789
5460 DATA 64,64,63,64,64,64,64,64,64,63,64,64,64,64,64,64,4151
5470 DATA 64,64,64,64,64,64,64,64,64,64,64,64,63,64,64,64,4161
5480 DATA 64,64,101,40,40,40,40,126,78,64,64,57,58,57,58,53,3863
5490 DATA 54,64,63,64,64,64,64,64,64,64,64,64,64,64,64,64,4181
5500 DATA 64,55,56,43,44,43,44,64,64,101,40,40,40,40,40,40,2138
5510 DATA 127,78,64,64,64,64,64,64,64,63,63,64,64,64,64,64,4284
5520 DATA 64,64,64,64,64,64,64,64,64,64,64,63,64,64,64,64,4212
5530 DATA 102,40,40,40,40,40,40,40,40,127,125,125,78,64,64,43,5095
5540 DATA 44,43,44,57,58,57,58,59,60,43,44,43,44,57,58,57,2662
5550 DATA 58,57,58,64,64,64,64,64,96,40,40,40,40,40,40,40,2320
5560 DATA 40,40,40,40,126,125,78,64,64,64,64,63,64,64,64,64,4786
5570 DATA 64,64,64,64,64,64,64,64,64,81,81,82,82,82,78,64,5543
5580 DATA 72,40,40,40,40,40,40,40,40,40,40,40,40,40,127,125,3717
5590 DATA 125,125,125,79,64,64,64,64,64,64,64,64,64,64,64,64,4720
5600 DATA 120,40,40,40,40,40,40,79,64,72,40,40,40,40,40,40,1968
5610 DATA 40,40,40,40,40,40,40,40,40,40,40,126,79,76,78,64,4047
5620 DATA 64,64,64,76,125,125,125,125,125,40,40,40,40,40,40,126,5699
5630 DATA 78,64,104,40,40,40,40,40,40,40,40,40,40,40,40,40,1348
5640 DATA 40,40,40,40,126,40,126,78,64,64,77,40,40,40,40,40,3279
5650 DATA 40,40,40,40,40,40,40,40,126,118,117,40,40,40,40,40,3491
5660 DATA 40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,127,2492
5670 DATA 78,64,124,40,40,40,40,40,40,40,40,40,40,40,40,40,1448
5680 DATA 40,127,84,40,40,40,40,40,40,40,40,40,40,40,40,40,1426
5690 DATA 40,40,40,40,40,40,40,40,127,78,40,40,40,40,40,40,2293
5700 DATA 40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,226,4116
5710 DATA 2,227,2,0,48,0,0,0,0,0,0,0,0,0,0,0,6412

Listing 2: Assembly

;SAVE#D:CAPITAL1.M65
	.OPT	NOLIST
;------------------------;
;                        ;
;       CAPITAL!         ;
;                        ;
;by: Bryan Schappel      ;
;and Barry Kolbe         ;
;                        ;
;(C) 1988 BBK Enterprises;
;                        ;
;------------------------;
;
	*=	0
PASS	.=	PASS+1
	.IF	PASS=1
	.INCLUDE	#D:SYSEQU.M65
	.ENDIF
;
;Zero Page Equates
;
	*=	$80
XPOS	.DS	1	;'cursor' x,y
YPOS	.DS	1	;positions
SCR	.DS	2	;ind. scr loc
SCR2	.DS	2
SAVEX	.DS	1	;save X
XSV1	.DS	1	;register
XSV2	.DS	1
PLAYER	.DS	1
MAXP	.DS	1	;max # plyrs
SPEED	.DS	1	;game speed
CONSAV	.DS	1	;CONSOL save
PX0	.DS	4	;PMG x,y
PY0	.DS	4	;positions
PTHP0	.DS	4	;plyr map pos
PNUM	.DS	1	;curr. plyr #
RNUM	.DS	1
L	.DS	2	;indirect
SQRS	.DS	1	;squares to mov
SCNT	.DS	1
BDL	.DS	1
CTMP	.DS	1	;cash tmp save
XT	.DS	1	;save x & y
YT	.DS	1
CPROP	.DS	1	;cur. property
DISFLAG	.DS	1	;disaster flag
VALUE	.DS	1
OWNER	.DS	1	;owner of prop
TPROP	.DS	1	;temp prop. #
PPROP	.DS	1	;picked property
ESCFLAG	.DS	1	;print 'ESC' ?
PAUSE?	.DS	1	;print speed
RFLAG	.DS	1	;pay to whom?
AMOUNT	.DS	2	;amount owed
SVY	.DS	1	;save y
SVY2	.DS	1	;register
;
;Other Memory Usage
;
GR0MEM	=	$2000	;txt scrn RAM
MSET	=	$2400	;a char. set
NAMEBUF	=	$2800
GRTAB	=	$2900
BOTLIN	=	19	;txt scrn length
PMB	=	$8000	;P/M base
P0	=	$8400	;player 0
P1	=	$8500	;player 1
P2	=	$8600	;player 2
P3	=	$8700	;player 3
MONEY_CLR	=	$A2	;$ line color
;
	.MACRO	PRINT 
	LDA	#<%1
	LDY	#>%1
	JSR	EPRINT
	.ENDM
;
	.MACRO	POSITION 
	LDX	#<%1
	LDY	#<%2
	JSR	POSIT
	.ENDM
;
;Start of Assembly
;
	*=	$3000
CSET	JMP	FAKE
;
;Tables for property ownership
;rent, cost and double Xref.
;
WHO	.DS	36	;owners
IMP	.DS	36	;improvements
RENT	.DS	36	;rent
COST	.DS	36	;value
REFTAB	.DS	36	;shadow table
CASH	.DS	8	;players money
RANTAB	.DS	36	;selling price
MONEY	.DS	40	;money line
PRPLIN	.DS	40	;prop. line
IBUF	.DS	16	;input buffer
;
;Fetch the character set for
;the Map of the US
;
	*=	$3140
	.INCLUDE	#D:CAPITAL3.M65
;
;Initial Table Values
;
;the initial rent values
;must be less than 32 since
;inprovements are done by
;multiplying by 8 (3 ASL's)
;
RENTORG	.BYTE	0,15,14,8,25,21
	.BYTE	0,12,20,22,28,0
	.BYTE	4,6,15,7,5,0
	.BYTE	5,8,14,18,0,7
	.BYTE	19,3,0,16,15,21
	.BYTE	19,14,0,31,12,10
;
;the initial cost of properties
;
COSTORG	.BYTE	0,23,37,25,69,65
	.BYTE	0,41,60,73,84,0
	.BYTE	12,15,38,17,13,0
	.BYTE	18,27,36,37,0,22
	.BYTE	51,11,0,53,48,56
	.BYTE	61,32,0,100,47,42
;
;initial status of each property
;128 =special, like TAX
;0=single,free - 1=single,bought
;2=double,free - 3=double,bought
;4=LUCK, including CAP GAINS
;
REFORG	.BYTE	128,0,0,0,2,2
	.BYTE	4,0,0,2,2,128
	.BYTE	0,0,0,2,2,128
	.BYTE	0,2,2,0,4,0
	.BYTE	0,0,128,2,2,0
	.BYTE	2,2,4,0,2,2
	.WORD	375,375,375,375
;
;these are the special squares
;which have scrolling messages
;
SPLC	.BYTE	0,11,17,26
X9	.BYTE	0,9,18,27
;
;These cross reference tables
;identify the double properties
;by halves and allow the program
;to find the other half of a
;property.
;
XREF	.BYTE	0,0,0,0,5,4
	.BYTE	0,0,0,10,9,0
	.BYTE	0,0,0,16,15,0
	.BYTE	0,20,19,0,0,0
	.BYTE	0,0,0,28,27,0
	.BYTE	31,30,0,0,35,34
;
;these are used to center the
;info on the money line
;
OFFSET	.BYTE	15,13,10
XST	.BYTE	5,3,1
;
;Display List (Transactions)
;
DLTXT	.BYTE	$70,$70,$70,$46
	.WORD	TITLE
	.BYTE	$06,$30,$62
	.WORD	GR0MEM
	.BYTE	0,$22,$22,$22,$22,$22
	.BYTE	$22,$22,$22,$22,$22
	.BYTE	$22,$22,$22,$22,$22
	.BYTE	$22,$22,$02,$B0,$C2
	.WORD	MONEY
	.BYTE	$20,$46
	.WORD	PLRN
	.BYTE	$41
	.WORD	DLTXT
;
;Display List (Names)
;
NDLIST	.BYTE	$70,$70,$70,$70,$70
	.BYTE	$70,$46
	.WORD	NAMEL
	.BYTE	$70,$70,$46
	.WORD	GR0MEM
	.BYTE	$70,$06,$70,$06,$70
	.BYTE	$06,$41
	.WORD	NDLIST
;
;Display List (Intro)
;
IDL	.BYTE	$70,$70,$70,$F0,$42
	.WORD	INTL
	.BYTE	$02,$02,$02,$02
	.BYTE	$30,$06,$70,$06,$70
	.BYTE	$06,$30,$56
	.WORD	AND
	.BYTE	$30,$56
	.WORD	KNAME
	.BYTE	$70,$70,$46
	.WORD	INTM
	.BYTE	$70,$06,$70,$70,$70
	.BYTE	$06,$56
	.WORD	BBK
	.BYTE	$41
	.WORD	IDL
;
;Display List (US map)
;
DL	.BYTE	$70,$70,$50,$44
	.WORD	SCRN
	.BYTE	$04,$04,$04,$04,$04
	.BYTE	$04,$04,$04,$04,$04
	.BYTE	$04,$04,$04,$04,$04
	.BYTE	$04,$04,$04,$04,$84
	.BYTE	$46
	.WORD	PLRN
	.BYTE	$C2
TWIN	.WORD	RLMES
	.BYTE	$A0,$42
	.WORD	MONEY
	.BYTE	$41
	.WORD	DL
;
;tables to convert ATASCII
;to IC or vice versa
;
A2I	.BYTE	$40,$00,$20,$60
I2A	.BYTE	$20,$40,$00,$60
;
;table for which players
;are on the screen 0=off,1=on
;
ONBRD	.BYTE	0,0,0,0
;
;screen titles
;
TITLE	.SBYTE	"    CAPITAL!    "
	.SBYTE	"  transactions  "
PLRN	.SBYTE	"          "
	.SBYTE	"          "
NAMEL	.SBYTE	"  enter yo"
	.SBYTE	"ur names  "
;
;Data for the word CAPITAL!
;on the intro screen. This
;was done with contro chars.
;
INTL	.BYTE	$00,$00,$00,$48,$80
	.BYTE	$80,$4A,$00,$48,$80
	.BYTE	$80,$4A,$00,$48,$80
	.BYTE	$80,$4A,$00,$48,$80
	.BYTE	$4A,$00,$48,$80,$4A
	.BYTE	$00,$48,$80,$80,$4A
	.BYTE	$00,$4A,$00,$00,$00
	.BYTE	$00,$48,$00,$00,$00
	.BYTE	$00,$00,$00,$80,$C8
	.BYTE	$00,$00,$00,$80,$C8
	.BYTE	$CA,$80,$00,$80,$C8
	.BYTE	$CA,$80,$00,$00,$80
	.BYTE	$00,$00,$00,$80,$00
	.BYTE	$00,$80,$C8,$CA,$80
	.BYTE	$00,$80,$00,$00,$00
	.BYTE	$00,$80,$00,$00,$00
	.BYTE	$00,$00,$00,$80,$00
	.BYTE	$00,$00,$00,$80,$52
	.BYTE	$52,$80,$00,$80,$80
	.BYTE	$80,$C8,$00,$00,$80
	.BYTE	$00,$00,$00,$80,$00
	.BYTE	$00,$80,$52,$52,$80
	.BYTE	$00,$80,$00,$00,$00
	.BYTE	$00,$80,$00,$00,$00
	.BYTE	$00,$00,$00,$80,$4A
	.BYTE	$00,$00,$00,$80,$00
	.BYTE	$00,$80,$00,$80,$00
	.BYTE	$00,$00,$00,$00,$80
	.BYTE	$00,$00,$00,$80,$00
	.BYTE	$00,$80,$00,$00,$80
	.BYTE	$00,$80,$4A,$00,$00
	.BYTE	$00,$C8,$00,$00,$00
	.BYTE	$00,$00,$00,$CA,$80
	.BYTE	$80,$C8,$00,$C8,$00
	.BYTE	$00,$CA,$00,$C8,$00
	.BYTE	$00,$00,$00,$CA,$80
	.BYTE	$C8,$00,$00,$80,$00
	.BYTE	$00,$C8,$00,$00,$CA
	.BYTE	$00,$CA,$80,$80,$C8
	.BYTE	$00,$4F,$00,$00,$00
;
;Other Screen Memory
;
	.SBYTE	"game of high fin"
	.SBYTE	"ance"
LO	.SBYTE	"   programmed by"
	.BYTE	"Z",0,0,0
	.SBYTE	"   BRYAN SCHAPPEL"
	.SBYTE	"   "
AND	.SBYTE	"          AND   "
	.SBYTE	"     "
KNAME	.SBYTE	"      BARRY KOLBE"
	.SBYTE	"    "
INTM	.SBYTE	" option   fast "
	.SBYTE	"game "
PLN	.SBYTE	" SELECT   2 "
	.SBYTE	"PLAYERS "
	.SBYTE	"   COPYRIGHT "
	.SBYTE	"1988   "
BBK	.SBYTE	"    bbk enterprises"
	.SBYTE	"   "
;
;Scrolling Text Messages
;
RLMES	.SBYTE	"  OPTION R"
	.SBYTE	"OLL DICE  "
	.SBYTE	"  SELECT S"
	.SBYTE	"TOP DICE  "
;
STKMES	.SBYTE	"  Stock Ma"
	.SBYTE	"rket Divid"
	.SBYTE	"ends pay y"
	.SBYTE	"ou $12G   "
;
TAXMES	.SBYTE	"  IRS Tax "
	.SBYTE	"Audit: los"
	.SBYTE	"e 12% of y"
	.SBYTE	"our cash  "
;
VACMES	.SBYTE	"    Vacati"
	.SBYTE	"on time at"
	.SBYTE	" the Hog H"
	.SBYTE	"ilton     "
;
FAST	.SBYTE	"fast"
SLOW	.SBYTE	"slow"
BROKE	.BYTE	"BROKE",0
;
;Property Selection Box
;
BOX	.BYTE	125
	.BYTE	"  Prop:",EOL
	.BYTE	" Price:         "
	.BYTE	"Resale:",EOL
	.BYTE	" Level:         "
	.BYTE	"Double:",EOL
	.BYTE	"   Fee:         "
	.BYTE	" Owner:",0
;
YES	.BYTE	"Yes",0
NO	.BYTE	"No",0
NA	.BYTE	"None",0
;
;colors for various screens
;
TCLR	.BYTE	$42,$0A,$02,$D4,$00
ICLR	.BYTE	$94,$06,$00,$42,$00
NCLR	.BYTE	$C4,$96,$0A,$0F,$00
;
;more messages
;
WINNER	.BYTE	" has won!"
	.BYTE	EOL,"Press a ke"
	.BYTE	"y to play again.",0
DEAD_MES	.BYTE	" is Broke!",EOL
	.BYTE	0
YNTXT	.BYTE	" property [Y/N]?",0
IMP_TXT	.BYTE	EOL,EOL,"Improve "
	.BYTE	"a",0
SELL_TXT	.BYTE	EOL,EOL,"Sell a"
	.BYTE	0
BUY_MESS	.BYTE	EOL,EOL,"Buy thi"
	.BYTE	"s",0
PICK_MESS	.BYTE	EOL,EOL,"SPC=ne"
	.BYTE	"xt, RET=choose",0
PICK_REST	.BYTE	", ESC=exit",0
TRAN_OK	.BYTE	EOL,EOL,"Tran"
	.BYTE	"saction processed.",0
NCASH	.BYTE	EOL,EOL,"Insufficie"
	.BYTE	"nt funds.",0
DOPT	.BYTE	EOL,EOL,"Double Opti"
	.BYTE	"on.",0
MAX	.BYTE	EOL,EOL,"At Maximum "
	.BYTE	"Level",0
FEE	.BYTE	EOL,EOL,"Fee Payment"
	.BYTE	" Required.",0
AMTOWD	.BYTE	EOL,EOL,"Amount o"
	.BYTE	"wed ",0
;
;Get the Map Handler Half of
;the game.
;
	.INCLUDE	#D:CAPITAL4.M65
	.INCLUDE	#D:CAPITAL5.M65
;
;
;Put a byte to the screen
;
CLRSCR	LDA	#$7D	;clear scn
EPUT	CMP	#EOL	;a CR?
	BNE	TRYDEL
PUTCR	LDA	#0	;linefeed
	STA	XPOS
	INC	YPOS
	RTS
;
TRYDEL	CMP	#$7E	;delete?
	BNE	TRYCLR
	JSR	MOVELEFT	;DEL-BCKSP
	JSR	GETSCR	;get scrn loc
	LDA	#0	;zap char
	TAY
	STA	(SCR),Y
	RTS
TRYCLR	CMP	#$7D	;clear?
	BNE	NORMAL
	LDY	#0
	TYA		;clear the
CLRSC	STA	GR0MEM,Y	;screen
	STA	GR0MEM+$0100,Y
	STA	GR0MEM+$0200,Y
	INY
	BNE	CLRSC
	STA	XPOS
	STA	YPOS
	RTS
;
NORMAL	JSR	ASC2IC	;to INT. code
	PHA		;save it
	JSR	GETSCR	;get scn loc
	LDY	#0
	PLA		;get byte
	STA	(SCR),Y	;on screen
;
GORIGHT	LDX	XPOS	;move 'cursor'
	INX		;to right
	CPX	#$20	;at end of
	BCC	EPLEAV	;line?
	INC	YPOS	;yes
	LDX	#0	;left margin
EPLEAV	STX	XPOS
	RTS
;
MOVELEFT	LDA	XPOS	;can we
	TAX		;go left?
	ORA	YPOS
	BEQ	GOLEAV	;no
	DEX		;yes
	BPL	GOX
	LDX	#31	;if $FF go
	LDY	YPOS	;up 1 line
	BNE	MVUP	;if not 0
	LDX	#0
	BEQ	GOX
MVUP	DEC	YPOS	;up 1 line
GOX	STX	XPOS
GOLEAV	RTS		;exit
;
;Get Scr Mem Loc of Cursor
;
GETSCR	LDA	#<[GR0MEM-32]
	STA	SCR
	LDA	#>[GR0MEM-32]
	STA	SCR+1
	LDY	YPOS	;get the
GETSC1	LDA	SCR	;correct
	CLC		;row
	ADC	#$20	;narrow plfld
	STA	SCR
	BCC	GODWN
	INC	SCR+1
GODWN	DEY		;at row yet?
	BPL	GETSC1	;no
	LDA	SCR	;now get the
	CLC		;column
	ADC	XPOS	;add in x
	STA	SCR	;position
	BCC	GETSCDN
	INC	SCR+1
GETSCDN	RTS
;
;Add Money to player cash
;
ADD	PHA		;save $
	TYA		;plyr #
	ASL	A	;x2
	TAY
	PLA		;get $
	CLC
	ADC	CASH,Y	;add to
	STA	CASH,Y	;plyr's cash
	LDA	CASH+1,Y
	ADC	AMOUNT+1	;if >255
	STA	CASH+1,Y
	JMP	FORMDOL	;show result
;
;Subtract Money from player
;
SUB	STA	CTMP	;save $
	TYA		;get plyr #
	ASL	A	;x2
	TAY
	LDA	CASH,Y	;get cash
	SEC		;subt. $
	SBC	CTMP
	STA	CASH,Y
	LDA	CASH+1,Y
	SBC	AMOUNT+1	;if $ > 255
	STA	CASH+1,Y	;fall through
;
;Format MONEY line
;
FORMDOL	LDY	#39	;zero out
	LDA	#0	;the line
FD1	STA	MONEY,Y
	DEY
	BPL	FD1
	LDX	MAXP	;max plyrs
	LDA	XST-2,X	;for centering
	TAX		;info
	INY		;y was $FF
FD2	TYA		;plyr #
	CLC
	ADC	#$11	;for screen IC
	STA	MONEY,X	;show it
	LDA	#$1A	; '$'
	STA	MONEY+1,X
	STX	XT	;save x,y
	STY	YT
	TYA		;plyr #
	ASL	A	;x2
	TAY
	LDA	CASH+1,Y	;get his cash
	TAX		;x=high byte
	LDA	CASH,Y	;a=low
	JSR	FORMNUM	;to ATASCII
	LDX	XT	;position
	LDY	#$FF	;now
FD3	INY		;change cash
	LDA	(INBUFF),Y	;to
	BEQ	FD4	;if '0' done
	JSR	ASC2IC	;internal code
	STA	MONEY+2,X	;show it
	INX
	BNE	FD3	;next digit
FD4	LDY	MAXP	;get offset
	LDA	XT	;to next
	CLC		;plyr's info
	ADC	OFFSET-2,Y
	TAX
	LDY	YT
	INY		;next plyr
	CPY	MAXP	;last one?
	BNE	FD2	;no
	RTS		;whew!
;
;Format a number
;
FORMNUM	STA	FR0	;low byte
	STX	FR0+1	;hi
	ORA	FR0+1	;hello!
	BNE	GFP
	LDA	#<BROKE	;if 0 you
	STA	INBUFF	;are 'broke'
	LDA	#>BROKE
	STA	INBUFF+1
	RTS
GFP	JSR	IFP	;INT to FP
	JSR	FASC	;FP to ATASCII
	LDY	#$FF
FM1	INY		;find last
	LDA	(INBUFF),Y	;inversed
	BPL	FM1	;digit
	AND	#$7F	;& make it
	STA	(INBUFF),Y	;regular
	INY		;add a 'G'
	LDA	#'G
	STA	(INBUFF),Y	;and an EOL
	LDA	#0	;i.e. a 0
	INY
	STA	(INBUFF),Y
	RTS		;done
;
;Convert ASCII to ICODE
;
ASC2IC	JSR	BITER
	ORA	A2I,X
	LDX	XSV2
	RTS
;
;Convert ICODE to ASC
;
IC2ASC	JSR	BITER
	ORA	I2A,X
	LDX	XSV2
	RTS
;
;Make char an index
;
BITER	PHA
	ROL	A
	ROL	A
	ROL	A
	ROL	A
	AND	#3
	STX	XSV2
	TAX
	PLA
	AND	#$9F
	RTS
;
	.INCLUDE	#D:CAPITAL2.M65
;
	*=	$7000
;the screen data for the
;map of the U.S.A.
;
	.INCLUDE	#D:CAPITAL6.M65
	*=	$02E0
	.WORD	CSET
	.END

Listing 3: Assembly

;SAVE#D:CAPITAL2.M65
;
;--------------------;
;                    ;
; CAPITAL! part 2    ;
;                    ;
;by: Bryan Schappel  ;
;                    ;
;--------------------;
;
;Get a key press
;
GETCH	LDX	#$FF
	STX	CH
GETC	LDA	CH
	CMP	#$FF
	BEQ	GETC
	STX	CH
	RTS
;
;Print a Number
;
PRNUM	JSR	FORMNUM	;to IC first
	LDA	INBUFF	;fall through
	LDY	INBUFF+1
;
;Eprint Routine
;
EPRINT	STA	EPL+1	;A= low byte
	STY	EPL+2	;Y = hi byte
EPL	LDA	$FFFF	;print until
	BEQ	EPO	;hitting a 0
	JSR	EPUT	;put it
	LDA	PAUSE?	;fast or slow
	BNE	EPN	;printing?
	JSR	JIFF	;wait a jiff
EPN	INC	EPL+1	;next byte
	BNE	EPL
	INC	EPL+2
	BNE	EPL
EPO	RTS		;exit
;
;Intro DLI
;
IDLI	PHA		;save all the
	TXA		;registers
	PHA
	TYA
	PHA
	LDA	#$C0	;green hue
	LDY	#7	;dark lum
IDLP	LDX	#2
IDL1	STA	COLPF2	;plyfld 2
	EOR	#$0F	;switch lum
	STA	COLPF1	;plyfld 1
	EOR	#$0F	;swtich back
	STA	WSYNC	;wait sync
	DEX		;3 lines
	BPL	IDL1
	CLC
	ADC	#2	;increase lum
	DEY		;8 times
	BPL	IDLP	;more shades
	LDY	#7	;now start
	LDA	#$CC	;with bright
IDL2	LDX	#2	;and shade
IDL3	STA	COLPF2
	EOR	#$0F
	STA	COLPF1
	EOR	#$0F
	STA	WSYNC
	DEX
	BPL	IDL3
	SEC		;bring lum
	SBC	#2	;down
	DEY
	BPL	IDL2
	LDA	#$04	;gray
	STA	COLPF1
	PLA		;restore
	TAY		;registers
	PLA
	TAX
	PLA
	RTI		;exit
;
;Text Screen DLI
;
TDLI	PHA		;save A
	LDA	BDL	;DLI cntr
	BNE	TDL2
	LDA	#58	;to narrow
	STA	DMACTL	;plyfld
	LDA	#10	;white
	STA	COLPF1
	STA	COLPF0
	LDA	#MONEY_CLR	;$ line
	STA	COLPF2
	STA	WSYNC
	STA	COLBK	;& bckgrnd
	INC	BDL
	PLA		;restore A
	RTI		;exit
TDL2	LDA	#0	;top DLI
	STA	WSYNC
	STA	COLBK	;black bckgnd
	PLA
	RTI
;
;Simple VBI to keep DLI'S OK
;
VBI	LDA	#0
	STA	ATRACT
	STA	BDL	;DLI counter
	JMP	XITVBV
;
;Wait Routine
;
JIFF	PHA		;wait 1 jiffy
	LDA	#0
	STA	RTCLOK
W1	LDA	RTCLOK
	BEQ	W1
	PLA
	RTS
;
;Position Cursor
;
POSIT	STX	XPOS
	STY	YPOS
	RTS
;
;Intro Routine
;
INTRO	LDA	#7	;set up Vblank
	LDX	#>VBI
	LDY	#<VBI
	JSR	SETVBV
	JSR	CLRPMG	;erase PMG
	LDA	#<IDL	;install DLIST
	STA	SDLSTL
	LDA	#>IDL
	STA	SDLSTL+1
	LDA	#62	;normal plyfd
	STA	SDMCTL
	JSR	JIFF	;wait a jiff
	LDA	#>MSET	;our char
	STA	CHBAS	;set
	LDA	#<IDLI	;install DLI
	STA	VDSLST
	LDA	#>IDLI
	STA	VDSLST+1
	LDY	#4	;get intro
INTY	LDA	ICLR,Y	;colors
	STA	COLOR0,Y
	DEY
	BPL	INTY
	LDA	#3	;center some
	STA	HSCROL	;text
	LDA	#0	;0 = fast
	STA	SPEED	;game speed
	STA	CONSAV
	LDA	#2	;default #
	STA	MAXP	;players
	LDA	#$25	;make a tone
	JSR	BUZZER
INTRL	LDX	#0	;get the
	LDA	SPEED	;word 'fast'
	ASL	A	;or 'slow'
	ASL	A
	TAY
RL1	LDA	FAST,Y	;put it on
	STA	INTM+10,X	;screen
	INY
	INX
	CPX	#4	;done?
	BNE	RL1
	LDA	MAXP	;# plyrs
	ORA	#$90	;in COLOR!
	STA	PLN+10	;show it
	JSR	CONC	;get CONSOL
	LSR	A	;/2
	BCC	ST2
	JMP	INTLV	;START!
;
ST2	LSR	A	;SELECT?
	BCC	ST3
	LDA	#$20	;tone
	JSR	BUZZER
	INC	MAXP	;more plyrs
	LDA	MAXP	;too many?
	CMP	#5
	BCC	INTRL	;no
	LDA	#2	;reset to 2
	STA	MAXP
	BNE	INTRL	;loooooppppp
;
ST3	LSR	A	;is it OPTION?
	BCC	INTRL	;naw
	LDA	#$10	;another tone
	JSR	BUZZER
	LDA	SPEED	;change speed
	EOR	#1
	STA	SPEED
	JMP	INTRL	;loop de loop
INTLV	LDY	#3	;yea, we start
	LDA	#0	;zap all
TCL	STA	ONBRD,Y
	DEY
	BPL	TCL
	INY		;put 1's for
	LDA	#1	;those plyrs
TCL2	STA	ONBRD,Y	;getting
	INY		;tokens
	CPY	MAXP	;enuf?
	BNE	TCL2	;yup
	JMP	GETNAMES	;who are they?
;
;Buzzer sound
;
BUZZER	STA	AUDF2	;doesn't
	LDA	#$A4	;sound like
	STA	AUDC2	;a buzzer to me
	LDY	#$C0	;but ok
BZ	DEX		;make a sound
	BNE	BZ
	STX	ATRACT
	DEY
	BNE	BZ
	STY	AUDC2
	RTS
;
;Console Checker
;
CONC	LDA	CONSOL	;get button
	TAY		;i wonder
	EOR	CONSAV	;what this
	AND	CONSAV	;does except
	STY	CONSAV	;waste time
	CMP	#4
	RTS
;
;Transaction Processor
;
TRANS	LDA	#<TDLI	;put in DLI
	STA	VDSLST
	LDA	#>TDLI
	STA	VDSLST+1
	LDA	#>MSET	;our char set
	STA	CHBAS
	LDA	#<DLTXT	;& our display
	STA	SDLSTL	;list
	LDA	#>DLTXT
	STA	SDLSTL+1
	LDA	#61	;->narrow<-
	STA	SDMCTL	;plyfld
	JSR	CLRSCR	;clear screen
	LDY	#4	;get our
TC	LDA	TCLR,Y	;coloring set
	STA	COLOR0,Y
	DEY
	BPL	TC
	LDA	#0	;0=fast print
	STA	PAUSE?
	STA	DISFLAG	;no disaster
	JSR	MAKE_RAN	;get selling
	LDX	PNUM	;prices
	LDA	PTHP0,X	;get property
	STA	CPROP	;landed on
	TAY
	LDA	REFTAB,Y	;what is it?
	CMP	#4	;LUCK??
	BNE	GWHO	;no who has it?
	JSR	DO_LUCK	;U Lucky dog!
	JMP	OVER	;skip this
GWHO	JSR	SHOPROP	;show prop info
	LDY	CPROP	;curr prop #
	LDA	WHO,Y	;get owner
	STA	OWNER
	BMI	TRY_BUY	;$FF=no one
	CMP	PNUM	;is it US(ME?)
	BEQ	OVER	;yes
	JSR	PAY_RENT	;Ugh pay rent
	JMP	OVER	;skip buying
TRY_BUY	JSR	BUY_IT	;wanna buy
	BNE	OVER	;a bridge?
	LDY	CPROP	;check for a
	LDA	XREF,Y	;double
	BEQ	OVER	;nope
	STA	CPROP	;save it
	TAY
	LDA	WHO,Y	;who owns it?
	BPL	OVER	;+ = owned
	LDA	COST,Y	;how much? is
	PHA		;that double
	LSR	A
	CLC		;add 1/2 again
	ADC	COST,Y	;as much for
	STA	COST,Y	;doubles
	JSR	SHOPROP	;show prop info
		PRINT DOPT	;'Doubl option'
	JSR	BUY_IT	;'wanna buy?'
	LDY	CPROP	;location
	PLA		;restore origin-
	STA	COST,Y	;al cost of prop
OVER	JSR	WANT_SALE	;sell a prop
	JMP	IMPROVE	;improve one?
;
;Handle Player Death
;
DEAD	JSR	PUTCR	;linefeeds
	JSR	PUTCR
	LDA	PNUM	;get plyr #
	PHA		;save it
	TAX
	DEC	ONBRD,X	;make 0 to
	TAY		;remove
	JSR	SHO_NAME	;who was it?
		PRINT DEAD_MES	;'gone'
	PLA		;plyr # again
	ASL	A	;x2
	TAY		;zap his/her
	LDA	#0	;cash
	STA	CASH,Y
	STA	CASH+1,Y
	LDX	#35	;sell props
SELL_OFF	LDA	WHO,X	;back to
	CMP	PNUM	;the bank
	BNE	SELL_DN
	LDA	#$FF	;$FF = free
	STA	WHO,X	;property
	LDA	RANTAB,X	;new cost
	STA	COST,X	;is half price
	DEC	REFTAB,X	;what a
SELL_DN	DEX		;bargain!
	BPL	SELL_OFF
	JSR	FORMDOL	;show $ line
	JSR	WAITKEY	;pause
	LDX	#0	;is anyone
	LDY	#3	;left-if so
FNW	LDA	ONBRD,Y	;s/he is
	BEQ	FNW2	;the winner
	INX
FNW2	DEY
	BPL	FNW
	CPX	#2	;LT 2 means
	BCC	SHO_WIN	;a winner
	JMP	NOW	;still going
;
;Show the winner
;
SHO_WIN	JSR	PUTCR	;linefeed
	LDY	#3
SW1	LDA	ONBRD,Y	;get plyr's #
	BNE	GWN
	DEY
	BPL	SW1
GWN	JSR	SHO_NAME	;winner's name
		PRINT WINNER	;'wins'
	JSR	GETCH	;get a key
	JMP	FAKE	;restart
;
;Get a RND # between 1 and Acc
;
GET_RND	STA	RNUM	;save A
RND	LDA	RANDOM
	AND	#$7F	;0-127
	BEQ	RND	;no 0
	CMP	RNUM	;LT A?
	BEQ	RNDO	;yup
	BCS	RND	;overs
RNDO	RTS		;done
;
;Make the random property
;value table. Values are bet-
;ween 1/2 and full price.
;
MAKE_RAN	LDY	#35	;36 props
MK1	LDA	COST,Y	;if 0 no
	BEQ	NORAN
	LSR	A	;div by 2
	STA	VALUE	;save it
	JSR	GET_RND	;get rand #
	CLC		;LT value
	ADC	VALUE	;add to 1/2
NORAN	STA	RANTAB,Y	;price
	DEY		;next prop
	BPL	MK1
	LDA	DISFLAG	;if forced
	BEQ	MKO	;sale,just
	LDY	#35	;make prices
MK2	LDA	COST,Y	;1/2 price
	LSR	A
	STA	RANTAB,Y
	DEY
	BPL	MK2
MKO	RTS
;
;Show a Property
;
SHOPROP	INC	PAUSE?	;fast print
		PRINT BOX	;print
		POSITION 7,0	;outline
	LDA	CPROP	;curr. prop
	ASL	A	;get name
	TAX		;x2 for
	LDA	PRPTAB+1,X	;offset from
	TAY		;table
	LDA	PRPTAB,X	;A=hi Y=lo
	JSR	INVPROP	;inverse
		POSITION 8,1	;name
	LDX	#0	;X=lo cost
	LDY	CPROP
	LDA	COST,Y	;A = hi
	JSR	PRNUM	;show cost
	LDA	#24	;move cursor
	STA	XPOS
	LDX	#0
	LDY	CPROP	;get prop#
	LDA	RANTAB,Y	;sale price
SPQ	JSR	PRNUM	;show it
	LDY	CPROP	;get improve-
	LDA	IMP,Y	;ment level
	ORA	#$10	;for screen
	STA	GR0MEM+72	;show it
		POSITION 24,2
	LDY	CPROP	;see if doubl
	LDA	XREF,Y
	BNE	SPY	;yes
		PRINT NO	;no
	JMP	SPO	;skip
SPY		PRINT YES
SPO		POSITION 8,3
	LDY	CPROP	;who owns it
	LDA	WHO,Y
	STA	SVY	;save it
	LDA	RENT,Y	;get 'rent'
	STA	VALUE	;= fee
	LDA	XREF,Y	;double?
	BEQ	SHV	;no
	TAX		;who owns doubl?
	LDA	WHO,X	;owner
	CMP	SVY	;same as ME?
	BNE	SHV	;no
	LDA	RENT,X	;yes so
	CLC		;rent is more
	ADC	VALUE
	STA	VALUE
SHV	LDA	VALUE	;show rent
	LDX	#0	;A=hi,X=lo
	JSR	PRNUM
	LDA	#24
	STA	XPOS
	JSR	GETSCR	;screen loc
	LDY	CPROP	;prop #
	LDA	WHO,Y	;owner?
	TAY		;get name
	JSR	SHO_NAME
	DEC	PAUSE?	;slow print
	LDX	#0	;position
	LDY	#4	;cursor
	JMP	POSIT	;& exit
;
;Show a player's name
;Y=player # to show
;
SHO_NAME	LDA	X9,Y	;get right
	STA	L	;name
	LDA	#>NAMEBUF	;via offset
	STA	L+1
	CPY	#$FF	;is it no one?
	BNE	SNM0	;no someone
	LDA	#<NA	;'none'
	STA	L
	LDA	#>NA
	STA	L+1
SNM0	LDA	L	;print name
	LDY	L+1
	JMP	EPRINT
;
;Initialize game tables
;
INITAB	LDY	#35	;36 locations
IT1	LDA	#$FF	;$FF = no
	STA	WHO,Y	;owner
	LDA	#0	;0 = no
	STA	IMP,Y	;inprovement
	DEY
	BPL	IT1
	LDY	#115	;copy all
IT2	LDA	RENTORG,Y	;preset
	STA	RENT,Y	;tables to
	DEY		;working tables
	BPL	IT2
	LDY	#0	;download
MVSET	LDA	$E000,Y	;ROM
	STA	MSET,Y	;character
	LDA	$E100,Y	;set
	STA	MSET+256,Y
	LDA	$E200,Y
	STA	MSET+512,Y
	LDA	$E300,Y
	STA	MSET+768,Y
	INY
	BNE	MVSET
	LDY	#7	;all this to
	LDA	#$FF	;define a
ASET	STA	MSET+504,Y	;block
	DEY		;cursor for
	BPL	ASET	;name screen!!!
	LDA	#<FAKE	;SYSTEM RESET
	STA	DOSINI	;restarts
	LDA	#>FAKE	;the game
	STA	DOSINI+1
	LDA	#$C0	;enable DLI's
	STA	NMIEN
	RTS

Listing 4: Assembly

;SAVE#D:CAPITAL3.M65
;
;-------------------;
;    CAPITAL!       ;
; redefined char.   ;
; set for the MAP   ;
;                   ;
; by Barry Kolbe    ;
;                   ;
;-------------------;
;
;includes most of a character
;set for ANTIC mode 4.
;
	.BYTE	$00,$00,$00,$00
	.BYTE	$00,$00,$00,$00
	.BYTE	$FD,$F5,$D7,$D7
	.BYTE	$D7,$D7,$F5,$FD
	.BYTE	$7F,$5F,$D7,$D7
	.BYTE	$D7,$D7,$5F,$7F
	.BYTE	$FD,$F7,$DF,$DF
	.BYTE	$DF,$DF,$F7,$FD
	.BYTE	$7F,$DF,$F7,$F7
	.BYTE	$F7,$F7,$DF,$7F
	.BYTE	$D5,$D5,$D7,$D7
	.BYTE	$D7,$D7,$D5,$D5
	.BYTE	$57,$57,$D7,$D7
	.BYTE	$D7,$D7,$57,$57
	.BYTE	$FF,$FA,$EA,$EB
	.BYTE	$EB,$EB,$EA,$FA
	.BYTE	$FF,$AF,$AF,$EF
	.BYTE	$FF,$EF,$AF,$AF
	.BYTE	$55,$55,$55,$55
	.BYTE	$55,$55,$55,$55
	.BYTE	$55,$55,$55,$69
	.BYTE	$69,$55,$55,$55
	.BYTE	$FF,$EA,$EE,$FE
	.BYTE	$FE,$FE,$FE,$FA
	.BYTE	$FF,$AB,$BB,$BF
	.BYTE	$BF,$BF,$BF,$AF
	.BYTE	$FF,$AB,$EB,$EA
	.BYTE	$EA,$EB,$EB,$AB
	.BYTE	$FF,$EA,$EB,$AB
	.BYTE	$AB,$EB,$EB,$EA
	.BYTE	$FF,$FE,$EA,$EB
	.BYTE	$EA,$FF,$EA,$FE
	.BYTE	$FF,$BF,$AB,$FF
	.BYTE	$AB,$EB,$AB,$BF
	.BYTE	$D5,$DF,$DF,$DF
	.BYTE	$DF,$DF,$DF,$D5
	.BYTE	$57,$F7,$F7,$F7
	.BYTE	$F7,$F7,$F7,$57
	.BYTE	$FF,$EA,$EB,$EB
	.BYTE	$EB,$EB,$EA,$EA
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$FF,$EF,$AF,$AF
	.BYTE	$5F,$5F,$5F,$5F
	.BYTE	$5F,$5F,$5F,$5F
	.BYTE	$F5,$F5,$F5,$F5
	.BYTE	$F5,$F5,$F5,$F5
	.BYTE	$EF,$BF,$FF,$FB
	.BYTE	$EE,$BF,$FE,$FF
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$00,$FF,$FF,$FF
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$00,$00,$FF,$FF
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$00,$00,$00,$FF
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$00,$00,$00,$00
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$00,$00,$00,$00
	.BYTE	$00,$FF,$FF,$FF
	.BYTE	$00,$00,$00,$00
	.BYTE	$00,$00,$FF,$FF
	.BYTE	$00,$00,$00,$00
	.BYTE	$00,$00,$00,$FF
	.BYTE	$C0,$C0,$F0,$F0
	.BYTE	$FC,$FC,$FF,$FF
	.BYTE	$F0,$F0,$F0,$F0
	.BYTE	$FC,$FC,$FC,$FC
	.BYTE	$03,$03,$0F,$0F
	.BYTE	$3F,$3F,$FF,$FF
	.BYTE	$0F,$0F,$0F,$0F
	.BYTE	$3F,$3F,$3F,$3F
	.BYTE	$FF,$FF,$FC,$FC
	.BYTE	$FC,$F0,$F0,$C0
	.BYTE	$FC,$FC,$FC,$FC
	.BYTE	$F0,$F0,$F0,$F0
	.BYTE	$FF,$FF,$BF,$BF
	.BYTE	$AF,$2F,$2B,$0B
	.BYTE	$BF,$BF,$BF,$BF
	.BYTE	$2F,$2F,$2F,$2F
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$FF,$FF,$FF,$AA
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$FF,$FF,$AA,$AA
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$FF,$AA,$AA,$00
	.BYTE	$BF,$BF,$BF,$BF
	.BYTE	$BF,$BF,$BF,$BF
	.BYTE	$A8,$A8,$00,$00
	.BYTE	$00,$00,$00,$00
	.BYTE	$FE,$FA,$F0,$F0
	.BYTE	$C0,$C0,$C0,$C0
	.BYTE	$CF,$CF,$CF,$CF
	.BYTE	$CF,$CF,$3F,$3F
	.BYTE	$3F,$3F,$3F,$3F
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$3F,$3F,$3F,$3F
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$FF,$FF,$3F,$0F
	.BYTE	$F0,$F0,$F0,$F0
	.BYTE	$F0,$C0,$C0,$00
	.BYTE	$FC,$FC,$FC,$FC
	.BYTE	$FC,$FC,$FC,$FC
	.BYTE	$03,$03,$03,$03
	.BYTE	$0F,$0F,$0F,$0F
	.BYTE	$3F,$3F,$3F,$3F
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$C0,$C0,$C0,$C0
	.BYTE	$F0,$F0,$FC,$FF
	.BYTE	$03,$03,$03,$03
	.BYTE	$0F,$0F,$3F,$FF
	.BYTE	$C0,$C0,$C0,$C0
	.BYTE	$C0,$C0,$C0,$C0
	.BYTE	$03,$03,$03,$03
	.BYTE	$03,$03,$03,$03
	.BYTE	$00,$00,$00,$03
	.BYTE	$03,$0F,$0F,$3F
	.BYTE	$F0,$FC,$FF,$FF
	.BYTE	$FC,$FF,$FC,$FC
	.BYTE	$F0,$FC,$FC,$FC
	.BYTE	$FC,$FC,$FC,$F0
	.BYTE	$FC,$F0,$C0,$C0
	.BYTE	$00,$00,$00,$00
	.BYTE	$FC,$F0,$F0,$F0
	.BYTE	$C0,$C0,$C0,$C0
	.BYTE	$C0,$C0,$C0,$C0
	.BYTE	$F0,$F0,$FC,$FC
	.BYTE	$C0,$C0,$F0,$F0
	.BYTE	$F0,$FC,$FC,$FC
	.BYTE	$FC,$FC,$FC,$F0
	.BYTE	$F0,$F0,$C0,$C0
	.BYTE	$FC,$F0,$C0,$F0
	.BYTE	$FC,$FC,$FF,$FF
	.BYTE	$C0,$00,$00,$00
	.BYTE	$C0,$C0,$C0,$C0
	.BYTE	$0B,$0B,$0B,$0B
	.BYTE	$0B,$0B,$0F,$0F
	.BYTE	$0F,$0F,$0F,$3F
	.BYTE	$3F,$3F,$FF,$FF
	.BYTE	$00,$00,$03,$03
	.BYTE	$03,$0F,$0F,$3F
	.BYTE	$00,$30,$BC,$BF
	.BYTE	$2F,$2F,$0B,$0B
	.BYTE	$0F,$0F,$0F,$CF
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$0C,$3C,$F0,$FF
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$00,$00,$00,$00
	.BYTE	$FC,$F0,$00,$00
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$FF,$F0,$C0,$C0
	.BYTE	$F0,$C0,$00,$00
	.BYTE	$00,$00,$00,$00
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$FF,$FF,$FF,$FC
	.BYTE	$FF,$BF,$BF,$BF
	.BYTE	$AF,$2F,$2B,$0A
	.BYTE	$3F,$3F,$3F,$3F
	.BYTE	$3F,$3F,$FF,$FF
	.BYTE	$FC,$FC,$F0,$F0
	.BYTE	$FC,$FC,$FF,$FF
	.BYTE	$00,$00,$00,$00
	.BYTE	$03,$0F,$3F,$FF
	.BYTE	$00,$03,$0F,$3F
	.BYTE	$FF,$FF,$FF,$FF
	.BYTE	$00,$00,$00,$00
	.BYTE	$03,$0F,$0F,$3F
	.BYTE	$F0,$F0,$F0,$F0
	.BYTE	$C0,$C0,$C0,$C0
	.BYTE	$AA,$AA,$00,$00
	.BYTE	$00,$00,$00,$00
	.BYTE	$0A,$0A,$00,$00
	.BYTE	$00,$00,$00,$00
	.BYTE	$02,$02,$00,$00
	.BYTE	$00,$00,$00,$00

Listing 5: Assembly

;SAVE#D:CAPITAL4.M65
;
;------------------;
;    CAPTIAL!      ;
;                  ;
; PMG & U.S.A. MAP ;
;                  ;
; by: Barry Kolbe  ;
;                  ;
;------------------;
;
;Set up PMG
;
SETPMG	LDA	#$3E	;enable PMG
	STA	SDMCTL
	LDA	#1	;set priority
	STA	GPRIOR
	LDX	#3	;set size to 0
	LDA	#0
	STA	BDL
PLS	STA	SIZEP0,X
	DEX
	BPL	PLS
	LDA	#3
	STA	GRACTL
	LDA	#>PMB	;set PMG base
	STA	PMBASE
;
;Initially put Players (Tokens)
;beneath the DICE
;
	LDX	#3
PPS	LDA	#$78	;vertical pos
	STA	PY0,X
	LDA	IXP,X	;initial horz
	STA	PX0,X	;position
	DEX
	BPL	PPS
;
;Set Token Colors
;
	LDX	#3
PC1	LDA	PCLR,X
	STA	PCOLR0,X
	LDA	#0	;all begin at
	STA	PTHP0,X	;'Stock Market'
	DEX
	BPL	PC1
	LDA	#0	;player 1
	STA	PNUM	;starts
;
RSTPMG	LDA	#$3E	;reset PMG
	STA	SDMCTL	;for MAP
	LDA	#1	;screen
	STA	GPRIOR
	RTS
;
;Initial X Positions of Tokens
;
IXP	.BYTE	$60,$68,$70,$78
;
;Put P/M on screen
;
SHOWPM	LDA	ONBRD	;is '1' alive?
	BEQ	J1	;nope
	JSR	DEFP0	;show '1'
J1	LDA	ONBRD+1	;'2' on?
	BEQ	J2	;etc.
	JSR	DEFP1
J2	LDA	ONBRD+2
	BEQ	J3
	JSR	DEFP2
J3	LDA	ONBRD+3
	BEQ	J4
	JSR	DEFP3
J4	RTS
;
;Entry Point While Playing
;
FAKE	CLD		;clear decimal
	LDX	#$FF	;reset stack
	TXS
	JSR	INITAB	;redo tables
	JSR	SNDOFF	;init snd
	JSR	INTRO	;show intro
	JSR	SETPMG	;set up PMG
	JSR	CLRPMG	;clear PMG mem
	JSR	FORMDOL	;show $ line
	JSR	RESROL	;DICE mesg
	JSR	SHWPUR	;show 'free'
;
;Entry point of MAP moves
;
ENTRY	LDA	#<DL	;display list
	STA	SDLSTL
	LDA	#>DL
	STA	SDLSTL+1
	LDA	#>CSET	;char. set
	STA	CHBAS
	JSR	RSTPMG	;reset PMG
	LDX	#4	;get MAP
MC1	LDA	MAPCL,X	;colors
	STA	COLOR0,X
	DEX
	BPL	MC1
	LDA	#0	;DLI cntr
	STA	BDL
	STA	AMOUNT+1	;safety
	LDA	#<DLI	;set up DLI
	STA	VDSLST
	LDA	#>DLI
	STA	VDSLST+1
	JSR	SHOWPM	;put tokens on
;
	LDX	PNUM	;get plyr #
	LDA	ONBRD,X	;alive?
	BNE	MV1	;yes
	JMP	NXP	;no do next
MV1	LDY	#0	;put plyr name
	LDA	X9,X	;on screen
	STA	SCR
	LDA	#>NAMEBUF
	STA	SCR+1
GNL	LDA	(SCR),Y	;get length
	BEQ	GNE	;of name
	INY
	BNE	GNL
GNE	STY	SVY	;save Y
	LDA	#20	;20 bytes/line
	SEC		;subt from 20
	SBC	SVY
	LSR	A	;1/2
	TAX		;use as index
	LDY	#19	;0 out line
	LDA	#0	;20 bytes
GNC	STA	PLRN,Y
	DEY
	BPL	GNC
	INY
	LDA	#59	;put '[#]'
	STA	PLRN-4,X	;on screen
	LDA	#61
	STA	PLRN-2,X
	LDA	PNUM	;get plyr #
	CLC
	ADC	#$11	;for screen
	STA	PLRN-3,X	;show #
GNP	LDA	(SCR),Y	;next the name
	BEQ	GNU	;done on 0
	JSR	ASC2IC	;INT code
	STA	PLRN,X	;show char
	INX
	INY
	BNE	GNP
GNU	LDA	#53	;' UP '
	STA	PLRN+1,X
	LDA	#48
	STA	PLRN+2,X
SCC	LDA	CONSOL	;wait for
	CMP	#3	;OPTION
	BNE	SCC
	JSR	ROLDIC	;roll 'em
;
;Move the Tokens
;
	LDA	PNUM	;plyr #
	ASL	A	;x2 for table
	TAX
	LDA	ETAB,X	;erase table
	STA	EJSR+1
	LDA	ETAB+1,X
	STA	EJSR+2
	LDA	DTAB,X	;define table
	STA	DJSR+1
	LDA	DTAB+1,X
	STA	DJSR+2
;
MAIN	DEC	SQRS	;# to move
EJSR	JSR	ERSP0	;erase token
	LDX	PNUM	;plyr #
	INC	PTHP0,X	;next square
	LDA	PTHP0,X	;all the way
	CMP	#36	;around yet?
	BNE	MOK	;no
	LDA	#0	;yes reset to 0
	STA	PTHP0,X
MOK	LDA	PTHP0,X	;find new
	TAY		;position of
	LDA	PTHX,Y	;token(Player)
	STA	PX0,X
	LDA	PTHY,Y
	STA	PY0,X
DJSR	JSR	DEFP0	;show token
	JSR	BEEP	;make a sound
	LDX	PNUM	;plyr #
	LDA	PTHP0,X	;see if on $
	BNE	MKK	;no
	LDX	#0	;scroll message
	JSR	MESSAG
	LDA	#12	;add 12G to
	LDY	PNUM	;player
	JSR	ADD
MKK	JSR	WAIT	;wait a little
	JSR	SHWPRP	;show name
	LDA	SQRS	;done moving?
	BNE	MAIN	;no
	LDX	PNUM	;get location
	LDA	PTHP0,X
;
;dont wait on specials
;
	LDY	#3
SCM	CMP	SPLC,Y	;is it LUCK
	BEQ	NOW	;HILTON, TAX
	DEY		;CAP GAINS
	BPL	SCM
;
;This is a square that requires
;a transaction, so we remove
;the P/M and call the TRANS
;routine.  Then we restore the
;MAP screen display and loop.
;
	JSR	WAITKEY	;wait or key
	JSR	CLRPMG	; remove PMG
	JSR	TRANS	;go to TRANS
;
;NOW is entry spot from T_OK
;
NOW	JSR	RESROL	;reset ROLL DICE
	LDX	PNUM	;plyr #
	LDA	PTHP0,X	;location
	BEQ	COV	;if it is $
	JSR	CKMES	;other specials?
COV	JSR	SHWPUR	;show name
NXP	INC	PNUM	;next plyr
	LDA	PNUM	;only 0-3
	AND	#3
	STA	PNUM	;next person's
	JMP	ENTRY	;move
;
;Clear PMG Memory
;
CLRPMG	LDX	#0
	TXA
CP1	STA	P0,X
	STA	P1,X
	STA	P2,X
	STA	P3,X
	INX
	BNE	CP1
	LDX	#3	;put plyrs off
CP2	STA	HPOSP0,X	;screen
	DEY
	BPL	CP2
	RTS
;
;Four routines to define
;each of the four players
;vertically & horizontally
;
DEFP0	LDX	#0	;define
	LDY	PY0	;player 0
DF0	LDA	P0DEF,X	;vertically
	STA	P0,Y
	INY
	INX
	CPX	#13
	BNE	DF0	;and set its
	LDA	PX0	;horizontal
	STA	HPOSP0	;position
	RTS
;
DEFP1	LDX	#0
	LDY	PY0+1
DF1	LDA	P1DEF,X
	STA	P1,Y
	INY
	INX
	CPX	#13
	BNE	DF1
	LDA	PX0+1
	STA	HPOSP0+1
	RTS
;
DEFP2	LDX	#0
	LDY	PY0+2
DF2	LDA	P2DEF,X
	STA	P2,Y
	INY
	INX
	CPX	#13
	BNE	DF2
	LDA	PX0+2
	STA	HPOSP0+2
	RTS
;
DEFP3	LDX	#0
	LDY	PY0+3
DF3	LDA	P3DEF,X
	STA	P3,Y
	INY
	INX
	CPX	#13
	BNE	DF3
	LDA	PX0+3
	STA	HPOSP0+3
	RTS
;
;Four routines to erase each
;of the four players
;
ERSP0	LDY	PY0	;get vert.
	LDA	#0	;position
	LDX	#12	;erase the
EP0	STA	P0,Y	;13 bytes
	INY
	DEX
	BPL	EP0
	RTS
;
ERSP1	LDY	PY0+1
	LDA	#0
	LDX	#12
EP1	STA	P1,Y
	INY
	DEX
	BPL	EP1
	RTS
;
ERSP2	LDY	PY0+2
	LDA	#0
	LDX	#12
EP2	STA	P2,Y
	INY
	DEX
	BPL	EP2
	RTS
;
ERSP3	LDY	PY0+3
	LDA	#0
	LDX	#12
EP3	STA	P3,Y
	INY
	DEX
	BPL	EP3
	RTS
;
;Table of Erase Players Routines
;
ETAB	.WORD	ERSP0
	.WORD	ERSP1
	.WORD	ERSP2
	.WORD	ERSP3
;
;
;Table of Define Player Routines
;
DTAB	.WORD	DEFP0
	.WORD	DEFP1
	.WORD	DEFP2
	.WORD	DEFP3
;
;Change Character Sets in DLI
;
DLI	PHA
	LDA	BDL	;which DLI?
	BNE	BL2	;not 1st
	LDA	#>MSET	;switch to
	STA	CHBASE	;our ROM set
	STA	WSYNC
	LDA	#$82	;change colors
	STA	COLPF2	;blue
	LDA	#$DA	;bright green
	STA	COLPF1
	LDA	#$E6	;Orng Green
	STA	COLPF3
	INC	BDL	;next DLI
	PLA		;routine
	RTI
BL2	CMP	#1	;next DLI?
	BNE	BL3	;no
	LDA	#MONEY_CLR	;color
	STA	WSYNC	;for $ line
	STA	COLPF2
	LDA	#0	;backgrnd
	STA	COLBK	;scan line
	INC	BDL	;next DLI
	PLA
	RTI
BL3	LDA	#MONEY_CLR	;bottom
	STA	WSYNC	;all one
	STA	COLBK	;color
	PLA
	RTI
;
;Roll DICE with OPTION
;stop them with SELECT
;
ROLDIC	LDA	#0	;sqrs=# to move
	STA	SQRS
	JSR	GETRND	;get random #
	LDX	#0	;now show it
	LDY	#0	;on DIE # 1
DR1	LDA	(L),Y	;move 3 bytes
	STA	DICPOS-$27,X	;to
	INX		;screen:x is
	INY		;offset
	CPY	#3
	BNE	DR1
	LDX	#0	;move 3 more
DR2	LDA	(L),Y	;1 line down
	STA	DICPOS+1,X
	INX
	INY
	CPY	#6
	BNE	DR2
	LDX	#0	;& 3 more
DR3	LDA	(L),Y
	STA	DICPOS+$29,X	;another
	INX		;line down
	INY
	CPY	#9
	BNE	DR3
	JSR	GETRND	;now do 2nd
	LDY	#0	;DIE
	LDX	#5	;move x over
DT1	LDA	(L),Y
	STA	DICPOS-$27,X
	INX
	INY
	CPY	#3	;3 bytes from
	BNE	DT1	;dice definition
	LDX	#7	;table
DT2	LDA	(L),Y
	STA	DICPOS-1,X
	INX
	INY
	CPY	#6	;3 more
	BNE	DT2
	LDX	#5	;next line
DT3	LDA	(L),Y
	STA	DICPOS+$29,X
	INX
	INY
	CPY	#9
	BNE	DT3
	STA	CONSOL	;clear CONSOL
	JSR	WAIT
	LDA	CONSOL	;wait for
	CMP	#5	;SELECT
	BNE	ROLDIC	;keep rollin'
	RTS
;
;Get Random DICE Throws
;
GETRND	LDA	RANDOM	;only 0-5
	AND	#7
	CMP	#6
	BCS	GETRND
	TAX		;current throw
	CLC
	ADC	SQRS	;0-5
	STA	SQRS
	INC	SQRS	;1-6
	TXA
	ASL	A	;x2 for table
	TAX
	LDA	RTAB,X	;get right
	STA	L	;bytes for
	LDA	RTAB+1,X	;DICE
	STA	L+1
	RTS
;
;Wait a few jiffies
;
WAIT	LDA	#0
	STA	RTCLOK
WA	LDA	RTCLOK
	CMP	#6
	BCC	WA
	RTS
;
;Wait for 8 seconds or until
;a key is pressed.
;
WAITKEY	LDX	#$FF	;clear CH
	STX	CH
	LDA	CH	;read keyboard
	CMP	#$FF	;unitl released
	BNE	WAITKEY
	LDA	#0	;set clock
	STA	RTCLOK
	STA	RTCLOK-1
WK	LDA	CH	;key pressed?
	CMP	#$FF
	BNE	WTDON	;yes-exit
	LDA	RTCLOK-1	;no see if
	CMP	#2	;time is up
	BCC	WK
WTDON	STX	CH	;clear CH
	RTS
;
;Initialixe Sound Registers
;
SNDOFF	LDX	#7
	LDA	#0
SN1	STA	AUDF1,X
	DEX
	BPL	SN1
	STA	$D208
	RTS
;
;Make a BEEP sound
;
BEEP	LDA	#$85
	STA	AUDF1
	LDA	#$A8
	STA	AUDF1+1
	JSR	WAIT
	LDA	#0
	STA	AUDF1
	STA	AUDF1+1
	RTS
;
;Scroll Messages for Special
;Properties. X = msg #
;
MESSAG	LDA	SCTAB,X	;how far to
	PHA		;scroll
	STA	SCNT	;save it
	JSR	RESROL	;reset line
SC4	INC	TWIN	;coarse scroll
	BNE	SC1
	INC	TWIN+1
SC1	DEC	SCNT	;decrease cntr
	JSR	JIFF	;wait a jiffy
	LDA	SCNT	;done yet?
	BNE	SC4	;no
	JSR	WAITKEY	;wait 8 secs
	PLA		;amount to
	STA	SCNT	;scroll back
SC3	DEC	TWIN	;do the back
	JSR	JIFF	;ward scolling
	LDA	TWIN
	CMP	#$FF
	BNE	SC2
	DEC	TWIN+1
SC2	DEC	SCNT	;countdown
	BNE	SC3	;not done
	JSR	RESROL	;reset line
	RTS		;exit
;
;Number of bytes to scroll
;
SCTAB	.BYTE	40,80,120
;
;reset the ROLL DICE message
;
RESROL	LDA	#<RLMES
	STA	TWIN
	LDA	#>RLMES
	STA	TWIN+1
	RTS
;
;Check for Scolling Message
;
CKMES	LDA	PNUM	;plyr #
	TAX
	ASL	A
	TAY
	LDA	PTHP0,X	;which prop
	LDX	#1	;for scroll
	CMP	#17	;taxes?
	BNE	NTAX	;no
	LDA	CASH,Y	;if taxes
	STA	L	;div cash by
	LDA	CASH+1,Y	;8 and
	STA	L+1	;subtract
	LSR	L+1	;from cash
	ROR	L	;if able to
	LSR	L+1	;otherwise
	ROR	L	;just exit
	LSR	L+1
	ROR	L	;this is a
	LDA	CASH,Y	;tax break
	SEC		;for the poor
	SBC	L
	STA	CASH,Y
	LDA	CASH+1,Y
	SBC	L+1
	STA	CASH+1,Y
	JSR	FORMDOL	;show new $
	LDX	#1	;now scroll
	JMP	MJM
NTAX	INX		;vacation=2
	CMP	#11	;HOGG #1
	BEQ	MJM
	CMP	#26	;HOGG #2
	BEQ	MJM
	RTS		;done
MJM	JMP	MESSAG	;go scroll
;
;Dice Definition Tables
;
RTAB	.WORD	ONE
	.WORD	TWO
	.WORD	TRE
	.WORD	FOR
	.WORD	FIV
	.WORD	SIX
;
ONE	.SBYTE	"QQQQRQQQQ"
TWO	.SBYTE	"RQQQQQQQR"
TRE	.SBYTE	"RQQQRQQQR"
FOR	.SBYTE	"RQRQQQRQR"
FIV	.SBYTE	"RQRQRQRQR"
SIX	.SBYTE	"RQRRQRRQR"
;
;These are the Token Definitions
;
P0DEF	.BYTE	$60,$E0,$60,$60
	.BYTE	$60,$F0,$00,$3C,$3C
	.BYTE	$3C,$3C,$3C,$3C
;
P1DEF	.BYTE	$38,$6C,$0C,$18
	.BYTE	$30,$7C,$00,$3C,$3C
	.BYTE	$3C,$3C,$3C,$3C
;
P2DEF	.BYTE	$7E,$0C,$18,$0C
	.BYTE	$66,$3C,$00,$3C,$3C
	.BYTE	$3C,$3C,$3C,$3C
;
P3DEF	.BYTE	$1B,$1B,$1F,$1F
	.BYTE	$03,$03,$00,$3C,$3C
	.BYTE	$3C,$3C,$3C,$3C
;
;These are the Horizontal
;positions of the Players
;
PTHX	.BYTE	$98,$98,$90,$88
	.BYTE	$80,$78,$70,$68
	.BYTE	$60,$58,$50,$50
	.BYTE	$48,$40,$40,$40
	.BYTE	$40,$40,$48,$50
	.BYTE	$58,$60,$68,$70
	.BYTE	$78,$80,$88,$88
	.BYTE	$88,$90,$98,$A0
	.BYTE	$A8,$A8,$A8,$A0
;
;These are the Vertical
;positions of the Players
;
PTHY	.BYTE	$78,$88,$88,$88
	.BYTE	$88,$88,$88,$88
	.BYTE	$88,$88,$88,$78
	.BYTE	$78,$78,$68,$58
	.BYTE	$48,$38,$38,$38
	.BYTE	$38,$38,$38,$38
	.BYTE	$38,$38,$38,$48
	.BYTE	$58,$58,$58,$58
	.BYTE	$58,$68,$78,$78
;
;The MAP colors and the
;TOKEN colors
;
MAPCL	.BYTE	$4E,$A0,$F4,$E0,$82
PCLR	.BYTE	$02,$42,$7A,$C6
;
;These are the low and hi bytes
;of the screen position of each
;property square on the MAP
;
SCL	.BYTE	$FA,$4A,$48,$46,$44
	.BYTE	$42,$40,$3E,$3C,$3A
	.BYTE	$38,$E8,$E6,$E4,$94
	.BYTE	$44,$F4,$A4,$A6,$A8
	.BYTE	$AA,$AC,$AE,$B0,$B2
	.BYTE	$B4,$B6,$06,$56,$58
	.BYTE	$5A,$5C,$5E,$AE,$FE
	.BYTE	$FC
;
SCH	.BYTE	$71,$72,$72,$72,$72
	.BYTE	$72,$72,$72,$72,$72
	.BYTE	$72,$71,$71,$71,$71
	.BYTE	$71,$70,$70,$70,$70
	.BYTE	$70,$70,$70,$70,$70
	.BYTE	$70,$70,$71,$71,$71
	.BYTE	$71,$71,$71,$71,$71
	.BYTE	$71
;
;If a property is bought
;show it with a thicker
;box or circle. Each symbol
;is 2 ANTIC 4 characters wide,
;
SHWPUR	LDX	#35	;go thru all
SHH	LDA	SCL,X	;36-first
	STA	L	;get its
	LDA	SCH,X	;screen location
	STA	L+1
	LDA	REFTAB,X	;find out its
	BMI	FJ	;status: special
	BNE	FI
	LDY	#0	;0=single free
	LDA	#$39	;left side box
	STA	(L),Y
	INY
	LDA	#$3A	;right side
	STA	(L),Y	;box
FJ	DEX		;next property
	BPL	SHH
	RTS		;done
FI	CMP	#1	;1=singl,bought
	BNE	FK
	LDA	#$2D	;thick box,left
	LDY	#0
	STA	(L),Y
	INY
	LDA	#$2E	;thick,right
	STA	(L),Y
	BNE	FJ
FK	CMP	#2	;double,free?
	BNE	FL	;no
	LDY	#0
	LDA	#$2B	;circle
	STA	(L),Y	;left side
	INY
	LDA	#$2C	;right side
	STA	(L),Y
	BNE	FJ
FL	CMP	#3	;double,bought
	BNE	FJ
	LDY	#0
	LDA	#$29	;thick circle
	STA	(L),Y	;left side
	INY
	LDA	#$2A	;right side
	STA	(L),Y
	BNE	FJ
;
;Show the Property Name as
;you go by it.
;
SHWPRP	JSR	CLRPRP	;clear line
	LDA	#<PRPLIN	;point to
	STA	TWIN	;line in
	LDA	#>PRPLIN	;display
	STA	TWIN+1	;list
	LDX	PNUM	;plyr #
	LDA	PTHP0,X	;get prop #
	ASL	A
	TAX		;x2 for table
	LDA	PRPTAB,X	;get name
	STA	L
	LDA	PRPTAB+1,X
	STA	L+1
	LDY	#0
	LDX	#10	;posit. on
SP1	LDA	(L),Y	;line,get byte
	BEQ	SP2	;0=done
	JSR	ASC2IC	;to INT code
	STA	PRPLIN,X	;show it
	INY
	INX
	BNE	SP1
SP2	RTS
;
;Clear Property Show Line
;
CLRPRP	LDX	#39
	LDA	#0
CPL	STA	PRPLIN,X
	DEX
	BPL	CPL
	RTS
;
;The Property Names
;
P01	.BYTE	"Bar-B-Q Ranch",0
P02	.BYTE	"Ringading Phone",0
P03	.BYTE	"Crosseye Cable TV",0
P04	.BYTE	"Olde Yorke Times",0
P05	.BYTE	"Spuds Potato Farm",0
P06	.BYTE	"Black Gold Oil",0
P07	.BYTE	"Rex Auto Corp.",0
P08	.BYTE	"Thredbare Clothing",0
P09	.BYTE	"Kolbe's Cheese",0
P10	.BYTE	"Daisy's Dairy",0
P11	.BYTE	"Black Jack's Casino"
	.BYTE	0
P12	.BYTE	"Death Valley Spa",0
P13	.BYTE	"Adams Apple Orchard"
	.BYTE	0
P14	.BYTE	"Sour Grapes Vineyard"
	.BYTE	0
P15	.BYTE	"Short Circuit P & L"
	.BYTE	0
P16	.BYTE	"Heavy Water Company"
	.BYTE	0
P17	.BYTE	"Stytch's Clinic",0
P18	.BYTE	"Schappel's Scalpels"
	.BYTE	0
P19	.BYTE	"Crosstrax Railway",0
P20	.BYTE	"Drip Dry Cleaners",0
P21	.BYTE	"Jetstream Airlines",0
P22	.BYTE	"HAL Computers",0
P23	.BYTE	"Selmart Stores",0
P24	.BYTE	"IOU Penneys",0
P25	.BYTE	"Wilt's Vegetables",0
P26	.BYTE	"Titanic Shipping",0
P27	.BYTE	"Steal Steelworks",0
P28	.BYTE	"Silicon Gulch",0
P29	.BYTE	"Disastrous Insurance"
	.BYTE	0
P30	.BYTE	"The Luck Square",0
P31	.BYTE	0
P32	.BYTE	"Capital Gains Tax",0
;
;The Look-Up Table for each
;square on the MAP board.
;* marks the doubles
;
PRPTAB	.WORD	P31	;stock market
	.WORD	P25	;wilt veg    *
	.WORD	P26	;titanic ship*
	.WORD	P07	;rex auto
	.WORD	P18	;schappel *
	.WORD	P17	;stytches *
	.WORD	P30	;L (luck)
	.WORD	P19	;crosstrax rail
	.WORD	P06	;black gold oil
	.WORD	P22	;HAL computer *
	.WORD	P28	;silicon gulch*
	.WORD	P31	;H (holiday)
	.WORD	P11	;casino
	.WORD	P12	;death valley
	.WORD	P23	;selmart
	.WORD	P13	;adams apple *
	.WORD	P14	;sour grapes *
	.WORD	P31	;T (taxman)
	.WORD	P20	;drip dry
	.WORD	P05	;spud potatoes *
	.WORD	P01	;bbq ranch     *
	.WORD	P21	;jetstream air
	.WORD	P30	;L (luck)
	.WORD	P02	;phone co
	.WORD	P24	;iou pennys
	.WORD	P08	;threadbare
	.WORD	P31	;H (holiday)
	.WORD	P09	;kolbe *
	.WORD	P10	;daisy *
	.WORD	P27	;steal steel
	.WORD	P03	;crosseye TV *
	.WORD	P04	;olde yorke  *
	.WORD	P32	;C (capital tax)
	.WORD	P29	;insurance
	.WORD	P16	;heavy H2O *
	.WORD	P15	;P&L       *

Listing 6: Assembly

;SAVE#D:CAPITAL5.M65
;
;--------------------;
;                    ;
;CAPITAL! Subroutines;
;                    ;
;by: Bryan Schappel  ;
;                    ;
;--------------------;
;
;Get the Rent of a property
;
GET_RENT	LDA	CPROP	;curr prop
	TAX		;offset in table
	LDA	RENT,X	;get rent
	STA	AMOUNT	;save
	LDA	#0	;0 hi byte
	STA	AMOUNT+1
	LDA	XREF,X	;is this a dbl?
	BNE	GOTD	;YES!
	RTS		;no.
;
GOTD	TAY		;half #
	LDA	WHO,Y	;get owner
	CMP	OWNER	;same as landed
	BNE	ROUT	;on? no!
	LDA	RENT,Y	;YES! Make rent
	CLC		;=half+half
	ADC	AMOUNT
	STA	AMOUNT
	LDA	AMOUNT+1
	ADC	#0
	STA	AMOUNT+1
ROUT	RTS		;exit
;
;Handle an Improvement
;
IMPROVE	JSR	HAVE_ANY	;own any?
	BPL	IM1	;YES
	RTS		;none if -
IM1		PRINT IMP_TXT	;'Improve?'
	JSR	GETYN	;Yes/No
	BEQ	GIM	;0 = yes
	RTS		;out
GIM	LDA	PNUM	;plyr #
	ASL	A	;x2
	TAY
	LDA	CASH+1,Y	;see if plyr
	BNE	GIMP	;has $10G
	LDA	CASH,Y	;plus $1G
	CMP	#11
	BCS	GIMP	;sure
	JMP	NO_CASH	;not enuf
GIMP	JSR	PICK_PROP	;pick a prop
	LDX	PPROP	;picked prop #
	BMI	GOUT	;- = none pick
	BNE	IMP_IT
GOUT	RTS		;0 = no
;
IMP_IT	LDA	IMP,X	;get cur level
	CMP	#3	;at max. level?
	BCC	DO_IMP	;no
		PRINT MAX	;'At max'
	JMP	WAITKEY	;exit
DO_IMP	LDA	RENT,X	;get rent
	ASL	A	;x2
	STA	RENT,X	;save it
	INC	IMP,X	;inc level
	LDA	COST,X	;add 5 to
	CLC		;prop cost
	ADC	#5
	STA	COST,X
	LDA	#10	;costs $10g
	LDY	PNUM	;to inprove
	JSR	SUB
	JMP	T_OK	;'Trans. comp'
;
;Get a Yes or No
;0= yes <> = no
;
GETYN		PRINT YNTXT	;'Yes No'
GYN	JSR	GETCH
	CMP	#43	;a Y
	BNE	TRYN
	RTS
TRYN	CMP	#$23	;an N
	BNE	GYN
	CMP	#0	;force BNE
	RTS
;
;Make a Player PAY
;
PAY_RENT	JSR	GET_RENT	;get rent
		PRINT FEE	;print it
	LDA	#0	;pay to
	STA	RFLAG	;player
	BEQ	JJSS
JUST_PAY	LDA	#1	;just lose $
	STA	RFLAG
JJSS	LDA	PNUM	;plyr #
	ASL	A	;x2
	TAY
	LDA	CASH+1,Y	;get CASH
	CMP	AMOUNT+1	;is it enuf?
	BEQ	PALO	;check low
	BCS	PAY_IT	;yes
PALO	LDA	CASH,Y	;enuf low?
	CMP	AMOUNT
	BCC	FORCE	;no,force sell
	BEQ	FORCE	;ditto
PAY_IT	LDY	PNUM	;pay
	LDA	AMOUNT	;this amount
	JSR	SUB
	LDA	#0	;turn disaster
	STA	DISFLAG	;flag off
	LDA	RFLAG	;just lose if
	BNE	TOK	;<> 0
	LDY	OWNER	;pay owner
	LDA	AMOUNT	;the amount
	JSR	ADD	;add to owner
TOK	JMP	T_OK	;exit
FORCE	LDA	#1	;force sale
	STA	DISFLAG	;of props
	JSR	MAKE_RAN	;selling prices
	LDA	SPEED	;fast game=0
	BEQ	DED
	JSR	NO_CASH	;'No cash'
	JSR	WANT_SALE	;sell props
	LDA	PPROP	;get prop #
	BPL	JJSS	;ok,try pay
DED	PLA		;no props so
	PLA		;player dies
	JMP	DEAD	;tell everyone
;
;Pick a Property
;
PICK_PROP	LDA	CPROP	;save curr.
	STA	TPROP	;property #
	JSR	HAVE_ANY	;have any?
	BPL	G_PICK	;yes
	STY	PPROP	;no Y=$FF
	RTS		;exit
G_PICK	LDY	#0	;cycle thru
PCK1	LDA	WHO,Y	;props. who
	STY	CPROP	;owns this one
	CMP	PNUM	;ME?
	BNE	PCKU	;no
	JSR	SHOPROP	;show prop info
	INC	PAUSE?	;1 = fast prnt
	LDA	DISFLAG	;disaster?
	BEQ	PCKQ	;no
		PRINT AMTOWD	;'Amt owed'
	LDA	AMOUNT	;print amnt
	LDX	AMOUNT+1
	JSR	PRNUM
PCKQ		PRINT PICK_MESS	;'pick?'
	LDA	DISFLAG	;if disaster
	BNE	PCKX	;must pick
		PRINT PICK_REST	;'ESC'
PCKX	DEC	PAUSE?	;slow down
PCKK	JSR	GETCH	;get key
	CMP	#28	;ESC?
	BNE	NOESC	;no
	LDA	DISFLAG	;yes,but if
	BNE	PCKK	;disaster -no
	LDA	#0	;if ESC set to
	STA	CPROP	;0 => none
	BEQ	PICK_LV	;leave
NOESC	CMP	#33	;SPACE?
	BEQ	PCKU	;next one
	CMP	#12	;RETURN?
	BNE	PCKK	;picked one
PICK_LV	LDA	CPROP	;get picked
	STA	PPROP	;property
	LDA	TPROP	;restore
	STA	CPROP	;cur. prop
	RTS
;
PCKU	LDY	CPROP	;get prop
	INY		;next one
	CPY	#36	;at end?
	BCC	PCK1	;no-cycle
	LDY	#0	;reset to 0
	BEQ	PCK1
;
;Handle Buying a Property
;
BUY_IT		PRINT BUY_MESS	;'Buy?'
	JSR	GETYN	;choice
	BEQ	BUY1	;yes
	RTS		;don't want to
;
BUY1	LDA	PNUM	;which plyr
	LDY	CPROP	;cur. prop
	ASL	A	;x2
	TAX
	LDA	CASH+1,X	;enuf CASH?
	BNE	BUY_OK	;yes
	LDA	CASH,X	;check low bytes
	CMP	COST,Y
	BCC	NO_CASH	;not enuf
	BEQ	NO_CASH	;  "
BUY_OK	LDA	PNUM	;show who
	STA	WHO,Y	;now owns it
	TYA
	TAX		;show it has
	INC	REFTAB,X	;been purchased
	LDA	COST,Y	;get price
	LDY	PNUM	;subtract
	JSR	SUB	;from CASH
T_OK		PRINT TRAN_OK	;'Complted'
	JSR	WAITKEY	;wait 8 secs
	LDA	#0	;set pay to
	STA	RFLAG	;flag & hi
	STA	AMOUNT+1	;byte of pay
	RTS		;amount
;
;Sorry no CASH
;
NO_CASH	LDA	#<NCASH
	LDY	#>NCASH
	JSR	EPRINT
	JSR	WAITKEY	;wait 8 secs
	LDA	#0
	RTS
;
;Sell a Property
;
WANT_SALE	JSR	HAVE_ANY	;any?
	BPL	P_SALE	;yes if +
	STY	PPROP	;$FF if -
	RTS
P_SALE	LDA	DISFLAG	;disaster?
	BNE	GO_SELL	;yes-sell
		PRINT SELL_TXT	;choice
	JSR	GETYN	;if not forced
	BEQ	GO_SELL	;sell
SLV	RTS
;
GO_SELL	JSR	PICK_PROP	;pick one
	LDA	PPROP	;picked
	BMI	SLV	;none available
	BNE	SELL_IT	;if $FF. 0
	LDA	DISFLAG	;=none picked
	BNE	GO_SELL	;forced sell
	RTS
;
SELL_IT	TAX		;which prop
	DEC	REFTAB,X	;sell it in
	LDA	#$FF	;table, $FF =
	STA	WHO,X	;no one owns
	LDA	RANTAB,X	;another
;   sta cost,X  ;way to make
	LDY	PNUM	;the game
	JSR	ADD	;add $ to CASH
	JMP	T_OK	;done
;
;Own any Properties
;Y has propery # or 0
;+ if prop owned, - if not
;
HAVE_ANY	LDY	#35	;check list
	LDA	PNUM	;get our #
HAV1	CMP	WHO,Y	;in table?
	BEQ	HAV2	;yes
	DEY
	BPL	HAV1
HAV2	RTS
;
;Handle LUCK locations
;
DO_LUCK	LDX	PNUM	;plyr #
	LDA	PTHP0,X	;cur prop #
	CMP	#32	;cap gains?
	BNE	DO_RLUK	;no
	LDA	#<CAPGNS	;CG routine
	STA	LJMP+1
	LDA	#>CAPGNS
	STA	LJMP+2
	LDA	#$7D	;clear scn
	JSR	EPUT
	LDA	#<P32	;CG prop name
	LDY	#>P32
	JMP	DO_CG
DO_RLUK	LDX	RANDOM	;get random
	CPX	#6	;LUCK
	BCS	DO_LUCK
	LDA	LUCKL,X	;get LUCK
	STA	LJMP+1	;routine
	LDA	LUCKH,X
	STA	LJMP+2
	LDA	#$7D	;clear scn
	JSR	EPUT
	LDA	#<P30	;'LUCK Sq'
	LDY	#>P30
DO_CG	JSR	INVPROP	;inverse name
		PRINT YL	;'You lose'
LJMP	JSR	$FFFF	;go to routine
	JMP	T_OK	;done
;
;** Luck Routines **
;
;Win 10G free (WOW for ME?)
;
G1	LDA	#10
	BNE	G2.1
;
;Win 15G free
;
G2	LDA	#15	;give $
G2.1	LDY	PNUM	;to whom?
	STA	VALUE
	JSR	ADD	;add to CASH
	JSR	PG	;Luck is 'good'
		PRINT YW	;'You win'
	LDA	VALUE	;'$nnG'
	LDX	#0
	JMP	PRNUM	;print & exit
PG		PRINT GOOD	;print 'good'
	RTS
;
;Get a FREE Improvement
;
G3	JSR	GRPROP	;get a prop
	BMI	G1	;none so
	TAX		;give $
	LDA	IMP,X	;get level
	CMP	#3	;at max?
	BCS	G1	;yup give $
	INC	IMP,X	;increase it
	LDA	RENT,X	;get fee
	ASL	A	;x2
	STA	RENT,X	;save it
	STX	TPROP	;save prop #
	JSR	PG	;'good'
		PRINT YW	;'You win'
		PRINT AN_IMP	;'improv..'
	LDA	TPROP	;get prop #
	ASL	A	;x2
	TAX		;get name
	LDA	PRPTAB+1,X
	TAY
	LDA	PRPTAB,X
	JMP	EPRINT	;print & exit
;
;Loose 10G
;
B1	JSR	PB	;'Bad luck'
		PRINT YD	;'You lose'
	LDA	#10	;'$10G'
B1A	STA	AMOUNT	;low amt
	LDX	#0	;high amt
	JSR	PRNUM	;show it
	INC	RFLAG	;pay to bank
	JSR	JUST_PAY	;take it away
	PLA		;pull return
	PLA
	RTS		;exit
;
PB	LDA	#<BAD	;print 'bad
	LDY	#>BAD	;luck'
	JMP	EPRINT
;
;Cut the Rent(Fee) in half
;
B2	JSR	GRPROP	;grab prop #
	BMI	B1	;none
	TAX
	LDA	RENT,X	;get rent
	CMP	#2	;don't fall
	BCC	B1	;below 1
	LSR	A	;div 2
	STA	RENT,X	;save it
	LDA	#<HR	;'1/2 value
	LDY	#>HR	;'on improv..'
;
SB	PHA		;save hi/lo
	STY	L	;of msg
	JSR	PB	;'bad luck'
	JSR	PUTCR	;linefeed
	PLA		;get msg
	LDY	L
	JSR	EPRINT	;print it
	LDA	PPROP	;picked prop
	ASL	A
	TAX		;get name
	LDA	PRPTAB+1,X
	TAY
	LDA	PRPTAB,X
	JMP	EPRINT	;print name
;
;Halve the Value of a Property
;
B3	JSR	GRPROP	;grab a prop #
	BMI	B1	;none
	TAX
	LDA	COST,X	;get price
	CMP	#2	;not LT 1
	BCC	B1
	LSR	A	;div by 2
	STA	COST,X	;save it
	LDA	#<HV	;'1/2 value'
	LDY	#>HV
	BNE	SB	;print it
;
;Luck address tables
;alternate for randomness
;
LUCKL	.BYTE	<B1,<G1,<B2
	.BYTE	<G2,<B3,<G3
LUCKH	.BYTE	>B1,>G1,>B2
	.BYTE	>G2,>B3,>G3
;
;Luck Text
;
GOOD	.BYTE	"Good.",EOL,0
BAD	.BYTE	"Bad.",EOL,0
YL	.BYTE	EOL,EOL,"Your luck "
	.BYTE	"was - ",0
YW	.BYTE	"You win ",0
YD	.BYTE	"You lose ",0
HR	.BYTE	"1/2 Rent on",EOL,0
HV	.BYTE	"1/2 Value on ",EOL,0
AN_IMP	.BYTE	"an improvement "
	.BYTE	"on",EOL,0
;
;Get a Random Property
;WHO =owners, GRTAB cur player
;
GRPROP	JSR	HAVE_ANY	;any to get?
	BPL	GR2	;yes indeed
	RTS		;nawh.
;
GR2	LDY	#0	;indx to WHO
	LDX	#0	;indx to GRTAB
GR3	LDA	WHO,Y	;who owns it
	CMP	PNUM	;ME?
	BNE	GR4	;no
	TYA		;yes,save #
	STA	GRTAB,X
	INX		;next one
GR4	INY
	CPY	#36	;at end?
	BNE	GR3	;no
	INX		;now pick a
	TXA		;random one
	JSR	GET_RND	;from those
	TAX		;we've found
	LDA	GRTAB-1,X
	STA	PPROP	;picked prop
	RTS
;
;Print a Property in Inverse
;
INVPROP	STA	L	;prop name
	STY	L+1	;address
	LDA	#2
	JSR	EPUT
	LDY	#0
INV1	STY	SVY
	LDA	(L),Y	;get byte
	BEQ	INV2	;done on 0
	ORA	#$80	;inverse
	JSR	EPUT	;show it
	LDY	SVY
	INY		;next byte
	BNE	INV1
INV2	LDA	#22	;end
	JMP	EPUT	;exit
;
;Get Key Table (A - Z)
;
KEY_TAB	.BYTE	63,21,18,58,42
	.BYTE	56,61,57,13,1
	.BYTE	5,0,37,35,8
	.BYTE	10,47,40,62,45
	.BYTE	11,16,46,22,43,23
;
;Get a Key for Input
;
GET_KEY	LDX	#$FF	;clear CH
	STX	CH
GETK1	LDA	CH	;raw code
	CMP	#$FF
	BEQ	GETK1	;none pressed
	AND	#63	;no INV or CTRL
	CMP	#12	;RETURN?
	BNE	TRY7F	;no
	LDA	#0	;0=RET
	RTS
TRY7F	CMP	#52	;delete?
	BNE	SCANT	;no
	LDA	#$7E	;DELETE
	RTS
SCANT	LDY	#25	;scan table
GETK2	CMP	KEY_TAB,Y	;is it?
	BEQ	GETK3	;YES!
	DEY
	BPL	GETK2	;try again
	BMI	GET_KEY	;no match
GETK3	TYA		;index
	CLC		;add 'A'
	ADC	#'A
	RTS		;out
;
;Input Owner Names
;
INPUT	STA	L	;where in NAME
	STY	L+1	;BUF to store
	LDY	#0	;names
INP1	STY	SVY	;counter
	LDA	#127	;our BLOCK
	STA	(L),Y	;cursor
	JSR	GET_KEY	;get key
	LDX	#0	;poke speaker
	STX	CONSOL	;for click
	LDY	SVY	;get Y
	CMP	#0	;is A =0(RET?)
	BEQ	INDONE	;yes
	CMP	#$7E	;DEL-BK SPC?
	BNE	INEXT	;no
	CPY	#0	;is Y=0
	BEQ	INP1	;yes,no delete
	LDA	#0	;zap char
	STA	(L),Y
	DEY		;back up 1
	STA	(L),Y
	JMP	INP1	;get input
;
INEXT	CPY	#8	;end of input?
	BCS	INP1	;yes
	STA	IBUF,Y	;input buffer
	JSR	ASC2IC	;to INT code
	ORA	#$80	;inverse for
	STA	(L),Y	;color
	INY		;next char
	BNE	INP1
;
INDONE	STA	IBUF,Y	;0 for an
	STA	(L),Y	;EOL &
	RTS		;exit
;
;Get Player Names
;
GETNAMES	LDA	#<NDLIST	;install
	STA	SDLSTL	;display list
	LDA	#>NDLIST
	STA	SDLSTL+1
	LDA	#58	;normal plyfld
	STA	SDMCTL
	LDY	#4	;screen
GNM1	LDA	NCLR,Y	;colors
	STA	COLOR0,Y
	DEY
	BPL	GNM1
	JSR	CLRSCR	;clear screen
;
	LDA	#<GR0MEM	;get start
	STA	SCR	;of memory
	LDA	#>GR0MEM
	STA	SCR+1
	LDX	#0	;plyr #
GNM0	LDA	#251	;'['
	STA	(SCR),Y
	INY		;scrn position
	TXA
	CLC
	ADC	#209	;plyr # in
	STA	(SCR),Y	;color
	INY		;next position
	LDA	#253	;']'
	STA	(SCR),Y
	TYA		;add 18 onto
	CLC		;screen position
	ADC	#18
	TAY		;now in Y
	INX		;next plyr
	CPX	MAXP	;at max yet?
	BNE	GNM0	;no do more
	LDY	#0	;now get names
GNM2	STY	SVY2	;save Y
	LDA	SCR	;move over 4
	CLC		;bytes
	ADC	#4	;A= low byte
	LDY	SCR+1	;Y = hi
	JSR	INPUT	;get a name
	LDA	IBUF	;get 1st char
	BEQ	GNM2	;if none try
	LDA	SCR	;again
	CLC		;add 20 bytes
	ADC	#20	;to scrn pntr
	STA	SCR
	LDA	#>NAMEBUF	;high byte
	STA	L+1	;low =0
	LDY	SVY2	;keep Y
	LDA	X9,Y	;get place in
	STA	L	;buffer
	LDY	#8	;move name to
GNM3	LDA	IBUF,Y	;NAMEBUF
	STA	(L),Y
	DEY
	BPL	GNM3	;9 chars total
	LDY	SVY2	;retrieve Y
	INY		;next plyr
	CPY	MAXP	;at Max?
	BNE	GNM2
	RTS		;YES
;
;Handle Captial Gains Tax
;
CAPGNS	JSR	PB	;'bad LUCK'
		PRINT YD	;'You lose $45G'
	LDA	#45
	JMP	B1A	;jmp into BAD

Listing 7: Assembly

;SAVE#D:CAPITAL6.M65
;
;------------------;
;     CAPITAL!     ;
;    (c)  1988     ;
;   MAP of U.S.A.  ;
;  By: Barry Kolbe ;
;                  ;
;------------------;
;
;Map Screen Data
;
;H = Hog Hilton C=Capital Gains
;T = Tax db =double property
;L = LUCK Dicepos = DICE
;
;
SCRN	.BYTE	$28,$6F,$70,$40
	.BYTE	$42,$43,$45,$47
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$6E,$49,$28
	.BYTE	$28,$6C,$40,$3F
	.BYTE	$40,$40,$3F,$40
	.BYTE	$40,$40,$42,$42
	.BYTE	$42,$43,$43,$44
	.BYTE	$44,$44,$42,$40
	.BYTE	$43,$45,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$77,$40,$5E
	.BYTE	$28,$6D,$40,$40
	.BYTE	$40,$40,$40,$3F
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$4C,$28,$62
	.BYTE	$71,$44,$44,$72
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$7B,$43
	.BYTE	$41,$40,$73,$65
	.BYTE	$28,$40,$40,$3F
	.BYTE	$40,$40,$40,$3F
	.BYTE	$3F,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$55,$7D,$6D
	.BYTE	$64,$28,$28,$28
	.BYTE	$28,$79,$40,$40
	.BYTE	$3F,$78,$28,$28
	.BYTE	$4B,$40,$3F,$40
	.BYTE	$33,$34,$39,$3A
	.BYTE	$2B,$2C,$2B,$2C	;db
	.BYTE	$39,$3A,$3B,$3C	;L
	.BYTE	$39,$3A,$39,$3A
	.BYTE	$39,$3A,$35,$36	;H
	.BYTE	$40,$6B,$61,$40
	.BYTE	$40,$60,$28,$28
	.BYTE	$79,$40,$40,$3F
	.BYTE	$4C,$74,$28,$28
	.BYTE	$57,$40,$3F,$40
	.BYTE	$40,$40,$40,$3F
	.BYTE	$3F,$3F,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$60,$61,$40
	.BYTE	$40,$67,$7B,$7A
	.BYTE	$40,$40,$3F,$4C
	.BYTE	$28,$28,$28,$28
	.BYTE	$40,$3F,$40,$40
	.BYTE	$2B,$2C,$40,$3F	;db
	.BYTE	$3F,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$2B,$2C	;db
	.BYTE	$40,$5E,$5F,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$64
	.BYTE	$28,$28,$28,$28
	.BYTE	$40,$3F,$40,$40
	.BYTE	$40,$40,$3F,$40
	.BYTE	$3F,$3F,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$3F,$40,$40,$64
	.BYTE	$28,$28,$28,$28
	.BYTE	$40,$40,$3F,$40
	.BYTE	$2B,$2C,$40,$3F	;db
	.BYTE	$3F,$3F,$40,$40
	.BYTE	$3E,$31,$31,$31	;H
	.BYTE	$3D,$3E,$32,$31
	.BYTE	$32,$3D,$2B,$2C	;db
	.BYTE	$39,$3A,$2B,$2C	;db
	.BYTE	$2B,$2C,$2F,$30	; C
	.BYTE	$40,$3F,$40,$63
	.BYTE	$28,$28,$28,$28
	.BYTE	$40,$40,$3F,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$3F,$3F,$40,$40
DICPOS	.BYTE	$3E,$31,$32,$31
	.BYTE	$3D,$3E,$32,$31
	.BYTE	$32,$3D,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$3F,$40,$40,$40
	.BYTE	$68,$28,$28,$28
	.BYTE	$53,$40,$3F,$40
	.BYTE	$39,$3A,$40,$40
	.BYTE	$40,$3F,$3F,$40
	.BYTE	$3E,$31,$31,$31	;H
	.BYTE	$3D,$3E,$32,$31
	.BYTE	$32,$3D,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$3F,$39,$3A
	.BYTE	$40,$40,$40,$40
	.BYTE	$69,$28,$28,$28
	.BYTE	$4F,$40,$40,$3F
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$3F,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$3F,$40,$40
	.BYTE	$40,$40,$40,$65
	.BYTE	$28,$28,$28,$28
	.BYTE	$7E,$4E,$40,$40
	.BYTE	$39,$3A,$39,$3A
	.BYTE	$35,$36,$40,$3F
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$37,$38
	.BYTE	$2B,$2C,$2B,$2C	;db
	.BYTE	$40,$40,$65,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$7F,$4E,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$3F,$3F
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$3F,$40,$40,$40
	.BYTE	$40,$66,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$7F,$7D
	.BYTE	$7D,$4E,$40,$40
	.BYTE	$2B,$2C,$2B,$2C	;db
	.BYTE	$39,$3A,$39,$3A
	.BYTE	$3B,$3C,$2B,$2C	;L
	.BYTE	$2B,$2C,$39,$3A	;db
	.BYTE	$39,$3A,$39,$3A
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$60,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$7E,$7D,$4E
	.BYTE	$40,$40,$40,$40
	.BYTE	$3F,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$51,$51
	.BYTE	$52,$52,$52,$4E
	.BYTE	$40,$48,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$7F
	.BYTE	$7D,$7D,$7D,$7D
	.BYTE	$4F,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$40,$40,$40
	.BYTE	$40,$78,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$4F,$40,$48,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$7E,$4F,$4C,$4E
	.BYTE	$40,$40,$40,$40
	.BYTE	$4C,$7D,$7D,$7D
	.BYTE	$7D,$7D,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$7E,$4E,$40,$68
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$7E,$28,$7E
	.BYTE	$4E,$40,$40,$4D
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$7E,$76,$75
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$7F,$4E,$40,$7C
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$7F,$54
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$7F,$4E,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28
	.BYTE	$28,$28,$28,$28