10 P=1:DL=1500:SS=54272:C$(0)="":C$(1)="[159]":C$(2)="[158]" 15 A$(0)="F":A$(1)="S":A$(2)="L":A$(3)="C" 17 A$(4)="X":POKE53280,0:POKE53281,0 20 GOSUB60100 25 GOSUB900:PRINT"" 26 PRINT" [154]PRESS SPACE [154]TO PLAY; Q [154]TO QUIT " 27 A=PEEK(203):IFA<>60ANDA<>62THEN27 28 IFA=62THENGOSUB60000:GOTO26 30 PRINT"[145] [145]":POKE198,. 35 PRINT"[154]ENTER PLAYER ONE'S NAME:";:GOSUB60500:N1$=B$:POKE198,. 40 PRINT"[145][154]ENTER PLAYER TWO'S NAME: [157][157][157][157][157][157]";:GOSUB60500:N2$=B$ 45 DIM M (9,9),P(9,9),T(9,9),C(9,9),R(2) 50 PRINT"[145] SETTING UP MAP ":S=1 55 FORY=1TO9:FORX=1TO9 60 N=INT(40*RND(1)+1) 65 M(X,Y)=0 70 IFN<8THENM(X,Y)=1 75 IFN<4THENM(X,Y)=2 80 P(X,Y)=0 85 IFM(X,Y)=0THENP(X,Y)=INT(9*RND(1)+1) 90 T(X,Y)=0:C(9,9)=0 95 NEXTX,Y 100 M(5,5)=4 105 P(5,5)=INT(5*RND(1)+5) 110 PRINT"[147]":GOSUB430 115 GOSUB490:PRINT"[154]IS THIS MAP ALLRIGHT WITH BOTH":PRINT"PLAYERS (Y[154]/N[154])?" 120 GETA$:IFA$="Y"THENS=0:GOTO135 125 IFA$="N"THENPRINT"[145][145]";:FORA=1TO2:PRINT" ":NEXT:GOTO50 130 GOTO120 135 GOSUB490:PRINT"PLACING CASTLES":FORX=1TO500:NEXTX 140 X1=INT(9*RND(1)+1):Y1=INT(9*RND(1)+1) 145 Y1=INT(9*RND(1)+1) 150 IFM(X1,Y1)<>0THEN140 155 M(X1,Y1)=3:C(X1,Y1)=1:T(X1,Y1)=9 160 X2=INT(9*RND(1)+1):Y2=INT(9*RND(1)+1) 165 IFM(X2,Y2)<>0THEN160 170 M(X2,Y2)=3:C(X2,Y2)=2:T(X2,Y2)=9 175 GOSUB490:PRINT"[159]";N1$"'S CASTLE IS AT "CHR$(X1+64);Y1 180 PRINT"[158]";N2$"'S CASTLE IS AT "CHR$(X2+64);Y2 185 X(1)=X1:X(2)=X2:Y(1)=Y1:Y(2)=Y2:N$(1)=N1$:N$(2)=N2$ 190 GOSUB430:P=2:N$=N2$:C$="[158]" 195 X=INT(4*RND(1)+1):IFX=4THEN210 200 IFP=2THENP=1:N$=N1$:C$="[159]":GOTO210 205 IFP=1THENP=2:N$=N2$:C$="[158]" 210 GOSUB490:PRINT"[154]IT'S "C$N$"'S [154]MOVE: --> FROM "; 215 LA=65:HA=73:GOSUB840 220 FX=ASC(A$)-64 225 LA=49:HA=75:GOSUB840 230 FY=VAL(A$) 235 PRINT:PRINT" [154]TO "; 240 LA=65:HA=73:GOSUB840 245 TX=ASC(A$)-64 250 LA=49:HA=57:GOSUB840 255 TY=VAL(A$) 260 IFC(FX,FY)=PTHEN275 265 GOSUB490:PRINT"[150]YOU HAVE NO TROOPS THERE! - TRY AGAIN":FORX=1TODL:NEXTX 270 GOTO210 275 IFABS(FX-TX)<=1ANDABS(FY-TY)<=1THEN290 280 GOSUB490:PRINT"[150]YOU CAN ONLY MOVE INTO AN ADJACENT QUADRANT"; 285 PRINT" -- TRY AGAIN":FORX=1TODL:NEXTX:GOTO210 290 IFM(TX,TY)<>2THEN305 295 GOSUB490:PRINT"[150]YOU CAN'T MOVE INTO A LAKE -- TRY AGAIN" 300 FORX=1TODL:NEXTX:GOTO210 305 GOSUB490:PRINT"[154]HOW MANY TROOPS TO MOVE? --> "; 310 LA=48:HA=57:GOSUB840 315 MN=VAL(A$) 320 IFMN=0THENPRINT" OK":GOTO415 325 IFT(FX,FY)=>MNTHEN340 330 GOSUB490:PRINT"NOT ENOUGH TROOPS! -- TRY AGAIN":FORX=1TODL:NEXTX 335 GOTO290 340 IF NOT(C(TX,TY)=PANDT(TX,TY)+MN>9)THEN355 345 GOSUB490:PRINT"THIS WOULD RESULT IN MORE THAN NINE TROOPS IN A"; 350 PRINT" QUADRANT - TRY AGAIN":FORX=1TODL:NEXTX:GOTO290 355 PRINT" OK":T(FX,FY)=T(FX,FY)-MN 360 IFT(FX,FY)=0THENC(FX,FY)=0 365 IFC(TX,TY)=0ORC(TX,TY)=PTHENT(TX,TY)=T(TX,TY)+MN:C(TX,TY)=P:GOTO415 370 GOSUB490:PRINT"A BATTLE!!":GOSUB900 375 DS=T(TX,TY)+(.5*P(TX,TY)) 380 IFM(TX,TY)=3ORM(TX,TY)=4THENDS=DS*2 385 DV=INT(DS*RND(1)) 390 AV=INT(MN*RND(1)) 395 IFAV=DVTHENT(TX,TY)=0:C(TX,TY)=0:GOTO415 400 IFDV>AVTHENT(TX,TY)=T(TX,TY)-AV 405 IFAV>DVTHENT(TX,TY)=MN-DV:C(TX,TY)=P 410 IFT(TX,TY)<1THENT(TX,TY)=1 415 GOSUB430:GOSUB490 420 TU=TU+1:IFTU>(INT(7*RND(1)+3))THENTU=0:GOSUB505 425 GOTO195 430 PRINT" A B C D E F G H I" 435 PRINT" [154][176][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][174]" 440 R(1)=0:R(2)=0:FORY=1TO9 445 IFY<>1THENPRINT" [154][194] [194]" 450 PRINT""CHR$(Y+48)"[154][194][155]"; 455 FORX=1TO9 460 PRINTC$(C(X,Y));P(X,Y);"[157]";A$(M(X,Y));CHR$(T(X,Y)+48)"[155]"; 465 R(C(X,Y))=R(C(X,Y))+T(X,Y):NEXTX 470 PRINT"[154][194]":NEXTY 475 PRINT" [173][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][189]" 480 IF(R(1)=0ORR(2)=0)ANDS=0THEN855 485 RETURN 490 PRINT""; 495 FORX=1864TO2023:POKEX,32:NEXTX 500 RETURN 505 GOSUB490:PRINT"YEAR END TAX REPORTS":TA(1)=0:TA(2)=0 510 FORY=1TO9:FORX=1TO9 515 IFC(X,Y)=1THENTA(1)=TA(1)+100*P(X,Y) 520 IFC(X,Y)=2THENTA(2)=TA(2)+100*P(X,Y) 525 NEXTX,Y 530 FORPP=1TO2:PRINTC$(PP) 535 IFC(X(PP),Y(PP))=PPTHEN560 540 GOSUB490:PRINT"ATTENTION "N$(PP):FORX=1TODL:NEXTX 545 GOSUB490:PRINT"YOU CAN'T COLLECT TAXES OR BUY TROOPS IF "; 550 PRINT"YOU'RE NOT IN CONTROL OF YOUR CASTLE":FORX=1TODL:NEXTX 555 GOTO770 560 GOSUB490:PRINTN$(PP)" COLLECTED"TA(PP)"BARBLES" 562 PRINT"IN TAXES THIS YEAR" 565 FORX=1TODL:NEXTX:GOSUB490 570 I(PP)=INT(.1*BA(PP)) 575 PRINT"AND EARNED"I(PP)"BARBLES IN INTEREST" 580 FORX=1TODL:NEXTX 585 BA(PP)=BA(PP)+I(PP)+TA(PP) 590 GOSUB490:PRINTN$(PP)"'S NEW BALANCE IS"BA(PP)"BARBLES" 592 FORX=1TODL:NEXTX 595 GOSUB490 600 PRINT"HOW MANY CASTLE TROOPS DO YOU" 603 PRINT"WANT TO BUY (2000 BARBLES EACH)"; 605 LA=48:HA=57:GOSUB840 610 A=VAL(A$):IFA*2000<=BA(PP)THEN625 615 GOSUB490:PRINT"YOU DON'T HAVE ENOUGH MONEY!":FORX=1TODL:NEXTX 620 GOTO595 625 IFA=0THEN660 630 IFT(X(PP),Y(PP))+A<10THEN650 635 GOSUB490:PRINT"YOU CAN'T HAVE MORE THAN NINE TROOPS IN A QUADRANT!"; 640 PRINT" - TRY AGAIN":FORX=1TODL:NEXTX 645 GOTO595 650 T(X(PP),Y(PP))=T(X(PP),Y(PP))+A:BA(PP)=BA(PP)-(2000*A) 655 GOSUB490:PRINTC$(PP)"YOUR NEW BALANCE IS"BA(PP)"BARBLES" 658 FORX=1TODL:NEXTX 660 GOSUB490 665 PRINT"HOW MANY REGULAR TROOPS" 667 PRINT"DO YOU WISH TO BUY (1000 BARBLES EACH)"; 670 LA=48:HA=57:GOSUB840 675 A=VAL(A$):IFA*1000<=BA(PP)THEN690 680 GOSUB490:PRINT"YOU DON'T HAVE ENOUGH MONEY!":FORX=1TODL:NEXTX 685 GOTO660 690 IFA=0THEN770 695 GOSUB490:PRINT"WHERE DO YOU WANT TO PUT THEM "; 700 LA=65:HA=73:GOSUB840 705 XX=ASC(A$)-64 710 LA=49:HA=57:GOSUB840 715 Y=VAL(A$) 720 IFC(XX,Y)=PPTHEN735 725 GOSUB490:PRINT"YOU CAN NOT PUT TROOPS WHERE YOU DO NOT HAVE ANY!" 730 FORX=1TODL:NEXTX:GOTO695 735 IFT(XX,Y)+A<=9THEN755 740 GOSUB490 742 PRINT"YOU CAN NOT HAVE MORE THAN NINE TROOPS IN ANY QUADRANT" 745 FORX=1TODL:NEXTX 750 GOTO660 754 IFXX=X(PP)ANDY=Y(PP)THENGOSUB490 755 IFXX=X(PP)ANDY=Y(PP)THENGOSUB490:GOSUB1000 760 IFXX=X(PP)ANDY=Y(PP)THENPRINT"YOUR CASTLE":FORX=1TODL:NEXTX:GOTO660 765 T(XX,Y)=T(XX,Y)+A:BA(PP)=BA(PP)-1000*A:GOSUB490 770 NEXTPP 775 Z=INT(20*RND(1)+1):PRINT"[152]"; 780 IFZ=1THENGOSUB490:PRINT"ALL TREASURIES MYSTERIOUSLY DOUBLE" 785 IFZ=1THENBA(1)=BA(1)*2:BA(2)=BA(2)*2 790 IFZ=2THENGOSUB490:PRINT"ALL TREASURIES MYSTERIOUSLY DISAPPEAR" 795 IFZ=2THENBA(1)=0:BA(2)=0 800 IFZ=3THENGOSUB490:PRINT"REVOLUTION IN CAPITOL" 805 IFZ=3THENPRINT"ALL TROOPS KILLED":T(5,5)=0:C(5,5)=0 810 IFZ<>4THEN830 814 GOSUB490 815 PRINT"[154]CASTLE TROOP'S DISEASE KILLS HALF OF ALL CASTLE TROOPS" 820 T(X1,Y1)=INT(T(X1,Y1)/2):IFT(X1,Y1)=0THENC(X1,Y1)=0 825 T(X2,Y2)=INT(T(X2,Y2)/2):IFT(X2,Y2)=0THENC(X2,Y2)=0 830 IFZ>4THENGOSUB490:PRINT"[154]NO NEWS IS GOOD NEWS" 835 GOSUB430:RETURN 840 GETA$:IFA$=""THEN840 842 IFA$="Q"THENGOSUB60600:GOTO840 845 IFASC(A$)HATHENGOTO840 850 PRINTA$;:RETURN 855 PRINT"[147]":IFR(1)=0THENW=2:W$=N2$:L$=N1$:GOTO865 860 W=1:W$=N1$:L$=N2$ 865 PRINT""W$" [154]HAS BEATEN "L$ 870 PRINT"[154]FINAL STATISTICS" 875 PRINT"[159][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183]":PRINT"" 880 PRINT" ",N1$,N2$ 885 PRINT"[154]TROOPS",R(1),R(2) 890 PRINT"[154]BARBLES",BA(1),BA(2) 895 PRINT"[154] PRESS SPACE [154]TO CONTINUE" 896 IFPEEK(203)<>60THEN896 897 RUN 900 REM SOUND 905 FORXX=1TO5:POKE SS+24,15 910 POKE SS+5,9 915 POKE SS+1,20 920 POKE SS+4,128 925 FOR DD=1 TO 10: NEXT DD 930 POKE SS+4,129 935 FORDD=1TO(50*INT(10*RND(1)+1)):NEXTDD,XX 940 FORXX=SSTOSS+24:POKEXX,O:NEXTXX 945 POKE SS+24,7 950 POKE SS+5,12*16+0 955 POKE SS+6,15*16+10 960 FOR XX= 255 TO 100STEP -1.4 965 POKE SS+1,XX 970 POKE SS+4,17 975 NEXT XX 980 POKE SS+24,15 985 POKE SS+1,15 990 POKE SS+4,128 995 FORXX=1TO900:NEXTXX:FORXX=SSTOSS+24:POKEXX,0:NEXTXX:RETURN 1000 PRINT"YOU CAN'T PUT REGULAR TROOPS IN ":RETURN 60000 PRINT"[145] [154]ARE YOU SURE YOU WANT TO QUIT? (Y[154]/N[154])" 60010 A=PEEK(203):IFA<>25ANDA<>39THEN60010 60020 IFA=39THENPRINT"[145] [145]":RETURN 60030 OPEN15,8,15,"R0:HELLO CONNECT=HELLO CONNECT":INPUT#15,ER:CLOSE15 60040 IFER<>63THENEND 60050 LOAD"HELLO CONNECT",8 60100 PRINTCHR$(142)"[147]" 60110 PRINT"[158][213][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][201]"; 60120 FORA=1TO7:PRINT"[221]"SPC(38)"[221]";:NEXT 60140 PRINT"[202][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][203]" 60150 FOR A=217TO242:POKEA,PEEK(A)OR128:NEXT 60160 PRINT" [159]LOADSTAR PRESENTS:" 60170 PRINT" CASTROVIA" 60180 PRINT" [154]BY JOSEPH M. SCHWARTZ" 60190 PRINT" [153](C)OPYRIGHT 1987" 60200 RETURN 60500 PRINT"[164]";:B$="":FORA=1TO7 60510 GETA$:IFA$=""THEN60510 60520 IFA$=CHR$(13)THENPRINT"[157] ":RETURN 60530 IFA$=CHR$(20)ANDA>1THENPRINT"[157][157] [157][157][164]";:A=A-1:B$=LEFT$(B$,A-1):GOTO60510 60535 IFA=7THEN60510 60540 IFA$>=" "ANDA$<="Z"THEN60560 60550 GOTO60510 60560 PRINT"[157]"A$;:POKE212,.:PRINT"[164]";:B$=B$+A$:NEXT 60600 POKE783,PEEK(783)OR1:SYS65520:X%=PEEK(781):Y%=PEEK(782) 60605 C%=PEEK(646):POKE198,. 60610 PRINT" [154]ARE YOU SURE YOU WANT TO QUIT? (Y[154]/N[154])" 60620 A%=PEEK(203):IFA%<>25ANDA%<>39THEN60620 60630 IFA%=25THENRUN 60640 PRINT"[145] " 60645 POKE646,C%:POKE781,X%:POKE782,Y% 60650 POKE783,PEEK(783)AND254:SYS65520:POKE198,.:RETURN