10 REM *************************************** 20 REM * HBUFF Creator * 30 REM * (C) 2020 William "lostwizard" Astle * 40 REM * All Rights Reserved * 50 REM * Used with permission * 60 REM * Slight modifications in * 70 REM * 2020 by Wayne Campbell * 80 REM *************************************** 100 CLEAR 200,&H5FFF 110 REM ALLOCATE AND FILL HBUFFS HERE 120 REM 0=black, 1=blue, 2=red, 3=magenta, 4=green, 5=cyan (31 or 27), 6=yellow, 7=white 130 PALETTE0,0:PALETTE1,9:PALETTE2,36:PALETTE3,45:PALETTE4,18:PALETTE5,27:PALETTE6,54:PALETTE7,63 140 HBUFF1,50:HBUFF2,50:HBUFF3,50:HBUFF4,50:HBUFF5,50:HBUFF6,50:HBUFF7,50:HBUFF8,50 150 HSCREEN 2 160 READ B:IF B>0 THEN READ X1,Y1,X2,Y2,D$:I=1:FOR Y3=Y1 TO Y2:FOR X3=X1 TO X2:HSET(X3,Y3,ASC(MID$(D$,I,1))-48):I=I+1:NEXT:NEXT:HGET(X1,Y1)-(X2,Y2),B:GOTO 160 170 HPUT(40,20)-(49,29),1 180 HPUT(40,40)-(49,49),2 190 HPUT(40,60)-(49,69),3 200 HPUT(40,80)-(49,89),4 210 HPUT(40,100)-(49,109),5 220 HPUT(40,120)-(49,129),6 230 HCOLOR 2:HLINE(58,18)-(71,31),PSET,B 240 HPUT(60,20)-(69,29),7 250 HCOLOR 2:HLINE(58,38)-(71,51),PSET,B 260 HPUT(60,40)-(69,49),8 300 REM SAVE HBUFF CONTENTS 310 REM ONLY SAVES AMOUNT OF SPACE USED 320 POKE &HFFA3,&H34 330 IF PEEK(&H6000)*256+PEEK(&H6001)=&HFFFF THEN BL=2:GOTO 380 340 BP=&H6000 350 BS=PEEK(BP)*256+PEEK(BP+1) 360 IF BS<>0 THEN BP=BS-&HC000+&H6000:GOTO 350 370 BL=BP-&H6000+PEEK(BP+3)*256+PEEK(BP+4)+5 380 PRINT"HBUFF LENGTH:";BL 390 SAVEM"HBUFF.DAT",&H6000,&H6000+BL-1,&HB277 400 POKE&HFFA3,&H3B 410 CLEAR200,&H8000 420 END 500 DATA 1,40,20,49,29,0000022200000002222000000370000000033303000055555300005550000006666000006600660016600006601110000111 510 DATA 2,40,50,49,59,0022200000022220000000073000003033300000355555000000055500000006666000006600660006600006611110000111 520 DATA 3,40,80,49,89,0330000330055022055000552255000005225000000555500000066660000006666000006600660006600006601110000111 530 DATA 4,40,110,49,119,1110000111066000066000660066000006666000000666600000055550000005225000005522550005502205500330000330 540 DATA 5,40,140,49,149,0555335550555533555555553355555555335555333333333333333333335555335555555533555555553355550555335550 550 DATA 6,40,170,49,179,2222112222222211222211111122222222112222222211222222221122222222112222222211222222221111112222112222 560 DATA 7,60,140,69,149,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 570 DATA 8,60,170,69,179,0000000000000000000000000000000000000000000022000000002200000000000000000000000000000000000000000000 580 DATA 0 45,21,2 1721 DATA 41,22,2,42,22,2,43,22,2,44,22,2,45,22,2,46,22,2,47,22,2,48,22,2 1722 DATA 41,23,3,42,23,7,45,23,7 1730 DATA 41,24,3,42,24,3,43,24,3,44,24,3,45,24,3,50,24,3 1731 DATA 39,25,5,40,25,5,41,25,5,42,25,5,43,25,5,44,25,5,45,25,5,46,25,5,47,25,5,48,25,5,49,25,5,50,25,3 1732 DATA 38,26,5,39,26,5,40,26,5,41,26,5,42,26,5,43,26,5 1740 DATA 37,27,6,38,27,6,39,27,6,40,27,6,41,27,6,42,27,6,43,27,6,44,27,6 1741 DATA 35,28,6,36,28,6,37,28,6,38,28,6,44,28,6,45,28,6,46,28,6 1750 DATA 31,29,1,33,29,6,34,29,6,35,29,6,36,29,6,46,29,6,47,29,6,48,29,6 1751 DATA 31,30,1,32,30,1,33,30,1,34,30,1,35,30,1,46,30,1,47,30,1,48,30,1,49,30,1,50,30,1,0,0,0 1760 REM ******** Left Character ******** 1770 DATA 31,51,50,60,36,51,2,37,51,2,38,51,2,39,51,2,40,51,2 1771 DATA 33,52,2,34,52,2,35,52,2,36,52,2,37,52,2,38,52,2,39,52,2,40,52,2 1772 DATA 36,53,7,37,53,7,40,53,3 1780 DATA 31,54,3,36,54,3,37,54,3,38,54,3,39,54,3,40,54,3 1781 DATA 31,55,3,32,55,5,33,55,5,34,55,5,35,55,5,36,55,5,37,55,5,38,55,5,39,55,5,40,55,5,41,55,5,42,55,5 1782 DATA 38,56,5,39,56,5,40,56,5,41,56,5,42,56,5,43,56,5 1790 DATA 37,57,6,38,57,6,39,57,6,40,57,6,41,57,6,42,57,6,43,57,6,44,57,6 1791 DATA 35,58,6,36,58,6,37,58,6,43,58,6,44,58,6,45,58,6,46,58,6 1800 DATA 33,59,6,34,59,6,35,59,6,45,59,6,46,59,6,47,59,6,48,59,6,50,59,1 1801 DATA 31,60,1,32,60,1,33,60,1,34,60,1,35,60,1,46,60,1,47,60,1,48,60,1,49,60,1,50,60,1,0,0,0 1810 REM ******** Up Character ******** 1820 DATA 31,81,50,90,32,81,3,33,81,3,34,81,3,35,81,3,36,81,3,45,81,3,46,81,3,47,81,3,48,81,3,49,81,3 1821 DATA 34,82,5,35,82,5,36,82,5,37,82,5,40,82,2,41,82,2,44,82,5,45,82,5,46,82,5,47,82,5 1830 DATA 36,83,5,37,83,5,38,83,5,39,83,2,40,83,2,41,83,2,42,83,2,43,83,5,44,83,5,45,83,5 1831 DATA 37,84,5,38,84,5,39,84,2,40,84,2,41,84,2,42,84,2,43,84,5,44,84,5 1832 DATA 37,85,5,38,85,5,39,85,5,40,85,5,41,85,5,42,85,5,43,85,5,44,85,5 1840 DATA 37,86,6,38,86,6,39,86,6,40,86,6,41,86,6,42,86,6,43,86,6,44,86,6 1841 DATA 37,87,6,38,87,6,39,87,6,40,87,6,41,87,6,42,87,6,43,87,6,44,8 79 9 10 9 11 11 10 11 11 12 10 12 11 13 10 13 11 11 13 12 13 13 13 14 13 9 5 10 5 11 5 12 5 13 5 13 6 13 7 13 8 14 8 15 8 15 9 15 10 15 11 16 11 17 11 18 11 19 11 20 11 21 11 21 10 22 10 23 10 24 10 25 10 26 10 26 11 26 12 26 13 26 14 25 14 24 14 23 14 22 14 21 14 21 13 20 13 19 13 18 13 18 14 17 14 16 13 16 14 16 15 15 15 14 15 13 15 12 15 11 15 10 15 9 15 9 14 9 13 8 13 7 13 6 13 5 13 5 12 5 11 5 10 6 10 7 10 7 9 7 8 8 8 9 8 9 7 9 6 6 10 7 10 9 12 8 13 9 7 12 10 12 6 24 11 24 12 24 13 25 11 25 12 25 13 170 130 3 Y, S 250 IF G=15 OR G=16 OR G=17 OR G=18 OR G=19 OR G=20 THEN INPUT #1, A1:FOR A=1 TO A1:INPUT #1, AX(A), AY(A):NEXT A 260 CLOSE #1 300 HCLS:GOSUB 1600 310 HPRINT(2,3),"[R]eset [C]ontinue [#] of Level [E]nd" 320 A$="":GOSUB 2000 330 IF A$="R" OR A$="r" THEN 300 340 HPRINT(12,4),"Loading Level":HPRINT(26,4),STR$(G) 350 IF A$<>"E" AND A$<>"e" THEN 120 360 HSCREEN 0:CLS 370 END 999 REM EXEC 44539:END 1590 REM ********* Draw Puzzle ************ 1600 IF G=19 THEN FOR D=135 TO 477 STEP 20:FOR E=29 TO 155 STEP 10:HPUT(D,E)-(D+9,E+9),6,PSET:NEXT E:NEXT D:FOR A=1 TO C1:HPUT(SX(A)*10,SY(A)*10)-(SX(A)*10+9,SY(A)*10+9),7,PSET:NEXT A:GOTO 1620 1605 IF G=20 THEN FOR D=21 TO 601 STEP 20:FOR E=11 TO 181 STEP 10:HPUT(D,E)-(D+9,E+9),6,PSET:NEXT E:NEXT D:FOR A=1 TO C1:HPUT(SX(A)*10,SY(A)*10)-(SX(A)*10+9,SY(A)*10+9),7,PSET:NEXT A:GOTO 1620 1610 IF G<19 OR G>20 THEN FOR A=1 TO C1:HPUT(SX(A)*10,SY(A)*10)-(SX(A)*10+9,SY(A)*10+9),6,PSET:NEXT A 1620 FOR A=1 TO C2:HPUT(NX(A)*10,NY(A)*10)-(NX(A)*10+9,NY(A)*10+9),5,PSET:NEXT A 1630 FOR A=1 TO C3:HPUT(HX(A)*10,HY(A)*10)-(HX(A)*10+9,HY(A)*10+9),8,PSET:NEXT A 1640 IF G=11 THEN HSET(369,103,4) 1650 IF G=12 THEN HSET(345,105,4):HSET(344,96,4) 1660 IF G=13 THEN HSET(325,75,4):HSET(334,86,4) 1670 IF G=14 THEN HSET(253,45,4):HSET(274,76,4) 1680 IF G=15 OR G=16 OR G=17 OR G=18 OR G=19 OR G=20 THEN FOR A=1 TO A1:HSET(AX(A),AY(A),4):NEXT A 1685 HPUT(X,Y)-(X+9,Y+9),S,PSET 1690 REM IF G=1 OR G=14 OR G=15 OR G=23 OR G=26 OR G=30 THEN HPUT(X,Y)-(X+9,Y+9),3,PSET 17 67 9 5 10 5 10 4 11 4 12 4 12 5 13 4 14 4 15 4 16 4 15 5 16 5 16 3 17 3 18 3 19 3 20 3 20 4 21 4 21 5 21 6 21 7 21 8 19 8 20 8 20 9 20 10 20 11 20 12 20 13 19 13 18 13 17 13 16 13 16 12 16 11 15 11 14 11 14 9 15 9 16 9 13 8 14 8 15 8 16 8 17 8 15 7 16 7 17 7 14 12 14 13 13 13 12 13 12 14 11 14 10 14 9 14 9 13 9 12 9 11 9 10 9 9 9 8 10 8 11 8 9 7 9 6 11 11 12 12 12 11 10 13 10 15 10 11 9 12 7 14 6 18 5 19 6 18 8 11 18 9 19 9 17 10 18 10 19 10 17 11 18 11 19 11 17 12 18 12 19 12 110 50 4 =cyan 31, 6=yellow, 7=white 130 REM 8=black, 9=blue, 10=red, 11=magenta, 12=green, 13=cyan 31, 14=yellow, 15=white 140 PALETTE0,0:PALETTE1,9:PALETTE2,36:PALETTE3,45:PALETTE4,18:PALETTE5,31:PALETTE6,54:PALETTE7,63 150 REM PALETTE8,0:PALETTE9,9:PALETTE10,36:PALETTE11,45:PALETTE12,18:PALETTE13,31:PALETTE14,54:PALETTE15,63 160 DIM FX(270),FY(270),GX(100),GY(100),BX(100),BY(100),WX(200),WY(200) 170 ON BRK GOTO 600 200 REM Display startup screen 210 HSCREEN 2:GOSUB 5010:LV=0:ML=5 220 NU=0:PT=1:VL=22:GOTO 2020 300 REM Read level data 310 GOSUB 2310 320 INPUT #1, CW 330 FOR IC=1 TO CW 340 INPUT #1, WX(IC), WY(IC) 350 NEXT IC 360 INPUT #1, CB 370 FOR IC=1 TO CB 380 INPUT #1, BX(IC), BY(IC) 390 NEXT IC 400 INPUT #1, CG 410 FOR IC=1 TO CG 420 INPUT #1, GX(IC), GY(IC) 430 NEXT IC 440 INPUT #1, CX, CY, SP 450 IF LV=15 OR LV=16 OR LV=17 OR LV=18 OR LV=19 OR LV=20 THEN INPUT #1, CF:FOR IC=1 TO CF:INPUT #1, FX(IC), FY(IC):NEXT IC 460 CLOSE #1 500 REM Display Level 510 HCLS:GOSUB 1010 520 GOTO 3010 600 REM End game 610 POKE &HF00C, &H43 620 HSCREEN 0:CLS 630 END 700 REM ========== End of main program ========== 1000 REM ********* Draw Puzzle ************ 1010 IF LV=19 THEN FOR DH=135 TO 477 STEP 20:FOR EH=29 TO 155 STEP 10:HPUT(DH,EH)-(DH+9,EH+9),6,PSET:NEXT EH:NEXT DH:FOR DC=1 TO CW:HPUT(WX(DC)*10,WY(DC)*10)-(WX(DC)*10+9,WY(DC)*10+9),7,PSET:NEXT DC:GOTO 1040 1020 IF LV=20 THEN FOR DH=21 TO 601 STEP 20:FOR EH=11 TO 181 STEP 10:HPUT(DH,EH)-(DH+9,EH+9),6,PSET:NEXT EH:NEXT DH:FOR DC=1 TO CW:HPUT(WX(DC)*10,WY(DC)*10)-(WX(DC) 88 10 1 11 1 12 1 13 1 13 2 14 2 15 2 16 2 17 2 18 2 19 2 20 2 21 2 22 2 23 2 23 3 23 4 23 5 23 6 23 7 23 8 23 9 13 4 17 4 18 5 13 4 15 6 18 6 19 6 20 6 21 6 13 6 18 7 19 7 15 8 17 8 21 8 23 10 22 10 21 10 20 10 19 10 18 10 17 10 16 10 15 10 14 10 14 11 15 11 16 11 16 12 16 13 16 14 16 15 16 16 16 17 15 17 14 17 13 17 12 17 11 17 10 17 9 17 9 16 9 15 9 14 9 13 9 12 9 11 10 11 11 11 12 11 12 10 11 10 10 10 9 10 9 9 8 9 8 8 8 7 8 6 9 6 10 7 10 6 10 5 10 4 10 3 10 2 18 11 7 12 4 12 6 12 9 13 5 13 7 13 8 15 3 15 4 15 5 15 7 16 8 17 9 19 9 21 9 19 3 20 4 21 3 18 10 14 11 14 12 14 13 14 14 14 15 14 10 15 11 15 12 15 13 15 14 15 15 15 10 16 11 16 12 16 13 16 14 16 15 16 90 70 4 OR LV=8 OR LV=10 OR LV=13 OR LV=16 OR LV=21 THEN HPUT(CX,CY)-(CX+9,CY+9),4,PSET 1170 RETURN 2000 REM Input routine 2010 POKE &H155,255:POKE &H156,255:POKE &H157,255:POKE &H158,255 2020 I$=INKEY$:IF I$="" THEN 2020 2030 IF PS=0 AND ASC(I$)=94 THEN M$="U":RETURN 2040 IF PS=0 AND ASC(I$)=10 THEN M$="D":RETURN 2050 IF PS=0 AND ASC(I$)=9 THEN M$="R":RETURN 2060 IF PS=0 AND ASC(I$)=8 THEN M$="L":RETURN 2065 IF LV>0 AND ASC(I$)=103 THEN GOSUB 4700:IF CP=CG THEN 3710 ELSE I$="":GOTO 2020 2070 IF (I$="P" OR I$="p") AND LV>0 THEN IF PS=1 THEN PS=0:HPRINT(1,3)," ":RETURN ELSE PS=1:NU=1:VL=5:GOSUB 2210 2080 IF PS=1 AND (I$="C" OR I$="c") AND (LV>0 AND LV0 THEN PS=0:GOSUB 4010:GOSUB 2310:GOTO 320 2100 IF (I$="S" OR I$="s") AND LV=0 THEN LV=LV+1:GOSUB 4010:GOTO 310 2110 IF I$="G" OR I$="g" THEN GOSUB 2410:PT=0:PS=0:GOSUB 4010:IF NU=1 THEN GOSUB 2310:GOTO 320 ELSE 310 2120 IF I$<>"E" AND I$<>"e" THEN 2020 ELSE 600 2130 RETURN 2200 REM Pause Screen 2210 HCOLOR 2:HPRINT(1,3),"[R]":HCOLOR 6:HPRINT(4,3),"eset":HCOLOR 2:HPRINT(9,3),"[C]":HCOLOR 6:HPRINT(12,3),"ontinue":HCOLOR 2:HPRINT(20,3),"[G]":HCOLOR 6 87 8 9 9 9 10 9 11 9 12 9 12 10 12 8 12 7 13 7 14 7 13 6 14 6 16 6 17 6 13 5 16 5 17 5 13 4 13 3 14 3 15 3 16 3 17 3 17 2 17 1 18 1 19 1 20 1 21 1 22 1 23 1 23 2 23 3 23 4 23 5 23 6 23 7 22 7 21 7 20 7 19 7 18 7 17 7 16 7 18 8 19 8 19 9 19 10 20 9 21 9 22 9 23 9 23 10 23 11 23 12 22 12 21 12 20 12 19 12 19 13 19 14 18 14 17 14 18 15 18 16 18 17 18 18 17 18 16 18 15 18 15 17 15 16 15 15 15 14 14 14 13 14 12 14 12 13 12 12 11 12 10 12 9 12 8 12 7 12 7 11 7 10 8 10 15 10 11 13 11 13 10 14 8 14 12 14 13 15 12 15 8 15 9 15 10 16 8 17 9 17 12 18 11 21 11 15 20 2 21 2 22 2 20 3 21 3 22 3 20 4 21 4 22 4 20 5 21 5 22 5 20 6 21 6 22 6 80 110 1 or floor (black 0) 3240 IF M$="U" AND HPOINT(CX+4,CY-5)<>1 THEN CY=CY-10:UW=0:GOTO 3410 3250 REM Down move, =5 = box (cyan) 3260 IF M$="D" AND HPOINT(CX+5,CY+14)=3 THEN GOSUB 3620:GOTO 3430 3270 REM Down move, <>1 = breakable wall (blue 9) or floor (black 0) 3280 IF M$="D" AND HPOINT(CX+5,CY+14)<>1 THEN CY=CY+10:UW=0:GOTO 3430 3290 REM Left move, =5 = box (cyan) 3300 IF M$="L" AND HPOINT(CX-6,CY+4)=3 THEN GOSUB 3630:GOTO 3450 3310 REM Left move, <>1 = breakable wall (blue 9) or floor (black 0) 3320 IF M$="L" AND HPOINT(CX-6,CY+4)<>1 THEN CX=CX-10:UW=0:GOTO 3450 3330 REM Right move, =5 = box (cyan) 3340 IF M$="R" AND HPOINT(CX+15,CY+5)=3 THEN GOSUB 3640:GOTO 3470 3350 REM Right move, <>1 = breakable wall (blue 9) or floor (black 0) 3360 IF M$="R" AND HPOINT(CX+15,CY+5)<>1 THEN CX=CX+10:UW=0:GOTO 3470 3370 GOTO 3110 3400 REM AU% = Up Character, AB% = Floor space 3410 HPUT(CX,CY)-(CX+9,CY+9),3:IF UW<>1 THEN HPUT(PX,PY)-(PX+9,PY+9),7:GOTO 3480 ELSE 3480 3420 REM AD% = Down Character, AB% = Floor space 3430 HPUT(CX,CY)-(CX+9,CY+9),4:IF UW<>1 THEN HPUT(PX,PY)-(PX+9,PY+9),7:GOTO 3480 ELSE 3480 3440 REM AL% = Left Character, AB% = Floor space 3450 HPUT(CX,CY)-(CX+9,CY+9),2:IF UW<>1 THEN HPUT(PX,PY)-(PX+9,PY+9),7:GOTO 3480 ELSE 3480 3460 REM AR% = Right Character, AB% = Floor space 3470 H 126 5 5 6 5 6 4 7 4 8 4 8 5 9 5 10 5 11 5 11 7 11 8 11 9 11 10 9 11 10 11 11 11 12 11 13 11 14 11 15 11 11 12 11 13 11 14 11 15 11 16 11 17 12 17 13 17 14 17 15 17 16 17 17 17 18 17 19 17 19 16 17 11 18 11 19 11 19 12 19 13 20 13 11 4 12 4 13 4 14 4 15 4 17 4 18 4 17 3 18 3 19 3 20 3 19 4 19 5 19 6 19 7 19 8 19 9 19 10 14 3 14 2 14 1 15 1 16 1 17 1 18 1 19 1 19 0 20 0 21 0 22 0 22 1 22 2 22 3 23 3 24 3 24 4 24 5 24 6 25 6 25 7 25 8 25 9 25 10 25 11 25 12 25 13 24 13 23 13 22 13 21 13 21 14 21 15 21 16 21 17 21 18 21 19 20 19 19 19 18 19 17 19 16 19 15 19 14 19 13 19 12 19 11 19 10 19 9 19 9 18 9 17 9 16 9 15 9 14 9 13 8 13 7 13 7 12 7 11 7 10 7 9 6 9 5 9 5 8 5 7 5 6 34 7 6 7 8 8 6 8 7 9 7 10 7 12 6 13 6 15 6 15 5 16 5 17 5 16 7 13 8 14 8 16 8 17 8 14 9 13 10 15 10 17 10 14 12 16 12 13 13 14 13 16 13 18 13 14 14 13 15 14 15 15 15 17 15 18 15 19 15 34 20 6 21 6 22 6 23 6 20 7 21 7 22 7 23 7 24 7 20 8 21 8 22 8 23 8 24 8 20 9 21 9 22 9 23 9 24 9 20 10 21 10 22 10 23 10 24 10 20 11 21 11 22 11 23 11 24 11 20 12 21 12 22 12 23 12 24 12 70 50 4 0 HPRINT(22,5)," GY:":HPRINT(27,5),GY(A)*10 4560 HPRINT(22,6)," X:":HPRINT(27,6),X 4570 HPRINT(22,7)," Y:":HPRINT(27,7),Y 4580 HPRINT(22,8)," CC:":HPRINT(27,8),CC 4590 REM HPRINT(22,9),"LINE:":HPRINT(27,9),LI$ 4600 REM I$=INKEY$:IF I$="" THEN 4590 4610 RETURN 4620 REM LI$="3340":GOSUB 4120: 4700 CP=0:FOR GC=1 TO CG:IF HPOINT(GX(GC)*10+5,GY(GC)*10+5)=3 THEN CP=CP+1:NEXT GC ELSE IF HPOINT(GX(GC)*10+5,GY(GC)*10+5)=0 THEN HPUT(GX(GC)*10,GY(GC)*10)-(GX(GC)*10+9,GY(GC)*10+9),8:NEXT GC ELSE NEXT GC 4710 RETURN 5000 REM Startup screen 5010 HCOLOR 7,0 5020 HCOLOR 2:HPRINT(12,0),"** Sokoban 1 **" 5030 HCOLOR 5:HPRINT(5,3),"Originally (C)1982 by Hiroy 62 9 5 10 5 11 5 12 5 13 5 14 5 14 6 14 7 14 8 15 5 16 5 17 5 18 5 19 5 20 5 20 6 21 6 22 6 22 7 22 8 22 9 22 10 21 10 22 11 22 12 22 13 22 14 21 14 20 14 19 14 18 14 17 14 16 14 16 13 15 14 14 14 13 14 12 14 11 14 11 13 11 12 11 11 12 11 13 11 14 11 14 10 10 11 9 11 9 10 9 9 9 8 9 7 9 6 16 8 17 8 18 8 19 8 18 9 19 9 16 10 16 11 17 11 10 16 7 19 7 15 8 19 10 20 11 20 12 18 11 18 12 16 12 13 12 10 10 6 10 7 10 8 10 9 10 10 11 6 11 7 11 8 11 9 11 10 160 90 1 12 10 12 6 24 11 24 12 24 13 25 11 25 12 25 13 170 130 3 130 3 0,170,49,179,2222112222222211222211111122222222112222222211222222221122222222112222222211222222221111112222112222 10060 DATA 7,60,140,69,149,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10070 DATA 8,60,170,69,179,0000000000000000000000000000000000000000000022000000002200000000000000000000000000000000000000000000 10080 DATA 0 00000000000000000000022000000002200000000000000000000000000000000000000000000 10080 DATA 0 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ 58 15 5 16 5 17 5 18 5 19 5 20 5 21 5 22 5 22 6 22 7 21 7 21 8 21 9 21 10 22 10 23 10 23 11 23 12 23 13 22 13 21 13 20 13 19 13 18 13 17 13 16 13 15 13 14 13 14 14 13 14 12 14 11 14 10 14 9 14 8 14 7 14 7 13 7 12 7 11 7 10 8 10 8 12 9 10 10 10 11 10 12 10 13 10 14 10 14 11 15 11 15 10 15 9 15 8 15 7 16 9 15 6 18 7 19 10 11 17 7 17 8 17 9 17 10 17 11 16 12 19 12 20 11 19 9 20 8 19 7 11 11 11 11 12 11 13 10 11 10 12 10 13 9 11 9 12 9 13 8 11 8 13 210 60 2 90 1 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ 63 10 3 11 3 12 3 13 3 14 3 15 3 15 4 15 5 15 7 15 8 16 3 17 3 18 3 17 5 18 5 18 6 18 7 19 7 18 8 18 9 19 3 20 3 21 3 21 4 21 5 21 6 21 7 21 8 21 9 21 10 21 11 21 12 21 13 21 14 20 14 19 14 18 14 17 14 16 14 16 12 17 12 19 11 15 14 14 14 13 14 12 14 12 13 11 13 11 12 11 11 12 11 12 10 15 9 14 9 13 9 12 9 11 9 10 9 10 8 10 7 10 6 10 5 10 4 10 17 7 16 8 19 9 15 10 17 10 18 10 14 11 15 11 16 11 14 12 10 11 4 12 4 11 5 12 5 11 6 12 6 11 7 12 7 11 8 12 8 120 120 1 HCOLOR 7:HPRINT(11,16),"Arrow keys to move" 5150 HPRINT(11,17),"Undo not available" 5160 HPRINT(11,18),"No score available" 5170 HCOLOR 2:HPRINT(3,20),"[S]":HCOLOR 6:HPRINT(6,20),"tart":HCOLOR 2:HPRINT(11,20),"[E]":HCOLOR 6:HPRINT(14,20),"nd":HCOLOR 2:HPRINT(17,20),"[P]":HCOLOR 6:HPRINT(20,20),"ause":HCOLOR 2:HPRINT(25,20),"[G]":HCOLOR 6:HPRINT(28,20),"oto Level" 5180 RETURN HPUT(270,70)-(279,79),7 5120 HPUT(100,86)-(109,95),2:HPUT(190,86)-(199,95),1:HCOLOR 2:HLINE(268,84)-(281,97),PSET,B:HPUT(270,86)-(279,95),8 5130 HPUT(100,106)-(109,115),5:HPUT(190,106)-(199,115),6:HCOLOR 2:HLINE(40,124)-(281,155),PSET,B 5140 HCOLOR 7:HPRINT(11,16),"Arrow keys to move" 5150 HPRINT(11,17),"Undo not available" 5160 HPRINT(11,18),"No score available" 5170 HCOLOR 2:HPRINT(3,20),"[S]":HCOLOR 6:HPRINT(6,20),"tart":HCOLOR 2:HPRINT(11,20),"[E]":HCOLOR 6:HPRINT(14,20),"nd":HCOLOR 2:HPRINT(17,20),"[P]":HCOLOR 6:HPRINT(20,20),"ause":HCOLOR 2:HPRINT(25,20),"[G]":HCOLOR 6:HPRINT(28,20),"oto Level" 5180 RETURN ":GOSUB 4520:IF HPOINT(X+5,Y+24)=0 THEN PB=CB:CB=0:GOTO 4240 4180 LI$="4180":GOSUB 4520:IF HPOINT(X+5,Y+24)=2 THEN PB=CB:CB=2:GOTO 4240 4190 LI$="4190":GOSUB 4520:IF HPOINT(X-16,Y+4)=0 THEN PB=CB:CB=0:GOTO 4240 4200 LI$="4200":GOSUB 4520:IF HPOINT(X-16,Y+4)=2 THEN PB=CB:CB=2:GOTO 4240 4210 LI$="4210":GOSUB 4520:IF HPOINT(X+25,Y+5)=0 THEN PB=CB:CB=0:GOTO 4240 4220 LI$="4220":GOSUB 4520:IF HPOINT(X+25,Y+5)=2 THEN PB=CB:CB=2:GOTO 4240 4230 LI$="4230":GOSUB 4520:RETURN 4240 LI$="4240":GOSUB 4520:IF PB=2 THEN PF=1:RETURN ELSE PF=0:RETURN 4300 REM Read arrow key presses 4310 KY= 79 8 5 9 5 10 5 11 5 12 5 13 5 13 6 13 7 14 5 15 5 16 5 17 5 18 5 19 5 19 4 19 3 20 3 21 3 22 3 23 3 24 3 25 3 26 3 26 4 26 5 26 6 26 7 26 8 26 9 25 9 24 9 23 9 22 9 21 9 20 9 19 7 19 8 19 9 19 10 19 11 18 11 17 11 16 11 15 11 14 11 14 12 14 13 14 14 13 9 13 10 11 11 12 11 13 11 13 12 13 14 13 15 12 15 11 15 10 15 9 11 9 13 9 14 9 15 8 15 7 15 6 15 5 15 5 14 5 13 5 12 5 11 5 10 6 10 7 10 8 10 8 9 8 8 8 7 8 6 20 7 13 8 13 10 12 10 13 11 13 10 7 11 7 12 7 11 8 10 9 11 9 11 10 14 7 14 9 16 6 18 6 17 7 17 8 16 9 18 9 20 22 4 23 4 24 4 25 4 22 5 23 5 24 5 25 5 22 6 23 6 24 6 25 6 22 7 23 7 24 7 25 7 22 8 23 8 24 8 25 8 130 130 2 130 2 216 TO 236 STEP 10:HPUT(X3,Y3)-(X3+9,Y3+9),7:NEXT X3:HPRINT(27,7),BF 4575 HPRINT(22,8)," CL:":Y3=74:FOR X3=216 TO 236 STEP 10:HPUT(X3,Y3)-(X3+9,Y3+9),7:NEXT X3:HPRINT(27,8),CL 4580 HPRINT(22,9),"LINE:":HPRINT(27,9),LI$ 4590 I$=INKEY$:IF I$="" THEN 4590 4600 RETURN 4610 REM LI$="3340":GOSUB 4120: 5000 REM Startup screen 5010 HCOLOR 7,0 5020 HCOLOR 2:HPRINT(17,0),"** Sokoban **" 5030 HCOLOR 3:HPRINT(2,3),"RIGHT":HCOLOR 5:HPRINT(17,3),"Originally by" 5040 HCOLOR 3:HPRINT(2,5)," LEFT":HCOLOR 5:HPRINT(15,4),"Hiroyuki Imabayashi" 5050 HCOLOR 3:HPRINT(2,7)," UP":HCOLOR 5:HPRINT(15,5),"Adapted to the CoCo" 5060 HCOLOR 3:HPRINT(2,9)," DOWN":HCOLOR 5:HPRINT(20,6),"in 2020 by" 5070 HCOLOR 3:HPRINT(2,11)," BOX":HCOLOR 5:HPRINT(15,7),"Wayne Campbell with" 5080 HCOLOR 3:HPRINT(2,13)," WALL":HCOLOR 5:HPRINT(15,8),"help from lostwizard" 5090 HCOLOR 3:HPRINT(2,15),"FLOOR":HCOLOR 3:HPRINT(22,10),"[UP]" 5100 REM HPRINT(24,11),CHR$(124) 5110 HCOLOR 3:HPRINT(2,17)," GOAL":HPRINT(13,12),"[LEFT] [DOWN] [RIGHT]" 5120 HCOLOR 7:HPRINT(14,14),"[Arrow keys to move]" 5130 HPRINT(14,15),"[Undo not available]" 5140 HPRINT(14,16),"[No score available]" 5150 HPUT(60,22)-(69,31),1:HPUT(60,38)-(69,47),2:HPUT(60,54)-(69,63),3:HPUT(60,70)-(69,79),4 5160 HPUT(60,86)-(69,95),5:HPUT(60,102)-(69,111),6:HCOLOR 71 15 3 16 3 17 3 18 3 19 3 19 4 20 4 21 4 22 4 23 4 17 5 19 5 20 5 23 5 23 6 17 7 18 7 19 7 23 7 23 8 22 8 21 8 21 9 22 9 22 10 21 11 22 11 22 12 19 13 20 13 22 13 22 14 22 15 21 15 20 15 19 15 18 15 17 15 17 14 17 13 16 13 15 13 15 12 14 10 15 10 15 11 14 11 13 11 12 11 11 11 10 11 9 11 8 11 7 11 7 10 7 9 7 8 7 7 8 7 9 7 10 7 11 7 12 7 13 7 14 7 14 8 15 8 15 7 15 6 15 5 15 4 12 18 5 21 6 17 8 20 8 16 9 18 9 19 9 16 10 19 10 18 11 17 12 19 12 12 8 8 9 8 10 8 11 8 8 9 9 9 10 9 11 9 8 10 9 10 10 10 11 10 210 100 2 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ 56 10 4 11 4 12 4 13 4 14 4 15 4 15 5 15 6 16 6 17 6 17 5 18 5 18 4 19 4 20 4 20 5 21 5 21 6 21 7 21 8 21 9 21 10 21 11 21 12 21 13 21 14 20 14 19 14 18 14 17 8 17 9 17 10 17 11 17 13 17 14 16 13 16 14 15 14 14 14 15 8 14 9 15 9 13 14 13 13 13 12 13 11 13 10 13 9 12 10 11 10 10 10 10 9 10 8 10 7 10 6 10 5 10 18 7 19 7 19 8 19 9 18 10 19 11 18 12 15 10 16 11 15 12 10 11 5 12 5 11 6 12 6 11 7 12 7 11 8 12 8 11 9 12 9 190 50 4 6=yellow, 7=white 120 REM 8=black, 9=blue, 10=red, 11=magenta, 12=green, 13=cyan (31 or 27), 14=yellow, 15=white 130 PALETTE0,0:PALETTE1,9:PALETTE2,36:PALETTE3,45:PALETTE4,18:PALETTE5,27:PALETTE6,54:PALETTE7,63 140 REM PALETTE8,0:PALETTE9,9:PALETTE10,36:PALETTE11,45:PALETTE12,18:PALETTE13,27:PALETTE14,54:PALETTE15,63 150 DIM AX(270),AY(270),HX(100),HY(100),NX(100),NY(100),SX(200),SY(200) 200 REM Display startup screen 210 HSCREEN 2:GOSUB 5010:G=0 220 N=0:GOTO 2010 300 REM Read level data 310 HCOLOR 4:HPRINT(17,21),"Loading Level":HCOLOR 7:HPRINT(30,21),STR$(G) 320 INPUT #1, C1 330 FOR A=1 TO C1 340 INPUT #1, SX(A), SY(A) 350 NEXT A 360 INPUT #1, C2 370 FOR A=1 TO C2 380 INPUT #1, NX(A), NY(A) 390 NEXT A 400 INPUT #1, C3 410 FOR A=1 TO C3 420 INPUT #1, HX(A), HY(A) 430 NEXT A 440 INPUT #1, X, Y, S 450 IF G=15 OR G=16 OR G=17 OR G=18 OR G=19 OR G=20 THEN INPUT #1, A1:FOR A=1 TO A1:INPUT #1, AX(A), AY(A):NEXT A 460 CLOSE #1 500 REM Display Level 510 HCLS:GOSUB 1010 515 GOSUB 2990:IF Z=0 THEN 600 530 GOSUB 2010 600 REM End game 610 HSCREEN 0:CLS 620 END 1000 REM ********* Draw Puzzle ************ 1010 IF G=19 THEN FOR D=135 TO 477 STEP 20:FOR E=29 TO 155 STEP 10:HPUT(D,E)-(D+9,E+9),6,PSET:NEXT E:NEXT D:FOR A=1 TO C1:HPUT(SX(A)*10,SY(A)*10)-(SX(A)*10+9,SY(A)*10+9),7,PSET:NEXT A:GOTO 1040 1020 IF G=20 THEN FOR D=21 TO 601 STEP 20:FOR E=11 TO 181 STEP 10:HPUT(D,E)-(D+9,E+9),6,PSET:NEXT E:NEXT D:FOR A=1 TO C1:HPUT(SX(A)*10,SY(A)*10)-(SX(A)*10+9,SY(A)*10+9),7,PSET:NEXT A:GOTO 1040 1030 IF G<19 OR G>20 THEN FOR A=1 TO C1:HPUT(SX(A)*10,SY(A)*10)-(SX(A)*10+9,SY(A)*10+9),6,PSET:NEXT A 1040 FOR A=1 TO C2:HPUT(NX(A)*10, 85 7 3 8 3 9 3 10 3 11 3 12 3 12 4 12 5 13 5 14 5 14 4 14 3 15 3 16 3 17 3 17 4 17 5 16 7 17 7 17 9 18 9 19 9 17 10 18 10 17 11 18 11 17 13 18 13 19 13 20 13 18 4 19 4 20 4 21 4 21 6 22 4 23 4 19 7 20 7 21 7 23 5 23 6 23 7 23 8 23 9 23 10 23 11 23 12 23 13 23 14 23 15 22 15 21 15 20 15 19 15 18 15 17 15 16 15 15 15 14 15 14 14 14 13 14 12 14 11 14 10 15 10 14 9 14 8 14 7 13 7 12 7 12 8 12 9 12 10 11 10 10 10 9 10 8 10 7 10 7 9 7 8 7 7 7 6 7 5 7 4 12 17 6 18 6 15 8 18 8 20 9 16 10 20 10 21 10 16 12 20 12 21 12 16 13 12 8 4 9 4 8 5 9 5 8 6 9 6 8 7 9 7 8 8 9 8 8 9 9 9 220 80 2 OKE &H154,255:POKE &H155,255:POKE &H156,255:POKE &H157,255 2010 A$=INKEY$:IF A$="" THEN 2010 2011 IF P=0 AND ASC(A$)=94 THEN M$="U":RETURN 2012 IF P=0 AND ASC(A$)=10 THEN M$="D":RETURN 2013 IF P=0 AND ASC(A$)=9 THEN M$="R":RETURN 2014 IF P=0 AND ASC(A$)=8 THEN M$="L":RETURN 2015 IF A$="P" OR A$="p" THEN IF P=1 THEN P=0:Y3=22:FOR X3=0 TO 310 STEP 10:HPUT(X3,Y3)-(X3+9,Y3+9),7:NEXT X3:RETURN ELSE P=1:N=1:GOSUB 2100 2020 IF P=1 AND (A$="C" OR A$="c") AND (G>0 AND G<3) THEN P=0:G=G+1:GOSUB 4010:GOSUB 2110:GOTO 320 2030 IF P=1 AND (A$="R" OR A$="r") AND G>0 THEN P=0:GOSUB 4010:GOSUB 2110:GOTO 320 2040 IF (A$="S" OR A$="s") AND G=0 THEN G=G+1:GOSUB 4010:GOTO 310 2050 IF VAL(A$)>=1 AND VAL(A$)<=3 AND VAL(A$)<>G THEN G=VAL(A$):P=0:GOSUB 4010:IF N=1 THEN GOSUB 2110:GOTO 320 ELSE 310 2060 IF A$<>"E" AND A$<>"e" THEN 2010 ELSE 600 2070 RETURN 2100 HCOLOR 2:HPRINT(1,3),"[R]":HCOLOR 6:HPRINT(4,3),"eset":HCOLOR 2:HPRINT(9,3),"[C]":HCOLOR 6:HPRINT(12,3),"ontinue":HCOLOR 2:HPRINT(21,3),"[#]":HCOLOR 6:HPRINT(25,3),"of Level":HCOLOR 2:HPRINT(34,3),"[E]":HCOLOR 6:HPRINT(37,3),"nd" 2105 RETURN 2110 HCOLOR 4:HPRINT(12,4),"Loading Level":HCOLOR 7:HPRINT(25,4),STR$(G) 2120 RETURN 2980 REM Movement 2990 POKE 65497,0 3000 X2=X:Y2=Y:Z=1:GC=0 3010 HPUT(X,Y)-(X+9,Y+9),S 3014 GOSUB 4700 3015 REM GOSUB 4500 3016 IF GC=C3 THEN 3700 3017 GOSUB 2000 3020 REM Read arrow keys 3030 REM Up move, 81 6 5 7 5 8 5 8 6 9 6 10 6 11 6 12 6 12 7 13 7 13 6 13 5 14 5 15 5 15 4 15 10 16 4 16 9 17 4 17 5 17 7 17 8 17 11 18 5 19 5 18 10 19 10 20 5 20 8 19 9 20 9 21 8 21 5 21 4 21 7 22 7 22 4 23 4 24 4 24 5 24 6 24 7 24 8 24 9 24 10 25 10 25 11 25 12 25 13 24 13 23 13 22 13 21 13 20 13 19 13 18 13 17 13 16 13 16 14 15 14 14 14 13 14 13 13 13 12 13 11 13 10 13 9 12 9 12 10 11 10 10 10 9 10 8 10 8 11 7 11 6 11 6 10 6 9 6 8 6 7 6 6 11 16 6 19 6 18 7 23 8 22 9 21 10 15 11 16 11 20 11 17 12 21 12 11 7 6 7 7 8 7 9 7 7 8 8 8 9 8 7 9 8 9 9 9 7 10 160 50 4 = Up Character, AB% = Floor space 3210 HPUT(X,Y)-(X+9,Y+9),3:IF Z<>1 THEN HPUT(X2,Y2)-(X2+9,Y2+9),7:GOTO 3280 ELSE 3280 3220 REM AD% = Down Character, AB% = Floor space 3230 HPUT(X,Y)-(X+9,Y+9),4:IF Z<>1 THEN HPUT(X2,Y2)-(X2+9,Y2+9),7:GOTO 3280 ELSE 3280 3240 REM AL% = Left Character, AB% = Floor space 3250 HPUT(X,Y)-(X+9,Y+9),2:IF Z<>1 THEN HPUT(X2,Y2)-(X2+9,Y2+9),7:GOTO 3280 ELSE 3280 3260 REM AR% = Right Character,AB% = Floor space 3270 HPUT(X,Y)-(X+9,Y+9),1:IF Z<>1 THEN HPUT(X2,Y2)-(X2+9,Y2+9),7:GOTO 3280 ELSE 3280 3280 X2=X:Y2=Y:GOTO 3014 3290 REM 0 = Floor space (Black), AN% = Box 3300 IF HPOINT(X+2,Y-12)=0 THEN HPUT(X,Y-20)-(X+9,Y-11),5:Y=Y-10:Z=0:RETURN ELSE 3340 3310 IF HPOINT(X+2,Y+22)=0 THEN HPUT(X,Y+20)-(X+9,Y+29),5:Y=Y+10:Z=0:RETURN ELSE 3340 3320 IF HPOINT(X-12,Y+2)=0 THEN HPUT(X-20,Y)-(X-11,Y+9),5:X=X-10:Z=0:RETURN ELSE 3340 3330 IF HPOINT(X+22,Y+2)=0 THEN HPUT(X+20,Y)-(X+29,Y+9),5:X=X+10:Z=0:RETURN ELSE 3340 3340 Z=1:RETURN 3700 HCOLOR 4:HPRINT(5,3),"Level":HPRINT(10,3),G:HPRINT(13,3),"Completed! Good Work!" 3710 IF G<3 THEN POKE 65496,0:G=G+1:GOSUB 4010:GOSUB 2110:GOTO 320 ELSE POKE 65496,0:FOR A=1 TO 1000:NEXT A:G=0:HCLS:GOSUB 5010:GOTO 220 3720 END 4000 REM Level file open routine 4010 F$="SCREEN"+RIGHT$(STR$(G),LEN(STR$(G))-1)+".DAT" 4020 OPEN "I",#1,F$:RETURN 4030 RETURN 4500 REM Debug Screen 4510 HCOLOR 2:HLINE(170,10)-(281,85),PSET,B 4520 HPRINT(22,2)," GC:":Y3=14:FOR X3=216 TO 236 S 69 9 8 9 7 9 6 9 5 9 4 9 3 10 3 11 3 12 3 13 3 14 3 14 4 15 4 11 5 12 5 15 5 15 6 15 7 16 7 13 8 16 8 11 9 16 9 17 9 18 9 19 9 20 9 21 9 14 10 16 10 21 10 11 11 12 11 16 11 21 11 22 11 22 12 21 13 22 13 21 14 21 15 20 15 19 15 18 15 17 15 16 15 16 13 16 14 15 13 15 14 14 14 13 13 13 14 12 13 12 14 12 15 11 15 10 15 9 15 8 15 8 14 8 13 10 13 8 12 10 12 8 11 8 10 8 9 9 9 11 10 10 11 6 11 7 12 7 12 9 13 6 13 10 14 6 14 9 14 11 15 10 11 19 10 20 10 19 11 20 11 19 12 20 12 21 12 19 13 20 13 19 14 20 14 140 130 3 INKEY$:IF I$="" THEN 4590 4600 RETURN 4610 REM LI$="3340":GOSUB 4120: 4700 GC=0:FOR A=1 TO C3:IF HPOINT(HX(A)*10+5,HY(A)*10+5)=3 THEN GC=GC+1:NEXT A ELSE IF HPOINT(HX(A)*10+5,HY(A)*10+5)=0 THEN HPUT(HX(A)*10,HY(A)*10)-(HX(A)*10+9,HY(A)*10+9),8:NEXT A ELSE NEXT A 4710 RETURN 5000 REM Startup screen 5010 HCOLOR 7,0 5020 HCOLOR 2:HPRINT(17,0),"** Sokoban **" 5030 HCOLOR 3:HPRINT(2,3),"RIGHT":HCOLOR 5:HPRINT(17,3),"Originally by" 5040 HCOLOR 3:HPRINT(2,5)," LEFT":HCOLOR 5:HPRINT(15,4),"Hiroyuki Imabayashi" 5050 HCOLOR 3:HPRINT(2,7)," UP":HCOLOR 5:HPRINT(15,5),"Adapted to the CoCo" 5060 HCOLOR 3:HPRINT(2,9)," DOWN":HCOLOR 5:HPRINT(20,6),"in 2020 by" 5070 HCOLOR 3:HPRINT(2,11)," BOX":HCOLOR 5:HPRINT(15,7),"Wayne Campbell with" 5080 HCOLOR 3:HPRINT(2,13)," WALL":HCOLOR 5:HPRINT(15,8),"help from lostwizard" 5090 HCOLOR 3:HPRINT(2,15),"FLOOR":HCOLOR 3:HPRINT(22,10),"[UP]" 5100 REM HPRINT(24,11),CHR$(124) 5110 HCOLOR 3:HPRINT(2,17)," GOAL":HPRINT(13,12),"[LEFT] [DOWN] [RIGHT]" 5120 HCOLOR 7:HPRINT(14,14),"[Arrow keys to move]" 5130 HPRINT(14,15),"[Undo not available]" 5140 HPRINT(14,16),"[No score available]" 5150 HPUT(60,22)-(69,31),1:HPUT(60,38)-(69,47),2:HPUT(60,54)-(69,63),3:HPUT(60,70)-(69,79),4 5160 HPUT(60,86)-(69,95),5:HPUT(60,102)-(69,111),6:HCOLOR 2:HLINE(58,116)-(71,129),PSET,B:HPUT(60,118)-(69,127),7 5170 HCOLOR 2:HLINE(58,132)-(71,145),PSET,B:HPUT(60,134)-(69,143),8 5180 HCOLOR 2:HPRINT(13,18),"[S]":HCOLOR 6:HPRINT(16,18),"tart or":HCOLOR 2:HPRINT(24,18),"[#]":HCOLOR 6:HPRINT(28,18),"of Level" 5 90 15 6 16 6 17 6 11 7 12 7 14 7 15 7 16 7 17 7 11 8 11 9 12 9 13 9 14 9 15 9 16 9 12 10 13 10 14 10 12 11 13 11 14 11 16 11 12 12 13 12 14 12 16 13 18 13 19 13 20 13 21 10 21 11 21 12 21 13 10 2 11 2 12 2 13 2 14 2 15 2 15 3 15 4 16 4 17 4 15 5 16 5 17 5 18 5 19 5 20 5 21 5 21 6 21 7 21 8 21 9 22 9 22 10 22 11 22 12 22 13 22 14 21 14 20 14 19 14 18 14 17 14 16 14 16 15 15 15 14 15 13 15 12 15 11 15 10 15 9 15 8 15 8 14 8 13 8 12 9 12 10 12 10 11 10 10 10 9 10 8 10 7 10 6 10 5 10 4 10 3 12 10 13 11 11 13 13 18 7 19 7 17 8 17 9 18 9 17 10 19 10 17 11 19 12 12 11 3 12 3 13 3 14 3 11 4 12 4 13 4 14 4 11 5 12 5 13 5 14 5 170 130 3 14 144 114 134 114 134 105 124 104 114 95 125 94 135 95 155 94 164 95 154 75 165 75 164 65 164 55 154 54 44 5 20 14 36 11 40 12 19 26 3 24 5 32 5 36 5 38 5 40 3 44 6 40 6 20 8 32 10 34 11 38 12 36 13 32 12 28 15 18 13 20 13 22 13 20 15 19 46 7 48 7 50 7 42 8 44 8 46 8 48 8 50 8 42 9 44 9 46 9 48 9 50 9 46 10 48 10 50 10 46 11 48 11 50 11 311 150 34 11 38 12 36џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ 88 9 3 10 3 11 3 12 3 13 3 14 3 13 4 13 5 13 6 14 2 15 2 16 2 16 3 17 3 18 3 19 3 20 3 17 4 18 4 19 4 20 4 17 5 18 5 19 5 20 5 15 6 16 6 17 6 18 6 19 6 20 6 21 6 22 6 15 7 17 7 18 7 19 7 20 7 21 7 22 7 17 8 21 8 22 8 17 9 21 9 22 9 17 10 21 10 17 11 21 11 17 12 18 12 19 12 20 12 21 12 17 13 18 13 19 13 17 14 18 14 19 14 10 15 11 15 12 15 13 15 14 15 15 15 16 15 17 15 10 14 10 13 10 12 13 12 10 11 9 10 10 10 11 10 12 10 13 10 14 10 9 9 13 9 9 8 13 8 9 7 9 6 9 5 9 4 12 15 5 15 8 19 8 19 9 19 10 12 11 12 12 12 13 14 13 15 11 16 11 16 13 12 10 4 11 4 10 5 11 5 10 6 11 6 10 7 11 7 10 8 11 8 10 9 11 9 150 30 4 15 194 75 205 75 215 75 215 84 194 65 184 64 174 64 164 64 154 64 155 74 115 104 175 105 185 124 185 134 174 134 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ 60 17 4 18 4 19 4 20 4 10 5 11 5 12 5 13 5 14 5 15 5 16 5 17 5 20 5 10 6 14 6 20 6 10 7 20 7 10 8 14 8 15 8 16 8 17 8 18 8 20 8 10 9 12 9 14 9 18 9 20 9 21 9 10 10 12 10 14 10 18 10 21 10 9 11 10 11 12 11 14 11 17 11 18 11 20 11 21 11 9 12 14 12 15 12 16 12 17 12 18 12 19 12 20 12 9 13 14 13 9 14 10 14 11 14 12 14 13 14 14 14 8 11 7 11 10 11 12 13 8 13 11 14 7 16 7 18 7 8 15 9 16 9 17 9 15 10 16 10 17 10 15 11 16 11 200 100 2 6 145 84 155 85 125 105 125 114 144 104 145 115 26 13 28 6 28 8 28 11 28 12 30 10 32 5 32 10 15 40 6 40 7 40 8 40 9 40 10 42 6 42 7 42 8 42 9 42 10 44 6 44 7 44 8 44 9 44 10 211 110 2 7 22 9 24 6 24 10 24 12 26 5 26 13 28 6 28 8 28 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ 96 8 3 9 3 10 3 11 3 12 3 13 3 14 3 15 3 8 4 15 4 16 4 17 4 18 4 19 4 20 4 21 4 22 4 8 5 15 5 16 5 17 5 21 5 22 5 23 5 8 6 15 6 16 6 17 6 21 6 22 6 23 6 8 7 12 7 13 7 14 7 15 7 16 7 17 7 18 7 19 7 20 7 21 7 23 7 8 8 9 8 12 8 19 8 23 8 9 9 12 9 19 9 23 9 9 10 12 10 13 10 14 10 15 10 16 10 17 10 18 10 19 10 23 10 9 11 12 11 16 11 17 11 18 11 23 11 9 12 16 12 17 12 18 12 23 12 9 13 16 13 17 13 18 13 22 13 23 13 9 14 16 14 17 14 18 14 19 14 20 14 21 14 22 14 23 14 9 15 10 15 11 15 12 15 13 15 14 15 15 15 16 15 12 10 7 12 5 19 5 11 6 12 6 13 6 11 8 11 10 14 11 15 13 20 9 20 11 12 13 8 14 8 15 8 16 8 17 8 18 8 13 9 14 9 15 9 16 9 17 9 18 9 110 130 1 14 155 55 164 75 164 65 164 55 175 55 215 65 225 65 134 75 144 105 184 114 174 114 164 114 165 135 175 135 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ 46 9 4 10 4 13 4 10 5 20 5 9 6 10 6 12 6 13 6 20 6 12 7 13 7 12 8 17 8 18 8 20 8 13 9 16 9 17 9 18 9 20 9 21 9 9 10 10 10 12 10 13 10 16 10 17 10 18 10 20 10 9 11 10 11 12 11 16 11 17 11 9 12 10 12 12 12 13 12 20 12 9 13 10 13 12 13 20 13 9 14 10 14 10 9 5 13 5 20 7 13 8 16 8 12 9 13 11 18 11 20 11 13 13 10 9 10 10 10 9 11 10 11 9 12 10 12 9 13 10 13 9 14 10 14 210 90 1 55 115 45 125 45 145 55 114 114 164 75 164 65 164 55 175 55 185 55 195 55 214 85 214 75 194 64 184 64 185 74 145 85 155 85 114 84 104 84 94 84 84 84 84 75 84 65 95 75 95 94 105 95 154 114 144 114 84 144 74 144 74 135 74 125 74 115 74 105 74 95 85 95 194 124 184 124 195 134 184 134 145 135 155 135 165 135 125 144 135 145 145 145 155 145 165 145 175 145 174 135 185 145 195 145 205 145 215 145 214 135 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ 35 24 3 25 3 26 3 9 4 10 4 16 4 17 4 7 7 8 7 9 7 7 8 8 8 9 8 23 8 7 9 8 9 9 9 11 9 12 9 13 9 23 9 7 10 8 10 9 10 23 10 7 11 8 11 9 11 16 14 9 15 10 15 16 15 24 15 25 15 26 15 15 23 3 27 3 8 4 11 4 15 4 18 4 23 7 3 9 23 11 16 13 8 15 11 15 23 15 27 15 16 16 15 7 7 8 7 9 7 7 8 8 8 9 8 7 9 8 9 9 9 7 10 8 10 9 10 7 11 8 11 9 11 170 90 2 257 154 94 164 94 154 85 154 75 165 75 175 75 185 75 195 75 205 75 215 75 214 65 225 65 235 65 155 104 155 114 165 115 175 115 185 115 195 115 205 115 215 115 215 124 225 125 235 125 224 74 225 84 225 94 225 104 225 114 245 85 255 85 265 85 264 75 264 65 264 55 275 55 285 55 284 45 284 35 254 54 244 54 234 54 224 54 214 54 214 45 214 35 225 35 235 44 245 45 255 45 265 45 275 45 245 105 255 105 265 105 265 114 265 124 265 134 275 135 285 135 285 144 285 154 254 134 244 134 234 134 224 134 225 144 225 154 274 145 264 144 254 144 244 144 234 144 265 164 275 165 254 164 244 164 234 164 224 164 214 164 204 164 194 164 184 164 184 155 184 145 184 135 184 125 174 124 164 124 175 145 174 135 175 154 175 164 154 144 154 135 155 154 144 154 134 154 124 154 125 164 125 174 114 174 104 174 94 174 84 174 74 174 74 165 74 155 155 164 144 164 134 164 85 164 95 165 105 165 115 165 94 145 105 145 115 145 84 144 84 135 74 144 64 144 54 144 44 144 34 144 34 135 34 125 34 115 34 105 24 104 45 105 45 125 55 125 55 134 24 124 25 134 25 144 25 154 25 164 25 174 244 25 255 25 265 25 275 25 285 25 295 25 295 34 295 44 295 54 295 64 295 74 284 74 285 84 285 94 285 104 295 105 295 114 295 124 295 134 295 144 295 154 295 164 295 174 284 174 274 174 264 174 254 174 244 174 234 174 224 174 214 174 204 174 194 174 184 174 174 174 164 174 234 24 224 24 214 24 204 24 205 34 194 24 195 34 195 44 184 24 174 24 164 24 154 24 144 24 145 34 145 44 154 35 165 35 175 35 185 35 165 54 175 55 185 55 154 54 144 54 134 54 134 45 124 54 124 45 124 35 124 25 114 24 104 24 94 24 84 24 74 24 64 24 54 24 44 24 34 24 24 24 25 34 25 44 25 54 25 64 25 74 25 84 25 94 75 34 64 34 54 34 44 34 34 34 35 44 35 54 35 64 35 74 35 84 75 44 64 44 54 44 44 44 45 54 45 64 45 74 45 84 45 94 74 54 84 54 94 54 95 64 114 35 104 34 94 34 84 34 105 54 115 55 115 64 115 74 115 84 104 94 85 124 4 55 175 55 185 55 154 54 144 54 134 54 134 45 124 54 124 45 124 35 124 25 114 24 104 24 94 24 84 24 74 24 64 24 54 24 44 24 34 24 24 24 25 34 25 44 25 54 25 64 25 74 25 84 25 94 75 34 64 34 54 34 44 34 34 34 35 44 35 54 35 64 35 74 35 84 75 44 64 44 54 44 44 44 45 54 45 64 45 74 45 84 45 94 75 54 85 55 95 55 95 64 114 35 104 34 94 34 84 34 105 54 115 55 115 64 115 74 115 84 105 95 85 124 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ%/&•200,&H5FFF&"2’&HFFA3,&H34&4<гM"HBUFF.DAT"&EF’&HFFA3,&H3B&UZ•200,&H8000&od’&HF00C,&H4F:’65497,0&ІŒу0,0:у1,9:у2,36:у3,45:у4,18:у5,27:у6,54:у7,63:у9,9&В–э9,6400' ŒFX(270),FY(270),GX(100),GY(100),BX(100),BY(100),WX(200),WY(200),TX(3),TY(3)'Њˆ№Ѕ610'(вф2:І5010:LVГ0:MLГ31'HмNUГ0:PTГ1:VLГ22:RSГ0:Ѕ2020'S6І2310'^@‰#1,CW'kJ€ICГ1ЅCW'T‰#1,WX(IC),WY(IC)'‰^‹IC'”h‰#1,CB'Ёr€ICГ1ЅCB'З|‰#1,BX(IC),BY(IC)'П†‹IC'Ъ‰#1,CG'зš€ICГ1ЅCG'эЄ‰#1,GX(IC),GY(IC)'ѕЎ‹IC(И‰#1,SX,SY,SP(UТ…LVГ15БLVГ16БLVГ17БLVГ18БLVГ19БLVГ20Ї‰#1,CF:€ICГ1ЅCF:‰#1,FX(IC),FY(IC):‹IC(]Ьš#1(oўц:VLГ5:І1010(zЅ3010(”b’&HF00C,&H43:’65496,0(lф0:ž(ЃvŠ)0ђ…LVГ19Ї€DHГ60Ѕ240Љ10:€EHГ20Ѕ160Љ10:ь(DH,EH)Ќ(DHЋ9,EHЋ9),6:‹EH:‹DH:€DCГ1ЅCW:ь(WX(DC)­10,WY(DC)­10)Ќ(WX(DC)­10Ћ9,WY(DC)­10Ћ9),7:‹DC:Ѕ1040)Нќ…LVГ20Ї€DHГ10Ѕ300Љ10:€EHГ10Ѕ180Љ10:ь(DH,EH)Ќ(DHЋ9,EHЋ9),6:‹EH:‹DH:€DCГ1ЅCW:ь(WX(DC)­10,WY(DC)­10)Ќ(WX(DC)­10Ћ9,WY(DC)­10Ћ9),7:‹DC:Ѕ1040*…LVД19БLVВ20Ї€DCГ1ЅCW:ь(WX(DC)­10,WY(DC)­10)Ќ(WX(DC)­10Ћ9,WY(DC)­10Ћ9),6:‹DC*R€DCГ1ЅCB:ь(BX(DC)­10,BY(DC)­10)Ќ(BX(DC)­10Ћ9,BY(DC)­10Ћ9),5:‹DC*–€DCГ1ЅCG:ь(GX(DC)­10,GY(DC)­10)Ќ(GX(DC)­10Ћ9,GY(DC)­10Ћ9),8:‹DC*­$…LVГ11Їѓ(184,94,9)*б.…LVГ12Їѓ(174,95,9):ѓ(175,105,9)*є8…LVГ13Їѓ(175,75,9):ѓ(175,84,9)+B…LVГ14Їѓ(125,54,9):ѓ(135,84,9)+`L…LVГ15БLVГ16БLVГ17БLVГ18БLVГ19БLVГ20Ї€DCГ1ЅCF:ѓ(FX(DC),FY(DC),9):‹DC+|`ь(SX,SY)Ќ(SXЋ9,SYЋ9),SP+‚j+Вк’&H155,255:’&H156,255:’&H157,255:’&H158,255+ШфI$Гџ’:…I$Г""Ї2020+юю…PSГ0АџŠ(I$)Г9ЇMVГ1:M$Г"R":UNГ1:,ј…PSГ0АџŠ(I$)Г8ЇMVГ2:M$Г"L":UNГ1:,;…PSГ0АџŠ(I$)Г94ЇMVГ3:M$Г"U":UNГ1:,b …PSГ0АџŠ(I$)Г10ЇMVГ4:M$Г"D":UNГ1:,™…LVВ0АџŠ(I$)Г103ЇІ4610:…CPГCG Ї4510:„I$Г"":Ѕ2020,§…(I$Г"P"БI$Г"p")АLVВ0Ї…PSГ1ЇPSГ0:ь(0,20)Ќ(319,59),9::„PSГ1:NUГ1:VLГ5:ы(0,20)Ќ(319,59),9:І2210-J …PSГ1А(I$Г"C"БI$Г"c")А(LVВ0АLVДML)ЇPTГ0:PSГ0:LVГLVЋ1:І4410:І2310:Ѕ320-Џ*…PSГ1А(I$Г"R"БI$Г"r")АLVВ0ЇPSГ0:…RSД5ЇRSГRSЋ1:І4410:І2310:Ѕ320:„LVГ1:RSГ0:І4410:І2310:Ѕ320-о4…(I$Г"S"БI$Г"s")АLVГ0ЇLVГLVЋ1:І4410:Ѕ310./>…(LVГ0БPSГ1)А(I$Г"G"БI$Г"g")ЇІ2410:PTГ0:PSГ0:І4410:…NUГ1ЇІ2310:Ѕ320:„310.UC…(I$Г"U"БI$Г"u")АUNГ1ЇІ4210:UNГ0.tH…I$ДВ"E"АI$ДВ"e"Ї2020:„610.zR/Ђч2:ю(1,3),"[R]":ч6:ю(4,3),"eset":ч2:ю(8,3)," [C]":ч6:ю(12,3),"ontinue":ч2:ю(19,3)," [G]":ч6:ю(23,3),"otoLevel":ч2:ю(32,3)," [E]"20 CLEAR200,&H5FFF 50 POKE&HFFA3,&H34 60 LOADM"HBUFF.DAT" 70 POKE&HFFA3,&H3B 90 CLEAR200,&H8000 100 POKE&HF00C,&H4F:POKE65497,0 140 PALETTE0,0:PALETTE1,9:PALETTE2,36:PALETTE3,45:PALETTE4,18:PALETTE5,27:PALETTE6,54:PALETTE7,63:PALETTE9,9 150 HBUFF9,6400 160 DIMFX(270),FY(270),GX(100),GY(100),BX(100),BY(100),WX(200),WY(200),TX(3),TY(3) 170 ONBRKGOTO610 210 HSCREEN2:GOSUB5010:LV=0:ML=31 220 NU=0:PT=1:VL=22:RS=0:GOTO2020 310 GOSUB2310 320 INPUT#1,CW 330 FORIC=1TOCW 340 INPUT#1,WX(IC),WY(IC) 350 NEXTIC 360 INPUT#1,CB 370 FORIC=1TOCB 380 INPUT#1,BX(IC),BY(IC) 390 NEXTIC 400 INPUT#1,CG 410 FORIC=1TOCG 420 INPUT#1,GX(IC),GY(IC) 430 NEXTIC 440 INPUT#1,SX,SY,SP 450 IFLV=15ORLV=16ORLV=17ORLV=18ORLV=19ORLV=20THENINPUT#1,CF:FORIC=1TOCF:INPUT#1,FX(IC),FY(IC):NEXTIC 460 CLOSE#1 510 HCLS:VL=5:GOSUB1010 520 GOTO3010 610 POKE&HF00C,&H43:POKE65496,0 620 HSCREEN0:CLS 630 END 1010 IFLV=19THENFORDH=60TO240STEP10:FOREH=20TO160STEP10:HPUT(DH,EH)-(DH+9,EH+9),6:NEXTEH:NEXTDH:FORDC=1TOCW:HPUT(WX(DC)*10,WY(DC)*10)-(WX(DC)*10+9,WY(DC)*10+9),7:NEXTDC:GOTO1040 1020 IFLV=20THENFORDH=10TO300STEP10:FOREH=10TO180STEP10:HPUT(DH,EH)-(DH+9,EH+9),6:NEXTEH:NEXTDH:FORDC=1TOCW:HPUT(WX(DC)*10,WY(DC)*10)-(WX(DC)*10+9,WY(DC)*10+9),7:NEXTDC:GOTO1040 1030 IFLV<19ORLV>20THENFORDC=1TOCW:HPUT(WX(DC)*10,WY(DC)*10)-(WX(DC)*10+9,WY(DC)*10+9),6:NEXTDC 1040 FORDC=1TOCB:HPUT(BX(DC)*10,BY(DC)*10)-(BX(DC)*10+9,BY(DC)*10+9),5:NEXTDC 1050 FORDC=1TOCG:HPUT(GX(DC)*10,GY(DC)*10)-(GX(DC)*10+9,GY(DC)*10+9),8:NEXTDC 1060 IFLV=11THENHSET(184,94,9) 1070 IFLV=12THENHSET(174,95,9):HSET(175,105,9) 1080 IFLV=13THENHSET(175,75,9):HSET(175,84,9) 1090 IFLV=14THENHSET(125,54,9):HSET(135,84,9) 1100 IFLV=15ORLV=16ORLV=17ORLV=18ORLV=19ORLV=20THENFORDC=1TOCF:HSET(FX(DC),FY(DC),9):NEXTDC 1120 HPUT(SX,SY)-(SX+9,SY+9),SP 1130 RETURN 2010 POKE&H155,255:POKE&H156,255:POKE&H157,255:POKE&H158,255 2020 I$=INKEY$:IFI$=""THEN2020 2030 IFPS=0ANDASC(I$)=9THENMV=1:M$="R":UN=1:RETURN 2040 IFPS=0ANDASC(I$)=8THENMV=2:M$="L":UN=1:RETURN 2050 IFPS=0ANDASC(I$)=94THENMV=3:M$="U":UN=1:RETURN 2060 IFPS=0ANDASC(I$)=10THENMV=4:M$="D":UN=1:RETURN 2065 IFLV>0ANDASC(I$)=103THENGOSUB4610:IFCP=CG THEN4510ELSEI$="":GOTO2020 2070 IF(I$="P"ORI$="p")ANDLV>0THENIFPS=1THENPS=0:HPUT(0,20)-(319,59),9:RETURNELSEPS=1:NU=1:VL=5:HGET(0,20)-(319,59),9:GOSUB2210 2080 IFPS=1AND(I$="C"ORI$="c")AND(LV>0ANDLV0THENPS=0:IFRS<5THENRS=RS+1:GOSUB4410:GOSUB2310:GOTO320ELSELV=1:RS=0:GOSUB4410:GOSUB2310:GOTO320 2100 IF(I$="S"ORI$="s")ANDLV=0THENLV=LV+1:GOSUB4410:GOTO310 2110 IF(LV=0ORPS=1)AND(I$="G"ORI$="g")THENGOSUB2410:PT=0:PS=0:GOSUB4410:IFNU=1THENGOSUB2310:GOTO320ELSE310 2115 IF(I$="U"ORI$="u")ANDUN=1THENGOSUB4210:UN=0 2120 IFI$<>"E"ANDI$<>"e"THEN2020ELSE610 2130 RETURN 2210 HCOLOR2:HPRINT(1,3),"[R]":HCOLOR6:HPRINT(4,3),"eset":HCOLOR2:HPRINT(8,3)," [C]":HCOLOR6:HPRINT(12,3),"ontinue":HCOLOR2:HPRINT(19,3)," [G]":HCOLOR6:HPRINT(23,3),"otoLevel":HCOLOR2:HPRINT(32,3)," [E]":HCOLOR6:HPRINT(36,3),"nd" 2220 RETURN 2310 HCOLOR4:HPRINT(12,VL),"Loading Level":HCOLOR7:HPRINT(25,VL),STR$(LV) 2320 RETURN 2410 L$="":HCOLOR7:HPRINT(12,VL),"Level Number: " 2420 I$=INKEY$:IFI$=""THEN2420 2430 IFASC(I$)<>13ANDASC(I$)<>8THENL$=L$+I$:HPRINT(26,VL),L$:GOTO2420 2440 IFASC(I$)=8THENL$=LEFT$(L$,LEN(L$)-1):HPRINT(26,VL),L$+" ":GOTO2420 2450 IFASC(I$)=13THENIFVAL(L$)>=1ANDVAL(L$)<=ML ANDVAL(L$)<>LV THENLV=VAL(L$):RETURN 2460 HPRINT(26,VL)," " 2470 GOTO2410 3010 REM 3020 TX(0)=0:TY(0)=0:TX(1)=0:TY(1)=0:TX(2)=0:TY(2)=0:PX=0:PY=0:CX=SX:CY=SY:BO=0:UW=1:CP=0:UN=0:MC=0 3030 HPUT(SX,SY)-(SX+9,SY+9),SP 3110 REM GOSUB4710 3140 GOSUB2010 3150 GOSUB4010 3210 ONMV GOSUB3310,3360,3410,3460 3220 GOTO3110 3310 IFHPOINT(CX+15,CY+5)=0ORHPOINT(CX+15,CY+5)=9THENBO=0:TX(0)=0:TY(0)=0:GOSUB3510:GOSUB3610:PX=PX+10:CX=CX+10:UW=0:GOSUB3810:RETURN 3320 IFHPOINT(CX+15,CY+5)=2THENBO=0:TX(0)=0:TY(0)=0:GOSUB3510:GOSUB3610:PX=PX+10:CX=CX+10:UW=0:GOSUB3810:MC=1:RETURN 3330 IFHPOINT(CX+15,CY+5)=3THENBO=1:TX(0)=0:TY(0)=0:GOSUB3510:GOSUB3610:GOSUB3710:GOSUB3810:RETURN 3340 RETURN 3360 IFHPOINT(CX-6,CY+4)=0ORHPOINT(CX-6,CY+4)=9THENBO=0:TX(0)=0:TY(0)=0:GOSUB3520:GOSUB3620:PX=PX-10:CX=CX-10:UW=0:GOSUB3840:RETURN 3370 IFHPOINT(CX-6,CY+4)=2THENBO=0:TX(0)=0:TY(0)=0:GOSUB3520:GOSUB3620:PX=PX-10:CX=CX-10:UW=0:GOSUB3840:MC=1:RETURN 3380 IFHPOINT(CX-6,CY+4)=3THENBO=1:TX(0)=0:TY(0)=0:GOSUB3520:GOSUB3620:GOSUB3720:GOSUB3840:RETURN 3390 RETURN 3410 IFHPOINT(CX+4,CY-5)=0ORHPOINT(CX+4,CY-5)=9THENBO=0:TX(0)=0:TY(0)=0:GOSUB3530:GOSUB3630:PY=PY-10:CY=CY-10:UW=0:GOSUB3870:RETURN 3420 IFHPOINT(CX+4,CY-5)=2THENBO=0:TX(0)=0:TY(0)=0:GOSUB3530:GOSUB3630:PY=PY-10:CY=CY-10:UW=0:GOSUB3870:MC=1:RETURN 3430 IFHPOINT(CX+4,CY-5)=3THENBO=1:TX(0)=0:TY(0)=0:GOSUB3530:GOSUB3630:GOSUB3730:GOSUB3870:RETURN 3440 RETURN 3460 IFHPOINT(CX+5,CY+14)=0ORHPOINT(CX+5,CY+14)=9THENBO=0:TX(0)=0:TY(0)=0:GOSUB3540:GOSUB3640:PY=PY+10:CY=CY+10:UW=0:GOSUB3900:RETURN 3470 IFHPOINT(CX+5,CY+14)=2THENBO=0:TX(0)=0:TY(0)=0:GOSUB3540:GOSUB3640:PY=PY+10:CY=CY+10:UW=0:GOSUB3900:MC=1:RETURN 3480 IFHPOINT(CX+5,CY+14)=3THENBO=1:TX(0)=0:TY(0)=0:GOSUB3540:GOSUB3640:GOSUB3740:GOSUB3900:RETURN 3490 RETURN 3510 IFCX+10=TX(1)ANDCY=TY(1)THENTX(0)=TX(1):TY(0)=TY(1):TX(1)=0:TY(1)=0:RETURN 3520 IFCX-10=TX(1)ANDCY=TY(1)THENTX(0)=TX(1):TY(0)=TY(1):TX(1)=0:TY(1)=0:RETURN 3530 IFCX=TX(1)ANDCY+10=TY(1)THENTX(0)=TX(1):TY(0)=TY(1):TX(1)=0:TY(1)=0:RETURN 3540 IFCX=TX(1)ANDCY-10=TY(1)THENTX(0)=TX(1):TY(0)=TY(1):TX(1)=0:TY(1)=0:RETURN 3550 RETURN 3610 IF(BO=1ANDHPOINT(CX+25,CY+5)=2)THENTX(1)=CX+10:TY(1)=CY:MC=1:RETURNELSEIF(BO=0ANDHPOINT(CX+15,CY+5)=2)THENTX(0)=CX+10:TY(0)=CY:RETURNELSERETURN 3620 IF(BO=1ANDHPOINT(CX-16,CY+4)=2)THENTX(1)=CX-10:TY(1)=CY:MC=1:RETURNELSEIF(BO=0ANDHPOINT(CX-6,CY+4)=2)THENTX(0)=CX-10:TY(0)=CY:RETURNELSERETURN 3630 IF(BO=1ANDHPOINT(CX+4,CY-15)=2)THENTX(1)=CX:TY(1)=CY-10:MC=1:RETURNELSEIF(BO=0ANDHPOINT(CX+4,CY-5)=2)THENTX(0)=CX:TY(0)=CY-10:RETURNELSERETURN 3640 IF(BO=1ANDHPOINT(CX+5,CY+24)=2)THENTX(1)=CX:TY(1)=CY+10:MC=1:RETURNELSEIF(BO=0ANDHPOINT(CX+5,CY+14)=2)THENTX(0)=CX:TY(0)=CY+10:RETURNELSERETURN 3650 RETURN 3710 IFHPOINT(CX+25,CY+5)=0ORHPOINT(CX+25,CY+5)=2THENHPUT(CX+20,CY)-(CX+29,CY+9),5:CX=CX+10:PX=PX+10:UW=0:RETURNELSE3760 3720 IFHPOINT(CX-16,CY+4)=0ORHPOINT(CX-16,CY+4)=2THENHPUT(CX-20,CY)-(CX-11,CY+9),5:CX=CX-10:PX=PX-10:UW=0:RETURNELSE3760 3730 IFHPOINT(CX+4,CY-15)=0ORHPOINT(CX+4,CY-15)=2THENHPUT(CX,CY-20)-(CX+9,CY-11),5:CY=CY-10:PY=PY-10:UW=0:RETURNELSE3760 3740 IFHPOINT(CX+5,CY+24)=0ORHPOINT(CX+5,CY+24)=2THENHPUT(CX,CY+20)-(CX+9,CY+29),5:CY=CY+10:PY=PY+10:UW=0:RETURNELSE3760 3760 UW=1:RETURN 3810 IFUW<>1ANDBO=0ANDMC=1ANDCX=TX(0)ANDCY=TY(0)THENMC=0:GOSUB4070:GOSUB4100:RETURNELSEIFUW<>1ANDBO=0THENIFMC=1THENGOSUB4070:GOSUB4100:MC=0:RETURNELSEGOSUB4080:GOSUB4100:RETURN 3820 IFUW<>1ANDBO=1ANDMC=1ANDCX-10=TX(1)ANDCY=TY(1)THENMC=0:GOSUB4070:GOSUB4100:RETURNELSEIFUW<>1ANDBO=1ANDMC=1ANDPX-10=TX(1)ANDPY=TY(1)THENGOSUB4070:GOSUB4100:RETURNELSEGOSUB4080:GOSUB4100:RETURN 3840 IFUW<>1ANDBO=0ANDMC=1ANDCX=TX(0)ANDCY=TY(0)THENMC=0:GOSUB4070:GOSUB4110:RETURNELSEIFUW<>1ANDBO=0THENIFMC=1THENGOSUB4070:GOSUB4110:MC=0:RETURNELSEGOSUB4080:GOSUB4110:RETURN 3850 IFUW<>1ANDBO=1ANDMC=1ANDCX+10=TX(1)ANDCY=TY(1)THENMC=0:GOSUB4070:GOSUB4110:RETURNELSEIFUW<>1ANDBO=1ANDMC=1ANDPX+10=TX(1)ANDPY=TY(1)THENGOSUB4070:GOSUB4110:RETURNELSEGOSUB4080:GOSUB4110:RETURN 3870 IFUW<>1ANDBO=0ANDMC=1ANDCX=TX(0)ANDCY=TY(0)THENMC=0:GOSUB4070:GOSUB4120:RETURNELSEIFUW<>1ANDBO=0THENIFMC=1THENGOSUB4070:GOSUB4120:MC=0:RETURNELSEGOSUB4080:GOSUB4120:RETURN 3880 IFUW<>1ANDBO=1ANDMC=1ANDCX=TX(1)ANDCY+10=TY(1)THENMC=0:GOSUB4070:GOSUB4120:RETURNELSEIFUW<>1ANDBO=1ANDMC=1ANDPX=TX(1)ANDPY+10=TY(1)THENGOSUB4070:GOSUB4120:RETURNELSEGOSUB4080:GOSUB4120:RETURN 3900 IFUW<>1ANDBO=0ANDMC=1ANDCX=TX(0)ANDCY=TY(0)THENMC=0:GOSUB4070:GOSUB4130:RETURNELSEIFUW<>1ANDBO=0THENIFMC=1THENGOSUB4070:GOSUB4130:MC=0:RETURNELSEGOSUB4080:GOSUB4130:RETURN 3910 IFUW<>1ANDBO=1ANDMC=1ANDCX=TX(1)ANDCY-10=TY(1)THENMC=0:GOSUB4070:GOSUB4130:RETURNELSEIFUW<>1ANDBO=1ANDMC=1ANDPX=TX(1)ANDPY-10=TY(1)THENGOSUB4070:GOSUB4130:RETURNELSEGOSUB4080:GOSUB4130:RETURN 3920 RETURN 4010 IFMV=1ANDPX=0ANDPY=0ANDHPOINT(CX+15,CY+5)<>1THENPX=CX-10:PY=CY:RETURNELSEIFMV=1ANDHPOINT(CX+15,CY+5)<>1THENPX=CX-10:PY=CY:RETURN 4020 IFMV=2ANDPX=0ANDPY=0ANDHPOINT(CX-6,CY+4)<>1THENPX=CX+10:PY=CY:RETURNELSEIFMV=2ANDHPOINT(CX-6,CY+4)<>1THENPX=CX+10:PY=CY:RETURN 4030 IFMV=3ANDPX=0ANDPY=0ANDHPOINT(CX+4,CY-5)<>1THENPX=CX:PY=CY+10:RETURNELSEIFMV=3ANDHPOINT(CX+4,CY-5)<>1THENPX=CX:PY=CY+10:RETURN 4040 IFMV=4ANDPX=0ANDPY=0ANDHPOINT(CX+5,CY+14)<>1THENPX=CX:PY=CY-10:RETURNELSEIFMV=4ANDHPOINT(CX+5,CY+14)<>1THENPX=CX:PY=CY-10:RETURN 4050 RETURN 4070 HPUT(PX,PY)-(PX+9,PY+9),8:RETURN 4080 HPUT(PX,PY)-(PX+9,PY+9),7:RETURN 4100 HPUT(CX,CY)-(CX+9,CY+9),1:RETURN 4110 HPUT(CX,CY)-(CX+9,CY+9),2:RETURN 4120 HPUT(CX,CY)-(CX+9,CY+9),3:RETURN 4130 HPUT(CX,CY)-(CX+9,CY+9),4:RETURN 4140 RETURN 4210 IFM$="R"ANDPX>0THENHPUT(PX,PY)-(PX+9,PY+9),1:HPUT(CX,CY)-(CX+9,CY+9),7:GOSUB4270:CX=PX:CY=PY:PX=PX-10:IFPX=SX-10THENPX=0:PY=0 4220 IFM$="L"ANDPX>0THENHPUT(PX,PY)-(PX+9,PY+9),2:HPUT(CX,CY)-(CX+9,CY+9),7:GOSUB4280:CX=PX:CY=PY:PX=PX+10:IFPX=SX+10THENPX=0:PY=0 4230 IFM$="U"ANDPX>0THENHPUT(PX,PY)-(PX+9,PY+9),3:HPUT(CX,CY)-(CX+9,CY+9),7:GOSUB4290:CX 74 15 3 16 3 17 3 18 3 19 3 20 3 21 3 22 3 23 3 8 4 9 4 10 4 11 4 12 4 13 4 14 4 15 4 17 4 18 4 23 4 8 5 23 5 8 6 12 6 15 6 17 6 18 6 23 6 8 7 9 7 11 7 12 7 17 7 18 7 19 7 20 7 23 7 9 8 14 8 15 8 17 8 20 8 21 8 22 8 23 8 9 9 11 9 12 9 14 9 17 9 8 10 9 10 11 10 16 10 17 10 8 11 15 11 16 11 8 12 11 12 12 12 15 12 8 13 11 13 12 13 15 13 8 14 9 14 10 14 11 14 12 14 13 14 14 14 15 14 8 15 5 10 6 13 6 16 6 11 8 13 8 11 11 13 12 8 21 4 22 4 21 5 22 5 21 6 22 6 21 7 22 7 160 40 4 160 40 4 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ 88 11 2 12 2 13 2 14 2 15 2 16 2 17 2 18 2 19 2 20 2 11 3 16 3 20 3 11 4 20 4 11 5 16 5 19 5 20 5 21 5 22 5 10 6 11 6 12 6 13 6 14 6 15 6 16 6 19 6 22 6 23 6 10 7 23 7 10 8 13 8 16 8 17 8 20 8 23 8 8 9 9 9 10 9 11 9 13 9 14 9 17 9 18 9 19 9 20 9 22 9 23 9 8 10 14 10 15 10 16 10 17 10 18 10 20 10 23 10 8 11 10 11 18 11 23 11 8 12 18 12 22 12 23 12 8 13 9 13 10 13 11 13 13 13 14 13 16 13 17 13 18 13 19 13 20 13 21 13 22 13 11 14 16 14 11 15 12 15 13 15 14 15 15 15 16 15 6 11 10 12 11 15 11 20 11 11 12 14 12 6 12 3 13 3 12 4 13 4 12 5 13 5 100 120 1 8 22 9 22 10 26 10 30 10 22 12 24 12 11 34 10 34 11 34 12 36 9 36 10 36 11 36 12 38 9 38 10 38 11 38 12 21џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ 68 10 3 11 3 12 3 13 3 14 3 15 3 16 3 17 3 10 4 17 4 10 5 17 5 18 5 19 5 20 5 21 5 10 6 11 6 12 6 13 6 21 6 10 7 13 7 14 7 16 7 21 7 10 8 16 8 18 8 20 8 21 8 22 8 23 8 24 8 9 9 10 9 12 9 13 9 24 9 9 10 13 10 16 10 20 10 24 10 8 11 9 11 13 11 14 11 15 11 16 11 17 11 18 11 19 11 20 11 21 11 22 11 23 11 24 11 8 12 13 12 8 13 13 13 8 14 9 14 10 14 11 14 12 14 13 14 8 13 5 17 6 15 7 18 7 15 9 17 9 19 9 20 9 8 9 12 10 12 11 12 12 12 9 13 10 13 11 13 12 13 150 80 3 :GOTO 3230 3110 REM Left move, =5 = box (cyan) 3120 IF PEEK(343)=247 AND HPOINT(X-2,Y+2)=5 THEN GOSUB 3320:GOTO 3250 3130 REM Left move, <>2 = not a red (#2) wall (#4) 3140 IF PEEK(343)=247 AND HPOINT(X-6,Y+3)<>2 THEN X=X-20:Z=0:GOTO 3250 3150 REM Right move, =5 = box (cyan) 3160 IF PEEK(344)=247 AND HPOINT(X+22,Y+2)=5 THEN GOSUB 3330:GOTO 3270 3170 REM Right move, <>2 = not a red (#2) wall (#4) 3180 IF PEEK(344)=247 AND HPOINT(X+25,Y+5)<>2 THEN X=X+20:Z=0:GOTO 3270 3190 GOTO 3020 3200 REM AU% = Up Character, AB% = Floor space 3210 HPUT(X,Y),3:IF Z<>1 THEN HPUT(X2,Y2)-(X2+9,Y2+9),7:GOTO 3280 ELSE 3280 3220 REM AD% = Down Character, AB% = Floor space 3230 HPUT(X,Y),4:IF Z<>1 THEN HPUT(X2,Y2)-(X2+9,Y2+9),7:GOTO 3280 ELSE 3280 3240 REM AL% = Left Character, AB% = Floor space 3250 HPUT(X,Y),2:IF Z<>1 THEN HPUT(X2,Y2)-(X2+9,Y2+9),7:GOTO 3280 ELSE 3280 3260 REM AR% = Right Character,AB% = Floor space 3270 HPUT(X,Y),1:IF Z<>1 THEN HPUT(X2,Y2)-(X2+9,Y2+9),7:GOTO 3280 ELSE 3280 3280 X2=X:Y2=Y:GOTO 3020 3290 REM 0 = Floor space (Black), AN% = Box 3300 IF HPOINT(X+2,Y-12)=0 THEN HPUT(X,Y-10)-(X+9,Y-19),5:Y=Y-10:Z=0:RETURN ELSE 3340 3310 IF HPOINT(X+2,Y+22)=0 THEN HPUT(X,Y+10)-(X+9,Y+19),5:Y=Y+10:Z=0:RETURN ELSE 3340 3320 IF HPOINT(X-22,Y+2)=0 THEN HPUT(X-20,Y)-(X-19,Y+9),5:X=X-20:Z=0:RETURN ELSE 3340 3330 IF HPOINT(X+42,Y+2)=0 THEN HPUT(X+20,Y)-(X+19,Y+9),5:X=X+20:Z=0:RETURN ELSE 3340 3340 Z=1:RETURN ,Y+22)=0 THEN HPUT(X,Y+10)-(X+9,Y+19),5:Y=Y+10:Z=0:RETURN ELSE 3340 3320 IF HPOINT(X-22,Y+2)=0 THEN HPUT(X-20,Y)-(X-19,Y+9),5:X=X-20:Z=0:RETURN ELSE 3340 3330 IF HPOI 105 17 2 18 2 19 2 20 2 8 3 9 3 10 3 11 3 12 3 13 3 14 3 15 3 16 3 17 3 20 3 6 4 7 4 8 4 12 4 16 4 17 4 20 4 21 4 22 4 23 4 24 4 25 4 26 4 6 5 12 5 20 5 26 5 6 6 8 6 12 6 16 6 17 6 26 6 6 7 8 7 12 7 17 7 20 7 26 7 6 8 8 8 10 8 11 8 12 8 13 8 15 8 17 8 18 8 19 8 20 8 21 8 22 8 23 8 24 8 25 8 26 8 6 9 8 9 11 9 12 9 13 9 15 9 18 9 6 10 8 10 11 10 16 10 18 10 6 11 16 11 18 11 6 12 8 12 11 12 12 12 13 12 15 12 16 12 18 12 6 13 8 13 9 13 10 13 11 13 18 13 6 14 13 14 14 14 15 14 16 14 17 14 18 14 6 15 7 15 8 15 9 15 10 15 11 15 12 15 13 15 9 18 4 9 5 10 5 18 5 18 6 14 7 15 7 9 10 12 11 9 23 5 24 5 25 5 23 6 24 6 25 6 23 7 24 7 25 7 210 60 2 џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџИ`Р72"" p3UUSUPf`ff``Рn2" " 00305UUUf`ff`aРЅ200P"PU"U"PUPf`f`ff``Рм2``fff`f`UP"PU"UP"P00С2U3UPUU3UUUU3UUUU3UU3333333333UU3UUUU3UUUU3UUU3UPСJ2""""""""""""""""""""""""""""""""""""С22""џВwf`UP"PU"UP"P00С2U3UPUU3UUUU3UUUU3UU333333џВwUPUUѕUTUUѕUTUUѕUTUUѕUTџџџџќUUѕUTUUѕUTUUѕUTUUХUPС†< ЊЊZЊЈ ЊЊZЊЈUUZЊЈ ЊЊZЊЈ ЊЊZЊЈ ЊЊZЊЈ ЊЊZЊЈ ЊЊUUT ЊЊZЊЈ ЊЊZЊЈСЧ<< 40 END 1590 REM ********* Draw Puzzle ************ 1600 IF G=19 OR G=20 THEN 1620 1610 FOR A=1 TO C1:HPUT((SX(A)-1)*10,SY(A)*10)-((SX(A)-1)*10+19,SY(A)*10+9),6,PSET:NEXT A 1620 FOR A=1 TO C2:HPUT((NX(A)-1)*10,NY(A)*10)-((NX(A)-1)*10+19,NY(A)*10+9),5,PSET:NEXT A 1630 FOR A=1 TO C3:HPUT((HX(A)-1)*10,HY(A)*10)-((HX(A)-1)*10+19,HY(A)*10+9),8,PSET:NEXT A 1640 IF G=1 THEN HPUT(X,Y)-(X+19,Y+9),3,PSET 1641 IF G=2 THEN HPUT(X,Y)-(X+19,Y+9),1,PSET 1642 IF G=3 OR G=4 OR G=5 THEN HPUT(X,Y)-(X+19,Y+9),2,PSET 1643 IF G=6 THEN HPUT(X,Y)-(X+19,Y+9),4,PSET 1650 RETURN 23000 REM Set Palette 23010 REM black 23020 PALETTE 0,0 23030 REM blue 23040 PALETTE 1,9 23050 REM red 23060 PALETTE 2,36 23070 REM magenta 23080 PALETTE 3,45 23090 REM green 24100 PALETTE 4,18 24110 REM cyan 24120 PALETTE 5,31 24130 REM yellow 24140 PALETTE 6,54 24150 REM white 24160 PALETTE 7,63 24170 RETURN 3000 IF G=1 THEN OPEN "I",#1,"SCREEN1/DAT":RETURN 3010 IF G=2 THEN OPEN "I",#1,"SCREEN2/DAT":RETURN 3020 IF G=3 THEN OPEN "I",#1,"SCREEN3/DAT":RETURN 3030 IF G=4 THEN OPEN "I",#1,"SCREEN4/DAT":RETURN 3040 IF G=5 THEN OPEN "I",#1,"SCREEN5/DAT":RETURN 3050 IF G=6 THEN OPEN "I",#1,"SCREEN6/DAT":RETURN 3060 IF G=7 THEN OPEN "I",#1,"SCREEN7/DAT":RETURN 3070 IF G=8 THEN OPEN "I",#1,"SCREEN8/DAT":RETURN 3080 IF G=9 THEN OPEN "I",#1,"SCREEN9/DAT":RETURN 3090 IF G=10 THEN OPEN "I",#1,"SCREEN10/DAT":RETURN 3100 IF G=11 THEN OPEN "I",#1,"SCREEN11/DAT":RETURN 3110 IF G=12 THEN OPEN "I",#1,"SCREEN12/DAT":RETURN 3120 IF G=13 THEN OPEN "I",#1,"SCREEN13/DAT":RETURN 3130 79 12 2 13 2 14 2 15 2 16 2 17 2 12 3 17 3 10 4 11 4 12 4 14 4 15 4 17 4 8 5 9 5 10 5 17 5 18 5 19 5 20 5 21 5 22 5 23 5 8 6 17 6 23 6 8 7 10 7 13 7 17 7 23 7 8 8 10 8 13 8 23 8 8 9 10 9 13 9 17 9 23 9 8 10 10 10 13 10 17 10 23 10 8 11 10 11 13 11 17 11 18 11 19 11 20 11 21 11 22 11 23 11 8 12 10 12 16 12 17 12 8 13 10 13 16 13 8 14 10 14 11 14 12 14 14 14 15 14 16 14 8 15 14 15 8 16 9 16 10 16 11 16 12 16 13 16 14 16 15 13 5 16 5 12 6 14 6 11 7 16 7 14 8 11 9 12 10 15 10 16 10 14 11 12 12 14 12 13 13 15 20 6 21 6 22 6 20 7 21 7 22 7 20 8 21 8 22 8 20 9 21 9 22 9 20 10 21 10 22 10 110 110 1 TTE4,18:PALETTE5,31:PALETTE6,54:PALETTE7,63:PALETTE9,9 150 REM PALETTE8,0:PALETTE9,9:PALETTE10,36:PALETTE11,45:PALETTE12,18:PALETTE13,31:PALETTE14,54:PALETTE15,63 160 DIM FX(270),FY(270),GX(100),GY(100),BX(100),BY(100),WX(200),WY(200) 170 ON BRK GOTO 600 200 REM Display startup screen 210 HSCREEN 2:GOSUB 5010:LV=0:ML=30 220 NU=0:PT=1:VL=22:GOTO 2020 300 REM Read level data 310 GOSUB 2310 320 INPUT #1, CW 330 FOR IC=1 TO CW 340 INPUT #1, WX(IC), WY(IC) 350 NEXT IC 360 INPUT #1, CB 370 FOR IC=1 TO CB 380 INPUT #1, BX(IC), BY(IC) 390 NEXT IC 400 INPUT #1, CG 410 FOR IC=1 TO CG 420 INPUT #1, GX(IC), GY(IC) 430 NEXT IC 440 INPUT #1, CX, CY, SP 450 IF LV=15 OR LV=16 OR LV=17 OR LV=18 OR LV=19 OR LV=20 THEN INPUT #1, CF:FOR IC=1 TO CF:INPUT #1, FX(IC), FY(IC):NEXT IC 460 CLOSE #1 500 REM Display Level 510 HCLS:VL=5:GOSUB 1010 520 GOTO 3010 600 REM End game 610 POKE &HF00C, &H43 620 HSCREEN 0:CLS 630 END 700 REM ========== End of main program ========== 1000 REM ********* Draw Puzzle ************ 1010 IF LV=19 THEN FOR DH=60 TO 240 STEP 10:FOR EH=20 TO 160 STEP 10:HPUT(DH,EH)-(DH+9,EH+9),6,PSET:NEXT EH:NEXT DH:FOR DC=1 TO CW:HPUT(WX(DC)*10,WY(DC)*10)-(WX(DC)*10+9,WY(DC)*10+9),7,PSET:NEXT DC:GOTO 1040 1020 IF LV=20 THEN FOR DH=10 TO 300 STEP 10:FOR EH=10 TO 180 STEP 10:HPUT(DH,EH)-(DH+9,EH+9),6,PSET:NEXT EH:NEXT DH:FOR DC=1 TO CW:HPUT(WX(DC)*10,WY(DC)*10)-џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџТФУХФЧУУУФФУФФФХХУХХФ5'УФУФТФФЧХЦФ)ФХ+,-./01Т34Ш678ТФџџџџџџџџџџCBUFF BASџ*SOKOBAN BAS2HBUFF DAT ТSCREEN1 DATџ#SCREEN2 DATџЭSCREEN3 DATџФSCREEN4 DATџ чSCREEN5 DATџ .SCREEN6 DATџ ™SCREEN7 DATџSCREEN8 DATџ&SCREEN9 DATџыSCREEN10DATџoSCREEN11DATџ гSCREEN12DATџ —SCREEN13DATџdSCREEN14DATџSCREEN15DATџpSCREEN16DATџ^SCREEN17DATџрSCREEN18DATџ•SCREEN19DATџ~SCREEN20DATџaSCREEN21DATџѕSCREEN22DATџ_SCREEN23DATџеSCREEN24DATџ§SCREEN25DATџ!ЇSCREEN26DATџ"SCREEN27DATџ#TSCREEN28DATџ$4SCREEN29DATџ%ЧSCREEN30DATџ&єSCREEN31DATџ(SOKOBANNBASџSOKOBANRBASџ*оABOUT TXTџ2WREADER BASџ9Jџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ 70 15 3 16 3 17 3 18 3 19 3 20 3 21 3 22 3 23 3 15 4 23 4 15 5 17 5 19 5 21 5 23 5 15 6 21 6 23 6 15 7 23 7 15 8 16 8 21 8 23 8 9 9 10 9 11 9 16 9 23 9 8 10 9 10 11 10 12 10 13 10 14 10 15 10 16 10 18 10 19 10 20 10 21 10 22 10 23 10 8 11 14 11 20 11 8 12 9 12 20 12 8 13 14 13 18 13 19 13 20 13 8 14 9 14 11 14 12 14 13 14 14 14 17 14 18 14 9 15 10 15 11 15 14 15 15 15 16 15 17 15 10 18 6 20 6 19 7 18 8 20 8 18 9 20 9 16 11 18 11 17 12 10 10 10 9 11 10 11 11 11 10 12 11 12 9 13 10 13 11 13 10 14 170 130 3 LV=22 OR LV=25 OR LV=28 THEN HPUT(CX,CY)-(CX+9,CY+9),1,PSET 1150 REM IF LV=24 OR LV=27 OR LV=29 THEN HPUT(CX,CY)-(CX+9,CY+9),2,PSET 1160 REM IF LV=21 THEN HPUT(CX,CY)-(CX+9,CY+9),4,PSET 1170 RETURN 2000 REM Input routine 2010 POKE &H155,255:POKE &H156,255:POKE &H157,255:POKE &H158,255 2020 I$=INKEY$:IF I$="" THEN 2020 2030 IF PS=0 AND ASC(I$)=94 THEN M$="U":RETURN 2040 IF PS=0 AND ASC(I$)=10 THEN M$="D":RETURN 2050 IF PS=0 AND ASC(I$)=9 THEN M$="R":RETURN 2060 IF PS=0 AND ASC(I$)=8 THEN M$="L":RETURN 2065 IF LV>0 AND ASC(I$)=103 THEN GOSUB 4700:IF CP=CG THEN 3705 ELSE I$="":GOTO 2020 2070 IF (I$="P" OR I$="p") AND LV>0 THEN IF PS=1 THEN PS=0:HPRINT(1,3)," ":RETURN ELSE PS=1:NU=1:VL=5:GOSUB 2210 2080 IF PS=1 AND (I$="C" OR I$="c") AND (LV>0 AND LV0 THEN PS=0:GOSUB 4010:GOSUB 2310:GOTO 320 2100 IF (I$="S" OR I$="s") AND LV=0 THEN LV=LV+1:GOSUB 4010:GOTO 310 2110 IF I$="G" OR I$="g" THEN GOSUB 2410:PT=0:PS=0:GOSUB 4010:IF NU=1 THEN GOSUB 2310:GOTO 320 ELSE 310 2120 IF I$<>"E" AND I$<>"e" THEN 2020 ELSE 600 2130 RETURN 2200 REM Pause Screen 2210 HCOLOR 2:HPRINT(1,3),"[R]":HCOLOR 6:HPRINT(4,3),"eset":HCOLOR 2:HPRINT(8,3)," [C]":HCOLOR 6:HPRINT(12,3),"ontinue":HCOLOR 2:HPRINT(19,3)," [G]":HCOLOR 6:HPRINT(23,3),"oto Level":HCOLOR 2:HPRINT(32,3)," [E]":HCOLOR 6:HPRINT(36,3),"nd" 2220 RETURN 2300 REM Level loading statement in-game 2310 HCOLOR 4:HPRINT(12,VL),"Lo 153 14 0 15 0 16 0 17 0 18 0 19 0 20 0 21 0 9 1 10 1 11 1 12 1 13 1 14 1 21 1 8 2 9 2 21 2 6 3 7 3 8 3 12 3 13 3 14 3 21 3 6 4 10 4 12 4 13 4 14 4 21 4 6 5 8 5 9 5 10 5 14 5 20 5 21 5 6 6 8 6 14 6 15 6 16 6 17 6 18 6 19 6 20 6 21 6 6 7 8 7 16 7 20 7 21 7 22 7 23 7 24 7 6 8 8 8 16 8 20 8 24 8 25 8 26 8 6 9 8 9 18 9 22 9 26 9 6 10 8 10 15 10 16 10 17 10 18 10 19 10 20 10 22 10 23 10 24 10 26 10 6 11 8 11 9 11 10 11 12 11 15 11 16 11 24 11 26 11 6 12 10 12 15 12 16 12 24 12 26 12 6 13 7 13 8 13 10 13 11 13 12 13 13 13 15 13 16 13 17 13 19 13 20 13 21 13 23 13 24 13 26 13 8 14 13 14 15 14 16 14 17 14 20 14 21 14 23 14 26 14 8 15 9 15 10 15 11 15 20 15 21 15 23 15 25 15 26 15 11 16 12 16 13 16 16 16 17 16 18 16 19 16 23 16 25 16 13 17 14 17 15 17 16 17 19 17 25 17 19 18 23 18 24 18 25 18 19 19 20 19 21 19 22 19 23 19 19 11 6 13 6 10 7 11 7 12 7 10 8 12 8 14 8 10 9 12 9 13 9 14 9 12 10 14 11 20 11 18 12 20 12 22 12 22 17 19 17 1 18 1 19 1 20 1 17 2 18 2 19 2 20 2 17 3 18 3 19 3 20 3 17 4 18 4 19 4 20 4 17 5 18 5 19 5 180 80 2 10:UW=0:GOTO 3470 3370 GOTO 3110 3400 REM AU% = Up Character, AB% = Floor space 3410 HPUT(CX,CY)-(CX+9,CY+9),3:IF UW<>1 THEN HPUT(PX,PY)-(PX+9,PY+9),7:GOTO 3480 ELSE 3480 3420 REM AD% = Down Character, AB% = Floor space 3430 HPUT(CX,CY)-(CX+9,CY+9),4:IF UW<>1 THEN HPUT(PX,PY)-(PX+9,PY+9),7:GOTO 3480 ELSE 3480 3440 REM AL% = Left Character, AB% = Floor space 3450 HPUT(CX,CY)-(CX+9,CY+9),2:IF UW<>1 THEN HPUT(PX,PY)-(PX+9,PY+9),7:GOTO 3480 ELSE 3480 3460 REM AR% = Right Character, AB% = Floor space 3470 HPUT(CX,CY)-(CX+9,CY+9),1:IF UW<>1 THEN HPUT(PX,PY)-(PX+9,PY+9),7:GOTO 3480 ELSE 3480 3480 PX=CX:PY=CY:GOTO 3110 3500 REM Check if space after box is goal 3510 IF HPOINT(CX+4,CY- 93 7 3 8 3 9 3 10 3 11 3 12 3 13 3 14 3 7 4 14 4 15 4 16 4 17 4 18 4 19 4 20 4 21 4 7 5 21 5 22 5 7 6 13 6 14 6 18 6 22 6 7 7 13 7 16 7 22 7 7 8 8 8 9 8 10 8 11 8 12 8 13 8 16 8 17 8 22 8 23 8 24 8 8 9 17 9 18 9 19 9 24 9 8 10 13 10 18 10 24 10 8 11 11 11 12 11 13 11 15 11 16 11 19 11 21 11 22 11 23 11 24 11 8 12 11 12 19 12 23 12 8 13 9 13 10 13 11 13 13 13 15 13 18 13 19 13 23 13 9 14 23 14 9 15 10 15 11 15 12 15 13 15 17 15 18 15 19 15 20 15 21 15 22 15 23 15 13 16 14 16 15 16 16 16 17 16 17 17 5 16 6 19 6 19 7 14 8 20 8 21 9 11 10 15 10 21 10 14 12 17 12 14 13 20 13 11 14 16 14 20 14 17 8 4 9 4 10 4 8 5 9 5 10 5 11 5 8 6 9 6 10 6 11 6 12 6 8 7 9 7 10 7 11 7 12 7 100 140 1 310:GOTO 320 ELSE POKE 65496,0:FOR TC=1 TO 2000:NEXT TC:LV=0:HCLS:GOSUB 5010:GOTO 220 3740 END 4000 REM Level file open routine 4010 F$="SCREEN"+RIGHT$(STR$(LV),LEN(STR$(LV))-1)+".DAT" 4020 OPEN "I",#1,F$:RETURN 4030 RETURN 4500 REM Debug Screen 4510 HCOLOR 2:HLINE(170,10)-(281,85),PSET,B 4520 HPRINT(22,2)," CP:":HPRINT(27,2),CP 4530 HPRINT(22,3)," OG:":HPRINT(27,3),OG 4540 HPRINT(22,4)," GX:":HPRINT(27,4),GX(A)*10 4550 HPRINT(22,5)," GY:":HPRINT(27,5),GY(A)*10 4560 HPRINT(22,6)," X:":HPRINT(27,6),X 4570 HPRINT(22,7)," Y:":HPRINT(27,7),Y 4580 HPRINT(22,8)," CC:":HPRINT(27,8),CC 4590 REM HPRINT(22,9),"LINE:":HPRINT(27,9),LI$ 4600 REM I$=INKEY$:IF I$="" THEN 4590 4610 RETURN 4620 REM LI$="3340":GOSUB 4120: 4700 CP=0:FOR GC=1 TO CG:IF HPOINT(GX(GC)*10+5,GY(GC)*10+5)=3 THEN CP=CP+1:NEXT GC ELSE IF HPOINT(GX(GC)*10+5,GY(GC)*10+5)=0 THEN HPUT(GX(GC)*10,GY(GC)*10)-(GX(GC)*10+9,GY(GC)*10+9),8:NEXT GC ELSE NEXT GC 4710 RETURN 5000 REM Startup screen 5010 HCOLOR 7,0 5020 HCOLOR 2:HPRINT(12,0),"** Sokoban 1 **" 5030 HCOLOR 5:HPRINT(5,3),"Originally (C)1982 by Hiroyuki" 5040 HCOLOR 5:HPRINT(5,4),"Imabayashi and Thinking Rabbit" 5050 HCOLOR 5:HPRINT(5,5),"Adapted to the CoCo in 2020 by" 5060 HCOLOR 5:HPRINT(7,6), 137 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 20 1 21 1 22 1 23 1 9 2 13 2 14 2 17 2 18 2 19 2 20 2 23 2 9 3 17 3 23 3 9 4 12 4 14 4 15 4 17 4 23 4 24 4 25 4 26 4 9 5 10 5 20 5 22 5 26 5 9 6 10 6 11 6 12 6 15 6 18 6 26 6 5 7 6 7 7 7 8 7 9 7 12 7 13 7 14 7 15 7 20 7 21 7 22 7 26 7 5 8 9 8 12 8 15 8 17 8 18 8 19 8 20 8 26 8 5 9 12 9 15 9 17 9 19 9 20 9 26 9 5 10 6 10 7 10 8 10 9 10 10 10 12 10 15 10 20 10 21 10 22 10 26 10 8 11 12 11 13 11 15 11 18 11 22 11 26 11 7 12 8 12 20 12 22 12 23 12 24 12 25 12 26 12 6 13 7 13 12 13 13 13 16 13 22 13 6 14 10 14 13 14 15 14 16 14 17 14 20 14 21 14 22 14 6 15 13 15 17 15 18 15 19 15 20 15 6 16 7 16 8 16 9 16 10 16 13 16 17 16 10 17 11 17 12 17 13 17 14 17 15 17 16 17 17 17 19 13 3 20 3 12 5 16 5 18 5 19 5 20 6 22 6 10 8 16 10 17 11 16 12 19 12 9 13 10 13 11 13 18 13 10 15 14 15 19 23 7 24 7 25 7 21 8 22 8 23 8 24 8 25 8 21 9 22 9 23 9 24 9 25 9 23 10 24 10 25 10 23 11 24 11 25 11 160 150 2 150 2 ck after Box is Floor or Goal 4150 LI$="4150":GOSUB 4520:IF HPOINT(X+4,Y-15)=0 THEN PB=CB:CB=0:GOTO 4240 4160 LI$="4160":GOSUB 4520:IF HPOINT(X+4,Y-15)=2 THEN PB=CB:CB=2:GOTO 4240 4170 LI$="4170":GOSUB 4520:IF HPOINT(X+5,Y+24)=0 THEN PB=CB:CB=0:GOTO 4240 4180 LI$="4180":GOSUB 4520:IF HPOINT(X+5,Y+24)=2 THEN PB=CB:CB=2:GOTO 4240 4190 LI$="4190":GOSUB 4520:IF HPOINT(X-16,Y+4)=0 THEN PB=CB:CB=0:GOTO 4240 4200 LI$="4200":GOSUB 4520:IF HPOINT(X-16,Y+4)=2 THEN PB=CB:CB=2:GOTO 4240 4210 LI$="4210":GOSUB 4520:IF HPOINT(X+25,Y+5)=0 THEN PB=CB:CB=0:GOTO 4240 4220 LI$="4220":GOSUB 4520:IF HPOINT(X+25,Y+5)=2 THEN PB=CB:CB=2:GOTO 4240 4230 LI$="4230":GOSUB 4520:RETURN 4240 LI$="4240":GOSUB 4520:IF PB=2 THEN PF=1:RETURN ELSE PF=0:RETURN 4300 REM Read arrow key presses 4310 KY=PEEK(341):IF KY=247 THEN M$="U":GOTO 4350 43 85 8 3 9 3 10 3 11 3 12 3 14 3 15 3 16 3 17 3 8 4 12 4 14 4 17 4 18 4 19 4 20 4 8 5 12 5 13 5 14 5 20 5 8 6 13 6 14 6 20 6 21 6 22 6 8 7 9 7 14 7 15 7 22 7 8 8 9 8 10 8 15 8 16 8 22 8 8 9 10 9 11 9 16 9 22 9 8 10 11 10 12 10 14 10 16 10 17 10 18 10 20 10 21 10 22 10 23 10 8 11 12 11 14 11 23 11 8 12 23 12 8 13 12 13 21 13 22 13 23 13 8 14 11 14 12 14 13 14 14 14 15 14 16 14 19 14 20 14 21 14 8 15 10 15 11 15 16 15 17 15 18 15 19 15 8 16 9 16 10 16 17 17 5 16 6 19 6 19 7 18 8 20 8 19 9 10 11 15 11 18 11 11 12 15 12 20 12 14 13 16 13 17 13 19 13 17 9 4 10 4 11 4 9 5 10 5 11 5 9 6 10 6 11 6 12 6 10 7 11 7 12 7 13 7 11 8 12 8 13 8 130 120 3 X3:HPRINT(27,7),BF 4575 HPRINT(22,8)," CL:":Y3=74:FOR X3=216 TO 236 STEP 10:HPUT(X3,Y3)-(X3+9,Y3+9),7:NEXT X3:HPRINT(27,8),CL 4580 REM HPRINT(22,9),"LINE:":Y3=84:FOR X3=216 TO 236 STEP 10:HPUT(X3,Y3)-(X3+9,Y3+9),7:NEXT X3:HPRINT(27,9),LI$ 4585 HPRINT(22,9),"LINE:":HPRINT(27,9),LI$ 4590 I$=INKEY$:IF I$="" THEN 4590 4600 RETURN 4610 REM LI$="3340":GOSUB 4120: 5000 REM Startup screen 5010 HCOLOR 7,0 5020 HCOLOR 2:HPRINT(17,0),"** Sokoban **" 5030 HCOLOR 3:HPRINT(2,3),"RIGHT":HCOLOR 5:HPRINT(17,3),"Originally by" 5040 HCOLOR 3:HPRINT(2,5)," LEFT":HCOLOR 5:HPRINT(15,4),"Hiroyuki Imabayashi" 5050 HCOLOR 3:HPRINT(2,7)," UP":HCOLOR 5:HPRINT(15,5),"Adapted to the CoCo" 5060 HCOLOR 3:HPRINT(2,9)," DOWN":HCOLOR 5:HPRINT(20,6),"in 2020 by" 5070 HCOLOR 3:HPRINT(2,11)," BOX":HCOLOR 5:HPRINT(15,7),"Wayne Campbell with" 5080 HCOLOR 3:HPRINT(2,13)," WALL":HCOLOR 5:HPRINT(15,8),"help from lostwizard" 5090 HCOLOR 3:HPRINT(2,15),"FLOOR":HCOLOR 3:HPRINT(22,10),"[UP]" 5100 REM HPRINT(24,11),CHR$(124) 5110 HCOLOR 3:HPRINT(2,17)," GOAL":HPRINT(13,12),"[LEFT] [DOWN] [RIGHT]" 5120 HCOLOR 7:HPRINT(14,14),"[Arrow keys to move]" 5130 HPRINT(14,15),"[Undo not available]" 5140 HPRINT(14,16),"[No score available]" 5150 HPUT(60,22)-(69,31),1:HPUT(60,38)-(69,47),2:HPUT(60,54)-(69,63),3:HPUT(60,70)-(=PX:CY=PY:PY=PY+10:IFPY=SY+10THENPX=0:PY=0 4240 IFM$="D"ANDPX>0THENHPUT(PX,PY)-(PX+9,PY+9),4:HPUT(CX,CY)-(CX+9,CY+9),7:GOSUB4300:CX=PX:CY=PY:PY=PY-10:IFPY=SY-10THENPX=0:PY=0 4250 RETURN 4270 IFBO=1THENHPUT(CX,CY)-(CX+9,CY+9),5:HPUT(CX+10,CY)-(CX+19,CY+9),7:BO=0:RETURN 4280 IFBO=1THENHPUT(CX,CY)-(CX+9,CY+9),5:HPUT(CX-10,CY)-(CX-1,CY+9),7:BO=0:RETURN 4290 IFBO=1THENHPUT(CX,CY)-(CX+9,CY+9),5:HPUT(CX,CY-10)-(CX+9,CY-1),7:BO=0:RETURN 4300 IFBO=1THENHPUT(CX,CY)-(CX+9,CY+9),5:HPUT(CX,CY+10)-(CX+9,CY+19),7:BO=0:RETURN 4310 RETURN 4410 F$="SCREEN"+RIGHT$(STR$(LV),LEN(STR$(LV))-1)+".DAT" 4420 OPEN"I",#1,F$:RETURN 4430 RETURN 4510 IFLV>9THENHL=13ELSEHL=12 4520 HCOLOR4:HPRINT(5,3),"Level":HCOLOR7:HPRINT(10,3),LV:HCOLOR4:HPRINT(HL,3)," Completed!GoodWork!" 4530 IFLV=ML ANDCP=ML ANDPT=1THENHCOLOR6:HPRINT(14,5),"GameFinished!" 4540 IFLV0 AND ASC(I$)=103 THEN GOSUB 4700:IF CP=CG THEN 3705 ELSE I$="":GOTO 2020 2070 IF (I$="P" OR I$="p") AND LV>0 THEN IF PS=1 THEN PS=0:HPUT(0,20)-(319,59),9:RETURN ELSE PS=1:NU=1:VL=5:HGET(0,20)-(319,59),9:GOSUB 2210 2080 IF PS=1 AND (I$="C" OR I$="c") AND (LV>0 AND LV0 THEN PS=0:IF RS<5 THEN RS=RS+1:GOSUB 4010:GOSUB 2310:GOTO 320 ELSE LV=1:RS=0:GOSUB 4010:GOSUB 2310:GOTO 320 2100 IF (I$="S" OR I$="s") AND LV=0 THEN LV=LV+1:GOSUB 4010:GOTO 310 2110 IF I$="G" OR I$="g" THEN GOSUB 2410:PT=0:PS=0:GOSUB 4010:IF NU=1 THEN GOSUB 2310:GOTO 320 ELSE 310 2115 IF (I$="U" OR I$="u") AND UN=1 THEN GOSUB 3800:UN=0 2120 IF I$<>"E" AND I$<>"e" THEN 2020 ELSE 600 2130 RETURN 2200 REM Pause Screen 2210 HCOLOR 2:HPRINT(1,3),"[R]":HCOLOR 6:HPRINT(4,3),"eset":HCOLOR 2:HPRINT(8,3)," [C]":HCOLOR 6:HPRINT(12,3),"ontinue":HCOLOR 2:HPRINT(19,3)," [G]":HCOLOR 6:HPRINT(23,3),"oto Level":HCOLOR 2:HPRINT(32,3)," [E]":HCOLOR 6:HPRINT(36,3),"nd" 2220 RETURN 2300 REM Level loading statement in-game 2310 HCOLOR 4:HPRINT(12,VL),"Loading Level":HCOLOR 7:HPRINT(25,VL),STR$(LV) 2320 RETURN 2400 REM Goto level input 2410 L$="":HCOLOR 7:HPRINT(12,VL),"Level Number: " 2420 I$=INKEY$:IF I$="" THEN 2420 2430 IF ASC(I$)<>13 AND ASC(I$)<>8 THEN L$=L$+I$:HPRINT(26,VL),L$:GOTO 2420 2440 IF ASC(I$)=8 THEN L$=LEFT$(L$,LEN(L$)-1):HPRINT(070 HCOLOR5:HPRINT(7,6),"Wayne Campbell, helped by" 5080 HCOLOR5:HPRINT(7,7),"William (lostwizard) Astle" 5090 HCOLOR3:HPRINT(5,9),"[UP] [DOWN] Floor" 5100 HCOLOR3:HPRINT(5,11),"[LEFT] [RIGHT] Goal" 5110 HCOLOR3:HPRINT(5,13),"Box Wall" 5120 HPUT(100,70)-(109,79),3:HPUT(190,70)-(199,79),4:HCOLOR2:HLINE(268,68)-(281,81),PSET,B:HPUT(270,70)-(279,79),7 5130 HPUT(100,86)-(109,95),2:HPUT(190,86)-(199,95),1:HCOLOR2:HLINE(268,84)-(281,97),PSET,B:HPUT(270,86)-(279,95),8 5140 HPUT(100,106)-(109,115),5:HPUT(190,106)-(199,115),6:HCOLOR2:HLINE(40,124)-(281,155),PSET,B 5150 HCOLOR7:HPRINT(11,16),"Arrow keys to move" 5160 HPRINT(7,17),"Last Move ":HCOLOR2:HPRINT(17,17),"[U]":HCOLOR6:HPRINT(20,17),"ndo":HCOLOR7:HPRINT(23,17)," available" 5170 HPRINT(11,18),"No score available" 5180 HCOLOR2:HPRINT(3,20),"[S]":HCOLOR6:HPRINT(6,20),"tart":HCOLOR2:HPRINT(10,20)," [E]":HCOLOR6:HPRINT(14,20),"nd":HCOLOR2:HPRINT(16,20)," [P]":HCOLOR6:HPRINT(20,20),"ause":HCOLOR2:HPRINT(24,20)," [G]":HCOLOR6:HPRINT(28,20),"oto Level" 5190 RETURN THENIFVAL(L$)>=1ANDVAL(L$)<=ML ANDVAL(L$)<>LV THENLV=VAL(L$):RETURN 2460 HPRINT(26,VL)," " 2470 GOTO2410 3010 REM 3020 TX(0)=0:TY(0)=0:TX(1)=0:TY(1)=0:TX(2)=0:TY(2)=0:PX=0:PY=0:CX=SX:CY=SY:BO=0:UW=1:CP=0:UN=0:MC=0 3030 HPUT(SX,SY)-(SX+9,SY+9),SP 3110 GOSUB4710 3140 GOSUB2010 3150 GOSUB4010 3210 ONMV GOSUB3310,3360,3410,3460 3220 GOTO3110 3310 IFHPOINT(CX+15,CY+5)=0ORHPOINT(CX+15,CY+5)=9THENBO=0:TX(0)=0:TY(0)=0:GOSUB3510:GOSUB3610:PX=PX+10:CX=CX+10:UW=0:GOSUB3810:RETURN 3320 IFHPOINT(CX+15,CY+5)=2THENBO=0:TX(0)=0:TY(0)=0:GOSUB3510:GOSUB3610:PX=PX+10:CX=CX+10:UW=0:GOSUB3810:MC=1:RETURN 3330 IFHPOINT(CX+15,CY+5)=3THENBO=1:TX(0)=0:TY(0)=0:GOSUB3510:GOSUB3610:GOSUB3710:GOSUB3810:RETURN 3340 RETURN 3360 IFHPOINT(CX-6,CY+4)=0ORHPOINT(CX-6,CY+4)=9THENBO=0:TX(0)=0:TY(0)=0:GOSUB3520:GOSUB3620:PX=PX-10:CX=CX-10:UW=0:GOSUB3840:RETURN 3370 IFHPOINT(CX-6,CY+4)=2THENBO=0:TX(0)=0:TY(0)=0:GOSUB3520:GOSUB3620:PX=PX-10:CX=CX-10:UW=0:GOSUB3840:MC=1:RETURN 3380 IFHPOINT(CX-6,CY+4)=3THENBO=1:TX(0)=0:TY(0)=0:GOSUB3520:GOSUB3620:GOSUB3720:GOSUB3840:RETURN 3390 RETURN 3410 IFHPOINT(CX+4,CY-5)=0ORHPOINT(CX+4,CY-5)=9THENBO=0:TX(0)=0:TY(0)=0:GOSUB3530:GOSUB3630:PY=PY-10:CY=CY-10:UW=0:GOSUB3870:RETURN 3420 IFHPOINT(CX+4,CY-5)=2THENBO=0:TX(0)=0:TY(0)=0:GOSUB3530:GOS 1 REM ******************************************************** 2 REM * Sokoban 1/1B for the CoCo3 * 3 REM * (C)1980 Hiroyuki & Kiyoko Imabayashi & Matuhiro Ohno * 4 REM * & Thinking Rabbit/Falcon Co. Ltd. * 5 REM * This port made possible by Carlos Montiers * 6 REM * Adapted for the CoCo3 in 2020 by Wayne Campbell * 7 REM * with help from William "lostwizard" Astle * 8 REM ******************************************************** 9 REM =========== Initialize Program ============ 10 REM Load Sprites (U,D,L,R Characters, Floor, Box, Wall and Goal) 20 CLEAR 200,&H5FFF 30 REM LOAD HBUFFS FROM DISK; CAN BE ALL ON ONE LINE 40 REM LISTED SEPARATE FOR CLARITY 50 POKE &HFFA3,&H34 60 LOADM "HBUFF.DAT" 70 POKE &HFFA3,&H3B 80 REM CONTINUE WITH PROGRAM HERE 90 CLEAR 200,&H8000 95 REM Transparent HPRINT Off, Hi-Speed Poke On 100 POKE &HF00C,&H4F:POKE 65497,0 110 REM Set Colors, DIM Arrays 120 REM 0=black, 1=blue, 2=red, 3=magenta, 4=green, 5=cyan, 6=yellow, 7=white, 9=blue 140 PALETTE0,0:PALETTE1,9:PALETTE2,36:PALETTE3,45:PALETTE4,18:PALETTE5,27:PALETTE6,54:PALETTE7,63:PALETTE9,9 145 REM Screen Restore Buffer 150 HBUFF9,6400 160 DIM FX(270),FY(270),GX(100),GY(100),BX(100),BY(100),WX(200),WY(200),TX(3),TY(3) 165 REM =========== Start of Program =========== 170 ON BRK GOTO 610 200 REM Display Startup Screen 210 HSCREEN 2:GOSUB 5010:LV=0:ML=31 220 NU=0:PT=1:VL=22:RS=0:GOTO 2020 300 REM Read Level Data 310 GOSUB 2310 320 INPUT #1, CW 330 FOR IC=1 TO CW 340 INPUT #1, WX(IC), WY(IC) 350 NEXT IC 360 INPUT #1, CB 370 FOR IC=1 TO CB 380 INPUT #1, BX(IC), BY(IC) 390 NEXT IC 400 INPUT #1, CG 410 FOR IC=1 TO CG 420 INPUT #1, GX(IC), GY(IC) 430 NEXT IC 440 INPUT #1, SX, SY, SP 450 IF LV=15 OR LV=16 OR LV=17 OR LV=18 OR LV=19 OR LV=20 THEN INPUT #1, CF:FOR IC=1 TO CF:INPUT #1, FX(IC), FY(IC):NEXT IC 460 CLOSE #1 500 REM Display Level and Goto Main Program Loop 510 HCLS:VL=5:GOSUB 1010 520 GOTO 3010 600 REM End Game 605 REM Transparent HPRINT On, Hi-Speed Poke Off 610 POKE &HF00C,&H43:POKE 65496,0 620 HSCREEN 0:CLS 630 END 700 REM ============ End of Program ============= 1000 REM ********* Draw Puzzle ************ 1010 IF LV=19 THEN FOR DH=60 TO 240 STEP 10:FOR EH=20 TO 160 STEP 10:HPUT(DH,EH)-(DH+9,EH+9),6:NEXT EH:NEXT DH:FOR DC=1 TO CW:HPUT(WX(DC)*10,WY(DC)*10)-(WX(DC)*10+9,WY(DC)*10+9),7:NEXT DC:GOTO 1040 1020 IF LV=20 THEN FOR DH=10 TO 300 STEP 10:FOR EH=10 TO 180 STEP 10:HPUT(DH,EH)-(DH+9,EH+9),6:NEXT EH:NEXT DH:FOR DC=1 TO CW:HPUT(WX(DC)*10,WY(DC)*10)-(WX(DC)*10+9,WY(DC)*10+9),7:NEXT DC:GOTO 1040 1030 IF LV<19 OR LV>20 THEN FOR DC=1 TO CW:HPUT(WX(DC)*10,WY(DC)*10)-(WX(DC)*10+9,WY(DC)*10+9),6:NEXT DC 1040 FOR DC=1 TO CB:HPUT(BX(DC)*10,BY(DC)*10)-(BX(DC)*10+9,BY(DC)*10+9),5:NEXT DC 1050 FOR DC=1 TO CG:HPUT(GX(DC)*10,GY(DC)*10)-(GX(DC)*10+9,GY(DC)*10+9),8:NEXT DC 1060 IF LV=11 THEN HSET(184,94,9) 1070 IF LV=12 THEN HSET(174,95,9):HSET(175,105,9) 1080 IF LV=13 THEN HSET(175,75,9):HSET(175,84,9) 1090 IF LV=14 THEN HSET(125,54,9):HSET(135,84,9) 1100 IF LV=15 OR LV=16 OR LV=17 OR LV=18 OR LV=19 OR LV=20 THEN FOR DC=1 TO CF:HSET(FX(DC),FY(DC),9):NEXT DC 1110 REM Place Character in Start Position 1120 HPUT(SX,SY)-(SX+9,SY+9),SP 1130 RETURN 2000 REM Input Routine 2005 REM Key-Repeat for Arrow Keys 2010 POKE &H155,255:POKE &H156,255:POKE &H157,255:POKE &H158,255 2020 I$=INKEY$:IF I$="" THEN 2020 2030 IF PS=0 AND ASC(I$)=9 THEN MV=1:M$="R":UN=1:RETURN 2040 IF PS=0 AND ASC(I$)=8 THEN MV=2:M$="L":UN=1:RETURN 2050 IF PS=0 AND ASC(I$)=94 THEN MV=3:M$="U":UN=1:RETURN 2060 IF PS=0 AND ASC(I$)=10 THEN MV=4:M$="D":UN=1:RETURN 2065 IF LV>0 AND ASC(I$)=103 THEN GOSUB 4610:IF CP=CG THEN 4510 ELSE I$="":GOTO 2020 2070 IF (I$="P" OR I$="p") AND LV>0 THEN IF PS=1 THEN PS=0:HPUT(0,20)-(319,59),9:RETURN ELSE PS=1:NU=1:VL=5:HGET(0,20)-(319,59),9:GOSUB 2210 2080 IF PS=1 AND (I$="C" OR I$="c") AND (LV>0 AND LV0 THEN PS=0:IF RS<5 THEN RS=RS+1:GOSUB 4410:GOSUB 2310:GOTO 320 ELSE LV=1:RS=0:GOSUB 4410:GOSUB 2310:GOTO 320 2100 IF (I$="S" OR I$="s") AND LV=0 THEN LV=LV+1:GOSUB 4410:GOTO 310 2110 IF (LV=0 OR PS=1) AND (I$="G" OR I$="g") THEN GOSUB 2410:PT=0:PS=0:GOSUB 4410:IF NU=1 THEN GOSUB 2310:GOTO 320 ELSE 310 2115 IF (I$="U" OR I$="u") AND UN=1 THEN GOSUB 4210:UN=0 2120 IF I$<>"E" AND I$<>"e" THEN 2020 ELSE 610 2130 RETURN 2200 REM Pause Screen Display 2210 HCOLOR 2:HPRINT(1,3),"[R]":HCOLOR 6:HPRINT(4,3),"eset":HCOLOR 2:HPRINT(8,3)," [C]":HCOLOR 6:HPRINT(12,3),"ontinue":HCOLOR 2:HPRINT(19,3)," [G]":HCOLOR 6:HPRINT(23,3),"oto Level":HCOLOR 2:HPRINT(32,3)," [E]":HCOLOR 6:HPRINT(36,3),"nd" 2220 RETURN 2300 REM Level Loading Level Display 2310 HCOLOR 4:HPRINT(12,VL),"Loading Level":HCOLOR 7:HPRINT(25,VL),STR$(LV) 2320 RETURN 2400 REM Goto Level Number Input 2410 L$="":HCOLOR 7:HPRINT(12,VL),"Level Number: " 2420 I$=INKEY$:IF I$="" THEN 2420 2430 IF ASC(I$)<>13 AND ASC(I$)<>8 THEN L$=L$+I$:HPRINT(26,VL),L$:GOTO 2420 2440 IF ASC(I$)=8 THEN L$=LEFT$(L$,LEN(L$)-1):HPRINT(26,VL),L$+" ":GOTO 2420 2450 IF ASC(I$)=13 THEN IF VAL(L$)>=1 AND VAL(L$)<=ML AND VAL(L$)<>LV THEN LV=VAL(L$):RETURN 2460 HPRINT(26,VL)," " 2470 GOTO 2410 2500 REM =========== Main Program Loop =========== 3000 REM Movement 3010 REM 3020 TX(0)=0:TY(0)=0:TX(1)=0:TY(1)=0:TX(2)=0:TY(2)=0:PX=0:PY=0:CX=SX:CY=SY:BO=0:UW=1:CP=0:UN=0:MC=0 3030 HPUT(SX,SY)-(SX+9,SY+9),SP 3100 REM Game Loop 3110 REM GOSUB 4710 3140 GOSUB 2010 3150 GOSUB 4010 3160 REM ========== Primary Subroutines ========== 3200 REM Act on Arrow Keys 3210 ON MV GOSUB 3310,3360,3410,3460 3220 GOTO 3110 3300 REM Right Move or Push 3310 IF HPOINT(CX+15,CY+5)=0 OR HPOINT(CX+15,CY+5)=9 THEN BO=0:TX(0)=0:TY(0)=0:GOSUB 3510:GOSUB 3610:PX=PX+10:CX=CX+10:UW=0:GOSUB 3810:RETURN 3320 IF HPOINT(CX+15,CY+5)=2 THEN BO=0:TX(0)=0:TY(0)=0:GOSUB 3510:GOSUB 3610:PX=PX+10:CX=CX+10:UW=0:GOSUB 3810:MC=1:RETURN 3330 IF HPOINT(CX+15,CY+5)=3 THEN BO=1:TX(0)=0:TY(0)=0:GOSUB 3510:GOSUB 3610:GOSUB 3710:GOSUB 3810:RETURN 3340 RETURN 3350 REM Left Move or Push 3360 IF HPOINT(CX-6,CY+4)=0 OR HPOINT(CX-6,CY+4)=9 THEN BO=0:TX(0)=0:TY(0)=0:GOSUB 3520:GOSUB 3620:PX=PX-10:CX=CX-10:UW=0:GOSUB 3840:RETURN 3370 IF HPOINT(CX-6,CY+4)=2 THEN BO=0:TX(0)=0:TY(0)=0:GOSUB 3520:GOSUB 3620:PX=PX-10:CX=CX-10:UW=0:GOSUB 3840:MC=1:RETURN 3380 IF HPOINT(CX-6,CY+4)=3 THEN BO=1:TX(0)=0:TY(0)=0:GOSUB 3520:GOSUB 3620:GOSUB 3720:GOSUB 3840:RETURN 3390 RETURN 3400 REM Up Move or Push 3410 IF HPOINT(CX+4,CY-5)=0 OR HPOINT(CX+4,CY-5)=9 THEN BO=0:TX(0)=0:TY(0)=0:GOSUB 3530:GOSUB 3630:PY=PY-10:CY=CY-10:UW=0:GOSUB 3870:RETURN 3420 IF HPOINT(CX+4,CY-5)=2 THEN BO=0:TX(0)=0:TY(0)=0:GOSUB 3530:GOSUB 3630:PY=PY-10:CY=CY-10:UW=0:GOSUB 3870:MC=1:RETURN 3430 IF HPOINT(CX+4,CY-5)=3 THEN BO=1:TX(0)=0:TY(0)=0:GOSUB 3530:GOSUB 3630:GOSUB 3730:GOSUB 3870:RETURN 3440 RETURN 3450 REM Down Move or Push 3460 IF HPOINT(CX+5,CY+14)=0 OR HPOINT(CX+5,CY+14)=9 THEN BO=0:TX(0)=0:TY(0)=0:GOSUB 3540:GOSUB 3640:PY=PY+10:CY=CY+10:UW=0:GOSUB 3900:RETURN 3470 IF HPOINT(CX+5,CY+14)=2 THEN BO=0:TX(0)=0:TY(0)=0:GOSUB 3540:GOSUB 3640:PY=PY+10:CY=CY+10:UW=0:GOSUB 3900:MC=1:RETURN 3480 IF HPOINT(CX+5,CY+14)=3 THEN BO=1:TX(0)=0:TY(0)=0:GOSUB 3540:GOSUB 3640:GOSUB 3740:GOSUB 3900:RETURN 3490 RETURN 3500 REM If Space After Box is a Goal 3510 IF CX+10=TX(1) AND CY=TY(1) THEN TX(0)=TX(1):TY(0)=TY(1):TX(1)=0:TY(1)=0:RETURN 3520 IF CX-10=TX(1) AND CY=TY(1) THEN TX(0)=TX(1):TY(0)=TY(1):TX(1)=0:TY(1)=0:RETURN 3530 IF CX=TX(1) AND CY+10=TY(1) THEN TX(0)=TX(1):TY(0)=TY(1):TX(1)=0:TY(1)=0:RETURN 3540 IF CX=TX(1) AND CY-10=TY(1) THEN TX(0)=TX(1):TY(0)=TY(1):TX(1)=0:TY(1)=0:RETURN 3550 RETURN 3600 REM Check If Space After Box or Pusher is Goal 3610 IF (BO=1 AND HPOINT(CX+25,CY+5)=2) THEN TX(1)=CX+10:TY(1)=CY:MC=1:RETURN ELSE IF (BO=0 AND HPOINT(CX+15,CY+5)=2) THEN TX(0)=CX+10:TY(0)=CY:RETURN ELSE RETURN 3620 IF (BO=1 AND HPOINT(CX-16,CY+4)=2) THEN TX(1)=CX-10:TY(1)=CY:MC=1:RETURN ELSE IF (BO=0 AND HPOINT(CX-6,CY+4)=2) THEN TX(0)=CX-10:TY(0)=CY:RETURN ELSE RETURN 3630 IF (BO=1 AND HPOINT(CX+4,CY-15)=2) THEN TX(1)=CX:TY(1)=CY-10:MC=1:RETURN ELSE IF (BO=0 AND HPOINT(CX+4,CY-5)=2) THEN TX(0)=CX:TY(0)=CY-10:RETURN ELSE RETURN 3640 IF (BO=1 AND HPOINT(CX+5,CY+24)=2) THEN TX(1)=CX:TY(1)=CY+10:MC=1:RETURN ELSE IF (BO=0 AND HPOINT(CX+5,CY+14)=2) THEN TX(0)=CX:TY(0)=CY+10:RETURN ELSE RETURN 3650 RETURN 3700 REM Put Box in Next Space 3710 IF HPOINT(CX+25,CY+5)=0 OR HPOINT(CX+25,CY+5)=2 THEN HPUT(CX+20,CY)-(CX+29,CY+9),5:CX=CX+10:PX=PX+10:UW=0:RETURN ELSE 3760 3720 IF HPOINT(CX-16,CY+4)=0 OR HPOINT(CX-16,CY+4)=2 THEN HPUT(CX-20,CY)-(CX-11,CY+9),5:CX=CX-10:PX=PX-10:UW=0:RETURN ELSE 3760 3730 IF HPOINT(CX+4,CY-15)=0 OR HPOINT(CX+4,CY-15)=2 THEN HPUT(CX,CY-20)-(CX+9,CY-11),5:CY=CY-10:PY=PY-10:UW=0:RETURN ELSE 3760 3740 IF HPOINT(CX+5,CY+24)=0 OR HPOINT(CX+5,CY+24)=2 THEN HPUT(CX,CY+20)-(CX+9,CY+29),5:CY=CY+10:PY=PY+10:UW=0:RETURN ELSE 3760 3750 REM Next block is another box or a false wall 3760 UW=1:RETURN ************************************************************ * REMARKS: This is where the solution to the problem lies. * * The line numbers that need to be looked at are: * * Right: 3820 Left: 3850 Up: 3880 Down 3910 * * * * Line 4070 puts a goal behind the pusher, line 4080 puts * * the floor space behind the pusher. It works fine for any * * box being pushed past one goal onto another, but puts a * * goal behind the pusher when it shouldn't as well. * ************************************************************ 3800 REM Right Pusher Placement 7 = Floor 8 = Goal 3810 IF UW<>1 AND BO=0 AND MC=1 AND CX=TX(0) AND CY=TY(0) THEN MC=0:GOSUB 4070:GOSUB 4100:RETURN ELSE IF UW<>1 AND BO=0 THEN IF MC=1 THEN GOSUB 4070:GOSUB 4100:MC=0:RETURN ELSE GOSUB 4080:GOSUB 4100:RETURN 3820 IF UW<>1 AND BO=1 AND MC=1 AND CX-10=TX(1) AND CY=TY(1) THEN MC=0:GOSUB 4070:GOSUB 4100:RETURN ELSE IF UW<>1 AND BO=1 AND MC=1 AND PX-10=TX(1) AND PY=TY(1) THEN GOSUB 4070:GOSUB 4100:RETURN ELSE GOSUB 4080:GOSUB 4100:RETURN 3830 REM Left Pusher Placement 7 = Floor 8 = Goal 3840 IF UW<>1 AND BO=0 AND MC=1 AND CX=TX(0) AND CY=TY(0) THEN MC=0:GOSUB 4070:GOSUB 4110:RETURN ELSE IF UW<>1 AND BO=0 THEN IF MC=1 THEN GOSUB 4070:GOSUB 4110:MC=0:RETURN ELSE GOSUB 4080:GOSUB 4110:RETURN 3850 IF UW<>1 AND BO=1 AND MC=1 AND CX+10=TX(1) AND CY=TY(1) THEN MC=0:GOSUB 4070:GOSUB 4110:RETURN ELSE IF UW<>1 AND BO=1 AND MC=1 AND PX+10=TX(1) AND PY=TY(1) THEN GOSUB 4070:GOSUB 4110:RETURN ELSE GOSUB 4080:GOSUB 4110:RETURN 3860 REM Up Pusher Placement 7 = Floor 8 = Goal 3870 IF UW<>1 AND BO=0 AND MC=1 AND CX=TX(0) AND CY=TY(0) THEN MC=0:GOSUB 4070:GOSUB 4120:RETURN ELSE IF UW<>1 AND BO=0 THEN IF MC=1 THEN GOSUB 4070:GOSUB 4120:MC=0:RETURN ELSE GOSUB 4080:GOSUB 4120:RETURN 3880 IF UW<>1 AND BO=1 AND MC=1 AND CX=TX(1) AND CY+10=TY(1) THEN MC=0:GOSUB 4070:GOSUB 4120:RETURN ELSE IF UW<>1 AND BO=1 AND MC=1 AND PX=TX(1) AND PY+10=TY(1) THEN GOSUB 4070:GOSUB 4120:RETURN ELSE GOSUB 4080:GOSUB 4120:RETURN 3890 REM Down Pusher Placement 7 = Floor 8 = Goal 3900 IF UW<>1 AND BO=0 AND MC=1 AND CX=TX(0) AND CY=TY(0) THEN MC=0:GOSUB 4070:GOSUB 4130:RETURN ELSE IF UW<>1 AND BO=0 THEN IF MC=1 THEN GOSUB 4070:GOSUB 4130:MC=0:RETURN ELSE GOSUB 4080:GOSUB 4130:RETURN 3910 IF UW<>1 AND BO=1 AND MC=1 AND CX=TX(1) AND CY-10=TY(1) THEN MC=0:GOSUB 4070:GOSUB 4130:RETURN ELSE IF UW<>1 AND BO=1 AND MC=1 AND PX=TX(1) AND PY-10=TY(1) THEN GOSUB 4070:GOSUB 4130:RETURN ELSE GOSUB 4080:GOSUB 4130:RETURN 3920 RETURN 4000 REM Previous Location Control 4010 IF MV=1 AND PX=0 AND PY=0 AND HPOINT(CX+15,CY+5)<>1 THEN PX=CX-10:PY=CY:RETURN ELSE IF MV=1 AND HPOINT(CX+15,CY+5)<>1 THEN PX=CX-10:PY=CY:RETURN 4020 IF MV=2 AND PX=0 AND PY=0 AND HPOINT(CX-6,CY+4)<>1 THEN PX=CX+10:PY=CY:RETURN ELSE IF MV=2 AND HPOINT(CX-6,CY+4)<>1 THEN PX=CX+10:PY=CY:RETURN 4030 IF MV=3 AND PX=0 AND PY=0 AND HPOINT(CX+4,CY-5)<>1 THEN PX=CX:PY=CY+10:RETURN ELSE IF MV=3 AND HPOINT(CX+4,CY-5)<>1 THEN PX=CX:PY=CY+10:RETURN 4040 IF MV=4 AND PX=0 AND PY=0 AND HPOINT(CX+5,CY+14)<>1 THEN PX=CX:PY=CY-10:RETURN ELSE IF MV=4 AND HPOINT(CX+5,CY+14)<>1 THEN PX=CX:PY=CY-10:RETURN 4050 RETURN 4060 REM Place Floor or Goal 4070 HPUT(PX,PY)-(PX+9,PY+9),8:RETURN 4080 HPUT(PX,PY)-(PX+9,PY+9),7:RETURN 4090 REM Place Pusher 4100 HPUT(CX,CY)-(CX+9,CY+9),1:RETURN 4110 HPUT(CX,CY)-(CX+9,CY+9),2:RETURN 4120 HPUT(CX,CY)-(CX+9,CY+9),3:RETURN 4130 HPUT(CX,CY)-(CX+9,CY+9),4:RETURN 4140 RETURN 4200 REM Undo 4210 IF M$="R" AND PX>0 THEN HPUT(PX,PY)-(PX+9,PY+9),1:HPUT(CX,CY)-(CX+9,CY+9),7:GOSUB 4270:CX=PX:CY=PY:PX=PX-10:IF PX=SX-10 THEN PX=0:PY=0 4220 IF M$="L" AND PX>0 THEN HPUT(PX,PY)-(PX+9,PY+9),2:HPUT(CX,CY)-(CX+9,CY+9),7:GOSUB 4280:CX=PX:CY=PY:PX=PX+10:IF PX=SX+10 THEN PX=0:PY=0 4230 IF M$="U" AND PX>0 THEN HPUT(PX,PY)-(PX+9,PY+9),3:HPUT(CX,CY)-(CX+9,CY+9),7:GOSUB 4290:CX=PX:CY=PY:PY=PY+10:IF PY=SY+10 THEN PX=0:PY=0 4240 IF M$="D" AND PX>0 THEN HPUT(PX,PY)-(PX+9,PY+9),4:HPUT(CX,CY)-(CX+9,CY+9),7:GOSUB 4300:CX=PX:CY=PY:PY=PY-10:IF PY=SY-10 THEN PX=0:PY=0 4250 RETURN 4260 REM Replace Box in Undo 4270 IF BO=1 THEN HPUT(CX,CY)-(CX+9,CY+9),5:HPUT(CX+10,CY)-(CX+19,CY+9),7:BO=0:RETURN 4280 IF BO=1 THEN HPUT(CX,CY)-(CX+9,CY+9),5:HPUT(CX-10,CY)-(CX-1,CY+9),7:BO=0:RETURN 4290 IF BO=1 THEN HPUT(CX,CY)-(CX+9,CY+9),5:HPUT(CX,CY-10)-(CX+9,CY-1),7:BO=0:RETURN 4300 IF BO=1 THEN HPUT(CX,CY)-(CX+9,CY+9),5:HPUT(CX,CY+10)-(CX+9,CY+19),7:BO=0:RETURN 4310 RETURN 4320 REM ========= Secondary Subroutines ========= 4400 REM Level File Open Routine 4410 F$="SCREEN"+RIGHT$(STR$(LV),LEN(STR$(LV))-1)+".DAT" 4420 OPEN "I",#1,F$:RETURN 4430 RETURN 4500 REM Level/Game Completion Display 4510 IF LV>9 THEN HL=13 ELSE HL=12 4520 HCOLOR 4:HPRINT(5,3),"Level":HCOLOR 7:HPRINT(10,3),LV:HCOLOR 4:HPRINT(HL,3)," Completed! Good Work!" 4530 IF LV=ML AND CP=ML AND PT=1 THEN HCOLOR 6:HPRINT(14,5),"Game Finished!" 4540 IF LV3Л R…џЋ(CXЋ4,CYЌ5)Г0БџЋ(CXЋ4,CYЌ5)Г9ЇBOГ0:TX(0)Г0:TY(0)Г0:І3530:І3630:PYГPYЌ10:CYГCYЌ10:UWГ0:І3870:4 \…џЋ(CXЋ4,CYЌ5)Г2ЇBOГ0:TX(0)Г0:TY(0)Г0:І3530:І3630:PYГPYЌ10:CYГCYЌ10:UWГ0:І3870:MCГ1:4` f…џЋ(CXЋ4,CYЌ5)Г3ЇBOГ1:TX(0)Г0:TY(0)Г0:І3530:І3630:І3730:І3870:4f p4а „…џЋ(CXЋ5,CYЋ14)Г0БџЋ(CXЋ5,CYЋ14)Г9ЇBOГ0:TX(0)Г0:TY(0)Г0:І3540:І3640:PYГPYЋ10:CYГCYЋ10:UWГ0:І3900:5. Ž…џЋ(CXЋ5,CYЋ14)Г2ЇBOГ0:TX(0)Г0:TY(0)Г0:І3540:І3640:PYГPYЋ10:CYГCYЋ10:UWГ0:І3900:MCГ1:5w ˜…џЋ(CXЋ5,CYЋ14)Г3ЇBOГ1:TX(0)Г0:TY(0)Г0:І3540:І3640:І3740:І3900:5} Ђ5С Ж…CXЋ10ГTX(1)АCYГTY(1)ЇTX(0)ГTX(1):TY(0)ГTY(1):TX(1)Г0:TY(1)Г0:6 Р…CXЌ10ГTX(1)АCYГTY(1)ЇTX(0)ГTX(1):TY(0)ГTY(1):TX(1)Г0:TY(1)Г0:6I Ъ…CXГTX(1)АCYЋ10ГTY(1)ЇTX(0)ГTX(1):TY(0)ГTY(1):TX(1)Г0:TY(1)Г0:6 д…CXГTX(1)АCYЌ10ГTY(1)ЇTX(0)ГTX(1):TY(0)ГTY(1):TX(1)Г0:TY(1)Г0:6“ о7…(BOГ1АџЋ(CXЋ25,CYЋ5)Г2)ЇTX(1)ГCXЋ10:TY(1)ГCY:MCГ1::„…(BOГ0АџЋ(CXЋ15,CYЋ5)Г2)ЇTX(0)ГCXЋ10:TY(0)ГCY::„7l$…(BOГ1АџЋ(CXЌ16,CYЋ4)Г2)ЇTX(1)ГCXЌ10:TY(1)ГCY:MCГ1::„…(BOГ0АџЋ(CXЌ6,CYЋ4)Г2)ЇTX(0)ГCXЌ10:TY(0)ГCY::„7и.…(BOГ1АџЋ(CXЋ4,CYЌ15)Г2)ЇTX(1)ГCX:TY(1)ГCYЌ10:MCГ1::„…(BOГ0АџЋ(CXЋ4,CYЌ5)Г2)ЇTX(0)ГCX:TY(0)ГCYЌ10::„8E8…(BOГ1АџЋ(CXЋ5,CYЋ24)Г2)ЇTX(1)ГCX:TY(1)ГCYЋ10:MCГ1::„…(BOГ0АџЋ(CXЋ5,CYЋ14)Г2)ЇTX(0)ГCX:TY(0)ГCYЋ10::„8KB8Ќ~…џЋ(CXЋ25,CYЋ5)Г0БџЋ(CXЋ25,CYЋ5)Г2Їь(CXЋ20,CY)Ќ(CXЋ29,CYЋ9),5:CXГCXЋ10:PXГPXЋ10:UWГ0::„37609 ˆ…џЋ(CXЌ16,CYЋ4)Г0БџЋ(CXЌ16,CYЋ4)Г2Їь(CXЌ20,CY)Ќ(CXЌ11,CYЋ9),5:CXГCXЌ10:PXГPXЌ10:UWГ0::„37609n’…џЋ(CXЋ4,CYЌ15)Г0БџЋ(CXЋ4,CYЌ15)Г2Їь(CX,CYЌ20)Ќ(CXЋ9,CYЌ11),5:CYГCYЌ10:PYГPYЌ10:UWГ0::„37609Яœ…џЋ(CXЋ5,CYЋ24)Г0БџЋ(CXЋ5,CYЋ24)Г2Їь(CX,CYЋ20)Ќ(CXЋ9,CYЋ29),5:CYГCYЋ10:PYГPYЋ10:UWГ0::„37609кАUWГ1::Oт…UWДВ1АBOГ0АMCГ1АCXГTX(0)АCYГTY(0)ЇMCГ0:І4070:І4100::„…UWДВ1АBOГ0Ї…MCГ1ЇІ4070:І4100:MCГ0::„І4080:І4100::жь…UWДВ1АBOГ1АMCГ1АCXЌ10ГTX(1)АCYГTY(1)ЇMCГ0:І4070:І4100::„…UWДВ1АBOГ1АMCГ1АPXЌ10ГTX(1)АPYГTY(1)ЇІ4070:І4100::„І4080:І4100:;K…UWДВ1АBOГ0АMCГ1АCXГTX(0)АCYГTY(0)ЇMCГ0:І4070:І4110::„…UWДВ1АBOГ0Ї…MCГ1ЇІ4070:І4110:MCГ0::„І4080:І4110:;в …UWДВ1АBOГ1АMCГ1АCXЋ10ГTX(1)АCYГTY(1)ЇMCГ0:І4070:І4110::„…UWДВ1АBOГ1АMCГ1АPXЋ10ГTX(1)АPYГTY(1)ЇІ4070:І4110::„І4080:І4110:1Њ…MVГ1АPXГ0АPYГ0АџЋ(CXЋ15,CYЋ5)ДВ1ЇPXГCXЌ10:PYГCY::„…MVГ1АџЋ(CXЋ15,CYЋ5)ДВ1ЇPXГCXЌ10:PYГCY:>Д…MVГ2АPXГ0АPYГ0АџЋ(CXЌ6,CYЋ4)ДВ1ЇPXГCXЋ10:PYГCY::„…MVГ2АџЋ(CXЌ6,CYЋ4)ДВ1ЇPXГCXЋ10:PYГCY:>яО…MVГ3АPXГ0АPYГ0АџЋ(CXЋ4,CYЌ5)ДВ1ЇPXГCX:PYГCYЋ10::„…MVГ3АџЋ(CXЋ4,CYЌ5)ДВ1ЇPXГCX:PYГCYЋ10:?PШ…MVГ4АPXГ0АPYГ0АџЋ(CXЋ5,CYЋ14)ДВ1ЇPXГCX:PYГCYЌ10::„…MVГ4АџЋ(CXЋ5,CYЋ14)ДВ1ЇPXГCX:PYГCYЌ10:?Vв?sць(PX,PY)Ќ(PXЋ9,PYЋ9),8:?№ь(PX,PY)Ќ(PXЋ9,PYЋ9),7:?­ь(CX,CY)Ќ(CXЋ9,CYЋ9),1:?Ъь(CX,CY)Ќ(CXЋ9,CYЋ9),2:?чь(CX,CY)Ќ(CXЋ9,CYЋ9),3:@"ь(CX,CY)Ќ(CXЋ9,CYЋ9),4:@ ,@yr…M$Г"R"АPXВ0Їь(PX,PY)Ќ(PXЋ9,PYЋ9),1:ь(CX,CY)Ќ(CXЋ9,CYЋ9),7:І4270:CXГPX:CYГPY:PXГPXЌ10:…PXГSXЌ10ЇPXГ0:PYГ0@ш|…M$Г"L"АPXВ0Їь(PX,PY)Ќ(PXЋ9,PYЋ9),2:ь(CX,CY)Ќ(CXЋ9,CYЋ9),7:І4280:CXГPX:CYГPY:PXГPXЋ10:…PXГSXЋ10ЇPXГ0:PYГ0AW†…M$Г"U"АPXВ0Їь(PX,PY)Ќ(PXЋ9,PYЋ9),3:ь(CX,CY)Ќ(CXЋ9,CYЋ9),7:І4290:CXГPX:CYГPY:PYГPYЋ10:…PYГSYЋ10ЇPXГ0:PYГ0AЦ…M$Г"D"АPXВ0Їь(PX,PY)Ќ(PXЋ9,PYЋ9),4:ь(CX,CY)Ќ(CXЋ9,CYЋ9),7:І4300:CXГPX:CYГPY:PYГPYЌ10:…PYГSYЌ10ЇPXГ0:PYГ0AЬšBЎ…BOГ1Їь(CX,CY)Ќ(CXЋ9,CYЋ9),5:ь(CXЋ10,CY)Ќ(CXЋ19,CYЋ9),7:BOГ0:BQИ…BOГ1Їь(CX,CY)Ќ(CXЋ9,CYЋ9),5:ь(CXЌ10,CY)Ќ(CXЌ1,CYЋ9),7:BOГ0:B“Т…BOГ1Їь(CX,CY)Ќ(CXЋ9,CYЋ9),5:ь(CX,CYЌ10)Ќ(CXЋ9,CYЌ1),7:BOГ0:BжЬ…BOГ1Їь(CX,CY)Ќ(CXЋ9,CYЋ9),5:ь(CX,CYЋ10)Ќ(CXЋ9,CYЋ19),7:BOГ0:BмжC :F$Г"SCREEN"Ћџ(џˆ(LV),џ‡(џˆ(LV))Ќ1)Ћ".DAT"CD™"I",#1,F$:C"NC9ž…LVВ9ЇHLГ13:„HLГ12CЈч4:ю(5,3),"Level":ч7:ю(10,3),LV:ч4:ю(HL,3)," Completed!GoodWork!"CВВ…LVГML АCPГML АPTГ1Їч6:ю(14,5),"GameFinished!"CўМ…LVДML ЇLVГLVЋ1:І4410:І2310:Ѕ320:„€TCГ1Ѕ2000:‹TC:LVГ0:ц:І5010:Ѕ220DЦŠDŸCPГ0:€GCГ1ЅCG:…џЋ(GX(GC)­10Ћ5,GY(GC)­10Ћ5)Г3ЇCPГCPЋ1:‹GC :„…џЋ(GX(GC)­10Ћ5,GY(GC)­10Ћ5)Г0Їь(GX(GC)­10,GY(GC)­10)Ќ(GX(GC)­10Ћ9,GY(GC)­10Ћ9),8:‹GC :„‹GCDЅ DУfч2:ъ(164,10)Ќ(299,85),Н,BD№pю(21,2)," CX:":ю(25,2)," ":ю(25,2),CXEzю(21,3)," CY:":ю(25,3)," ":ю(25,3),CYEJ„ю(21,4)," PX:":ю(25,4)," ":ю(25,4),PXEwŽю(21,5)," PY:":ю(25,5)," ":ю(25,5),PYEЇ˜ю(21,6),"TX1:":ю(25,6)," ":ю(25,6),TX(1)EзЂю(21,7),"TY1:":ю(25,7)," ":ю(25,7),TY(1)FЌю(21,8),"TX0:":ю(25,8)," ":ю(25,8),TX(0)F7Жю(21,9),"TY0:":ю(25,9)," ":ю(25,9),TY(0)FgРю(30,2),"TX2:":ю(33,2)," ":ю(33,2),TX(2)F—Ъю(30,3),"TY2:":ю(33,3)," ":ю(33,3),TY(2)FФдю(30,4)," BO:":ю(33,4)," ":ю(33,4),BOFёою(30,5)," MC:":ю(33,5)," ":ю(33,5),MCGш‚I$=INKEY$:IFI$=""THEN4600GђG1ќ‚LI$="3340":GOSUB4120:G:’ч7,0G[œч2:ю(12,0),"** Sokoban 1 **"GŠІч5:ю(5,2),"Originally (C)1982 by Hiroyuki"GЙАч5:ю(5,3),"Imabayashi and Thinking Rabbit"GъКч5:ю(4,4),"Made possible by Carlos Montiers"HФч5:ю(5,5),"Adapted to the CoCo in 2020 by"HDЮч5:ю(7,6),"Wayne Campbell, helped by"Hoич5:ю(7,7),"William (lostwizard) Astle"H›тч3:ю(5,9),"[UP] [DOWN] Floor"HЧьч3:ю(5,11),"[LEFT] [RIGHT] Goal"Hшіч3:ю(5,13),"Box Wall"IEь(100,70)Ќ(109,79),3:ь(190,70)Ќ(199,79),4:ч2:ъ(268,68)Ќ(281,81),Н,B:ь(270,70)Ќ(279,79),7IЂ ь(100,86)Ќ(109,95),2:ь(190,86)Ќ(199,95),1:ч2:ъ(268,84)Ќ(281,97),Н,B:ь(270,86)Ќ(279,95),8Iяь(100,106)Ќ(109,115),5:ь(190,106)Ќ(199,115),6:ч2:ъ(40,124)Ќ(281,155),Н,BJч7:ю(11,16),"Arrow keys to move"Jj(ю(7,17),"Last Move ":ч2:ю(17,17),"[U]":ч6:ю(20,17),"ndo":ч7:ю(23,17)," available"JŒ2ю(11,18),"No score available"K(<ч2:ю(3,20),"[S]":ч6:ю(6,20),"tart":ч2:ю(10,20)," [E]":ч6:ю(14,20),"nd":ч2:ю(16,20)," [P]":ч6:ю(20,20),"ause":ч2:ю(24,20)," [G]":ч6:ю(28,20),"oto Level"K.Fю(17,17),"[U]":ч6:ю(20,17),"ndo":ч7:ю(23,17)," available"JŒ2ю(11,18),"No score available"K(<ч2:ю(3,20),"[S]":ч6:ю(6,20),"tart":ч2:ю(10,20)," [E]":ч6:ю(14,20),"nd":ч2:ю(16,20)," [P]":ч6:ю(20,20),"ause":чџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ 1 REM READER.BAS 2 REM for reading the About.txt file 3 REM on the Color Computer 3 4 REM written by Wayne Campbell 5 REM June 7, 2024 10 REM setup 20 CLEAR 13840 30 DIM A$(173) 40 X=1 50 WIDTH 80 100 REM read file 110 OPEN "I", #1, "ABOUT.TXT" 120 PRINT "Loading..."; 130 IF EOF(1) = -1 THEN 180 140 LINE INPUT #1, A$(X) 150 REM PRINT A$(X) 160 X=X+1 170 GOTO 130 180 PRINT 190 CLOSE #1 200 REM display page 210 X=1 220 CLS 230 GOSUB 510 240 PRINT "(D)OWN (U)P (Q)UIT"; 300 REM input routine 310 I$=INKEY$ 320 IF I$="D" THEN PRINT:X=X+23:IF X>161 THEN X=161:GOTO 220 ELSE GOTO 220 330 IF I$="U" THEN PRINT:X=X-23:IF X<1 THEN X=1:GOTO 220 ELSE GOTO 220 340 IF I$="Q" THEN 410 ELSE 310 400 REM end program 410 WIDTH 32 420 END 500 REM display lines 510 IF X=161 THEN Z=X+12 ELSE Z=X+22 520 FOR Y=X TO Z 530 PRINT A$(Y) 540 NEXT Y 550 RETURN IF I$="U" THEN PRINT:X=X-23:IF X<1 THEN X=1:GOTO 220 ELSE GOTO 220 340 IF I$="Q" THEN 410 ELSE 310 400 REM end program 410 WIDTH 32 420 END 500 REM display lines 510 IF X=161 THEN Zџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ