10 REM Push-the-Bale 20 REM by Carl Wheat 1992 30 REM for Public Domain 40 : 50 PROCchrs:MODE7:PROCstart:MODE5 60 VDU5:IF K%=78 PROCnew 70 REPEAT:CLS:PROCmap 80 REPEAT:K%=0:K%=INKEY(10) 90 IF K%=47 OR K%=58 OR K%=88 OR K%=90 PROCtest:*FX21,0 130 IF K%=127 PROCback 140 IF K%=27 PROCclean:PROCmap 150 UNTIL K%=78 OR K%=81 OR P%=A% 160 IF P%=A% PROCcomp 170 IF K%=78 PROCnew 180 UNTIL K%=81:MODE7:END 190 : 200 DEFPROCtest:D%=1:Z%=0 210 N%=Y%:E%=X%:W%=Y%:V%=X% 220 IF K%=47 Y%=Y%-1:W%=Y%-1:M$=D$ 230 IF K%=58 Y%=Y%+1:W%=Y%+1:M$=U$ 240 IF K%=88 X%=X%+1:V%=X%+1:M$=R$ 250 IF K%=90 X%=X%-1:V%=X%-1:M$=L$ 260 C%=POINT(X%*64+32,Y%*32-16) 270 IF C%=3 PROCmove:F%=1 280 IF C%=1 Y%=N%:X%=E% 290 IF C%=0 PROCmove:F%=0 300 IF C%=2 PROCpush 310 FOR T%=1 TO 300:NEXT T%:ENDPROC 320 : 330 DEFPROCmove 340 MOVEE%*64,N%*32:PRINT X$; 350 IF F%=1 PRINT A$ 360 MOVEX%*64,Y%*32:PRINT M$:ENDPROC 370 : 380 DEFPROCpush 390 C%=POINT(V%*64+32,W%*32-16) 400 IF C%=1 OR C%=2 Y%=N%:X%=E%:Z%=0:ENDPROC 410 D%=POINT(X%*64+16,Y%*32-16) 420 MOVEX%*64,Y%*32:PRINT X$ 430 MOVEV%*64,W%*32 440 IF C%=3 PRINT P$ ELSE PRINT B$ 450 PROCmove:F%=0:IF C%=3 P%=P%+1 460 IF D%=1 F%=1:P%=P%-1 470 Z%=1:ENDPROC 480 : 490 DEFPROCback:IF D%=0 ENDPROC 500 MOVEX%*64,Y%*32:PRINT X$; 510 IF F%=1 PRINT A$:F%=0 520 IFPOINT(E%*64+32,N%*32-16)=3 F%=1 530 MOVEE%*64,N%*32:PRINT M$ 540 IF Z%=1 PROCBale 550 Y%=N%:X%=E%:D%=0:ENDPROC 560 : 570 DEFPROCBale 580 C%=POINT(V%*64+16,W%*32-16) 590 MOVEV%*64,W%*32:PRINT X$; 600 IF C%=1 PRINT A$:P%=P%-1 610 C%=POINT(X%*64+32,Y%*32-16) 620 MOVEX%*64,Y%*32 630 IF C%=3 PRINT P$:P%=P%+1 640 IF C%=0 PRINT B$ 650 ENDPROC 660 : 670 DEFPROCcomp:VDU19,2,11,0,0,0 680 S%=S%+1:IF S%=51 S%=1 690 TIME=0:REPEAT:UNTIL TIME>800 700 VDU19,2,3,0,0,0:ENDPROC 710 : 720 DEFPROCmap:P%=0:A%=0:F%=0 730 RESTORE (1690+10*S%) 740 READ R%:U%=(32-R%)/2 750 FOR Y%=1 TO R%:READ Z$ 760 IF K%=27 NEXT ELSE PROCconv:PROCplot(W$):NEXT 770 FOR Y%=2 TO R%-1:READ Z$ 780 IF Z$="X" Z$="0":Y%=R%-1 790 IF Z$<>"0" PROCconv:PROCplot(A$) 800 NEXT:FOR Y%=3 TO R%-2:READ Z$ 810 IF Z$<>"0" PROCconv:PROCplot(B$) 820 NEXT:READ X%,Y%:Y%=Y%+U% 830 MOVE300,900:PRINT"SCREEN - ";S% 840 MOVEX%*64,32*Y%:PRINT S$:ENDPROC 850 : 860 DEFPROCconv:Y$="" 870 REPEAT:Z$="0"+Z$:UNTIL LEN(Z$)=6 880 FOR I%=2 TO 6:N$=MID$(Z$,I%,1) 890 IF N$="0" N$="0000" 900 IF N$="1" N$="0001" 910 IF N$="2" N$="0010" 920 IF N$="3" N$="0011" 930 IF N$="4" N$="0100" 940 IF N$="5" N$="0101" 950 IF N$="6" N$="0110" 960 IF N$="7" N$="0111" 970 IF N$="8" N$="1000" 980 IF N$="9" N$="1001" 990 IF N$="A" N$="1010" 1000 IF N$="B" N$="1011" 1010 IF N$="C" N$="1100" 1020 IF N$="D" N$="1101" 1030 IF N$="E" N$="1110" 1040 IF N$="F" N$="1111" 1050 Y$=Y$+N$:NEXT:ENDPROC 1060 : 1070 DEFPROCplot(I$):MOVE64,(Y%+U%)*32 1080 FOR X%=2 TO 20:N$=MID$(Y$,X%,1) 1090 IF N$="1" N$=I$ ELSE N$=O$ 1100 IF N$=B$ A%=A%+1:IF POINT(X%*64-32,(Y%+U%)*32-16)=3 N$=P$:P%=P%+1 1110 PRINT N$;:NEXT:ENDPROC 1120 : 1130 DEFPROCclean:FOR Y%=2 TO R%-1 1140 MOVE128,(Y%+U%)*32:FOR X%=3 TO 19 1150 IF POINT(X%*64-32,(Y%+U%)*32-16)<>1 PRINTH$; ELSE PRINTO$; 1160 NEXT:NEXT:ENDPROC 1170 : 1180 DEFPROCstart:S%=1 1190 VDU23;8202;0;0;0;:*FX229,1 1200 T$="Public Domain - 8BS " 1210 PRINTTAB(3,16)"From:"SPC4"8-Bit Software,"'SPC12"1 Oakwood Drive,"'SPC12"Heaton,"'SPC12"Bolton BL1 5EE." 1220 FOR I%=3 TO 4:PRINTTAB(5,I%)CHR$141CHR$129CHR$157CHR$135T$CHR$156:NEXT 1230 T$="PUSH-the-Bale by Carl Wheat" 1240 PRINTTAB(4,9)CHR$141T$ 1250 PRINTTAB(4,10)CHR$141T$ 1260 T$=STRING$(29,"`") 1270 PRINTTAB(3,8)CHR$147T$ 1280 PRINTTAB(3,12)CHR$147T$ 1290 PRINTTAB(2,23)CHR$134"Do you want instructions? - Y/N" 1300 K$=GET$:IF K$="N" ENDPROC 1310 CLS:PRINTTAB(0,2)CHR$131"Your view is from above looking at a"'CHR$131"man working in a wharehouse." 1320 PRINTTAB(0,5)CHR$131"All the yellow Bales have to be pushed"'CHR$131"onto the white targets. The following"'CHR$131"keys can be used to move the man:" 1330 PRINTTAB(6,9)"Z - LEFT"SPC(7)"X - RIGHT"TAB(6,11)": - UP"SPC(9)"/ - DOWN" 1340 PRINTTAB(0,13)CHR$131"Or a Joystick can be used. Also use;" 1350 PRINTTAB(6,15)"DELETE - backspace last move"TAB(6,17)"ESCAPE - Resets the screen"TAB(6,19)"N - enter New screen number"TAB(6,21)"Q - to Quit the game" 1360 PRINTTAB(9,23)CHR$129CHR$157CHR$135"Press Any Key "CHR$156 1370 K%=GET:ENDPROC 1380 : 1390 DEFPROCnew:REPEAT:GCOL0,2 1400 MOVE160,200:PRINT"INPUT NEW SCREEN":MOVE224,150:PRINT"NUMBER, 1 - 50" 1410 MOVE300,50:INPUT"SCREEN ";S% 1420 MOVE812,50:PRINTSTRING$(8,H$) 1430 UNTIL S%>0 AND S%<51:ENDPROC 1440 : 1450 DEFPROCchrs 1460 VDU23,224,0,24,60,60,24,0,0,102 1470 VDU23,225,0,0,66,66,102,102,102,0 1480 VDU23,226,102,0,0,24,60,60,24,0 1490 VDU23,227,0,102,102,102,66,66,0,0 1500 VDU23,228,0,128,140,30,30,140,128,0,23,229,0,124,112,0,0,112,124,0 1510 VDU23,230,0,1,49,120,120,49,1,0 1520 VDU23,231,0,62,14,0,0,14,62,0 1530 VDU23,232,0,0,24,60,60,24,0,0 1540 VDU23,233,0,0,0,66,66,102,0,0 1550 VDU23,234,0,66,0,24,24,0,66,0,23,235,126,231,255,189,189,255,231,126 1560 VDU23,236,255,68,68,255,255,17,17,255,23,237,0,36,90,36,36,90,36,0 1570 VDU23,238,0,0,0,0,0,0,0,0,23,255,255,255,255,255,255,255,255,255 1580 H$=CHR$18+CHR$0+CHR$0+CHR$255 1590 B$=CHR$18+CHR$0+CHR$2+CHR$235 1600 P$=CHR$18+CHR$0+CHR$2+CHR$235+CHR$8+CHR$18+CHR$0+CHR$1+CHR$237 1610 W$=CHR$18+CHR$0+CHR$3+CHR$255+CHR$8+CHR$18+CHR$0+CHR$1+CHR$236 1620 A$=CHR$18+CHR$0+CHR$3+CHR$234 1630 D$=CHR$18+CHR$0+CHR$3+CHR$224+CHR$8+CHR$18+CHR$0+CHR$1+CHR$225 1640 U$=CHR$18+CHR$0+CHR$3+CHR$226+CHR$8+CHR$18+CHR$0+CHR$1+CHR$227 1650 L$=CHR$18+CHR$0+CHR$3+CHR$228+CHR$8+CHR$18+CHR$0+CHR$1+CHR$229 1660 R$=CHR$18+CHR$0+CHR$3+CHR$230+CHR$8+CHR$18+CHR$0+CHR$1+CHR$231 1670 S$=CHR$18+CHR$0+CHR$3+CHR$232+CHR$8+CHR$18+CHR$0+CHR$1+CHR$233 1680 O$=CHR$238:X$=H$+CHR$8:ENDPROC 1690 : 1700 DATA11,7F00,41FF,7DD61,40001,45BE1,75A3F,10200,1C600,4400,4400,7C00,0,6,6,6,X,0,12000,0,0,2800,800,2000,12,3 1710 DATA10,3FFC,E084,8084,9E84,9804,C284,86FC,8010,8210,FFF0,18,18,18,18,18,X,1200,100,0,1000,2800,2A40,10,5 1720 DATA10,3FC00,207FE,30002,20602,3FE2E,308,208,24C,204,3FC,1E000,E000,1E000,X,120,90,80,A0,90,A0,16,9 1730 DATA14,7FF00,42180,42080,40180,42180,6FF80,42080,420FF,40081,42081,42001,7FF81,81,FF,0,0,0,0,0,0,0,1E,1E,1E,1E,1E,D800,1000,0,0,8000,19500,8200,1D200,500,0,11,3 1740 DATA13,FC,84,3B4,204,3FE0C,20604,2000C,2060E,3FEE2,202,2B2,23E,3E0,0,0,0,0,1E000,1E000,1E000,X,0,A0,40,120,160,90,0,8,40,16,6 1750 DATA11,39F8,6D08,4708,4008,4508,45C8,4478,4440,4040,4640,7FC0,30,30,30,30,30,X,0,1800,1000,1000,900,1200,900,6,3 1760 DATA12,7800,4EF8,4288,4388,4008,4388,77DC,41C4,4004,6984,3F8C,F8,0,70,70,70,30,X,1800,0,1500,1000,20,800,200,30,10,10 1770 DATA16,7F80,4080,4080,4080,4080,4080,1F3FE,10002,1028A,14062,1CA7A,4042,4882,4002,4FFE,7800,3F00,3F00,3F00,X,0,0,0,0,0,10A8,900,2A00,1000,A00,1210,228,4,10 1780 DATA14,1FE0,1020,3F03E,20002,31022,1F03E,1060,1DFE,D82,982,802,F82,82,FE,0,0,0,0,0,0,0,1C,1C,14,1C,1C,680,4848,A00,280,700,0,0,0,0,0,3,4 1790 DATA16,7FFF,4005,5FF5,7D015,45005,45005,4D019,69011,43F71,41011,71011,41011,41011,40001,6F011,39FFF,2,2,2,18002,18002,6,E,E,E,E,E,E,E,0,0,0,770,200,6A0,280,0,540,200,106C0,E080,18CA0,3,15 1800 DATA15,3C00,25E0,2738,200C,3606,20D2,740A,7C482,4410F,4006F,7F9C1,F41,51,41,7F,0,0,0,0,0,0,0,0,0,2,36,2E,3E,800,400,1A0,20,1A0,1020,1800,100,0,0,0,12,4 1810 DATA13,3F8,208,3E0E,3E362,20B62,2E062,28062,2A0E2,28036,28024,2BF04,20004,3FFFC,0,0,1C,1C,1C,1C,1C,X,0,0,0,1D00,A00,1500,A00,1540,0,9,9 1820 DATA13,3C000,243FF,27E19,60001,444A9,46601,402A9,4A201,526A9,42481,70487,18CF8,FF80,0,0,1C,14,14,14,14,14,1C,X,10000,9120,10040,140,10800,1000,4800,9000,0,7,9 1830 DATA16,1E,FF2,822,3B8A,3E00A,2038A,2009A,2420A,31EEB,17001,10035,17031,111FF,10410,1FC10,7F0,0,0,0,0,0,0,0,0,FC0,FC0,FC0,X,0,0,80,2860,5C20,2040,4,0,1000,0,C000,140,12,14 1840 DATA16,1F00,3F100,24100,20900,23BF8,32088,1002E,120A2,1BD82,1201E,12090,10610,1D0F0,4080,4480,7F80,0,0,0,0,1F00,1F00,1F00,X,0,C000,0,0,2640,4000,200,40,220,2100,800,800,8,11 1850 DATA15,7800,4800,4FF8,4208,4208,E068,9628,86C8,9818,1C830,10020,10F20,109E0,11800,1F000,0,0,1F0,1F0,190,10,10,X,0,1800,80,200,900,2000,140,400,3440,4000,0,6,10 1860 DATA14,3F00,2100,1EDFC,10046,14042,107D2,1ECF6,4992,4002,7F26,213C,2010,2110,3FF0,0,0,0,0,0,0,0,0,0,1800,1800,1800,0,2400,1210,2000,0,0,0,0,0,0,5,4 1870 DATA13,1E00F,13FF9,10001,10A4D,1A105,7B445,4066D,44021,64707,3ECBC,2808,2088,3FF8,0,0,0,0,0,3000,3800,1800,300,400,400,0,2010,B0,4900,0,10084,0,0,0,14,11 1880 DATA16,7FFFF,404C1,78401,40005,41EA1,6E2BF,6A8A0,682A0,60EA0,600A0,44FA0,44C20,461E0,7C100,10F00,1F800,1E,1E,1A,1E,X,4900,1100,8000,0,1000,1000,A000,9000,10000,10000,0,1000,7,15 1890 DATA16,FF00,81BF,80E1,79C21,40825,50021,509E5,5C921,53B05,50821,50125,50D21,5FDE7,41024,7C03C,7FE0,0,1E,16,2,16,2,6,2,6,2,6,X,600,2010,2280,8910,200,10,0,4010,4800,10,200,100,15,14 1900 DATA15,7C0,C7C,F844,8AC4,A284,8C04,1E024,12C3C,12C20,10020,1AC20,1BD20,101E0,10100,1FF00,0,38,38,68,78,X,200,0,0,0,740,80,100,74C0,0,0,0,7,11 1910 DATA16,7FFFF,40101,6FC7D,40001,41C03,41EF2,51012,50002,59012,51012,43FFB,60481,40081,42411,43F9F,7E0F0,0,0,0,0,0,F60,FF0,7E0,FE0,X,100,10520,10110,A104,4000,1008,0,4,8000,14020,9228,4080,11,13 1920 DATA14,7F0,3C90,649F,4491,3C491,24411,20481,24491,24091,64491,44491,44491,47CF3,7C79E,00,00,6,6,2,6,6,6,6,6,6,4,140,00,2140,800,1040,900,2040,B00,A040,00,16,8 1930 DATA16,3FFF0,26490,2401F,20411,21001,7034B,7093B,45C3B,44B3B,408CB,6F109,40001,7FF23,40012,4001E,7FFF0,0,0,0,0,0,0,0,0,0,0,0,0,3FF20,3FF20,800,4B80,8250,800,2000,12000,8000,0,20,904,80,C0,4,2 1940 DATA16,7FE1F,40211,5FBF1,51B07,50022,5E802,40857,42301,641F9,441F9,46FCF,68004,4AF84,48204,4FFFC,78000,0,0,0,0,0,0,0,0,0,0,7F8,38,DF8,X,404,0,800,7C0,28,9C00,11000,10000,1000,10000,0,0,17,10 1950 DATA12,3FC,206,7E62,C822,C002,89FE,8904,8804,8904,C91C,49F0,7F00,0,0,0,0,0,E8,E0,E0,E0,X,18,180,2028,200,1000,2600,1000,0,17,3 1960 DATA13,FC0,3F860,2033F,20001,26E99,30081,1059B,7FC01,40929,40821,601A9,20423,3FFFE,0,0,0,0,0,0,0,3F000,3F000,1F000,1C000,8480,B048,4,1020,244,128,0,100,204,11,2 1970 DATA15,1F0,3F10,201E,2022,6002,3C032,24DE2,20842,34842,27EE2,20032,3E01A,301E,1F10,1F0,0,0,4,1C,C,1C,38,38,18,C,4,X,280,C80,520,B00,2000,8000,0,0,300,940,480,3,7 1980 DATA13,7FFFF,48889,40001,4FFD9,6C00B,4C00B,4EFFB,48041,68511,6A03F,43FE0,46000,7C000,0,0,0,1FE0,1FE0,X,8908,10004,14A0,400,0,104,A00,0,10000,12,9 1990 DATA14,7C3E,7C7E3,4C4C1,40441,4EC43,68042,68EFA,6E2C2,402C2,462C2,47CD6,7C802,882,FFE,1C,3C,34,3C,3C,X,1000,11008,100,200,4,0,11838,10010,100,28,6,9 2000 DATA16,7C00,4400,4600,43C0,1E078,12008,339C8,20A48,2006F,24A01,31A01,10213,1101E,19910,9FF0,F000,3800,3800,3C00,1F80,1E00,X,0,0,0,0,20,A400,8480,38,2140,90A0,2500,0,10,13 2010 DATA15,3C0,240,270,238,7E08,4208,4018,4210,4210,F610,8210,C370,6040,3E40,3C0,0,0,0,0,3800,3C00,3C00,3C00,X,100,0,140,80,C0,20,140,20,2880,1000,80,5,11 2020 DATA15,FFF0,E610,C210,8250,F050,82F0,9210,9210,8A30,82F0,8210,F610,C010,C190,FFF0,1800,3C00,7C00,C00,C00,X,40,80,100,0,2400,40,80,3800,800,C0,440,14,5 2030 DATA15,1E00,13E0,7038,4208,436C,4E64,5034,4024,DC04,8264,824C,C298,5430,4060,7FC0,0,0,0,0,0,0,0,0,0,3C00,3C00,2800,3C00,A00,840,0,0,280,2540,80,110,0,0,80,14,12 2040 DATA16,3F7E0,21420,6DC20,40020,436BE,500A2,405A3,4A1A1,7A7AD,20C81,200AF,6DC81,45C41,41001,442E1,7FFBF,0,0,0,0,0,0,0,0,0,0,1E,1E,3E,1E,100,18300,8000,5000,12000,1000,0,5000,A000,0,0,6000,11,14 2050 DATA16,7FF0,4010,4010,3F870,208C8,20408,211CE,21DC3,37CC1,17DF1,70D83,40002,41B66,47804,7CFC4,7C,3FE0,3FE0,680,X,0,0,0,D060,8000,8210,8000,C,4000,5048,10000,150,11,9 2060 DATA15,700,7DF0,C510,8010,81BF,1DA19,10299,10019,70889,45F09,40271,4E001,40131,401FF,7FF00,0,0,0,0,0,0,0,0,38000,38000,30000,3F000,3F000,0,480,1400,0,2144,3520,44,2000,2800,840,0,10,2 2070 DATA11,3C00,27F0,2010,2290,28B0,2020,68A0,4320,4020,7F20,1E0,0,0,0,500,700,700,X,1200,40,0,800,1000,440,100,13,10 2080 DATA16,3E00,7E380,42080,420BC,420E4,40404,4E5F7,60181,6FBB7,43081,430A1,40081,43061,63061,3FFE1,3F,0,0,0,0,0,0,8,8,1E,E,1E,1E,1E,1E,600,1C800,9500,4000,10000,2400,0,8400,8600,D00,C200,0,12,13 2090 DATA16,3FE00,20200,20200,28600,213FC,3F044,4314,4984,6034,4414,4114,6D16,2532,2502,2006,3FFC,1E000,1E000,17000,1E000,X,0,0,0,C00,60,10,A00,100,480,40,1200,D0,17,13 2100 DATA15,1E,33,7FFE1,40021,57F23,57F63,40001,4FF61,7881F,804,C04,604,304,18C,F8,0,0,3FF80,20080,20000,20000,X,4,0,14,0,1C,0,C0,210,190,60,0,18,7 2110 DATA13,7C0,FC7E,8002,38002,23B83,28011,28081,20091,38083,B683,8601,F03F,1FE0,0,0,0,0,3F00,3F00,3F00,3F00,X,A48,A48,4048,64,48,0,18,154,A0,18,11 2120 DATA11,1FF,7FB11,44E01,440BB,40591,4E401,60537,3D1B2,4402,7C9E,7F0,0,38000,38000,38000,X,48,0,0,A48,0,C00,40,10,4 2130 DATA15,1FF,101,175,3D45,7E701,40145,4416D,67B01,2FA4F,2F008,23388,201F8,2BF80,22000,3E000,0,0,38,38,38,X,0,0,0,0,8800,80,20,420,8800,400,0,10,12 2140 DATA14,1C000,161E0,13F38,1100E,10002,11402,135DE,16104,1C304,18604,10C1C,11C10,114F0,1F780,0,0,0,0,0,0,0,3800,7800,F000,E000,E000,0,5A0,2210,4240,0,20,50,20,120,80,8,5 2150 DATA16,3FE0,2020,2038,2008,33E8,1628,1408,1038,3408,2698,E09C,8084,A004,BF4C,8078,FFC0,1FC0,1FC0,X,0,0,0,0,40,280,840,20,1300,40,A90,0,15,9 2160 DATA11,F000,9FC0,3807F,20061,22E01,28081,280B1,23631,3001F,1FF30,1E0,0,0,1E,E,E,E,E,X,4000,9900,4180,0,6B40,0,2040,9,6 2170 DATA17,0,1FF0,1110,1010,1010,1010,1010,1C70,440,7EFC,4004,4004,600C,2008,2008,27C8,3C78,0,EE0,FE0,FE0,FE0,FE0,X,AA0,540,AA0,540,AA0,0,0,0,0,1550,AA0,1550,280,11,15 2180 DATA15,3FE,262,E02,7836,1CF74,10A14,14014,10A04,1CBE4,7804,E0C,218,230,260,3C0,0,0,0,0,1E0,1E0,1E0,X,80,108,0,2080,400,10,0,40,120,C0,0,10,4 2190 DATA16,1E07E,12043,138C1,10889,12F81,1015F,70554,40144,40E56,4D002,7890A,8542,C2A6,6002,3022,1FFE,0,0,0,0,0,0,0,0,0,7000,7800,3C00,1C00,C00,0,8000,4000,1000,C000,11000,A000,0,0,1010,810,508,3,9